SECS, repackaged

Propose molecular structures from a molecular formula and one-dimensional proton (1H) NMR data in the input forms listed below.

This service repackages SECS, the work of Adrian Mirza, Luc Patiny, Kevin Maik Jablonka, and upstream contributors. We did not develop the scientific methods or train the supplied model. This repository deploys those methods as an NMR API provider: it selects one uploaded spectrum, obtains a formula from the job instructions or an uploaded structure, prepares the spectrum, retrieves candidate molecules, refines them with a graph genetic algorithm, and returns ranked SMILES for chemical review.

Submit a job

You need access to an NMR API deployment that offers SECS. Use the client supplied by its operator; ask the operator for the client address and access if you do not have them.

Choose the SECS provider and the analysis kind mol_from_1h_spectrum_formula. Attach one of the spectrum datasets listed under Input forms and limits. Supply the molecular formula either verbatim in the job instructions or with an attached MOL, SDF, or SMILES structure from which it can be calculated. Identify the intended spectrum, experiment path, and formula source when the choice could be ambiguous. If SECS is not listed, ask whether that deployment runs this provider.

How a job runs

  1. A language-model interpreter receives the job instructions and each upload's name and description. It may request inspection of particular uploads or ZIP members; discovered representation metadata, relationships, annotations, and reading issues are then returned to the same model conversation. The provider does not put raw uploaded files or dense spectrum arrays in that conversation.
  2. The provider verifies the interpreter's choice of one spectrum, its processing mode, and formula evidence. A formula from the instructions must be an exact quote; a formula calculated from an uploaded structure must cite that discovered structure.
  3. Processed spectra are decoded as stored; FIDs use the provider's automatic processing path. The selected spectrum is then resampled and normalized on the checkpoint's fixed grid, as defined by the spectrum-preparation code. The model input is limited to that grid, and normalization removes the absolute intensity scale.
  4. SECS embeds the spectrum, searches the molecular index for nearby entries, keeps entries admitted by its formula-neighborhood rule, and uses a graph genetic algorithm to generate and rank candidates with its spectrum, formula, and molecular-validity objective.

The language-model service therefore receives job text and scientific metadata that may be confidential, even though it does not receive the raw uploads or dense spectrum arrays through this provider. Ask the deployment operator where that service runs and what retention policy applies before submitting confidential information.

Input forms and limits

Preparing a submission

Multiple uploads
A job may contain multiple uploads. In the job instructions, name the intended upload or experiment path and formula source.
Vendor experiment folders
Keep each Bruker or Varian experiment in one upload. For a folder, use one ZIP with relative paths intact; separate uploads are not joined.
Dense spectrum required
Provide dense 1D proton data. Peak tables may be reported but cannot replace a spectrum.

Spectrum data

Processed JCAMP-DX
JCAMP-DX XYDATA or NTUPLES. Reads LINK blocks and AFFN, FIX, SQZ, DIF, DIFDUP, and PAC numeric encodings.
Processed Bruker
Bruker 1r with its procs file. Keep 1r and procs together in the same pdata directory. The processed pair does not require acqus; include title when present.
JCAMP-DX FID
Complex JCAMP-DX FIDs with acquisition parameters.
Bruker FID
Bruker fid with acqus and zero group delay. Keep fid and acqus together in one experiment directory. Rejects other group-delay profiles.
Varian FID
Varian fid with procpar where reffrq=sfrq and rfl-rfp=sw/2. Keep fid and procpar together in one experiment directory. Rejects other reference profiles.
Processed JEOL JDF
Processed JEOL JDF with a ppm axis. Tested only with synthetic files, not instrument output.
NMRium v21
NMRium v21 states with dense proton data or a referenced JCAMP-DX resource. Keep the referenced resource at its expected relative path in the same ZIP; stored spectrum shifts are applied once.

Formula evidence

Formula in the job instructions
A formula written verbatim in the job instructions.
Formula from a structure
A formula calculated from a selected MOL, SDF or SMILES attachment.

Supplied annotations

NMReDATA relationships
NMReDATA links between a structure, its JCAMP-DX resource and proton assignments. The linked spectrum resource must be attached and readable. Assignments are preserved as supplied context; they do not change the spectrum sent to SECS.

Upload size, per-attempt download, ZIP-member, expanded-data, and inspection-result limits also apply. Rejection messages report the limit that was reached. The implementation-owned rules are in source access and the analysis runner; selecting one ZIP member still requires downloading its upload.

Example: a Bruker experiment

Upload the whole strychnine experiment folder. We inspect its contents to choose a suitable proton spectrum. In the job input, write:

Infer the molecular structure from the attached experiment.
Molecular formula: C21H22N2O2.

What the result means

Analysed
The attempt produced ranked candidate SMILES, the score for each candidate, the selected spectrum and formula, the interpreter's stated reasons for those choices, spectrum-preparation facts, and search settings.
no_starting_candidates
The candidate source supplied no molecules for genetic refinement, so the refinement evaluated no structures. With the indexed source, this means the returned spectral neighborhood contained no entries admitted by SECS's formula-neighborhood rule; it is not an exhaustive formula search.
cannot_analyse
The interpreter did not select a spectrum and formula that passed the provider's checks, so scientific analysis did not start. The failure message contains the interpreter's model-generated explanation. The operator's full report also records the provider's inspection and rejection reasons.
Other failure codes
The failure message describes an operational interruption, such as a service outage or interpretation limit. Give the job and attempt identifiers to the deployment operator when requesting help.

Scientific interpretation

These observations are derived from the adapted SECS revision selected by this repository and this service's SECS integration. They describe the checkout used here; upstream and adapted SECS can evolve, so other revisions may implement retrieval or scoring differently.

Retrieval details

The report's analysis.retrieval counts locate the stopping point: neighbours_returned is the number of molecules returned by the approximate index search; formula_matches is the number of those neighbours admitted by SECS's generated formula neighborhood, which contains the supplied formula and nearby compositions; and starting_candidates is the number retained after the population limit. The counts cover only the neighborhood returned by the approximate search. The configured retrieval limit is its maximum size.

The deployment operator retains the full report under the attempt identifier. Historical records may label no_starting_candidates or cannot_analyse as successful; those records are not rewritten, and neither label means that structures were found.

Sources and provenance

Scientific software and model artifacts

SECS
The original SECS project supplies the scientific methods and model architecture. Changes made for this service live in the adapted SECS source; the SECS source lock records the public repository and exact revision selected by this repository's secs submodule.
Published checkpoint and candidate molecules
The trained checkpoint and filtered PubChem molecule table come from the published SECS archive. We prepare the published checkpoint for deployment and build a retrieval index from that table. The checkpoint specification and candidate specification record the selected archive inputs.
IBM MoLFormer
MoLFormer provides the molecular encoder used within SECS. Its model code, configuration and tokenizer snapshot are recorded in the MoLFormer lock.
Spectrum reading, chemistry and search
nmrglue reads spectral data; RDKit handles molecular structures; Faiss searches molecular embeddings; and mol_ga runs the graph genetic algorithm. Exact package versions are recorded in the dependency locks.
NMR API
The NMR API integration uses the provider HTTP contract identified by the contract manifest and the shared failure-client artifacts identified by client provenance. Those files record source revisions, source paths and content identifiers.

Reference software and test fixtures

Cheminfo elucidation frontend
For reference-output generation and fixtures only, we use the frontend fork and revision named in the reference lock, based on the elucidation.cheminfo.org frontend source to generate spectrum-conversion reference outputs and import challenge spectra and JCAMP-DX test examples. The lock also names the container runtime image. Fixture origins are described in the challenge notes and JCAMP-DX notes. The deployed GUI is a separate application, not this provider's interface; it may accept different file forms or return different results.
Cheminfo Bruker test collection
bruker-data-test supplies the imported Bruker archives and coffee experiments used in our tests. This is Cheminfo's collection, not an official Bruker sample release. The retained fixtures include the upstream MIT license; their provenance and collection notes record source revision, byte hashes, omissions and tested behavior.

We also generate synthetic input fixtures locally. Their authorship, licenses and reference-output derivations are recorded in the input-fixture provenance. The Input forms and limits section states what this provider reads and executes; a file's presence in a test collection does not mean the provider can analyse it.

Credit the original work

Adrian Mirza, Luc Patiny, and Kevin Maik Jablonka (2026), End-to-end multimodal structure elucidation from raw spectra combining contrastive learning and evolutionary algorithms, Nature Communications 17, 5013. See also the upstream citation guidance. Please cite the original research when using these methods.