@chemistry/crystalview 1.0.9 → 3.1.1
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 +1 -1
- package/README.md +61 -31
- package/dist/{src/camera → camera}/Camera.d.ts +69 -63
- package/dist/camera/Camera.d.ts.map +1 -0
- package/dist/camera/Camera.js +257 -0
- package/dist/camera/Camera.js.map +1 -0
- package/dist/camera/ICamera.d.ts +9 -0
- package/dist/camera/ICamera.d.ts.map +1 -0
- package/dist/camera/ICamera.js +2 -0
- package/dist/camera/ICamera.js.map +1 -0
- package/dist/{src/crystal-view.d.ts → crystal-view.d.ts} +25 -24
- package/dist/crystal-view.d.ts.map +1 -0
- package/dist/crystal-view.js +181 -0
- package/dist/crystal-view.js.map +1 -0
- package/dist/crystalview.css +47 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/dist/{src/molecule3d → molecule3d}/Atom.d.ts +14 -13
- package/dist/molecule3d/Atom.d.ts.map +1 -0
- package/dist/molecule3d/Atom.js +19 -0
- package/dist/molecule3d/Atom.js.map +1 -0
- package/dist/{src/molecule3d → molecule3d}/Bond.d.ts +8 -7
- package/dist/molecule3d/Bond.d.ts.map +1 -0
- package/dist/molecule3d/Bond.js +11 -0
- package/dist/molecule3d/Bond.js.map +1 -0
- package/dist/{src/molecule3d → molecule3d}/CellAtom.d.ts +96 -96
- package/dist/molecule3d/CellAtom.d.ts.map +1 -0
- package/dist/molecule3d/CellAtom.js +132 -0
- package/dist/molecule3d/CellAtom.js.map +1 -0
- package/dist/{src/molecule3d → molecule3d}/Link.d.ts +15 -14
- package/dist/molecule3d/Link.d.ts.map +1 -0
- package/dist/molecule3d/Link.js +17 -0
- package/dist/molecule3d/Link.js.map +1 -0
- package/dist/{src/molecule3d → molecule3d}/Marker.d.ts +9 -8
- package/dist/molecule3d/Marker.d.ts.map +1 -0
- package/dist/molecule3d/Marker.js +11 -0
- package/dist/molecule3d/Marker.js.map +1 -0
- package/dist/{src/molecule3d → molecule3d}/MarkerContact.d.ts +7 -6
- package/dist/molecule3d/MarkerContact.d.ts.map +1 -0
- package/dist/molecule3d/MarkerContact.js +9 -0
- package/dist/molecule3d/MarkerContact.js.map +1 -0
- package/dist/{src/molecule3d → molecule3d}/Molecule3D.d.ts +45 -44
- package/dist/molecule3d/Molecule3D.d.ts.map +1 -0
- package/dist/molecule3d/Molecule3D.js +139 -0
- package/dist/molecule3d/Molecule3D.js.map +1 -0
- package/dist/{src/molecule3d → molecule3d}/MoleculeBuilder.d.ts +20 -19
- package/dist/molecule3d/MoleculeBuilder.d.ts.map +1 -0
- package/dist/molecule3d/MoleculeBuilder.js +131 -0
- package/dist/molecule3d/MoleculeBuilder.js.map +1 -0
- package/dist/molecule3d/MoleculeConnector.d.ts +10 -0
- package/dist/molecule3d/MoleculeConnector.d.ts.map +1 -0
- package/dist/molecule3d/MoleculeConnector.js +107 -0
- package/dist/molecule3d/MoleculeConnector.js.map +1 -0
- package/dist/{src/molecule3d → molecule3d}/UnitCell.d.ts +36 -35
- package/dist/molecule3d/UnitCell.d.ts.map +1 -0
- package/dist/molecule3d/UnitCell.js +238 -0
- package/dist/molecule3d/UnitCell.js.map +1 -0
- package/dist/molecule3d/io/IMoleculeReader.d.ts +8 -0
- package/dist/molecule3d/io/IMoleculeReader.d.ts.map +1 -0
- package/dist/molecule3d/io/IMoleculeReader.js +2 -0
- package/dist/molecule3d/io/IMoleculeReader.js.map +1 -0
- package/dist/{src/molecule3d → molecule3d}/io/MoleculeReaderJCIF.d.ts +12 -11
- package/dist/molecule3d/io/MoleculeReaderJCIF.d.ts.map +1 -0
- package/dist/molecule3d/io/MoleculeReaderJCIF.js +115 -0
- package/dist/molecule3d/io/MoleculeReaderJCIF.js.map +1 -0
- package/dist/{src/painter → painter}/CanvasContext.d.ts +15 -14
- package/dist/painter/CanvasContext.d.ts.map +1 -0
- package/dist/painter/CanvasContext.js +68 -0
- package/dist/painter/CanvasContext.js.map +1 -0
- package/dist/painter/Painter.d.ts +36 -0
- package/dist/painter/Painter.d.ts.map +1 -0
- package/dist/painter/Painter.js +237 -0
- package/dist/painter/Painter.js.map +1 -0
- package/dist/ui/ContextMenu.d.ts +24 -0
- package/dist/ui/ContextMenu.d.ts.map +1 -0
- package/dist/ui/ContextMenu.js +147 -0
- package/dist/ui/ContextMenu.js.map +1 -0
- package/dist/{src/ui → ui}/ContextMenuItem.d.ts +18 -17
- package/dist/ui/ContextMenuItem.d.ts.map +1 -0
- package/dist/ui/ContextMenuItem.js +72 -0
- package/dist/ui/ContextMenuItem.js.map +1 -0
- package/package.json +68 -87
- package/dist/crystal-view.min.js +0 -24
- package/dist/src/molecule3d/MoleculeConnector.d.ts +0 -9
- package/dist/src/painter/Painter.d.ts +0 -35
- package/dist/src/ui/ContextMenu.d.ts +0 -24
- package/package-lock.json +0 -9410
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import { Bond } from './Bond.js';
|
|
2
|
+
import { Marker } from './Marker.js';
|
|
3
|
+
import { MarkerContact } from './MarkerContact.js';
|
|
4
|
+
import { UnitCell } from './UnitCell.js';
|
|
5
|
+
export class MoleculeBuilder {
|
|
6
|
+
molecule;
|
|
7
|
+
constructor(molecule) {
|
|
8
|
+
this.molecule = molecule;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Add Unique Atoms to Molecule
|
|
12
|
+
*/
|
|
13
|
+
addUniqueAtoms() {
|
|
14
|
+
this.addAtomsBySymetry(['x,y,z']);
|
|
15
|
+
}
|
|
16
|
+
addAtomsBySymetry(symetryList) {
|
|
17
|
+
for (const catom of this.molecule.cellAtoms) {
|
|
18
|
+
for (const symetryCode of symetryList) {
|
|
19
|
+
const symetry = UnitCell.getMatrixFromSymetry(symetryCode);
|
|
20
|
+
// Add atom with bonds
|
|
21
|
+
this.addAtomWithBonds(catom, symetry);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
this.addMarkers();
|
|
25
|
+
}
|
|
26
|
+
addAtomWithBonds(catom, symetry) {
|
|
27
|
+
const markers = [];
|
|
28
|
+
// build atoms connectivity
|
|
29
|
+
this.molecule.buildConnectivity();
|
|
30
|
+
// Predict inserted atom position
|
|
31
|
+
const predictedPostion = symetry.project(catom.fractional);
|
|
32
|
+
const zatom = catom.getChild(predictedPostion);
|
|
33
|
+
let atom;
|
|
34
|
+
// Atom with predicted position not found
|
|
35
|
+
if (!zatom) {
|
|
36
|
+
// Create Atom and Add it as Chield
|
|
37
|
+
atom = catom.createAtom(symetry, true);
|
|
38
|
+
this.molecule.addAtom(atom);
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
atom = zatom;
|
|
42
|
+
}
|
|
43
|
+
// let makers = [];
|
|
44
|
+
// loop throught links
|
|
45
|
+
const links = catom.getLinks();
|
|
46
|
+
for (const link of links) {
|
|
47
|
+
// connected atom
|
|
48
|
+
const conAtom = link.atom;
|
|
49
|
+
// connected atom predicted position
|
|
50
|
+
const predicted = symetry.project(link.fractional);
|
|
51
|
+
const xatom = conAtom.getChild(predicted);
|
|
52
|
+
// Atom alredy exists ..
|
|
53
|
+
if (xatom) {
|
|
54
|
+
const bond = new Bond(atom, xatom, 1);
|
|
55
|
+
this.molecule.bonds.push(bond);
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
markers.push({
|
|
59
|
+
atom: conAtom,
|
|
60
|
+
symetry,
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return markers;
|
|
65
|
+
}
|
|
66
|
+
extendByMarker(marker) {
|
|
67
|
+
const markersList = [];
|
|
68
|
+
markersList.push({
|
|
69
|
+
atom: marker.cellAtom,
|
|
70
|
+
symetry: marker.symetry,
|
|
71
|
+
});
|
|
72
|
+
const sym = marker.symetry;
|
|
73
|
+
let j = 1000;
|
|
74
|
+
while (markersList.length > 0 && j > 0) {
|
|
75
|
+
j--;
|
|
76
|
+
const currentMarker = markersList.shift();
|
|
77
|
+
if (!currentMarker) {
|
|
78
|
+
continue;
|
|
79
|
+
}
|
|
80
|
+
if (!currentMarker.symetry.equals(sym)) {
|
|
81
|
+
continue;
|
|
82
|
+
}
|
|
83
|
+
{
|
|
84
|
+
const markers = this.addAtomWithBonds(currentMarker.atom, currentMarker.symetry);
|
|
85
|
+
markersList.push(...markers);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
this.addMarkers();
|
|
89
|
+
}
|
|
90
|
+
addMarkers() {
|
|
91
|
+
const cellAtoms = this.molecule.cellAtoms;
|
|
92
|
+
const unitCell = this.molecule.unitCell;
|
|
93
|
+
const markersPositions = [];
|
|
94
|
+
this.molecule.markers = [];
|
|
95
|
+
this.molecule.markersContacts = [];
|
|
96
|
+
const markers = this.molecule.markers;
|
|
97
|
+
const markersContacts = this.molecule.markersContacts;
|
|
98
|
+
const inList = (position) => {
|
|
99
|
+
for (const mposition of markersPositions) {
|
|
100
|
+
if (mposition.equals(position)) {
|
|
101
|
+
return true;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
return false;
|
|
105
|
+
};
|
|
106
|
+
// Loop througt all cell atoms
|
|
107
|
+
for (const catom of cellAtoms) {
|
|
108
|
+
for (const atom of catom.children) {
|
|
109
|
+
const atomSymetry = atom.symetry;
|
|
110
|
+
for (const link of catom.links) {
|
|
111
|
+
const conAtom = link.atom;
|
|
112
|
+
const symetry = link.symetry;
|
|
113
|
+
const totalSymetry = atomSymetry.multiply(symetry);
|
|
114
|
+
// var predicted1 = totalSymetry.multiple(conAtom.fractional);
|
|
115
|
+
let predicted = symetry.project(conAtom.fractional);
|
|
116
|
+
predicted = atomSymetry.project(predicted);
|
|
117
|
+
const xatom = conAtom.getChild(predicted);
|
|
118
|
+
if (!xatom) {
|
|
119
|
+
const mPosition = unitCell.fractToOrth(predicted);
|
|
120
|
+
if (!inList(mPosition)) {
|
|
121
|
+
markersPositions.push(mPosition);
|
|
122
|
+
markers.push(new Marker(mPosition, totalSymetry, conAtom));
|
|
123
|
+
markersContacts.push(new MarkerContact(atom.position, mPosition));
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
//# sourceMappingURL=MoleculeBuilder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MoleculeBuilder.js","sourceRoot":"","sources":["../../src/molecule3d/MoleculeBuilder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Molecule3D } from './Molecule3D.js';
|
|
2
|
+
export declare class MoleculeConnector {
|
|
3
|
+
private molecule;
|
|
4
|
+
constructor(molecule: Molecule3D);
|
|
5
|
+
buildConnectivity(): void;
|
|
6
|
+
private calculateCellLinks;
|
|
7
|
+
private isSutableByAssembly;
|
|
8
|
+
private isConnected;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=MoleculeConnector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MoleculeConnector.d.ts","sourceRoot":"","sources":["../../src/molecule3d/MoleculeConnector.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAK7C,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAa;gBAEjB,QAAQ,EAAE,UAAU;IAIzB,iBAAiB;IAWxB,OAAO,CAAC,kBAAkB;IA4F1B,OAAO,CAAC,mBAAmB;IAa3B,OAAO,CAAC,WAAW;CAWpB"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { Vec3 } from '@chemistry/math';
|
|
2
|
+
const CW_BOND_FROM = 0.4;
|
|
3
|
+
const CW_BOND_TO = 1.2;
|
|
4
|
+
export class MoleculeConnector {
|
|
5
|
+
molecule;
|
|
6
|
+
constructor(molecule) {
|
|
7
|
+
this.molecule = molecule;
|
|
8
|
+
}
|
|
9
|
+
buildConnectivity() {
|
|
10
|
+
// no atoms ?
|
|
11
|
+
if (this.molecule.cellAtoms.length === 0) {
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
// ORDER IS IMPORTANT
|
|
15
|
+
// Calculate Cell Links
|
|
16
|
+
this.calculateCellLinks();
|
|
17
|
+
}
|
|
18
|
+
calculateCellLinks() {
|
|
19
|
+
const cellAtoms = this.molecule.cellAtoms;
|
|
20
|
+
const unitCell = this.molecule.unitCell;
|
|
21
|
+
let maxRCow = -Infinity;
|
|
22
|
+
// get atom with bigest RcoW
|
|
23
|
+
for (const atom of cellAtoms) {
|
|
24
|
+
maxRCow = Math.max(atom.element.RCow, maxRCow);
|
|
25
|
+
}
|
|
26
|
+
// Maximal posible length
|
|
27
|
+
const maxRCow2 = maxRCow * 2 * CW_BOND_TO;
|
|
28
|
+
// Detect min and Max vectors of the cell atoms
|
|
29
|
+
let p1 = new Vec3(Infinity, Infinity, Infinity);
|
|
30
|
+
let p2 = new Vec3(-Infinity, -Infinity, -Infinity);
|
|
31
|
+
for (const atom of cellAtoms) {
|
|
32
|
+
p1.x = Math.min(p1.x, atom.position.x);
|
|
33
|
+
p1.y = Math.min(p1.y, atom.position.y);
|
|
34
|
+
p1.z = Math.min(p1.z, atom.position.z);
|
|
35
|
+
p2.x = Math.max(p2.x, atom.position.x);
|
|
36
|
+
p2.y = Math.max(p2.y, atom.position.y);
|
|
37
|
+
p2.z = Math.max(p2.z, atom.position.z);
|
|
38
|
+
}
|
|
39
|
+
// Double RVdW and fill by atoms
|
|
40
|
+
const vRcow = new Vec3(2 * maxRCow, 2 * maxRCow, 2 * maxRCow);
|
|
41
|
+
p1 = p1.sub(vRcow);
|
|
42
|
+
p2 = p2.add(vRcow);
|
|
43
|
+
const symetryList = unitCell.symetryList;
|
|
44
|
+
const translations = unitCell.transactionsFromOrthBox(p1, p2);
|
|
45
|
+
// Loop througt all cell atoms
|
|
46
|
+
for (let i = 0; i < cellAtoms.length; i++) {
|
|
47
|
+
const catom = cellAtoms[i];
|
|
48
|
+
// Loop throught all Symetries
|
|
49
|
+
for (const symetry of symetryList) {
|
|
50
|
+
// fill unit cell
|
|
51
|
+
const pre1 = symetry.project(catom.fractional);
|
|
52
|
+
// The atom inside unit cell
|
|
53
|
+
const pre2 = Vec3.getDecimal(pre1);
|
|
54
|
+
// Translation from orign to get atom
|
|
55
|
+
const transFromOrign = Vec3.sub(pre1, pre2);
|
|
56
|
+
for (const tr of translations) {
|
|
57
|
+
const pre3 = Vec3.add(pre2, tr); // new fractional coordinates
|
|
58
|
+
// Orth position prediction
|
|
59
|
+
const pred = unitCell.fractToOrth(pre3);
|
|
60
|
+
const px = p1.x <= pred.x && p2.x >= pred.x;
|
|
61
|
+
const py = p1.y <= pred.y && p2.y >= pred.y;
|
|
62
|
+
const pz = p1.z <= pred.z && p2.z >= pred.z;
|
|
63
|
+
if (px && py && pz) {
|
|
64
|
+
const trans = Vec3.sub(tr, transFromOrign);
|
|
65
|
+
for (let m = i + 1; m < cellAtoms.length; m++) {
|
|
66
|
+
const catom2 = cellAtoms[m];
|
|
67
|
+
if (!this.isSutableByAssembly(catom, catom2)) {
|
|
68
|
+
continue;
|
|
69
|
+
}
|
|
70
|
+
const disV = new Vec3(Math.abs(catom2.position.x - pred.x), Math.abs(catom2.position.y - pred.y), Math.abs(catom2.position.z - pred.z));
|
|
71
|
+
const covBond = disV.x <= maxRCow2 && disV.y <= maxRCow2 && disV.z <= maxRCow2;
|
|
72
|
+
if (!covBond) {
|
|
73
|
+
continue;
|
|
74
|
+
}
|
|
75
|
+
if (this.isConnected(catom2, catom, pred)) {
|
|
76
|
+
const sym = symetry.translate(trans);
|
|
77
|
+
const symInverse = sym.inverse();
|
|
78
|
+
catom2.addLink(catom, sym);
|
|
79
|
+
catom.addLink(catom2, symInverse);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
isSutableByAssembly(atom1, atom2) {
|
|
88
|
+
if (atom1.assembly || atom2.assembly || atom1.group || atom2.group) {
|
|
89
|
+
if (atom1.group && atom1.group !== '-1' && atom1.group !== '1') {
|
|
90
|
+
return false;
|
|
91
|
+
}
|
|
92
|
+
if (atom2.group && atom2.group !== '-1' && atom2.group !== '1') {
|
|
93
|
+
return false;
|
|
94
|
+
}
|
|
95
|
+
return true;
|
|
96
|
+
}
|
|
97
|
+
return true;
|
|
98
|
+
}
|
|
99
|
+
isConnected(atom1, atom2, pred) {
|
|
100
|
+
const disV = new Vec3(atom1.position.x - pred.x, atom1.position.y - pred.y, atom1.position.z - pred.z);
|
|
101
|
+
const l = disV.length;
|
|
102
|
+
const r = atom1.element.RCow + atom2.element.RCow;
|
|
103
|
+
const hasBond = l <= r * CW_BOND_TO && l >= r * CW_BOND_FROM;
|
|
104
|
+
return hasBond;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=MoleculeConnector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MoleculeConnector.js","sourceRoot":"","sources":["../../src/molecule3d/MoleculeConnector.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,35 +1,36 @@
|
|
|
1
|
-
import { Matrix3x4, Vec3 } from
|
|
2
|
-
import {
|
|
3
|
-
export declare class UnitCell {
|
|
4
|
-
/**
|
|
5
|
-
* Will construct Transformation Matrix from Crystallographic notation
|
|
6
|
-
* e.g. x,y,z -x+1/2, -y, z+1/2
|
|
7
|
-
*/
|
|
8
|
-
static getMatrixFromSymetry(symetryCode: string): Matrix3x4;
|
|
9
|
-
a: number;
|
|
10
|
-
b: number;
|
|
11
|
-
c: number;
|
|
12
|
-
alpha: number;
|
|
13
|
-
beta: number;
|
|
14
|
-
gamma: number;
|
|
15
|
-
spaceGroup:
|
|
16
|
-
volume: number;
|
|
17
|
-
symetryList: Matrix3x4[];
|
|
18
|
-
private mOrthMatrix;
|
|
19
|
-
private mOrthMatrixInvert;
|
|
20
|
-
constructor(a: number, b: number, c: number, alpha: number, beta: number, gamma: number, spaceGroup:
|
|
21
|
-
/**
|
|
22
|
-
* Convert fractional coordinates to Orth
|
|
23
|
-
*/
|
|
24
|
-
fractToOrth(coord: Vec3): Vec3;
|
|
25
|
-
/**
|
|
26
|
-
* Convert Orth coordinates to fractional
|
|
27
|
-
*/
|
|
28
|
-
orthToFract(coord: Vec3): Vec3;
|
|
29
|
-
/**
|
|
30
|
-
* Based on Orth box conner coordinates Return
|
|
31
|
-
* posible tranactions to get evry posible dot from this box
|
|
32
|
-
*/
|
|
33
|
-
transactionsFromOrthBox(point1: Vec3, point2: Vec3): Vec3[];
|
|
34
|
-
private init
|
|
35
|
-
}
|
|
1
|
+
import { Matrix3x4, Vec3 } from '@chemistry/math';
|
|
2
|
+
import type { SpaceGroupInfo } from '@chemistry/space-groups';
|
|
3
|
+
export declare class UnitCell {
|
|
4
|
+
/**
|
|
5
|
+
* Will construct Transformation Matrix from Crystallographic notation
|
|
6
|
+
* e.g. x,y,z -x+1/2, -y, z+1/2
|
|
7
|
+
*/
|
|
8
|
+
static getMatrixFromSymetry(symetryCode: string): Matrix3x4;
|
|
9
|
+
a: number;
|
|
10
|
+
b: number;
|
|
11
|
+
c: number;
|
|
12
|
+
alpha: number;
|
|
13
|
+
beta: number;
|
|
14
|
+
gamma: number;
|
|
15
|
+
spaceGroup: SpaceGroupInfo;
|
|
16
|
+
volume: number;
|
|
17
|
+
symetryList: Matrix3x4[];
|
|
18
|
+
private mOrthMatrix;
|
|
19
|
+
private mOrthMatrixInvert;
|
|
20
|
+
constructor(a: number, b: number, c: number, alpha: number, beta: number, gamma: number, spaceGroup: SpaceGroupInfo);
|
|
21
|
+
/**
|
|
22
|
+
* Convert fractional coordinates to Orth
|
|
23
|
+
*/
|
|
24
|
+
fractToOrth(coord: Vec3): Vec3;
|
|
25
|
+
/**
|
|
26
|
+
* Convert Orth coordinates to fractional
|
|
27
|
+
*/
|
|
28
|
+
orthToFract(coord: Vec3): Vec3;
|
|
29
|
+
/**
|
|
30
|
+
* Based on Orth box conner coordinates Return
|
|
31
|
+
* posible tranactions to get evry posible dot from this box
|
|
32
|
+
*/
|
|
33
|
+
transactionsFromOrthBox(point1: Vec3, point2: Vec3): Vec3[];
|
|
34
|
+
private init;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=UnitCell.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UnitCell.d.ts","sourceRoot":"","sources":["../../src/molecule3d/UnitCell.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,SAAS,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE9D,qBAAa,QAAQ;IACnB;;;OAGG;WACW,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS;IAiI3D,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,cAAc,CAAC;IAE3B,MAAM,EAAG,MAAM,CAAC;IAChB,WAAW,EAAG,SAAS,EAAE,CAAC;IACjC,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,iBAAiB,CAAa;gBAGpC,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,cAAc;IAa5B;;OAEG;IACI,WAAW,CAAC,KAAK,EAAE,IAAI,GAAG,IAAI;IAIrC;;OAEG;IACI,WAAW,CAAC,KAAK,EAAE,IAAI,GAAG,IAAI;IAIrC;;;OAGG;IACI,uBAAuB,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,GAAG,IAAI,EAAE;IAqDlE,OAAO,CAAC,IAAI;CAsCb"}
|
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
import { Matrix3x3, Matrix3x4, Vec3 } from '@chemistry/math';
|
|
2
|
+
export class UnitCell {
|
|
3
|
+
/**
|
|
4
|
+
* Will construct Transformation Matrix from Crystallographic notation
|
|
5
|
+
* e.g. x,y,z -x+1/2, -y, z+1/2
|
|
6
|
+
*/
|
|
7
|
+
static getMatrixFromSymetry(symetryCode) {
|
|
8
|
+
function replaceAll(str, find, replace) {
|
|
9
|
+
return str.replace(new RegExp(find.replace(/[-/\\^$*+?.()|[\]{}]/g, '\\$&'), 'g'), replace);
|
|
10
|
+
}
|
|
11
|
+
function prseSym1(str) {
|
|
12
|
+
const res = [0, 0, 0, 0];
|
|
13
|
+
const spl = str.split('+');
|
|
14
|
+
// loop throught all splits
|
|
15
|
+
for (const sp2 of spl) {
|
|
16
|
+
const res2 = prseSym2(sp2);
|
|
17
|
+
res[0] = res[0] + res2[0];
|
|
18
|
+
res[1] = res[1] + res2[1];
|
|
19
|
+
res[2] = res[2] + res2[2];
|
|
20
|
+
res[3] = res[3] + res2[3];
|
|
21
|
+
}
|
|
22
|
+
return res;
|
|
23
|
+
}
|
|
24
|
+
function prseSym2(str) {
|
|
25
|
+
const res = [0, 0, 0, 0];
|
|
26
|
+
const spl = str.split('-');
|
|
27
|
+
let res2;
|
|
28
|
+
// -x-y, _x-z
|
|
29
|
+
for (let i = 0; i < spl.length; i++) {
|
|
30
|
+
if (i === 0 && spl[i] === '') {
|
|
31
|
+
continue;
|
|
32
|
+
}
|
|
33
|
+
let znak = -1;
|
|
34
|
+
if (i === 0) {
|
|
35
|
+
znak = 1;
|
|
36
|
+
}
|
|
37
|
+
res2 = prseSym3(spl[i]);
|
|
38
|
+
res[0] = res[0] + res2[0] * znak;
|
|
39
|
+
res[1] = res[1] + res2[1] * znak;
|
|
40
|
+
res[2] = res[2] + res2[2] * znak;
|
|
41
|
+
res[3] = res[3] + res2[3] * znak;
|
|
42
|
+
}
|
|
43
|
+
return res;
|
|
44
|
+
}
|
|
45
|
+
// Parse Symetry 3
|
|
46
|
+
function prseSym3(str) {
|
|
47
|
+
const res = [0, 0, 0, 0];
|
|
48
|
+
if (str.includes('x')) {
|
|
49
|
+
// 1/2x,0.25*x
|
|
50
|
+
res[0] = prseSym5(str, 'x');
|
|
51
|
+
}
|
|
52
|
+
else if (str.includes('y')) {
|
|
53
|
+
res[1] = prseSym5(str, 'y');
|
|
54
|
+
}
|
|
55
|
+
else if (str.includes('z')) {
|
|
56
|
+
res[2] = prseSym5(str, 'z');
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
// : 1/2 0.33 + 1
|
|
60
|
+
res[3] = prseSym4(str);
|
|
61
|
+
}
|
|
62
|
+
return res;
|
|
63
|
+
}
|
|
64
|
+
function prseSym4(str) {
|
|
65
|
+
let res;
|
|
66
|
+
if (str.includes('/')) {
|
|
67
|
+
// 1/2
|
|
68
|
+
const xpl = str.split('/');
|
|
69
|
+
res = parseFloat(xpl[0]) / parseFloat(xpl[1]);
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
const stp = str.replace('.', ',');
|
|
73
|
+
res = parseFloat(stp);
|
|
74
|
+
}
|
|
75
|
+
return res;
|
|
76
|
+
}
|
|
77
|
+
function prseSym5(str, ch) {
|
|
78
|
+
let res = 0;
|
|
79
|
+
if (str.includes(ch)) {
|
|
80
|
+
if (str.includes('*')) {
|
|
81
|
+
// 1/2x,0.25*x
|
|
82
|
+
const xpl = str.split('*');
|
|
83
|
+
res = prseSym4(xpl[0]);
|
|
84
|
+
if (xpl[1] !== ch) {
|
|
85
|
+
throw new Error('Incorect formula');
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
if (ch === str) {
|
|
90
|
+
return 1;
|
|
91
|
+
}
|
|
92
|
+
res = prseSym4(str.replace(ch, '')); // Replace(ch.ToString(), "")
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
return res;
|
|
96
|
+
}
|
|
97
|
+
const s = replaceAll(symetryCode.toLowerCase(), ' ', '');
|
|
98
|
+
const pils = s.split(',');
|
|
99
|
+
if (pils.length !== 3) {
|
|
100
|
+
throw new Error('can not parse symetry code : ' + symetryCode);
|
|
101
|
+
}
|
|
102
|
+
const xv = prseSym1(pils[0]);
|
|
103
|
+
const yv = prseSym1(pils[1]);
|
|
104
|
+
const zv = prseSym1(pils[2]);
|
|
105
|
+
// Double check if the matrix were parsed correctly
|
|
106
|
+
for (let i = 0; i < 4; i++) {
|
|
107
|
+
let r = typeof xv[i] !== 'number' || !isFinite(xv[i]);
|
|
108
|
+
r = r || typeof yv[i] !== 'number' || !isFinite(yv[i]);
|
|
109
|
+
r = r || typeof zv[i] !== 'number' || !isFinite(zv[i]);
|
|
110
|
+
if (r) {
|
|
111
|
+
throw new Error('can not parse symetry code : ' + symetryCode);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
return new Matrix3x4([
|
|
115
|
+
xv[0],
|
|
116
|
+
xv[1],
|
|
117
|
+
xv[2],
|
|
118
|
+
xv[3],
|
|
119
|
+
yv[0],
|
|
120
|
+
yv[1],
|
|
121
|
+
yv[2],
|
|
122
|
+
yv[3],
|
|
123
|
+
zv[0],
|
|
124
|
+
zv[1],
|
|
125
|
+
zv[2],
|
|
126
|
+
zv[3],
|
|
127
|
+
]);
|
|
128
|
+
}
|
|
129
|
+
a;
|
|
130
|
+
b;
|
|
131
|
+
c;
|
|
132
|
+
alpha;
|
|
133
|
+
beta;
|
|
134
|
+
gamma;
|
|
135
|
+
spaceGroup;
|
|
136
|
+
volume;
|
|
137
|
+
symetryList;
|
|
138
|
+
mOrthMatrix;
|
|
139
|
+
mOrthMatrixInvert;
|
|
140
|
+
constructor(a, b, c, alpha, beta, gamma, spaceGroup) {
|
|
141
|
+
this.a = a;
|
|
142
|
+
this.b = b;
|
|
143
|
+
this.c = c;
|
|
144
|
+
this.alpha = alpha;
|
|
145
|
+
this.beta = beta;
|
|
146
|
+
this.gamma = gamma;
|
|
147
|
+
this.spaceGroup = spaceGroup;
|
|
148
|
+
this.init();
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Convert fractional coordinates to Orth
|
|
152
|
+
*/
|
|
153
|
+
fractToOrth(coord) {
|
|
154
|
+
return this.mOrthMatrix.project(coord);
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Convert Orth coordinates to fractional
|
|
158
|
+
*/
|
|
159
|
+
orthToFract(coord) {
|
|
160
|
+
return this.mOrthMatrixInvert.project(coord);
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Based on Orth box conner coordinates Return
|
|
164
|
+
* posible tranactions to get evry posible dot from this box
|
|
165
|
+
*/
|
|
166
|
+
transactionsFromOrthBox(point1, point2) {
|
|
167
|
+
// Normalize points
|
|
168
|
+
const p1 = new Vec3(Math.min(point1.x, point2.x), Math.min(point1.y, point2.y), Math.min(point1.z, point2.z));
|
|
169
|
+
const p2 = new Vec3(Math.max(point1.x, point2.x), Math.max(point1.y, point2.y), Math.max(point1.z, point2.z));
|
|
170
|
+
// Create vectors of the box
|
|
171
|
+
const v1 = new Vec3(p1.x, p1.y, p1.z);
|
|
172
|
+
const v2 = new Vec3(p2.x, p1.y, p1.z);
|
|
173
|
+
const v3 = new Vec3(p1.x, p2.y, p1.z);
|
|
174
|
+
const v4 = new Vec3(p1.x, p1.y, p2.z);
|
|
175
|
+
const v5 = new Vec3(p2.x, p2.y, p1.z);
|
|
176
|
+
const v6 = new Vec3(p2.x, p1.y, p2.z);
|
|
177
|
+
const v7 = new Vec3(p1.x, p2.y, p2.z);
|
|
178
|
+
const v8 = new Vec3(p2.x, p2.y, p2.z);
|
|
179
|
+
// VP 1 - VP2
|
|
180
|
+
const vp1 = this.orthToFract(v1);
|
|
181
|
+
const vp2 = this.orthToFract(v2);
|
|
182
|
+
const vp3 = this.orthToFract(v3);
|
|
183
|
+
const vp4 = this.orthToFract(v4);
|
|
184
|
+
const vp5 = this.orthToFract(v5);
|
|
185
|
+
const vp6 = this.orthToFract(v6);
|
|
186
|
+
const vp7 = this.orthToFract(v7);
|
|
187
|
+
const vp8 = this.orthToFract(v8);
|
|
188
|
+
const MinX = Math.floor(Math.min(vp1.x, vp2.x, vp3.x, vp4.x, vp5.x, vp6.x, vp7.x, vp8.x));
|
|
189
|
+
const MinY = Math.floor(Math.min(vp1.y, vp2.y, vp3.y, vp4.y, vp5.y, vp6.y, vp7.y, vp8.y));
|
|
190
|
+
const MinZ = Math.floor(Math.min(vp1.z, vp2.z, vp3.z, vp4.z, vp5.z, vp6.z, vp7.z, vp8.z));
|
|
191
|
+
const MaxX = Math.ceil(Math.max(vp1.x, vp2.x, vp3.x, vp4.x, vp5.x, vp6.x, vp7.x, vp8.x));
|
|
192
|
+
const MaxY = Math.ceil(Math.max(vp1.y, vp2.y, vp3.y, vp4.y, vp5.y, vp6.y, vp7.y, vp8.y));
|
|
193
|
+
const MaxZ = Math.ceil(Math.max(vp1.z, vp2.z, vp3.z, vp4.z, vp5.z, vp6.z, vp7.z, vp8.z));
|
|
194
|
+
const res = [];
|
|
195
|
+
// Create range of posible translations;
|
|
196
|
+
for (let i = MinX; i < MaxX; i++) {
|
|
197
|
+
for (let j = MinY; j < MaxY; j++) {
|
|
198
|
+
for (let k = MinZ; k < MaxZ; k++) {
|
|
199
|
+
res.push(new Vec3(i, j, k));
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
return res;
|
|
204
|
+
}
|
|
205
|
+
init() {
|
|
206
|
+
// PREPARE PROJECTION MATRIXES
|
|
207
|
+
const pAlpha = this.alpha * 0.017453292519943295; // pi/180 ;
|
|
208
|
+
const pBeta = this.beta * 0.017453292519943295;
|
|
209
|
+
const pGamma = this.gamma * 0.017453292519943295;
|
|
210
|
+
const v = Math.sqrt(1 -
|
|
211
|
+
Math.cos(pAlpha) * Math.cos(pAlpha) -
|
|
212
|
+
Math.cos(pBeta) * Math.cos(pBeta) -
|
|
213
|
+
Math.cos(pGamma) * Math.cos(pGamma) +
|
|
214
|
+
2 * Math.cos(pAlpha) * Math.cos(pBeta) * Math.cos(pGamma));
|
|
215
|
+
const cc = Math.sin(pGamma) / this.c / v;
|
|
216
|
+
const alphaa = Math.acos((Math.cos(pBeta) * Math.cos(pGamma) - Math.cos(pAlpha)) / Math.sin(pBeta) / Math.sin(pGamma));
|
|
217
|
+
this.mOrthMatrix = new Matrix3x3();
|
|
218
|
+
this.mOrthMatrix.set(0, 0, this.a);
|
|
219
|
+
this.mOrthMatrix.set(0, 1, this.b * Math.cos(pGamma));
|
|
220
|
+
this.mOrthMatrix.set(0, 2, this.c * Math.cos(pBeta));
|
|
221
|
+
this.mOrthMatrix.set(1, 0, 0);
|
|
222
|
+
this.mOrthMatrix.set(1, 1, this.b * Math.sin(pGamma));
|
|
223
|
+
this.mOrthMatrix.set(1, 2, -this.c * Math.sin(pBeta) * Math.cos(alphaa));
|
|
224
|
+
this.mOrthMatrix.set(2, 0, 0);
|
|
225
|
+
this.mOrthMatrix.set(2, 1, 0);
|
|
226
|
+
this.mOrthMatrix.set(2, 2, 1 / cc);
|
|
227
|
+
this.mOrthMatrixInvert = Matrix3x3.inverse(this.mOrthMatrix);
|
|
228
|
+
this.volume = v;
|
|
229
|
+
this.symetryList = [];
|
|
230
|
+
// PREPARE Symetry LIST
|
|
231
|
+
//
|
|
232
|
+
for (const symStr of this.spaceGroup.s) {
|
|
233
|
+
const sym = UnitCell.getMatrixFromSymetry(symStr);
|
|
234
|
+
this.symetryList.push(sym);
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
//# sourceMappingURL=UnitCell.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UnitCell.js","sourceRoot":"","sources":["../../src/molecule3d/UnitCell.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IMoleculeReader.d.ts","sourceRoot":"","sources":["../../../src/molecule3d/io/IMoleculeReader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;CACjE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IMoleculeReader.js","sourceRoot":"","sources":["../../../src/molecule3d/io/IMoleculeReader.ts"],"names":[],"mappings":""}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
import { Molecule3D } from
|
|
2
|
-
import { IMoleculeReader } from
|
|
3
|
-
export declare class MoleculeReaderJCIF implements IMoleculeReader {
|
|
4
|
-
name: string;
|
|
5
|
-
extension: string[];
|
|
6
|
-
description: string;
|
|
7
|
-
constructor();
|
|
8
|
-
loadMolecule(molecule: Molecule3D, data: object): void;
|
|
9
|
-
private remapCoordLoop
|
|
10
|
-
private extractCoordLoop
|
|
11
|
-
}
|
|
1
|
+
import { Molecule3D } from '../Molecule3D.js';
|
|
2
|
+
import { IMoleculeReader } from './IMoleculeReader.js';
|
|
3
|
+
export declare class MoleculeReaderJCIF implements IMoleculeReader {
|
|
4
|
+
name: string;
|
|
5
|
+
extension: string[];
|
|
6
|
+
description: string;
|
|
7
|
+
constructor();
|
|
8
|
+
loadMolecule(molecule: Molecule3D, data: object): void;
|
|
9
|
+
private remapCoordLoop;
|
|
10
|
+
private extractCoordLoop;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=MoleculeReaderJCIF.d.ts.map
|