-
Notifications
You must be signed in to change notification settings - Fork 2
/
parserVDW.js
93 lines (72 loc) · 2.96 KB
/
parserVDW.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
function clear(file) {
var raws = file.split('\n'); //divide ogni singola riga del file
var listaATOM = new Array();
var chosenModel = false;
var listaCoordinate = new Array();
var modelNumber = 0;
raws.forEach(function(raw) {
if((/^MODEL/).test(raw)) {
modelNumber = 1;
}
});
raws.forEach(function(raw) {
if (modelNumber === 0) {
if ((/^ATOM/).test(raw)) {
var x = raw.replace(/\s+/g, ' '); //g serve a ripetere..
listaATOM.push(x);
}
}
else {
if (modelNumber !== 0) {
if ((/^MODEL/).test(raw)) {
var clearedRaw = clearModelString(raw);
if(clearedRaw == modelNumber)
chosenModel = true;
}
if(chosenModel) {
if ((/^ATOM/).test(raw)) {
var x = raw.replace(/\s+/g, ' '); //g serve a ripetere..
listaATOM.push(x);
}
}
}
else {
if ((/^ATOM/).test(raw)) {
var x = raw.replace(/\s+/g, ' '); //g serve a ripetere..
listaATOM.push(x);
}
}
}
if ((/^TER/).test(raw))
chosenModel = false;
});
listaATOM.forEach(function(raw){
var riga = raw.replace(/\S+ \S+ \S+ \S+ \S+ \S+ /, '');
var listaCoordinateTemp = {x: " ", y: " ", z: " ", type: " "};
var x = riga.substring(0,riga.indexOf(' ')); //tagli la stringa dall'inizio al primo spazio
listaCoordinateTemp.x = x;
var charBeginY = riga.substring(riga.indexOf(' ')+1); //calcoli la posizione del carattere del primo spazio + 1 e ti ritorni la stringa tagliata
var y = charBeginY.substring(0, charBeginY.indexOf(' ')); //tagli la stringa precedente dall'inizio fino al primo spazio
listaCoordinateTemp.y = y;
var charBeginZ = charBeginY.substring(charBeginY.indexOf(' ')+1); //...stessa cosa di sopra
var z = charBeginZ.substring(0, charBeginZ.indexOf(' '));
listaCoordinateTemp.z = z;
var type = charBeginZ.substring(charBeginZ.length-2,charBeginZ.length-1);
listaCoordinateTemp.type = type;
listaCoordinate.push(listaCoordinateTemp);
});
return listaCoordinate;
};
function modelCounter(file) {
var modelNumber = 0;
var raws = file.split('\n');
raws.forEach(function(raw) {
if ((/^MODEL/).test(raw))
++modelNumber;
});
return modelNumber;
}
function clearModelString(raw) {
var clearedRaw = raw.replace(/\S+\s+/, '');
return clearedRaw;
}