mmcif
NetCDF Expansion Pack
Install / Use
npx skills add Intelligent-Data-Design-Inc/NEPInstalls into whichever agent you are using.
SKILL.md
Installable skill definition
Quality Score
Category
Development & EngineeringSupported Platforms
Tags
Our assessment of mmcif
mmcif scores 59/100 on our quality scale, 773rd of 1,283 Development & Engineering skills we index.
Its SKILL.md is 19 KB long, well organised into 25 sections with 5 code examples: a thorough specification that gives an agent plenty to work with.
It has no GitHub stars yet, so there is no community track record; judge it on its content.
Maintenance, license and trust
- We could not determine when the repository was last updated.
- Our last check on 2026-09-23 found the source still online.
- No license is declared. By default that means all rights are reserved: you can read it, but reusing or redistributing it is not clearly permitted. Ask the author before building on it commercially.
- Its trust signals score 68/100, with 3 cautions from licensing, adoption, age or documentation. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.
mmcif compared with similar skills
All 4 of these similar skills score higher than mmcif; compare them before choosing.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| mmcif (this skill)by Intelligent-Data-Design-Inc | 59 | 0 | — | SKILL.md |
| career-opsby career-ops-hq | 100 | 72.5k | today | CLAUDE.md |
| ai-job-searchby MadsLorentzen | 100 | 43.7k | 2d ago | CLAUDE.md |
| claude-howtoby luongnv89 | 100 | 41.6k | 3d ago | CLAUDE.md |
| guizang-ppt-skillby op7418 | 99 | 26.8k | 47d ago | CLAUDE.md |
Frequently asked questions
- How do I install mmcif?
- Run
npx skills add Intelligent-Data-Design-Inc/NEP. The install tabs above show the steps for each supported agent. - Which AI agents does mmcif work with?
- It is written for Universal, as a SKILL.md file. Other agents that read the same format can often use it too.
- Is mmcif safe to use?
- It declares no license and scores 68/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
- Is mmcif still maintained?
- We could not determine when the repository was last updated.
Skill content
View source on GitHubname: mmcif description: Understanding the PDBx/mmCIF macromolecular structure file format (categories, items, loops, the underlying CIF/STAR syntax) and how to map its contents to netCDF dimensions, variables, and attributes for a read-only NEP UDF handler. Use together with the pdb-legacy skill when the legacy PDB format is also relevant. metadata: author: netcdf-analysis version: "1.0" date: "2026-07-29"
PDBx/mmCIF Skill
This skill covers the PDBx/mmCIF macromolecular structure format and the design of a read-only mmCIF reader plugin for NEP that exposes atomic coordinates and structural metadata through the NetCDF API.
Overview
mmCIF (macromolecular Crystallographic Information File) is a
dictionary-based extension of the CIF (Crystallographic Information
File) syntax, itself built on the generic STAR (Self-defining Text
Archive and Retrieval) grammar. PDBx/mmCIF is the specific dictionary
(mmcif_pdbx.dic, maintained by wwPDB) used as the master archive format
for the Protein Data Bank since 2014, superseding the legacy fixed-column
PDB format (see the pdb-legacy skill).
Primary references:
- wwPDB mmCIF resources: https://mmcif.wwpdb.org/
- MMCIF User Guide: https://mmcif.wwpdb.org/docs/user-guide/guide.html
- PDBx/mmCIF Dictionary Resources (RCSB): https://mmcif.rcsb.org/docs/tutorials/mechanics/pdbx-mmcif-dict-struct.html
- Current dictionary index: https://mmcif.wwpdb.org/dictionaries/mmcif_pdbx_v50.dic/Index/index.html
For NEP, mmCIF is read-only. The reader opens an mmCIF text file, parses its data block(s) into categories/items, and presents atomic coordinates and metadata as NetCDF variables, dimensions, and attributes.
File Syntax (STAR/CIF Grammar)
An mmCIF data file is plain ASCII/UTF-8 text consisting of one or more data blocks:
data_1ABC
_entry.id 1ABC
#
_cell.length_a 58.39
_cell.length_b 86.70
...
#
loop_
_atom_site.group_PDB
_atom_site.id
_atom_site.type_symbol
_atom_site.label_atom_id
...
ATOM 1 N ...
ATOM 2 CA ...
#
Key syntax rules:
- A data block starts with the token
data_<name>and runs to the nextdata_token or end of file. Data blocks cannot be nested. - Comments start with
#and run to end of line. - Key-value pairs:
_category.item value— a single value on the same line (or a multi-line quoted/text-field value). - Loops (
loop_): declare a list of item names, one per line, all from the same category, followed by whitespace-delimited rows of values — one row per repetition of that category (i.e. a table). Loops are how_atom_site,_entity,_struct_conn, etc. store many rows efficiently. - Quoting: values with embedded whitespace are single- or
double-quoted (
'...',"..."). Multi-line text values are delimited by a semicolon at the start of a line (;...;), used for free text like_struct.titleor_entity.pdbx_description. - Special value placeholders:
?— value is missing/unknown..— no value is applicable / intentionally omitted.
- No nested loops are permitted; all items in one
loop_belong to one category and have the same number of rows. - Save frames (
save_.../save_) appear only in dictionary files (defining categories/items), never in data files. A NEP data reader does not need to handle save frames.
Data Model: Categories and Items
- A category is a named table (e.g.
atom_site,entity,cell). - An item (data name) is a column within a category, written as
_category_name.item_name(category and item separated by.). - Within a category, a subset of items are designated key items; no
two rows may have duplicate values for the full set of key items
(usually enforcing category-level uniqueness, e.g.
_atom_site.id). - Parent-child relationships link items across categories (foreign
keys), e.g.
_atom_site.label_asym_idrefers to_struct_asym.id. These relationships express the relational structure of a macromolecule (entities, chains/instances, residues, atoms) without requiring nested data structures. - The DDL2 dictionary definition language defines the categories and items themselves; NEP's reader only needs to consume data files conforming to the dictionary, not parse the dictionary itself.
Key Categories for a Structure Reader
| Category | Legacy PDB equivalent | Purpose |
|---|---|---|
| _entry | HEADER (idCode) | Top-level entry identifier (_entry.id) |
| _struct | HEADER/TITLE | _struct.title, classification text |
| _entity | COMPND | One row per unique molecular entity (polymer, non-polymer, water) |
| _entity_poly | COMPND/SEQRES | Polymer type, sequence as one-letter code |
| _entity_poly_seq | SEQRES | Monomer sequence for each polymer entity (entity_id, num, mon_id) |
| _entity_src_nat / _entity_src_gen / _pdbx_entity_src_syn | SOURCE | Organism / source details |
| _struct_asym | (chain, implicit) | One row per distinct molecule instance (id, entity_id) |
| _pdbx_poly_seq_scheme | (chain/resSeq mapping) | Maps label numbering to author/PDB numbering |
| _cell | CRYST1 (a,b,c,angles) | Unit cell parameters |
| _symmetry | CRYST1 (sGroup) | Space group name / cell setting |
| _atom_site | ATOM/HETATM | Atomic coordinates (the main coordinate table) |
| _atom_site_anisotrop | ANISOU | Anisotropic displacement parameters |
| _struct_conn | LINK/SSBOND | Explicit bonds/connections between atoms |
| _struct_conf | HELIX | Secondary structure (helix) ranges |
| _struct_sheet_range | SHEET | Secondary structure (sheet) ranges |
| _pdbx_struct_assembly / _pdbx_struct_oper_list | REMARK 350/MTRIXn | Biological assembly generation operators |
| _chem_comp | HETNAM/FORMUL | Chemical component (residue/ligand) definitions |
_atom_site — The Coordinate Category
This is the primary table for a NEP reader. Typical item set (order not
significant; items are matched by name in the loop_ header):
loop_
_atom_site.group_PDB # "ATOM" or "HETATM" (place-holder for legacy PDB tag)
_atom_site.id # unique integer atom identifier
_atom_site.type_symbol # element symbol
_atom_site.label_atom_id # atom name within its chemical component
_atom_site.label_alt_id # alternate conformation identifier ('.' if none)
_atom_site.label_comp_id # chemical component (residue) 3-letter code
_atom_site.label_asym_id # internal chain/instance id -> _struct_asym.id
_atom_site.label_entity_id # -> _entity.id
_atom_site.label_seq_id # -> _entity_poly_seq.num (polymer position); '.' for non-polymers
_atom_site.pdbx_PDB_ins_code # PDB insertion code
_atom_site.Cartn_x # X coordinate (Å)
_atom_site.Cartn_y # Y coordinate (Å)
_atom_site.Cartn_z # Z coordinate (Å)
_atom_site.occupancy # fractional occupancy
_atom_site.B_iso_or_equiv # isotropic (or equivalent) B-factor
_atom_site.pdbx_formal_charge # integer formal charge
_atom_site.auth_seq_id # PDB-author residue number (legacy resSeq)
_atom_site.auth_comp_id # PDB-author residue name (usually == label_comp_id)
_atom_site.auth_asym_id # PDB-author chain id (legacy chainID)
_atom_site.auth_atom_id # PDB-author atom name (usually == label_atom_id)
_atom_site.pdbx_PDB_model_num # model number, for NMR ensembles / multi-model entries
Important distinction: label_* items are the internal, always-present,
uniquely-sequential identifiers used by the mmCIF data model itself;
auth_* items are the (sometimes irregular, sometimes reused) identifiers
chosen by the depositing authors and historically exposed in legacy PDB
files. wwPDB recommends using auth_seq_id, auth_comp_id, and
auth_asym_id for anything intended to match published/legacy chain and
residue numbering.
_cell and _symmetry — Crystallographic Parameters
_cell.entry_id 1ABC
_cell.length_a 58.39
_cell.length_b 86.70
_cell.length_c 46.27
_cell.angle_alpha 90.00
_cell.angle_beta 90.00
_cell.angle_gamma 90.00
_cell.volume 234237
#
_symmetry.entry_id 1ABC
_symmetry.cell_setting orthorhombic
_symmetry.Int_Tables_number 18
_symmetry.space_group_name_H-M 'P 21 21 2'
These are single-row (key-value) categories, not loops, in most PDB entries — one row per entry.
Mapping PDBx/mmCIF to the netCDF-4 Model
| mmCIF concept | netCDF-4 mapping |
|---|---|
| Data block (data_<name>) | Root group (name from block name, or ignored if only one block) |
| Single-row category (e.g. _cell, _symmetry, _entry, _struct) | Global attributes, prefixed by category (e.g. cell_length_a, symmetry_space_group_name_H-M) |
| _atom_site (looped category) | atom dimension (length = row count); one variable per item, each [atom]-shaped, or [model][atom] if pdbx_PDB_model_num has multiple distinct values |
| _atom_site.Cartn_x/y/z | Either three separate [atom] NC_FLOAT/NC_DOUBLE variables, or one combined [atom][3] variable atom_site_Cartn with a cartesian_axis dimension of length 3 |
| _entity_poly_seq (looped) | residue dimension per entity; mon_id string variable [residue] |
| _struct_asym (looped) | chain dimension; id/entity_id string/int variables [chain] |
| Text item value | NC_STRING (netCDF-4) or fixed-length NC_CHAR array variable |
| Numeric item value (real/integer regex-typed in the dictionary) | NC_DOUBLE/NC_INT per the dictionary's declared type, see below |
| ? value | Fill value for the variable's type, or a per-row mask if precise missing-value tracking is required |
| . value | Not-applicable; treat the same as fill value unless the reader distinguishes the two via a companion mask variable |
Determining netCDF Type from mmCIF Item Type
The PDBx/mmCIF dictionary declares an _item_type.code for every item
(e.g. int, float, code, line, text, yyyy-mm-dd). A pragmatic
reader does not need the full dictionary; the following simplified rules
work for the categories above:
| mmCIF value pattern | nc_type |
|---|---|
| Integer (_atom_site.id, auth_seq_id, pdbx_formal_charge) | NC_INT |
| Real/float (Cartn_x/y/z, occupancy, B_iso_or_equiv, _cell.length_*, _cell.angle_*) | NC_DOUBLE |
| Single character/code (label_alt_id, pdbx_PDB_ins_code, type_symbol) | NC_CHAR (fixed width) or NC_STRING |
| Free text (_struct.title, _entity.pdbx_description) | NC_STRING (netCDF-4) or a variable-length global attribute |
Suggested Dimension Set
atom— number of rows in_atom_sitefor a single model.model— number of distinct_atom_site.pdbx_PDB_model_numvalues (1 for a typical X-ray structure; >1 for NMR ensembles).chain— number of distinct_struct_asym.id(orauth_asym_id) values.residue(per entity, or a flattened globalresiduedimension) — rows in_entity_poly_seq.cartesian_axis— fixed length 3, if coordinates are combined into one variable.
Implementation Notes
- Parse the file into an in-memory table per category first (a
category-name -> list-of-item-names -> list-of-row-values structure),
then apply the mapping table above. This mirrors how the PDS4 reader in
NEP separates "parse label" from "build netCDF metadata" (see the
pds4skill for a structurally similar two-phase approach, XML labels in that case). - Because
_atom_siterows for a multi-model file repeat the same atoms once per model (differing only bypdbx_PDB_model_numand coordinates), detect models by grouping rows by that item rather than assuming one row per atom. label_asym_idvalues are always assigned starting fromAand can differ fromauth_asym_id(the legacy/publication chain ID) — expose both as separate variable
Truncated for display — read the full file on GitHub.
Related Skills
career-ops
72.5kOpen-source AI job search: scan job portals, evaluate listings into a structured A-H report with a global 1-5 score, tailor your CV, track applications — runs locally in your AI coding CLI (Claude Code, Codex, OpenCode, Antigravity…)
ai-job-search
43.7kThe job search that runs on your machine. AI job application framework built on Claude Code: evaluate postings, tailor CVs, write cover letters, prep interviews. Fork it and own it.
claude-howto
41.6kA visual, example-driven guide to Claude Code — from basic concepts to advanced agents, with copy-paste templates that bring immediate value.
guizang-ppt-skill
26.8kAI-agent Skill for generating polished HTML slide decks: editorial magazine and Swiss layouts, image prompts, social covers, and a WebGL/low-power presentation runtime.
Trust signals
From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.
