Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
76 changes: 76 additions & 0 deletions __tests__/data/molfile_annotated.mol
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@

Actelion Java MolfileCreator 2.0

0 0 0 0 0 0 0 V3000
M V30 BEGIN CTAB
M V30 COUNTS 16 18 0 0 0
M V30 BEGIN ATOM
M V30 1 C 19.6004 -13.3002 0 1
M V30 2 C 19.6004 -14.8002 0 2
M V30 3 C 20.8994 -15.5502 0 3
M V30 4 C 22.1983 -14.8002 0 4
M V30 5 C 22.1983 -13.3002 0 5
M V30 6 C 20.8994 -12.5502 0 6
M V30 7 C 18.3013 -12.5502 0 7
M V30 8 C 17.0023 -13.3002 0 8
M V30 9 C 17.0023 -14.8002 0 9
M V30 10 C 18.3013 -15.5502 0 10
M V30 11 O 20.8994 -11.0501 0 11
M V30 12 O 20.8994 -17.0502 0 12
M V30 13 C 23.4973 -15.5502 0 0
M V30 14 C 24.7963 -14.8002 0 0
M V30 15 C 24.7963 -13.3002 0 0
M V30 16 C 23.4973 -12.5502 0 0
M V30 END ATOM
M V30 BEGIN BOND
M V30 1 2 1 2
M V30 2 1 2 3
M V30 3 2 4 5
M V30 4 1 6 1
M V30 5 1 1 7
M V30 6 2 7 8
M V30 7 1 8 9
M V30 8 2 9 10
M V30 9 1 10 2
M V30 10 2 6 11
M V30 11 1 6 5
M V30 12 1 3 4
M V30 13 2 3 12
M V30 14 1 4 13
M V30 15 2 13 14
M V30 16 1 14 15
M V30 17 2 15 16
M V30 18 1 16 5
M V30 END BOND
M V30 BEGIN SGROUP
M V30 1 DAT 1 ATOMS=(1 1) FIELDNAME="NOSEARCH_OCL_CUSTOM_LABEL" -
M V30 FIELDDISP=" 19.6004 13.3002 DA ALL 1 5" FIELDDATA="]8α"
M V30 2 DAT 2 ATOMS=(1 2) FIELDNAME="NOSEARCH_OCL_CUSTOM_LABEL" -
M V30 FIELDDISP=" 19.6004 14.8002 DA ALL 1 5" FIELDDATA="]10α"
M V30 3 DAT 3 ATOMS=(1 3) FIELDNAME="NOSEARCH_OCL_CUSTOM_LABEL" -
M V30 FIELDDISP=" 20.8994 15.5502 DA ALL 1 5" FIELDDATA="]10"
M V30 4 DAT 4 ATOMS=(1 4) FIELDNAME="NOSEARCH_OCL_CUSTOM_LABEL" -
M V30 FIELDDISP=" 22.1983 14.8002 DA ALL 1 5" FIELDDATA="]4α"
M V30 5 DAT 5 ATOMS=(1 5) FIELDNAME="NOSEARCH_OCL_CUSTOM_LABEL" -
M V30 FIELDDISP=" 22.1983 13.3002 DA ALL 1 5" FIELDDATA="]9α"
M V30 6 DAT 6 ATOMS=(1 6) FIELDNAME="NOSEARCH_OCL_CUSTOM_LABEL" -
M V30 FIELDDISP=" 20.8994 12.5502 DA ALL 1 5" FIELDDATA="]9"
M V30 7 DAT 7 ATOMS=(1 7) FIELDNAME="NOSEARCH_OCL_CUSTOM_LABEL" -
M V30 FIELDDISP=" 18.3013 12.5502 DA ALL 1 5" FIELDDATA="]8"
M V30 8 DAT 8 ATOMS=(1 8) FIELDNAME="NOSEARCH_OCL_CUSTOM_LABEL" -
M V30 FIELDDISP=" 17.0023 13.3002 DA ALL 1 5" FIELDDATA="]7"
M V30 9 DAT 9 ATOMS=(1 9) FIELDNAME="NOSEARCH_OCL_CUSTOM_LABEL" -
M V30 FIELDDISP=" 17.0023 14.8002 DA ALL 1 5" FIELDDATA="]6"
M V30 10 DAT 10 ATOMS=(1 10) FIELDNAME="NOSEARCH_OCL_CUSTOM_LABEL" -
M V30 FIELDDISP=" 18.3013 15.5502 DA ALL 1 5" FIELDDATA="]5"
M V30 11 DAT 11 ATOMS=(1 13) FIELDNAME="NOSEARCH_OCL_CUSTOM_LABEL" -
M V30 FIELDDISP=" 23.4973 15.5502 DA ALL 1 5" FIELDDATA="]4"
M V30 12 DAT 12 ATOMS=(1 14) FIELDNAME="NOSEARCH_OCL_CUSTOM_LABEL" -
M V30 FIELDDISP=" 24.7963 14.8002 DA ALL 1 5" FIELDDATA="]3"
M V30 13 DAT 13 ATOMS=(1 15) FIELDNAME="NOSEARCH_OCL_CUSTOM_LABEL" -
M V30 FIELDDISP=" 24.7963 13.3002 DA ALL 1 5" FIELDDATA="]2"
M V30 14 DAT 14 ATOMS=(1 16) FIELDNAME="NOSEARCH_OCL_CUSTOM_LABEL" -
M V30 FIELDDISP=" 23.4973 12.5502 DA ALL 1 5" FIELDDATA="]1"
M V30 END SGROUP
M V30 END CTAB
M END
48 changes: 48 additions & 0 deletions __tests__/molfileWithAnnotation.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
import { readFileSync } from 'node:fs';
import { join } from 'node:path';

import { expect, test } from 'vitest';

import { Canonizer, Molecule } from '../lib';

test.fails('Molecule with annotation', () => {
const filename = join(import.meta.dirname, 'data', 'molfile_annotated.mol');
const molfile = readFileSync(filename, 'utf8');
const molecule = Molecule.fromMolfile(molfile);
expect(molecule.getAllAtoms()).toBe(16);
const customLabels = [];
for (let i = 0; i < 16; i++) {
customLabels.push(molecule.getAtomCustomLabel(i));
}
const expected = [
']8α',
']10α',
']10',
']4α',
']9α',
']9',
']8',
']7',
']6',
']5',
null,
null,
']4',
']3',
']2',
']1',
];
expect(customLabels).toStrictEqual(expected);

const canonizer = new Canonizer(molecule, {
encodeAtomCustomLabels: true,
});
const idCode = canonizer.getIDCode();

const molecule2 = Molecule.fromIDCode(idCode);
const customLabels2 = [];
for (let i = 0; i < 16; i++) {
customLabels2.push(molecule2.getAtomCustomLabel(i));
}
expect(customLabels2).toStrictEqual(expected);
});
Loading