For researchers
File formats
What .mfpx is, what you get in .json, and which format to ask for.
.mfpx
The canonical deposit format, owned by molsys. It carries what a plain
coordinate file cannot: connectivity, atom types, fragment assignment and cell
information in one file. Nets, building blocks, fragments and framework
structures are all stored as .mfpx.
Coordinates in an .mfpx are Cartesian, in ångström, not fractions of the
cell — molsys keeps them that way and converts on demand. Reading them as
fractional is a mistake that produces a plausible-looking structure at the
wrong scale.
Read it with molsys:
import molsys
m = molsys.mol.from_file("pcu.mfpx")
Or fetch it straight into a mol object:
from mofplus import user_api
m = user_api().get_net("pcu", out="mol")
Atom types in an .mfpx may carry two annotations that matter:
@separates the atom type from its fragment:c3_c2h1@ph.%marks an annotated position within a fragment, used when depositing fragments whose parameters depend on which position is which.
Deposited, or generated — and how to tell
634 of the 3077 nets here came from the RCSR Systre archive alone, and nobody
ever deposited a file for them. Their .mfpx is generated on request from the
net's own graph: it is the maximum-symmetry embedding Systre computes, with
every edge the same length and the ideal cell of the net's symmetry group,
scaled so that the mean edge is 1.
That file is not a measurement, and it says so about itself. Three ways to tell it from a deposit, in decreasing order of how much you have to be paying attention:
- The file's own header. Generated files carry
#lines above the cell saying they were generated, what the embedding is, and that the lengths are not in ångström. - The response header.
X-MOFpp-Geometry: computed-embedding. - The JSON.
geometry.computedcarries the same sentence, andprovenance.field_sourcesattributes every cell parameter and both row kinds tocomputed:mofpp.embedding-v1 (systre-19.6.0, rcsr-archive-key). A deposited record attributes them tomofplusinstead.
Do not read a generated cell as a lattice in ångström. A real framework built on the topology has its own cell, and that number is not it. What the generated file states exactly is the topology: which vertices there are, which are joined, and across which cell boundary.
200 of those 634 are 2-periodic, and they get no .mfpx at all.
/net/<name>.mfpx answers 422 for them with the reason: the format's # cell
line states six parameters, a layer has three (a, b, γ), and there is no honest
value for the third. Their geometry is served in full in .json, which states
geometry.dimension — so a client reads the dimension once rather than guessing
from the number of coordinates.
.xyz
Plain coordinates, no connectivity, no cell. Present on records that have one,
for use in tools that cannot read .mfpx. Do not use it as your archival copy:
the connectivity is the part that took work to establish, and it is exactly
what .xyz throws away.
The net viewer on this site does not use it — it reads the topology, so that the edges it draws are the edges the deposit records, periodic images included.
.json
The record's metadata, at the record's own address. Field names match the REST core. Every JSON record carries:
uri— the permanent identifierlicence— an SPDX-style identifier, never absentcitation— a ready-made citation block, the record URI and the dataset releasefiles— where the deposited files are
It is served both by appending .json and by sending
Accept: application/json to the ordinary record URL.
A net record also carries geometry, which is the same object the viewer on the
page draws, so the picture and the machine-readable answer cannot disagree:
dimension— 3 or 2, and everything else follows it.cellis that many Cartesian lattice vectors of that many components,cellparamsthe six or three parameters they were built from, and each vertex coordinate and each edge image carries that many numbers. A 2-periodic net is served as 2-periodic, not padded into three dimensions with an axis nothing measured.computed— the sentence saying this geometry was computed rather than deposited, ornullon a deposit.edges[].image— the cell offset of the far end, which is what makes a boundary-crossing edge drawable at all.
.cif
Not currently served. Frameworks with published crystal structures are the obvious candidates; it is not offered rather than offered as a lossy conversion nobody checked.
Which one to take
| You want to | Take |
|---|---|
| Build a structure with the group's tooling | .mfpx — check whether it is deposited or generated first |
| Work with the topology alone, at any scale | .mfpx or geometry in .json; both state connectivity and periodic images |
| Look at it in a general-purpose viewer | .xyz |
| Index or cite records programmatically | .json |
| Archive what you used in a paper | .mfpx plus the citation block |