sdf-parser 5.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +22 -0
- package/README.md +104 -0
- package/lib/index.js +221 -0
- package/package.json +61 -0
- package/src/__tests__/checkOptions.test.js +57 -0
- package/src/__tests__/checkUndefined.test.js +24 -0
- package/src/__tests__/getEntriesBoundaries.test.js +26 -0
- package/src/__tests__/index.test.js +76 -0
- package/src/__tests__/notWellFormatted.test.js +14 -0
- package/src/__tests__/stream.test.js +98 -0
- package/src/__tests__/test.sdf +8707 -0
- package/src/__tests__/test1.sdf +38 -0
- package/src/__tests__/test2.sdf +498 -0
- package/src/getEntriesBoundaries.js +16 -0
- package/src/index.js +2 -0
- package/src/parse.js +148 -0
- package/src/stream.browser.js +3 -0
- package/src/stream.js +44 -0
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import fs from 'fs';
|
|
2
|
+
|
|
3
|
+
import callbackStream from 'callback-stream';
|
|
4
|
+
import OCL from 'openchemlib/minimal';
|
|
5
|
+
|
|
6
|
+
import { entries, molecules } from '..';
|
|
7
|
+
|
|
8
|
+
const cbStream = callbackStream.bind(null, { objectMode: true });
|
|
9
|
+
|
|
10
|
+
describe('stream', () => {
|
|
11
|
+
it('entries', () =>
|
|
12
|
+
new Promise((resolve) => {
|
|
13
|
+
fs.createReadStream(`${__dirname}/test.sdf`)
|
|
14
|
+
.pipe(entries())
|
|
15
|
+
.pipe(
|
|
16
|
+
cbStream((err, data) => {
|
|
17
|
+
expect(err).toBeNull();
|
|
18
|
+
expect(data).toHaveLength(128);
|
|
19
|
+
expect(data[0]).toContain('-ISIS- 04231216572D');
|
|
20
|
+
const mol = OCL.Molecule.fromMolfile(data[5]);
|
|
21
|
+
expect(mol.toMolfile()).toContain(
|
|
22
|
+
'17 18 0 0 0 0 0 0 0 0999 V2000',
|
|
23
|
+
);
|
|
24
|
+
resolve();
|
|
25
|
+
}),
|
|
26
|
+
);
|
|
27
|
+
}));
|
|
28
|
+
|
|
29
|
+
it('molecules', () =>
|
|
30
|
+
new Promise((resolve) => {
|
|
31
|
+
fs.createReadStream(`${__dirname}/test.sdf`)
|
|
32
|
+
.pipe(molecules())
|
|
33
|
+
.pipe(
|
|
34
|
+
cbStream((err, data) => {
|
|
35
|
+
expect(err).toBeNull();
|
|
36
|
+
expect(data).toHaveLength(128);
|
|
37
|
+
expect(data[0]).toMatchObject({
|
|
38
|
+
Code: '0100380824',
|
|
39
|
+
CLogP: 2.7,
|
|
40
|
+
});
|
|
41
|
+
expect(data[0].molfile).toContain('-ISIS- 04231216572D');
|
|
42
|
+
resolve();
|
|
43
|
+
}),
|
|
44
|
+
);
|
|
45
|
+
}));
|
|
46
|
+
|
|
47
|
+
it('molecules - full result', () =>
|
|
48
|
+
new Promise((resolve) => {
|
|
49
|
+
fs.createReadStream(`${__dirname}/test.sdf`)
|
|
50
|
+
.pipe(molecules({ fullResult: true }))
|
|
51
|
+
.pipe(
|
|
52
|
+
cbStream((err, data) => {
|
|
53
|
+
expect(err).toBeNull();
|
|
54
|
+
expect(data).toHaveLength(128);
|
|
55
|
+
expect(data[0]).toMatchObject({
|
|
56
|
+
labels: [
|
|
57
|
+
'Code',
|
|
58
|
+
'Number of H-Donors',
|
|
59
|
+
'Number of H-Acceptors',
|
|
60
|
+
'Number of Rotatable bonds',
|
|
61
|
+
'CLogP',
|
|
62
|
+
],
|
|
63
|
+
});
|
|
64
|
+
expect(data[0].molecules).toHaveLength(1);
|
|
65
|
+
resolve();
|
|
66
|
+
}),
|
|
67
|
+
);
|
|
68
|
+
}));
|
|
69
|
+
|
|
70
|
+
it('molecules with filter', () =>
|
|
71
|
+
new Promise((resolve) => {
|
|
72
|
+
fs.createReadStream(`${__dirname}/test.sdf`)
|
|
73
|
+
.pipe(
|
|
74
|
+
molecules({
|
|
75
|
+
filter: (entry) => entry.Code === '0100380869',
|
|
76
|
+
}),
|
|
77
|
+
)
|
|
78
|
+
.pipe(
|
|
79
|
+
cbStream((err, data) => {
|
|
80
|
+
expect(err).toBeNull();
|
|
81
|
+
expect(data).toHaveLength(1);
|
|
82
|
+
resolve();
|
|
83
|
+
}),
|
|
84
|
+
);
|
|
85
|
+
}));
|
|
86
|
+
|
|
87
|
+
it('async iteration', async () => {
|
|
88
|
+
const stream = fs
|
|
89
|
+
.createReadStream(`${__dirname}/test.sdf`)
|
|
90
|
+
.pipe(molecules());
|
|
91
|
+
let count = 0;
|
|
92
|
+
for await (const molecule of stream) {
|
|
93
|
+
count++;
|
|
94
|
+
expect(molecule.molfile.toString()).toContain('0999 V2000');
|
|
95
|
+
}
|
|
96
|
+
expect(count).toBe(128);
|
|
97
|
+
});
|
|
98
|
+
});
|