Skip to content
Snippets Groups Projects
Commit 10b13860 authored by Zepei Xu's avatar Zepei Xu
Browse files

have basics, but formatting is not complete because of unclearness. not using...

have basics, but formatting is not complete because of unclearness. not using computations, wait, async, promise.
parent 16e66b83
No related branches found
No related tags found
No related merge requests found
@<TRIPOS>MOLECULE
5816
26 26 0 0 0
SMALL
GASTEIGER
@<TRIPOS>ATOM
1 O 1.7394 -2.1169 -1.0894 O.3 1 LIG1 -0.3859
2 O -2.2941 1.0781 -1.7979 O.3 1 LIG1 -0.5033
3 O -3.6584 0.5842 0.5722 O.3 1 LIG1 -0.5033
4 N 2.6359 1.0243 0.7030 N.3 1 LIG1 -0.3162
5 C 1.6787 -1.1447 -0.0373 C.3 1 LIG1 0.0927
6 C 0.2684 -0.6866 0.1208 C.ar 1 LIG1 -0.0143
7 C 2.6376 0.0193 -0.3576 C.3 1 LIG1 0.0258
8 C -0.3658 -0.0099 -0.9212 C.ar 1 LIG1 -0.0109
9 C -0.4164 -0.9343 1.3105 C.ar 1 LIG1 -0.0524
10 C -1.6849 0.4191 -0.7732 C.ar 1 LIG1 0.1586
11 C -1.7353 -0.5053 1.4585 C.ar 1 LIG1 -0.0162
12 C -2.3696 0.1713 0.4166 C.ar 1 LIG1 0.1582
13 C 3.5645 2.1013 0.3950 C.3 1 LIG1 -0.0157
14 H 2.0210 -1.6511 0.8741 H 1 LIG1 0.0656
15 H 2.3808 0.4742 -1.3225 H 1 LIG1 0.0453
16 H 3.6478 -0.3931 -0.4831 H 1 LIG1 0.0453
17 H 0.1501 0.1801 -1.8589 H 1 LIG1 0.0659
18 H 0.0640 -1.4598 2.1315 H 1 LIG1 0.0622
19 H 2.9013 0.5888 1.5858 H 1 LIG1 0.1217
20 H -2.2571 -0.7050 2.3907 H 1 LIG1 0.0655
21 H 2.6646 -2.4067 -1.1652 H 1 LIG1 0.2103
22 H 3.2862 2.6124 -0.5325 H 1 LIG1 0.0388
23 H 4.5925 1.7346 0.3078 H 1 LIG1 0.0388
24 H 3.5401 2.8441 1.1985 H 1 LIG1 0.0388
25 H -3.2008 1.2997 -1.5231 H 1 LIG1 0.2923
26 H -3.9690 0.3259 1.4570 H 1 LIG1 0.2923
@<TRIPOS>BOND
1 1 5 1
2 1 21 1
3 2 10 1
4 2 25 1
5 3 12 1
6 3 26 1
7 4 7 1
8 4 13 1
9 4 19 1
10 5 6 1
11 5 7 1
12 5 14 1
13 6 8 ar
14 6 9 ar
15 7 15 1
16 7 16 1
17 8 10 ar
18 8 17 1
19 9 11 ar
20 9 18 1
21 10 12 ar
22 11 12 ar
23 11 20 1
24 13 22 1
25 13 23 1
26 13 24 1
\ No newline at end of file
@<TRIPOS>MOLECULE
ZINC12921206_1_1
30 33 0 0 0
SMALL
USER_CHARGES
@<TRIPOS>ATOM
1 C1 10.8630 31.3859 32.2468 1 CAN 0.0000
2 C2 11.5701 31.4080 33.4817 1 CAN 0.0000
3 C3 17.5821 22.4473 38.5639 1 CAN 0.0000
4 C4 17.9273 24.7114 37.0200 1 CAN 0.0000
5 C5 10.5243 30.1190 31.8528 1 CAN 0.0000
6 C6 12.3942 31.2627 36.0033 1 CAN 0.0000
7 C7 12.3703 30.0954 35.2910 1 CAN 0.0000
8 C8 12.7652 28.9134 36.0072 1 CAN 0.0000
9 C9 16.4753 23.1064 38.0609 1 CAN 0.0000
10 C10 16.6480 24.2419 37.2829 1 CAN 0.0000
11 C11 18.8581 22.9199 38.3189 1 CAN 0.0000
12 C12 19.0369 24.0561 37.5370 1 CAN 0.0000
13 C13 11.8010 30.1533 33.9700 1 CAN 0.0000
14 C14 12.9774 29.2537 37.3208 1 CAN 0.0000
15 C15 13.3581 27.0671 37.7950 1 CAN 0.0000
16 C16 13.0045 27.5630 35.4958 1 CAN 0.0000
17 C17 14.5101 24.5014 36.0984 1 CAN 0.0000
18 C18 15.0909 22.6148 38.4220 1 CAN 0.0000
19 C19 19.6116 21.0974 39.7116 1 CAN 0.0000
20 C20 21.4990 23.9541 37.7136 1 CAN 0.0000
21 C21 13.2073 25.2763 36.0792 1 CAN 0.0000
22 N1 13.3019 28.3134 38.2813 1 CAN 0.0000
23 N2 13.2604 26.6887 36.4706 1 CAN 0.0000
24 N3 15.5062 24.9862 36.8657 1 CAN 0.0000
25 O1 13.0317 27.1909 34.3441 1 CAN 0.0000
26 O2 14.6486 23.4801 35.4573 1 CAN 0.0000
27 O3 19.9073 22.2497 38.8981 1 CAN 0.0000
28 O4 20.2810 24.5742 37.2617 1 CAN 0.0000
29 S1 11.0122 28.9270 33.0152 1 CAN 0.0000
30 S2 12.7971 30.9513 37.6624 1 CAN 0.0000
@<TRIPOS>BOND
1 1 2 0
2 1 5 0
3 2 13 0
4 3 11 0
5 3 9 0
6 4 12 0
7 4 10 0
8 5 29 0
9 6 7 0
10 6 30 0
11 7 8 0
12 7 13 0
13 8 14 0
14 8 16 0
15 9 10 0
16 9 18 0
17 10 24 0
18 11 27 0
19 11 12 0
20 12 28 0
21 13 29 0
22 14 22 0
23 14 30 0
24 15 22 0
25 15 23 0
26 16 23 0
27 16 25 0
28 17 21 0
29 17 24 0
30 17 26 0
31 19 27 0
32 20 28 0
33 21 23 0
@<TRIPOS>MOLECULE
ZINC12921206_1
49 52 0 0 0
SMALL
GASTEIGER
@<TRIPOS>ATOM
1 C1 0.6216 -0.2760 -6.8683 C.ar 1 <1> -0.0541
2 C2 0.3683 -0.8994 -5.6124 C.ar 1 <1> -0.0469
3 C3 -0.4563 -9.3380 -7.8499 C.ar 1 <1> -0.0116
4 C4 -1.3323 -7.7730 -5.7131 C.ar 1 <1> 0.0052
5 C5 1.6788 0.6049 -6.8049 C.ar 1 <1> -0.0237
6 C6 1.0293 -0.0678 -2.1894 C.ar 1 <1> -0.0133
7 C7 1.2229 -0.9407 -3.2374 C.ar 1 <1> 0.0102
8 C8 1.3908 -2.2806 -2.7857 C.ar 1 <1> 0.0803
9 C9 0.4711 -8.6946 -7.0304 C.ar 1 <1> -0.0256
10 C10 0.0332 -7.9122 -5.9620 C.ar 1 <1> 0.0401
11 C11 -1.8217 -9.1987 -7.6011 C.ar 1 <1> 0.1619
12 C12 -2.2597 -8.4163 -6.5327 C.ar 1 <1> 0.1633
13 C13 1.2418 -0.4712 -4.6368 C.ar 1 <1> 0.0206
14 C14 1.3196 -2.3849 -1.4088 C.ar 1 <1> 0.1157
15 C15 1.6389 -4.5865 -1.3837 C.ar 1 <1> 0.1003
16 C16 1.6164 -3.4830 -3.5741 C.ar 1 <1> 0.2632
17 C17 0.6789 -6.4424 -4.0211 C.2 1 <1> 0.2371
18 C18 1.9274 -8.8602 -7.3213 C.3 1 <1> -0.0378
19 C19 -2.1874 -10.6131 -9.4777 C.3 1 <1> 0.0790
20 C20 -3.9546 -7.4559 -5.1686 C.3 1 <1> 0.0790
21 C21 1.9636 -5.9327 -3.3970 C.3 1 <1> 0.1040
22 N1 1.4391 -3.5205 -0.6696 N.ar 1 <1> -0.2298
23 N2 1.7329 -4.6371 -2.7763 N.ar 1 <1> -0.2898
24 N3 0.9585 -7.2517 -5.1191 N.am 1 <1> -0.2837
25 O1 1.6923 -3.4619 -4.7990 O.2 1 <1> -0.2669
26 O2 -0.4256 -6.1563 -3.5700 O.2 1 <1> -0.2735
27 O3 -2.7176 -9.8330 -8.4079 O.3 1 <1> -0.4914
28 O4 -3.5906 -8.2727 -6.2796 O.3 1 <1> -0.4914
29 S1 2.3612 0.6778 -5.2360 S.2 1 <1> -0.0966
30 S2 1.0512 -0.8647 -0.6747 S.2 1 <1> -0.0763
31 H1 0.0574 -0.4648 -7.7724 H 1 <1> 0.0623
32 H2 -0.4177 -1.6249 -5.4418 H 1 <1> 0.0629
33 H3 -0.1187 -9.9489 -8.6838 H 1 <1> 0.0658
34 H4 -1.6794 -7.1646 -4.8809 H 1 <1> 0.0674
35 H5 2.0837 1.2088 -7.6047 H 1 <1> 0.0693
36 H6 0.8746 1.0019 -2.2311 H 1 <1> 0.0700
37 H7 1.7520 -5.5673 -0.8940 H 1 <1> 0.1030
38 H8 2.2679 -8.0781 -8.0093 H 1 <1> 0.0278
39 H9 2.5235 -8.8023 -6.4025 H 1 <1> 0.0278
40 H10 2.1317 -9.8382 -7.7740 H 1 <1> 0.0278
41 H11 -3.0074 -11.0637 -10.0422 H 1 <1> 0.0660
42 H12 -1.5373 -11.3932 -9.0735 H 1 <1> 0.0660
43 H13 -1.6073 -9.9638 -10.1376 H 1 <1> 0.0660
44 H14 -5.0433 -7.4258 -5.0787 H 1 <1> 0.0660
45 H15 -3.5623 -6.4462 -5.3135 H 1 <1> 0.0660
46 H16 -3.5278 -7.8834 -4.2582 H 1 <1> 0.0660
47 H17 2.7361 -5.8372 -4.1665 H 1 <1> 0.0589
48 H18 2.3025 -6.6506 -2.6435 H 1 <1> 0.0589
49 H19 1.9385 -7.3938 -5.3543 H 1 <1> 0.1549
@<TRIPOS>BOND
1 1 2 ar
2 1 5 ar
3 2 13 ar
4 3 9 ar
5 3 11 ar
6 4 10 ar
7 4 12 ar
8 5 29 ar
9 6 7 ar
10 6 30 ar
11 7 8 ar
12 7 13 1
13 8 14 ar
14 8 16 ar
15 9 10 ar
16 9 18 1
17 10 24 1
18 11 12 ar
19 11 27 1
20 12 28 1
21 13 29 ar
22 14 22 ar
23 14 30 ar
24 15 22 ar
25 15 23 ar
26 16 23 ar
27 16 25 2
28 17 21 1
29 17 24 am
30 17 26 2
31 19 27 1
32 20 28 1
33 21 23 1
34 1 31 1
35 2 32 1
36 3 33 1
37 4 34 1
38 5 35 1
39 6 36 1
40 15 37 1
41 18 38 1
42 18 39 1
43 18 40 1
44 19 41 1
45 19 42 1
46 19 43 1
47 20 44 1
48 20 45 1
49 20 46 1
50 21 47 1
51 21 48 1
52 24 49 1
import Tokenizer from '../common/text/tokenizer'
import FixedColumn from '../common/text/column/fixed'
import { ColumnType, UndefinedColumn } from '../common/column'
import * as Schema from './schema'
import Result from '../result'
//import Computation from '../../utils/computation'
interface State {
tokenizer: Tokenizer,
molecule: Schema.Molecule,
///////////// not including Computation.chunker /////////////
}
function createEmptyMolecule(): Schema.Molecule {
return {
mol_name: '',
num_atoms: 0,
num_bonds: 0,
num_subst: 0,
num_feat: 0,
num_sets: 0,
mol_type: '',
charge_type: '',
status_bits:'',
mol_comment: ''
};
}
function State(tokenizer: Tokenizer): State { //////////// not having ctx: Computation.Context as a parameter //////////////
return {
tokenizer,
molecule: createEmptyMolecule(),
//////////// not having chunker: Computation.chunker(ctx, 100000) ///////////
};
}
/**
* title string (free format string, optional time in ps after 't=')
*/
function handleMolecule(state: State) {
const { tokenizer, molecule } = state;
Tokenizer.markLine(tokenizer);
let name = Tokenizer.getTokenString(tokenizer);
molecule.mol_name = name;
Tokenizer.markLine(tokenizer);
const values = Tokenizer.getTokenString(tokenizer).trim().split(/\s+/g);
molecule.num_atoms = parseInt(values[0]);
molecule.num_bonds = parseInt(values[1]);
molecule.num_subst = parseInt(values[2]);
molecule.num_feat = parseInt(values[3]);
molecule.num_sets = parseInt(values[4]);
Tokenizer.markLine(tokenizer);
molecule.mol_type = Tokenizer.getTokenString(tokenizer);
Tokenizer.markLine(tokenizer);
molecule.charge_type = Tokenizer.getTokenString(tokenizer);
// skip the empty line
Tokenizer.markLine(tokenizer)
}
/**
* This format is fixed, ie. all columns are in a fixed position.
* Optionally (for now only yet with trjconv) you can write gro files
* with any number of decimal places, the format will then be n+5
* positions with n decimal places (n+1 for velocities) in stead
* of 8 with 3 (with 4 for velocities). Upon reading, the precision
* will be inferred from the distance between the decimal points
* (which will be n+5). Columns contain the following information
* (from left to right):
* residue number (5 positions, integer)
* residue name (5 characters)
* atom name (5 characters)
* atom number (5 positions, integer)
* position (in nm, x y z in 3 columns, each 8 positions with 3 decimal places)
* velocity (in nm/ps (or km/s), x y z in 3 columns, each 8 positions with 4 decimal places)
*/
function handleAtoms(state: State): Schema.Atoms {
const { tokenizer, molecule } = state;
////////// not using readLinesAsync /////////
const lines = Tokenizer.readLines(tokenizer, molecule.num_atoms);
const pO = 20;
const pW = state.header.precision.position + 5;
const vO = pO + 3 * pW;
const vW = state.header.precision.velocity + 4;
const col = FixedColumn({ data: tokenizer.data, lines, rowCount: state.numberOfAtoms });
const ret = {
count: molecule.num_atoms,
atom_id: col(0, 0, ColumnType.int),
atom_name: col(0, 0, ColumnType.str),
x: col(0, 0, ColumnType.float),
};
return ret;
}
/**
* box vectors (free format, space separated reals), values:
* v1(x) v2(y) v3(z) v1(y) v1(z) v2(x) v2(z) v3(x) v3(y),
* the last 6 values may be omitted (they will be set to zero).
* Gromacs only supports boxes with v1(y)=v1(z)=v2(z)=0.
*/
function handleBoxVectors(state: State) {
const { tokenizer } = state;
markLine(tokenizer);
const values = getTokenString(tokenizer).trim().split(/\s+/g);
state.header.box = [+values[0], +values[1], +values[2]];
}
function parseInternal(data: string): Result<Schema.File> {
const tokenizer = TokenizerState(data);
const structures: Schema.Structure[] = [];
while (tokenizer.position < data.length) {
const state = createState(tokenizer);
handleMolecule(state);
const atoms = handleAtoms(state);
handleBoxVectors(state);
structures.push({ header: state.header, atoms });
}
const result: Schema.File = { structures };
return Result.success(result);
}
export function parse(data: string) {
return parseInternal(data);
}
export default parse;
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment