Three-Molecule SDfile Library — Multi-Record (.sdf)
Three molecules of different sizes in one SDfile, each with its own connection table and four data fields, separated by the $$$$ terminator. It is the fixture for streaming SDfile readers that have to split on the terminator rather than load the whole file.
methane
NovusEx 3D synthetic idealised geometry
Idealised geometry, synthetic fixture.
5 4 0 0 0 0 0 0 0 0999 V2000
0.0000 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
0.6290 0.6290 0.6290 H 0 0 0 0 0 0 0 0 0 0 0 0
-0.6290 -0.6290 0.6290 H 0 0 0 0 0 0 0 0 0 0 0 0
-0.6290 0.6290 -0.6290 H 0 0 0 0 0 0 0 0 0 0 0 0
0.6290 -0.6290 -0.6290 H 0 0 0 0 0 0 0 0 0 0 0 0
1 2 1 0
1 3 1 0
1 4 1 0
1 5 1 0
M END
> <NAME>
methane
> <FORMULA>
CH4
> <MOLECULAR_WEIGHT>
16.043
> <SMILES>
C
$$$$
water
NovusEx 3D synthetic idealised geometry
Idealised geometry, synthetic fixture.
3 2 0 0 0 0 0 0 0 0999 V2000
0.0000 0.0000 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0
0.7570 0.5860 0.0000 H 0 0 0 0 0 0 0 0 0 0 0 0
-0.7570 0.5860 0.0000 H 0 0 0 0 0 0 0 0 0 0 0 0
1 2 1 0
1 3 1 0
M END
> <NAME>
water
> <FORMULA>
H2O
> <MOLECULAR_WEIGHT>
18.015
> <SMILES>
O
$$$$Specifications
- Records
- 3
- Molecules
- methane, water, ethanol
- Atoms Per Record
- 5, 3, 9
- Data Fields Per Record
- 4
- Record Terminator
- $$$$
- Total Atoms
- 17
Testing contract
Expected to pass- Scenario
- Stream the file record by record and report the atom count and NAME field of each without loading it whole.
- Expected result
- Three records are found in order — methane with 5 atoms, water with 3 and ethanol with 9 — and each terminates on its own $$$$ line.
What is a .sdf file?
SDF (Structure-Data File) is MDL's multi-record chemistry format. Each record is a molfile — a counts line, an atom block, and a bond block — followed by tagged data fields written as `> <NAME>` lines with their values, and terminated by a `$$$$` delimiter. It is how compound libraries with per-molecule properties are shipped between cheminformatics tools.
How to use this file
Use an example .sdf file to test cheminformatics readers and property extractors, verifying record splitting on the `$$$$` delimiter, that data fields are associated with the right structure, and that a malformed record does not consume the rest of the file.
How to use this file for testing
“Three-Molecule SDfile Library — Multi-Record (.sdf)” is a deterministic Novus Examples fixture for Scientific data, Editor testing, Data import. Citation catalogs (BibTeX, RIS), chemistry structures (MDL Molfile, PDB), and gridded binary data (NetCDF, FITS) — for testing reference managers, molecule viewers, and scientific-data loaders.
Documented properties for this file: 3 records. Compare results against paired or grouped companions on this page when present (clean↔damaged, searchable↔scanned, or format twins) so scores stay reproducible across runs.
Download the file once, keep the path stable in CI or local scripts, and treat the spec table as the contract: dimensions, seeds, field lists, and roles are intentional. Corrupt or invalid samples are labelled as such — expect parsers to fail loudly rather than silently accept them.
Scientific fixtures are small, valid, and fully synthetic — no real organism, patient, sample, or observation. Point your parser or loader at the file and check it reads the documented records, variables, or headers; binary formats ship a readable twin or metadata listing for comparison.
Related files
- tsvGravimetric Mass — TSV With Bracketed Units and Spaces in Headers (.tsv)Ten weighings as tab-separated values with headers that contain spaces, brackets and parentheses — 'u(mass) [g]' — the way balance software actually writes them. Column names like these break naive slug-based header handling long before the numbers become a problem.

- csvUnits on a Second Header Row — Not Data (.csv)The same instrument export with units on a second header row instead of inside the column names, which is how a great many laboratory instruments write CSV. An importer that treats row two as data types every measurement column as text and then quietly refuses to plot anything.

- cifCIF Parser Edge Cases — Quotes, Text Fields and Wrapped Loops (.cif)A CIF built entirely out of the constructs that break naive parsers: quoted values containing apostrophes and hashes, a semicolon-delimited multi-line text field, the distinct '?' and '.' markers, a standard uncertainty written as 1.2345(7), and a loop whose rows wrap across lines. Every one of them is legal CIF.

- molEthanol — MDL Molfile V2000 (.mol)Ethanol as a V2000 molfile with fixed-column 3D coordinates, a nine-atom counts line and an eight-bond block. The column widths are part of the format rather than a convention, so it is a genuine test of fixed-width parsing rather than of whitespace splitting.

- sdfEthanol — SDfile With Data Fields (.sdf)An SDfile wrapping the identical ethanol molfile plus five tagged data fields and the mandatory $$$$ terminator. The property block syntax — a header line, a value and a blank line — is where SDfile parsers usually diverge from molfile parsers.

- smiEthanol — SMILES String (.smi)Ethanol as a single tab-delimited SMILES record, the most compressed member of this family: three heavy atoms with every hydrogen implicit and no geometry whatsoever. Round-tripping molfile to SMILES and back is the classic lossy conversion, and this pair is the reference for it.

Generated by generation/scientific.py. Free for any use, no attribution required — license.