@mat3ra/made 2024.3.22-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/.babelrc +10 -0
- package/.eslintrc.json +11 -0
- package/.mocharc.json +5 -0
- package/.prettierignore +1 -0
- package/.prettierrc +6 -0
- package/LICENSE.md +15 -0
- package/README.md +167 -0
- package/dist/abstract/array_with_ids.d.ts +43 -0
- package/dist/abstract/array_with_ids.js +88 -0
- package/dist/abstract/scalar_with_id.d.ts +25 -0
- package/dist/abstract/scalar_with_id.js +44 -0
- package/dist/basis/basis.d.ts +269 -0
- package/dist/basis/basis.js +499 -0
- package/dist/basis/constrained_basis.d.ts +56 -0
- package/dist/basis/constrained_basis.js +90 -0
- package/dist/basis/types.d.ts +1 -0
- package/dist/basis/types.js +2 -0
- package/dist/cell/cell.d.ts +45 -0
- package/dist/cell/cell.js +88 -0
- package/dist/cell/conventional_cell.d.ts +22 -0
- package/dist/cell/conventional_cell.js +83 -0
- package/dist/cell/primitive_cell.d.ts +9 -0
- package/dist/cell/primitive_cell.js +166 -0
- package/dist/constants.d.ts +2 -0
- package/dist/constants.js +25 -0
- package/dist/constraints/constraints.d.ts +45 -0
- package/dist/constraints/constraints.js +49 -0
- package/dist/lattice/lattice.d.ts +104 -0
- package/dist/lattice/lattice.js +208 -0
- package/dist/lattice/lattice_bravais.d.ts +59 -0
- package/dist/lattice/lattice_bravais.js +120 -0
- package/dist/lattice/lattice_vectors.d.ts +46 -0
- package/dist/lattice/lattice_vectors.js +98 -0
- package/dist/lattice/reciprocal/lattice_reciprocal.d.ts +75 -0
- package/dist/lattice/reciprocal/lattice_reciprocal.js +148 -0
- package/dist/lattice/reciprocal/paths.d.ts +24 -0
- package/dist/lattice/reciprocal/paths.js +136 -0
- package/dist/lattice/reciprocal/symmetry_points.d.ts +8 -0
- package/dist/lattice/reciprocal/symmetry_points.js +866 -0
- package/dist/lattice/types.d.ts +49 -0
- package/dist/lattice/types.js +127 -0
- package/dist/lattice/unit_cell.d.ts +30 -0
- package/dist/lattice/unit_cell.js +31 -0
- package/dist/made.d.ts +40 -0
- package/dist/made.js +39 -0
- package/dist/material.d.ts +1562 -0
- package/dist/material.js +317 -0
- package/dist/math.d.ts +395 -0
- package/dist/math.js +7 -0
- package/dist/parsers/cif.d.ts +10 -0
- package/dist/parsers/cif.js +21 -0
- package/dist/parsers/errors.d.ts +5 -0
- package/dist/parsers/errors.js +11 -0
- package/dist/parsers/espresso.d.ts +10 -0
- package/dist/parsers/espresso.js +24 -0
- package/dist/parsers/native_format_parsers.d.ts +26 -0
- package/dist/parsers/native_format_parsers.js +52 -0
- package/dist/parsers/parsers.d.ts +13 -0
- package/dist/parsers/parsers.js +17 -0
- package/dist/parsers/poscar.d.ts +31 -0
- package/dist/parsers/poscar.js +180 -0
- package/dist/parsers/xyz.d.ts +62 -0
- package/dist/parsers/xyz.js +167 -0
- package/dist/parsers/xyz_combinatorial_basis.d.ts +64 -0
- package/dist/parsers/xyz_combinatorial_basis.js +241 -0
- package/dist/tools/basis.d.ts +22 -0
- package/dist/tools/basis.js +100 -0
- package/dist/tools/cell.d.ts +9 -0
- package/dist/tools/cell.js +39 -0
- package/dist/tools/index.d.ts +11 -0
- package/dist/tools/index.js +15 -0
- package/dist/tools/material.d.ts +25 -0
- package/dist/tools/material.js +54 -0
- package/dist/tools/supercell.d.ts +22 -0
- package/dist/tools/supercell.js +62 -0
- package/dist/tools/surface.d.ts +10 -0
- package/dist/tools/surface.js +147 -0
- package/dist/types.d.ts +3 -0
- package/dist/types.js +2 -0
- package/package.json +89 -0
- package/pyproject.toml +77 -0
- package/src/js/abstract/array_with_ids.ts +100 -0
- package/src/js/abstract/scalar_with_id.ts +53 -0
- package/src/js/basis/basis.ts +607 -0
- package/src/js/basis/constrained_basis.ts +107 -0
- package/src/js/basis/types.ts +1 -0
- package/src/js/cell/cell.ts +109 -0
- package/src/js/cell/conventional_cell.ts +89 -0
- package/src/js/cell/primitive_cell.ts +189 -0
- package/src/js/constants.js +4 -0
- package/src/js/constraints/constraints.ts +63 -0
- package/src/js/lattice/lattice.ts +229 -0
- package/src/js/lattice/lattice_bravais.ts +170 -0
- package/src/js/lattice/lattice_vectors.ts +126 -0
- package/src/js/lattice/reciprocal/lattice_reciprocal.js +155 -0
- package/src/js/lattice/reciprocal/paths.js +134 -0
- package/src/js/lattice/reciprocal/symmetry_points.ts +886 -0
- package/src/js/lattice/types.ts +142 -0
- package/src/js/lattice/unit_cell.ts +66 -0
- package/src/js/made.js +36 -0
- package/src/js/material.ts +398 -0
- package/src/js/math.js +6 -0
- package/src/js/parsers/cif.js +22 -0
- package/src/js/parsers/errors.js +7 -0
- package/src/js/parsers/espresso.ts +30 -0
- package/src/js/parsers/native_format_parsers.js +51 -0
- package/src/js/parsers/parsers.js +13 -0
- package/src/js/parsers/poscar.ts +201 -0
- package/src/js/parsers/xyz.ts +216 -0
- package/src/js/parsers/xyz_combinatorial_basis.js +243 -0
- package/src/js/tools/basis.js +116 -0
- package/src/js/tools/cell.js +36 -0
- package/src/js/tools/index.js +11 -0
- package/src/js/tools/material.js +60 -0
- package/src/js/tools/supercell.ts +80 -0
- package/src/js/tools/surface.js +176 -0
- package/src/js/types.ts +4 -0
- package/src/py/__init__.py +0 -0
- package/src/py/mat3ra/__init__.py +0 -0
- package/src/py/mat3ra/made/__init__.py +5 -0
- package/tests/.gitattributes +1 -0
- package/tests/fixtures/AsGe-basis.json +3 -0
- package/tests/fixtures/C2H4-translated.json +3 -0
- package/tests/fixtures/C2H4.json +3 -0
- package/tests/fixtures/FeLiSi-basis.json +3 -0
- package/tests/fixtures/FeO.json +3 -0
- package/tests/fixtures/Ge2-basis.json +3 -0
- package/tests/fixtures/Graphene.json +3 -0
- package/tests/fixtures/Graphene.poscar +3 -0
- package/tests/fixtures/H2+H-final.json +3 -0
- package/tests/fixtures/H2+H-image.json +3 -0
- package/tests/fixtures/H2+H-initial.json +3 -0
- package/tests/fixtures/H2O.poscar +3 -0
- package/tests/fixtures/LiFeSi-basis.json +3 -0
- package/tests/fixtures/Na.json +3 -0
- package/tests/fixtures/Na4Cl4-cartesian.json +3 -0
- package/tests/fixtures/Na4Cl4.json +3 -0
- package/tests/fixtures/Na4Cl4.poscar +3 -0
- package/tests/fixtures/Ni-hex.json +3 -0
- package/tests/fixtures/Ni-hex.poscar +3 -0
- package/tests/fixtures/OSi-basis.json +3 -0
- package/tests/fixtures/Si-hex.json +3 -0
- package/tests/fixtures/Si-hex.poscar +3 -0
- package/tests/fixtures/Si-pwscf.in +3 -0
- package/tests/fixtures/Si-slab.json +3 -0
- package/tests/fixtures/Si-supercell.json +3 -0
- package/tests/fixtures/Si.json +3 -0
- package/tests/fixtures/Si2-basis-repeated.json +3 -0
- package/tests/fixtures/Si2-basis.json +3 -0
- package/tests/fixtures/Zr1H23Zr1H1.json +3 -0
- package/tests/fixtures/Zr1H23Zr1H1.poscar +3 -0
- package/tests/fixtures/atomic-constraints.json +3 -0
- package/tests/js/basis/basis.js +221 -0
- package/tests/js/cell/cell.js +21 -0
- package/tests/js/cell/primitive_cell.js +17 -0
- package/tests/js/constraints/constraints.js +27 -0
- package/tests/js/enums.js +40 -0
- package/tests/js/lattice/lattice.js +31 -0
- package/tests/js/lattice/lattice_bravais.js +17 -0
- package/tests/js/lattice/lattice_reciprocal.js +99 -0
- package/tests/js/lattice/lattice_vectors.js +10 -0
- package/tests/js/material.test.js +11 -0
- package/tests/js/parsers/espresso.js +12 -0
- package/tests/js/parsers/native_formats.js +30 -0
- package/tests/js/parsers/poscar.js +21 -0
- package/tests/js/parsers/xyz.js +25 -0
- package/tests/js/parsers/xyz_combinatorial_basis.js +153 -0
- package/tests/js/setup.js +6 -0
- package/tests/js/tools/basis.js +18 -0
- package/tests/js/tools/supercell.js +23 -0
- package/tests/js/tools/surface.js +12 -0
- package/tests/js/utils.js +17 -0
- package/tests/py/__init__.py +0 -0
- package/tests/py/unit/__init__.py +0 -0
- package/tests/py/unit/test_sample.py +10 -0
- package/tsconfig.json +3 -0
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.ReciprocalLattice = void 0;
|
|
7
|
+
const constants_1 = require("@exabyte-io/code.js/dist/constants");
|
|
8
|
+
const array_almost_equal_1 = __importDefault(require("array-almost-equal"));
|
|
9
|
+
const lodash_1 = __importDefault(require("lodash"));
|
|
10
|
+
const math_1 = __importDefault(require("../../math"));
|
|
11
|
+
const lattice_1 = require("../lattice");
|
|
12
|
+
const paths_1 = require("./paths");
|
|
13
|
+
const symmetry_points_1 = require("./symmetry_points");
|
|
14
|
+
class ReciprocalLattice extends lattice_1.Lattice {
|
|
15
|
+
/**
|
|
16
|
+
* Get reciprocal vectors for the current Lattice in cartesian (2pi / a) units
|
|
17
|
+
* @return {Array[]}
|
|
18
|
+
*/
|
|
19
|
+
get reciprocalVectors() {
|
|
20
|
+
const vectors_ = this.vectors.vectorArrays;
|
|
21
|
+
const a = math_1.default.vlen(vectors_[0]);
|
|
22
|
+
const divider = math_1.default.multiply(vectors_[0], math_1.default.cross(vectors_[1], vectors_[2])) / a;
|
|
23
|
+
return [
|
|
24
|
+
math_1.default.multiply(math_1.default.cross(vectors_[1], vectors_[2]), 1 / divider),
|
|
25
|
+
math_1.default.multiply(math_1.default.cross(vectors_[2], vectors_[0]), 1 / divider),
|
|
26
|
+
math_1.default.multiply(math_1.default.cross(vectors_[0], vectors_[1]), 1 / divider),
|
|
27
|
+
];
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Norms of reciprocal vectors.
|
|
31
|
+
* @return {number[]}
|
|
32
|
+
*/
|
|
33
|
+
get reciprocalVectorNorms() {
|
|
34
|
+
return this.reciprocalVectors.map((vec) => math_1.default.norm(vec));
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Ratio of reciprocal vector norms scaled by the inverse of the largest component.
|
|
38
|
+
* @return {number[]}
|
|
39
|
+
*/
|
|
40
|
+
get reciprocalVectorRatios() {
|
|
41
|
+
const norms = this.reciprocalVectorNorms;
|
|
42
|
+
const maxNorm = math_1.default.max(...norms);
|
|
43
|
+
return norms.map((n) => n / maxNorm);
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Get point (in crystal coordinates) in cartesian coordinates.
|
|
47
|
+
* @param {Array} point - point in 3D space
|
|
48
|
+
* @return {Array}
|
|
49
|
+
*/
|
|
50
|
+
getCartesianCoordinates(point) {
|
|
51
|
+
return math_1.default.multiply(point, this.reciprocalVectors);
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Get the list of high-symmetry points for the current lattice.
|
|
55
|
+
* @return {Object[]}
|
|
56
|
+
*/
|
|
57
|
+
get symmetryPoints() {
|
|
58
|
+
return (0, symmetry_points_1.symmetryPoints)(this);
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Get the default path in reciprocal space for the current lattice.
|
|
62
|
+
* @return {Array[]}
|
|
63
|
+
*/
|
|
64
|
+
get defaultKpointPath() {
|
|
65
|
+
return paths_1.paths[this.typeExtended] || paths_1.paths[this.type];
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Find/mark the high symmetry points on a list with raw data and return the edited list.
|
|
69
|
+
* @param {Array} dataPoints - list of point coordinates
|
|
70
|
+
* @return {Object[]}
|
|
71
|
+
*/
|
|
72
|
+
extractKpointPath(dataPoints = []) {
|
|
73
|
+
const kpointPath = [];
|
|
74
|
+
const symmPoints = this.symmetryPoints;
|
|
75
|
+
dataPoints.forEach((point, index) => {
|
|
76
|
+
const symmPoint = symmPoints.find((x) => {
|
|
77
|
+
return (0, array_almost_equal_1.default)(x.coordinates, point, 1e-4);
|
|
78
|
+
});
|
|
79
|
+
if (symmPoint) {
|
|
80
|
+
kpointPath.push({
|
|
81
|
+
point: symmPoint.point,
|
|
82
|
+
steps: index,
|
|
83
|
+
coordinates: symmPoint.coordinates,
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
return kpointPath;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Calculate grid dimension based on reciprocal lattice vectors.
|
|
91
|
+
* @param {number} nPoints - Total number of points
|
|
92
|
+
* @param {number} index - Index of reciprocal vector
|
|
93
|
+
* @return {number} - Grid dimension in direction of reciprocal vector
|
|
94
|
+
* @todo This could be moved to a separate KGrid class.
|
|
95
|
+
*/
|
|
96
|
+
calculateDimension(nPoints, index) {
|
|
97
|
+
const norms = this.reciprocalVectorNorms;
|
|
98
|
+
const [j, k] = [0, 1, 2].filter((i) => i !== index); // get indices of other two dimensions
|
|
99
|
+
const N = math_1.default.cbrt((nPoints * norms[index] ** 2) / (norms[j] * norms[k]));
|
|
100
|
+
return math_1.default.max(1, math_1.default.ceil(N));
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Calculate grid dimensions from total number of k-points.
|
|
104
|
+
* @param {number} nKpoints - Total number of k-points.
|
|
105
|
+
* @return {number[]} - Grid dimensions
|
|
106
|
+
*/
|
|
107
|
+
getDimensionsFromPointsCount(nKpoints) {
|
|
108
|
+
const indices = [0, 1, 2];
|
|
109
|
+
return indices.map((i) => this.calculateDimension(nKpoints, i));
|
|
110
|
+
}
|
|
111
|
+
get conversionTable() {
|
|
112
|
+
const { a } = this;
|
|
113
|
+
return {
|
|
114
|
+
[constants_1.ATOMIC_COORD_UNITS.cartesian]: {
|
|
115
|
+
[constants_1.units.angstrom]: (2 * math_1.default.PI) / a,
|
|
116
|
+
},
|
|
117
|
+
[constants_1.units.angstrom]: {
|
|
118
|
+
[constants_1.ATOMIC_COORD_UNITS.cartesian]: a / (2 * math_1.default.PI),
|
|
119
|
+
},
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Calculate grid dimensions from k-point spacing, i.e.
|
|
124
|
+
* the maximum distance between adjacent points along a reciprocal axis.
|
|
125
|
+
* Note: just as the lattice vectors spacing is in cartesian (2pi / a) units by default
|
|
126
|
+
* @param {number} spacing - maximum Spacing between k-points
|
|
127
|
+
* @param {string} units - units of spacing parameter (default: 2pi / a)
|
|
128
|
+
* @return {number[]}
|
|
129
|
+
*/
|
|
130
|
+
getDimensionsFromSpacing(spacing, units = constants_1.ATOMIC_COORD_UNITS.cartesian) {
|
|
131
|
+
const factor = this.conversionTable[units][constants_1.ATOMIC_COORD_UNITS.cartesian] || 1;
|
|
132
|
+
return this.reciprocalVectorNorms.map((norm) => {
|
|
133
|
+
return math_1.default.max(1, math_1.default.ceil(lodash_1.default.round(norm / (spacing * factor), 4)));
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Calculate grid spacing as average of spacing along individual reciprocal axes.
|
|
138
|
+
* @param {number[]} dimensions - Array of dimensions
|
|
139
|
+
* @param {string} units - units of spacing parameter (default: 2pi / a)
|
|
140
|
+
* @return {number} - average grid spacing
|
|
141
|
+
*/
|
|
142
|
+
getSpacingFromDimensions(dimensions, units = constants_1.ATOMIC_COORD_UNITS.cartesian) {
|
|
143
|
+
const factor = this.conversionTable[constants_1.ATOMIC_COORD_UNITS.cartesian][units] || 1;
|
|
144
|
+
const norms = this.reciprocalVectorNorms;
|
|
145
|
+
return factor * math_1.default.mean(dimensions.map((dim, i) => norms[i] / math_1.default.max(1, dim)));
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
exports.ReciprocalLattice = ReciprocalLattice;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export const paths: {
|
|
2
|
+
CUB: string[][];
|
|
3
|
+
BCC: string[][];
|
|
4
|
+
FCC: string[][];
|
|
5
|
+
TET: string[][];
|
|
6
|
+
"BCT-1": string[][];
|
|
7
|
+
"BCT-2": string[][];
|
|
8
|
+
ORC: string[][];
|
|
9
|
+
"ORCF-1": string[][];
|
|
10
|
+
"ORCF-2": string[][];
|
|
11
|
+
"ORCF-3": string[][];
|
|
12
|
+
ORCI: string[][];
|
|
13
|
+
ORCC: string[][];
|
|
14
|
+
HEX: string[][];
|
|
15
|
+
"RHL-1": string[][];
|
|
16
|
+
"RHL-2": string[][];
|
|
17
|
+
MCL: string[][];
|
|
18
|
+
"MCLC-1": string[][];
|
|
19
|
+
"MCLC-2": string[][];
|
|
20
|
+
"MCLC-3": string[][];
|
|
21
|
+
"MCLC-4": string[][];
|
|
22
|
+
"MCLC-5": string[][];
|
|
23
|
+
TRI: string[][];
|
|
24
|
+
};
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.paths = void 0;
|
|
7
|
+
const underscore_1 = __importDefault(require("underscore"));
|
|
8
|
+
/**
|
|
9
|
+
* Default kpoing paths according to:
|
|
10
|
+
* [AFLOW](https://arxiv.org/abs/1004.2974) methodology.
|
|
11
|
+
* Paths are split in parts for clarity.
|
|
12
|
+
*/
|
|
13
|
+
const points = {
|
|
14
|
+
CUB: [
|
|
15
|
+
["Г", "X", "M", "Г", "R", "X"],
|
|
16
|
+
["M", "R"],
|
|
17
|
+
],
|
|
18
|
+
BCC: [
|
|
19
|
+
["Г", "H", "N", "Г", "P", "H"],
|
|
20
|
+
["P", "N"],
|
|
21
|
+
],
|
|
22
|
+
FCC: [
|
|
23
|
+
["Г", "X", "W", "K", "Г", "L", "U", "W", "L"],
|
|
24
|
+
["U", "X"],
|
|
25
|
+
],
|
|
26
|
+
TET: [
|
|
27
|
+
["Г", "X", "M", "Г", "Z", "R", "A", "Z"],
|
|
28
|
+
["X", "R"],
|
|
29
|
+
["M", "A"],
|
|
30
|
+
],
|
|
31
|
+
"BCT-1": [
|
|
32
|
+
["Г", "X", "M", "Г", "Z", "P", "N", "Z1", "M"],
|
|
33
|
+
["X", "P"],
|
|
34
|
+
],
|
|
35
|
+
"BCT-2": [
|
|
36
|
+
["Г", "X", "Y", "∑", "Г", "Z", "∑1", "N", "P", "Y1", "Z"],
|
|
37
|
+
["X", "P"],
|
|
38
|
+
],
|
|
39
|
+
ORC: [
|
|
40
|
+
["Г", "X", "S", "Y", "Г", "Z", "U", "R", "T", "Z"],
|
|
41
|
+
["Y", "T"],
|
|
42
|
+
["U", "X"],
|
|
43
|
+
["S", "R"],
|
|
44
|
+
],
|
|
45
|
+
"ORCF-1": [
|
|
46
|
+
["Г", "Y", "T", "Z", "Г", "X", "A1", "Y"],
|
|
47
|
+
["T", "X1"],
|
|
48
|
+
["X", "A", "Z"],
|
|
49
|
+
["L", "Г"],
|
|
50
|
+
],
|
|
51
|
+
"ORCF-2": [
|
|
52
|
+
["Г", "Y", "C", "D", "X", "Г", "Z", "D1", "H", "C"],
|
|
53
|
+
["C1", "Z"],
|
|
54
|
+
["X", "H1"],
|
|
55
|
+
["H", "Y"],
|
|
56
|
+
["L", "Г"],
|
|
57
|
+
],
|
|
58
|
+
"ORCF-3": [
|
|
59
|
+
["Г", "Y", "T", "Z", "Г", "X", "A1", "Y"],
|
|
60
|
+
["X", "A", "Z"],
|
|
61
|
+
["L", "Г"],
|
|
62
|
+
],
|
|
63
|
+
ORCI: [
|
|
64
|
+
["Г", "X", "L", "T", "W", "R", "X1", "Z", "Г", "Y", "S", "W"],
|
|
65
|
+
["L1", "Y"],
|
|
66
|
+
["Y1", "Z"],
|
|
67
|
+
],
|
|
68
|
+
ORCC: [
|
|
69
|
+
["Г", "X", "S", "R", "A", "Z", "Г", "Y", "X1", "A1", "T", "Y"],
|
|
70
|
+
["Z", "T"],
|
|
71
|
+
],
|
|
72
|
+
HEX: [
|
|
73
|
+
["Г", "M", "K", "Г", "A", "L", "H", "A"],
|
|
74
|
+
["L", "M"],
|
|
75
|
+
["K", "H"],
|
|
76
|
+
],
|
|
77
|
+
"RHL-1": [
|
|
78
|
+
["Г", "L", "B1"],
|
|
79
|
+
["B", "Z", "Г", "X"],
|
|
80
|
+
["Q", "F", "P1", "Z"],
|
|
81
|
+
["L", "P"],
|
|
82
|
+
],
|
|
83
|
+
"RHL-2": [["Г", "P", "Z", "Q", "Г", "F", "P1", "Q1", "L", "Z"]],
|
|
84
|
+
MCL: [
|
|
85
|
+
["Г", "Y", "H", "C", "E", "M1", "A", "X", "H1"],
|
|
86
|
+
["M", "D", "Z"],
|
|
87
|
+
["Y", "D"],
|
|
88
|
+
],
|
|
89
|
+
"MCLC-1": [
|
|
90
|
+
["Г", "Y", "Г", "L", "I"],
|
|
91
|
+
["I1", "Z", "F1"],
|
|
92
|
+
["Y", "X1"],
|
|
93
|
+
["X", "Г", "N"],
|
|
94
|
+
["M", "Г"],
|
|
95
|
+
],
|
|
96
|
+
"MCLC-2": [
|
|
97
|
+
["Г", "Y", "F", "L", "I"],
|
|
98
|
+
["I1", "Z", "F1"],
|
|
99
|
+
["N", "Г", "M"],
|
|
100
|
+
],
|
|
101
|
+
"MCLC-3": [
|
|
102
|
+
["Г", "Y", "F", "H", "Z", "I", "F1"],
|
|
103
|
+
["H1", "Y1", "X", "Г", "N"],
|
|
104
|
+
["M", "Г"],
|
|
105
|
+
],
|
|
106
|
+
"MCLC-4": [
|
|
107
|
+
["Г", "Y", "F", "H", "Z", "I"],
|
|
108
|
+
["H1", "Y1", "X", "Г", "N"],
|
|
109
|
+
["M", "Г"],
|
|
110
|
+
],
|
|
111
|
+
"MCLC-5": [
|
|
112
|
+
["Г", "Y", "F", "L", "I"],
|
|
113
|
+
["I1", "Z", "H", "F1"],
|
|
114
|
+
["H1", "Y1", "X", "Г", "N"],
|
|
115
|
+
["M", "Г"],
|
|
116
|
+
],
|
|
117
|
+
TRI: [
|
|
118
|
+
["X", "Г", "Y"],
|
|
119
|
+
["L", "Г", "Z"],
|
|
120
|
+
["N", "Г", "M"],
|
|
121
|
+
["R", "Г"],
|
|
122
|
+
],
|
|
123
|
+
};
|
|
124
|
+
exports.paths = underscore_1.default.each(points, (val, key, obj) => {
|
|
125
|
+
// merge sub-arrays
|
|
126
|
+
// eslint-disable-next-line no-param-reassign
|
|
127
|
+
val = val.reduce((a, b) => a.concat(b));
|
|
128
|
+
underscore_1.default.each(val, (el, idx, list) => {
|
|
129
|
+
list[idx] = {
|
|
130
|
+
point: el,
|
|
131
|
+
// TODO: calculate number of steps based on distance in k-space
|
|
132
|
+
steps: 10,
|
|
133
|
+
};
|
|
134
|
+
});
|
|
135
|
+
obj[key] = val;
|
|
136
|
+
});
|