For researchers
Search nets by coordination sequence
Identify a net from numbers you computed yourself, from the browser or from a script.
You have a periodic structure and you have computed its coordination sequences. You want to know which known net it is — or whether it is one at all.
From the browser
On Search topologies, open Symmetry, transitivity and coordination sequences and use the Coordination sequences box.
One sequence per line, one line per crystallographically distinct vertex. Numbers separated by spaces or commas:
4 12 24 42 64
4 10 20 38 60
A net matches when every sequence you give is carried by some vertex of that net. Matching is done on as many shells as you supply, so four or five numbers per vertex is normally enough — and giving more shells than you are confident about will lose you the right answer rather than confirm it.
Vertex symbols, if you have them, go in the box beside it, one per line. They are combined with the sequences: a net must satisfy both.
A sequence search ignores the name, coordination and transitivity fields above it.
From a script, over REST
import requests
response = requests.post(
"https://mofplus.org/api/v1/nets/search-cs",
json={
"cs": [[4, 12, 24, 42, 64], [4, 10, 20, 38, 60]],
"vs": [],
"filter_catenated": True,
},
)
print(response.json()["results"])
No credentials needed. filter_catenated drops interpenetrated nets, whose
names carry a -c suffix; leave it false if you want them.
Read response.json()["held_pending_licence"] as well as ["results"]. It
counts nets that carried your sequence but are held pending licence
verification — 634 of the 3077 records are held, because they came from the
RCSR archive alone and nobody has confirmed its terms. A match you cannot see is
not the same answer as no match.
On this search the count is currently always 0, and that is not good news:
a held record carries no coordination sequence at all — the archive supplies
none — so it can never match your query in the first place. Read it as "no held
record was ruled out", not as "nothing is being withheld". The
API reference has what a held record does when you fetch
it directly.
From the mofplus client
The installed client reaches the same code through the older XML-RPC endpoint:
from mofplus import user_api
api = user_api()
names = api.search_cs([[4, 12, 24, 42, 64], [4, 10, 20, 38, 60]], [])
user_api.search_cs filters catenated nets client-side by default; pass
cfilter=False to keep them.
A caveat about the other fields
Spacegroup and transitivity are not derivable from a deposited topology file, so some nets have neither on record. A filter on one of those fields can therefore neither match nor rule such a net out, and it drops from the results.
The search says so: it reports how many nets it set aside for want of the data,
and the REST response carries the same number as excluded_for_missing_data.
Treat a filtered count as a statement about the nets and about the metadata,
and clear the field if you want the full candidate list.
Coordination numbers and coordination sequences come from the deposited
topology, so every net with a deposit has them — 2443 of the 3077. The 634
RCSR-only records have none at all, and 19 deposited nets (raf and rag
among them) store no sequence upstream; their vertices carry an empty list,
never a computed stand-in. A coordination-sequence search cannot reach any of
those, which is a statement about the sources rather than about the nets.
When nothing matches
- Drop the last shell or two. A single wrong number at shell five eliminates every candidate.
- Check you are searching distinct vertices, not every vertex in the cell. Symmetry-equivalent vertices have identical sequences; listing them all is harmless, but listing a vertex you thought was distinct and is not can over-constrain the search.
- Do not read a zero held count as "nothing withheld". 634 records are held, but none of them carries a coordination sequence, so this search can never report one. A net whose sequence lives only in the RCSR archive is not here to be found at all — see Licensing.
- Try one vertex at a time. If each sequence has candidates alone but the combination has none, your structure may be a net not yet in the database — which is worth depositing.