{"library":"mmcif-pdbx","title":"Python utilities for PDBx/mmCIF storage model","description":"mmcif-pdbx provides a pure Python interface for working with PDBx/mmCIF files, emphasizing simplicity. It allows parsing and serialization of macromolecular crystallographic information files. The library is derived from Python examples provided by the wwPDB and is currently at version 2.0.1, with releases occurring periodically to add features and address issues.","language":"python","status":"active","last_verified":"Sat May 16","install":{"commands":["pip install mmcif-pdbx"],"cli":null},"imports":["from pdbx.reader import PdbxReader","from pdbx.writer import PdbxWriter","from pdbx.containers import DataContainer","from pdbx import load","from pdbx import loads","from pdbx import dump","from pdbx import dumps"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import io\nfrom pdbx import loads, dumps, DataCategory, DataContainer\n\n# Example mmCIF data as a string\nmmcif_data = '''\ndata_testblock\n_entry.id test\nloop_\n_atom_site.id\n_atom_site.type_symbol\n_atom_site.label_atom_id\n1 C CA\n2 O O\n'''\n\n# Parse the mmCIF string\ndata_containers = loads(mmcif_data)\n\n# Access data (assuming one data block)\nif data_containers:\n    data_block = data_containers[0]\n    print(f\"Data block ID: {data_block.name}\")\n\n    # Access a category\n    atom_site_category = data_block.getObj('atom_site')\n    if atom_site_category:\n        print(\"\\nAtom Site Category:\")\n        for i in range(atom_site_category.getRowCount()):\n            atom_id = atom_site_category.getValue('id', i)\n            atom_type = atom_site_category.getValue('type_symbol', i)\n            print(f\"  ID: {atom_id}, Type: {atom_type}\")\n    else:\n        print(\"Atom_site category not found.\")\n\n    # Modify data (example: add a new item to the entry category)\n    entry_category = data_block.getObj('entry')\n    if entry_category:\n        entry_category.setValue('new_item', 0, 'new_value')\n\n    # Serialize the modified data back to a string\n    modified_mmcif_data = dumps(data_containers)\n    print(\"\\nModified mmCIF data:\\n\", modified_mmcif_data)\n\nelse:\n    print(\"No data containers found.\")","lang":"python","description":"This quickstart demonstrates how to parse an mmCIF string, access data within categories, and serialize modified data back to an mmCIF string using the `loads` and `dumps` utility functions, and interacting with `DataContainer` and `DataCategory` objects.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-16","installed_version":"2.0.1","pypi_latest":"2.1.0","is_stale":true,"summary":{"python_range":"3.10–3.9","success_rate":100,"avg_install_s":1.6,"avg_import_s":0.01,"wheel_type":"wheel"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"mmcif-pdbx","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0,"mem_mb":0.2,"disk_size":"17.9M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"mmcif-pdbx","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.6,"import_time_s":0,"mem_mb":0.2,"disk_size":"18M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"mmcif-pdbx","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.01,"mem_mb":0.4,"disk_size":"19.8M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"mmcif-pdbx","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.5,"import_time_s":0.01,"mem_mb":0.4,"disk_size":"20M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"mmcif-pdbx","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.01,"mem_mb":0.4,"disk_size":"11.7M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"mmcif-pdbx","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.5,"import_time_s":0.01,"mem_mb":0.4,"disk_size":"12M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"mmcif-pdbx","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.01,"mem_mb":0.8,"disk_size":"11.4M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"mmcif-pdbx","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.5,"import_time_s":0.01,"mem_mb":0.6,"disk_size":"12M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"mmcif-pdbx","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0,"mem_mb":0.2,"disk_size":"17.4M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"mmcif-pdbx","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.7,"import_time_s":0,"mem_mb":0.2,"disk_size":"18M"}]}}