bravais 0.2.0 → 0.3.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/CHANGELOG.md +21 -0
- package/README.md +23 -1
- package/dist/bravais.js +811 -629
- package/dist/bravais.js.map +1 -1
- package/dist/types/cif/errors.d.ts +8 -1
- package/dist/types/cif/structure.d.ts +7 -11
- package/dist/types/cif/{symmetry-operators.d.ts → symmetry-operations.d.ts} +1 -1
- package/dist/types/cif/tokenizer.d.ts +0 -6
- package/dist/types/index.d.ts +8 -8
- package/dist/types/render/camera.d.ts +1 -11
- package/dist/types/render/gizmo.d.ts +0 -1
- package/dist/types/render/materials.d.ts +0 -4
- package/dist/types/render/model.d.ts +2 -5
- package/dist/types/render/oklab.d.ts +0 -1
- package/dist/types/structure/bonds.d.ts +0 -2
- package/dist/types/structure/elements.d.ts +1 -2
- package/dist/types/structure/errors.d.ts +8 -0
- package/dist/types/structure/fractional.d.ts +2 -4
- package/dist/types/structure/from-data.d.ts +57 -0
- package/dist/types/structure/sites.d.ts +19 -0
- package/dist/types/structure/types.d.ts +14 -3
- package/dist/types/symmetry/moyo.d.ts +4 -4
- package/dist/types/symmetry/resolve.d.ts +12 -9
- package/package.json +1 -1
|
@@ -1,4 +1,11 @@
|
|
|
1
|
+
import { StructureError } from "../structure/errors.js";
|
|
2
|
+
/** The text is not CIF the tokenizer and parser accept. */
|
|
3
|
+
export declare class CifSyntaxError extends Error {
|
|
4
|
+
/** 1-based line of the problem. */
|
|
5
|
+
readonly line: number;
|
|
6
|
+
constructor(message: string, line: number);
|
|
7
|
+
}
|
|
1
8
|
/** The CIF parses but does not describe a structure this package can use. */
|
|
2
|
-
export declare class CifStructureError extends
|
|
9
|
+
export declare class CifStructureError extends StructureError {
|
|
3
10
|
constructor(message: string);
|
|
4
11
|
}
|
|
@@ -1,15 +1,11 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { StructureListing } from "../structure/types.js";
|
|
2
2
|
import { type CifBlock } from "./parser.js";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
/** Null when the file lists no operators; see `spaceGroup` then. */
|
|
9
|
-
operations: SymmetryOperation[] | null;
|
|
10
|
-
spaceGroup: SpaceGroupInfo;
|
|
11
|
-
}
|
|
3
|
+
/**
|
|
4
|
+
* A data block's lattice, merged sites, operations (null when the file lists
|
|
5
|
+
* none; see `spaceGroup` then) and space-group tags.
|
|
6
|
+
*/
|
|
7
|
+
export type ParsedCifStructure = StructureListing;
|
|
12
8
|
/** True when the block carries atom coordinates (the one a viewer wants). */
|
|
13
9
|
export declare function isStructureBlock(block: CifBlock): boolean;
|
|
14
|
-
/** Lattice, merged sites,
|
|
10
|
+
/** Lattice, merged sites, operations and space-group tags of one data block. */
|
|
15
11
|
export declare function parseCifStructure(block: CifBlock): ParsedCifStructure;
|
|
@@ -3,4 +3,4 @@ import type { SymmetryOperation } from "../structure/types.js";
|
|
|
3
3
|
* Parse a symmetry operation as CIF files write it, such as
|
|
4
4
|
* `-x+1/2, y, -z+1/2`, into a rotation matrix and translation.
|
|
5
5
|
*/
|
|
6
|
-
export declare function
|
|
6
|
+
export declare function parseSymmetryOperation(text: string): SymmetryOperation;
|
|
@@ -4,12 +4,6 @@ export interface CifToken {
|
|
|
4
4
|
text: string;
|
|
5
5
|
line: number;
|
|
6
6
|
}
|
|
7
|
-
/** The text is not CIF the tokenizer and parser accept. */
|
|
8
|
-
export declare class CifSyntaxError extends Error {
|
|
9
|
-
/** 1-based line of the problem. */
|
|
10
|
-
readonly line: number;
|
|
11
|
-
constructor(message: string, line: number);
|
|
12
|
-
}
|
|
13
7
|
/**
|
|
14
8
|
* Split CIF 1.1 text into tokens. Comments are dropped; quoted strings and
|
|
15
9
|
* semicolon text fields become single value tokens holding their content.
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
import type { Structure } from "./structure/types.js";
|
|
2
|
+
export { CifStructureError, CifSyntaxError } from "./cif/errors.js";
|
|
3
|
+
export { StructureDataError, StructureError } from "./structure/errors.js";
|
|
4
|
+
export { readStructure, type SiteData, type StructureData, } from "./structure/from-data.js";
|
|
2
5
|
export { parseCif, type CifBlock, type CifDocument, type CifLoop, } from "./cif/parser.js";
|
|
3
|
-
export {
|
|
4
|
-
export {
|
|
5
|
-
export { parseSymmetryOperator } from "./cif/symmetry-operators.js";
|
|
6
|
+
export { parseCifStructure, type ParsedCifStructure } from "./cif/structure.js";
|
|
7
|
+
export { parseSymmetryOperation } from "./cif/symmetry-operations.js";
|
|
6
8
|
export { SpaceGroupLookupError, ensureMoyo, operationsForSpaceGroup, } from "./symmetry/moyo.js";
|
|
7
9
|
export { SymmetryAnalysisError, symmetryDataset, type SymmetryDataset, type SymmetryOptions, } from "./symmetry/dataset.js";
|
|
8
10
|
export { typesetSymbol } from "./symmetry/symbol.js";
|
|
9
11
|
export { expandStructure } from "./structure/expand.js";
|
|
10
12
|
export { latticeFromParameters, latticeFromVectors, } from "./structure/lattice.js";
|
|
11
|
-
export {
|
|
13
|
+
export type { Bond } from "./structure/bonds.js";
|
|
14
|
+
export type { Lattice, LatticeParameters, Mat3, Site, SpaceGroupInfo, Species, Structure, SymmetryOperation, Vec3, } from "./structure/types.js";
|
|
15
|
+
export { buildScene, structureElements, type BuildSceneOptions, type SceneAtom, type SceneLayer, type StructureScene, } from "./scene/build.js";
|
|
12
16
|
export { createViewer, type Viewer, type ViewerOptions, } from "./render/viewer.js";
|
|
13
17
|
export { createThumbnailRenderer, type ThumbnailRenderer, } from "./render/thumbnails.js";
|
|
14
|
-
export type { SceneLayer } from "./scene/build.js";
|
|
15
18
|
export type { ViewState } from "./render/view-state.js";
|
|
16
19
|
export { elementColor, elementColorAssignments, ensureElementColors, resetElementColors, } from "./render/palette.js";
|
|
17
|
-
export type { BuildSceneOptions, SceneAtom, StructureScene, } from "./scene/build.js";
|
|
18
|
-
export type { Bond } from "./structure/bonds.js";
|
|
19
|
-
export type { Lattice, LatticeParameters, Mat3, Site, SpaceGroupInfo, Species, Structure, SymmetryOperation, Vec3, } from "./structure/types.js";
|
|
20
20
|
/**
|
|
21
21
|
* Read the first structure in a CIF file. Its symmetry comes from the
|
|
22
22
|
* file's list of symmetry operations or, without one, from its space-group
|
|
@@ -1,11 +1,6 @@
|
|
|
1
|
-
import { Box3, OrthographicCamera, Quaternion
|
|
1
|
+
import { Box3, OrthographicCamera, Quaternion } from "three";
|
|
2
2
|
import type { Mat3 } from "../structure/types.js";
|
|
3
3
|
import type { ViewState } from "./view-state.js";
|
|
4
|
-
/** Camera outward direction and up vector of the standard view of a cell. */
|
|
5
|
-
export declare function standardViewVectors(cell: Mat3): {
|
|
6
|
-
outward: Vector3;
|
|
7
|
-
up: Vector3;
|
|
8
|
-
};
|
|
9
4
|
/** Distance of the orthographic camera from its target; only the clipping depends on it. */
|
|
10
5
|
export declare function cameraDistance(span: number): number;
|
|
11
6
|
export declare function standardQuaternion(cell: Mat3): Quaternion;
|
|
@@ -15,11 +10,6 @@ export declare function standardView(cell: Mat3): ViewState;
|
|
|
15
10
|
export declare function applyViewState(camera: OrthographicCamera, view: Pick<ViewState, "quaternion" | "target">, distance: number, span: number): void;
|
|
16
11
|
/** The orientation of a camera as a view-state quaternion. */
|
|
17
12
|
export declare function quaternionTuple(quaternion: Quaternion): [number, number, number, number];
|
|
18
|
-
/** Size of `bounds` projected on the screen plane of `quaternion`. */
|
|
19
|
-
export declare function projectedSize(bounds: Box3, quaternion: Quaternion): {
|
|
20
|
-
width: number;
|
|
21
|
-
height: number;
|
|
22
|
-
};
|
|
23
13
|
/** Orthographic zoom (pixels per ångström) that fits `bounds` in the viewport. */
|
|
24
14
|
export declare function fitZoom(bounds: Box3, quaternion: Quaternion, width: number, height: number): number;
|
|
25
15
|
/** Frustum of an orthographic camera in pixel units, so `zoom` is pixels per ångström. */
|
|
@@ -8,7 +8,6 @@ export declare class AxesGizmo {
|
|
|
8
8
|
/** The a, b and c arrows, built once and turned to each new cell. */
|
|
9
9
|
private readonly arrows;
|
|
10
10
|
private readonly headlight;
|
|
11
|
-
private readonly inverse;
|
|
12
11
|
private readonly direction;
|
|
13
12
|
/** `fontFamily` is the interface font the axis letters are drawn in. */
|
|
14
13
|
constructor(fontFamily: string);
|
|
@@ -1,14 +1,10 @@
|
|
|
1
1
|
import { DataTexture, LineBasicMaterial, MeshStandardMaterial } from "three";
|
|
2
|
-
export declare const METALNESS = 0.1;
|
|
3
|
-
export declare const ROUGHNESS = 0.6;
|
|
4
2
|
export declare const AMBIENT_LIGHT_INTENSITY = 0.8;
|
|
5
3
|
export declare const HEADLIGHT_INTENSITY = 2.2;
|
|
6
4
|
export declare const HEADLIGHT_OFFSET: readonly [number, number, number];
|
|
7
5
|
export declare const BACKGROUND_COLOR = "#fafafa";
|
|
8
|
-
export declare const CELL_FRAME_COLOR = "#444444";
|
|
9
6
|
/** The part of a partially occupied site nobody occupies: a faint, see-through tint. */
|
|
10
7
|
export declare const VACANCY_COLOR = "#f2f2f2";
|
|
11
|
-
export declare const VACANCY_OPACITY = 0.3;
|
|
12
8
|
/** Added to a vacancy texel's start fraction so the shader can tell it apart. */
|
|
13
9
|
export declare const VACANCY_FLAG = 2;
|
|
14
10
|
/**
|
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
import { Box3, Group } from "three";
|
|
2
2
|
import type { SceneLayer } from "../scene/build.js";
|
|
3
|
-
import type { Mat3
|
|
3
|
+
import type { Mat3 } from "../structure/types.js";
|
|
4
4
|
export interface SceneModel {
|
|
5
5
|
group: Group;
|
|
6
|
-
/** Cell row vectors of the first layer
|
|
6
|
+
/** Cell row vectors of the first layer; `group` moves its centre to the origin. */
|
|
7
7
|
cell: Mat3;
|
|
8
|
-
/** Centre of that cell, which `group` moves to the origin. */
|
|
9
|
-
center: Vec3;
|
|
10
8
|
/** Bounds of every atom and cell corner of every layer, in the centred frame. */
|
|
11
9
|
bounds: Box3;
|
|
12
10
|
/** Largest cell edge length of any layer. */
|
|
@@ -15,7 +13,6 @@ export interface SceneModel {
|
|
|
15
13
|
elements: string[];
|
|
16
14
|
dispose(): void;
|
|
17
15
|
}
|
|
18
|
-
export declare function cellCenter(cell: Mat3): Vec3;
|
|
19
16
|
/**
|
|
20
17
|
* Build the three.js objects for the layers, centred on the first cell. A
|
|
21
18
|
* layer at opacity 0 is not drawn but still counts toward the centre, the
|
|
@@ -15,7 +15,6 @@ export interface Oklch {
|
|
|
15
15
|
h: number;
|
|
16
16
|
}
|
|
17
17
|
export declare function hexToOklab(hex: string): Oklab;
|
|
18
|
-
export declare function isInGamut(lab: Oklab): boolean;
|
|
19
18
|
export declare function oklabToHex(lab: Oklab): string;
|
|
20
19
|
export declare function oklabToOklch(lab: Oklab): Oklch;
|
|
21
20
|
export declare function oklchToOklab(lch: Oklch): Oklab;
|
|
@@ -12,8 +12,6 @@ export interface Bond {
|
|
|
12
12
|
/** Distance between them in ångström. */
|
|
13
13
|
length: number;
|
|
14
14
|
}
|
|
15
|
-
/** VESTA's bond-search maximum for an element pair, or null when VESTA draws none. */
|
|
16
|
-
export declare function bondCutoff(elementA: string, elementB: string): number | null;
|
|
17
15
|
/**
|
|
18
16
|
* Bonds between the given atoms by VESTA's cutoff table. Only pairs VESTA
|
|
19
17
|
* lists get bonds, so no metal-metal or anion-anion sticks appear. The bonds
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
/** Element symbols in atomic-number order. */
|
|
2
2
|
export declare const ELEMENT_SYMBOLS: string[];
|
|
3
|
-
/**
|
|
4
|
-
export declare const DEUTERIUM = "D";
|
|
3
|
+
/** True for an element symbol as written, such as "Fe", or "D" for deuterium. */
|
|
5
4
|
export declare function isElementSymbol(symbol: string): boolean;
|
|
6
5
|
/**
|
|
7
6
|
* The element behind a CIF atom label or type symbol: `Fe3+`, `O2-`, `Co1`,
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/** A structure, read from a CIF or given as data, that this package cannot use. */
|
|
2
|
+
export declare class StructureError extends Error {
|
|
3
|
+
constructor(message: string);
|
|
4
|
+
}
|
|
5
|
+
/** Structure data `readStructure` cannot use: a field is missing or malformed. */
|
|
6
|
+
export declare class StructureDataError extends StructureError {
|
|
7
|
+
constructor(message: string);
|
|
8
|
+
}
|
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
import type { SymmetryOperation, Vec3 } from "./types.js";
|
|
2
2
|
/** Generated equivalents this close in fractional coordinates are one atom. */
|
|
3
3
|
export declare const EQUIVALENT_TOLERANCE = 0.001;
|
|
4
|
-
/** Fold a coordinate into [0, 1); a value within `
|
|
5
|
-
export declare function wrap(value: number,
|
|
4
|
+
/** Fold a coordinate into [0, 1); a value within `tolerance` below 1 becomes 0. */
|
|
5
|
+
export declare function wrap(value: number, tolerance?: number): number;
|
|
6
6
|
/** Fold a fractional position into the cell. */
|
|
7
7
|
export declare function wrapVector(fractional: Vec3): Vec3;
|
|
8
|
-
/** Periodic distance of two fractional positions, per axis, below `tolerance`. */
|
|
9
|
-
export declare function samePosition(p: Vec3, q: Vec3, tolerance: number): boolean;
|
|
10
8
|
/**
|
|
11
9
|
* Fractional positions bucketed by where they fall in the cell, so finding
|
|
12
10
|
* those within a tolerance of a position, across the periodic boundaries,
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import type { LatticeParameters, Mat3, SpaceGroupInfo, Structure, SymmetryOperation, Vec3 } from "./types.js";
|
|
2
|
+
/** One site of `StructureData`: a position and the species that share it. */
|
|
3
|
+
export interface SiteData {
|
|
4
|
+
/** Name of the site; `site1`, `site2` and so on by its place in the list when absent. */
|
|
5
|
+
label?: string | null;
|
|
6
|
+
/** Fractional coordinates; wrapped into the cell. */
|
|
7
|
+
fractional: Vec3;
|
|
8
|
+
/** The species at this position; an occupancy defaults to 1. */
|
|
9
|
+
species: {
|
|
10
|
+
element: string;
|
|
11
|
+
occupancy?: number | null;
|
|
12
|
+
}[];
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* A crystal structure as plain data, for structures read or built outside
|
|
16
|
+
* this package. It survives JSON and `structuredClone`, so it can cross
|
|
17
|
+
* workers, processes and IPC.
|
|
18
|
+
*/
|
|
19
|
+
export interface StructureData {
|
|
20
|
+
/**
|
|
21
|
+
* Cell lengths in ångström and angles in degrees, set with c along z and a
|
|
22
|
+
* in the xz plane as in pymatgen, or the three cell vectors as rows in
|
|
23
|
+
* Cartesian ångström, used as given. Vectors win when both are given.
|
|
24
|
+
*/
|
|
25
|
+
lattice: LatticeParameters | {
|
|
26
|
+
vectors: Mat3;
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* The sites as listed: an asymmetric unit that `operations` or
|
|
30
|
+
* `spaceGroup` expands, or every atom of the cell. Species within 1e-4 of
|
|
31
|
+
* one position belong to one site, as the rows of a CIF do.
|
|
32
|
+
*/
|
|
33
|
+
sites: SiteData[];
|
|
34
|
+
/**
|
|
35
|
+
* x' = R x + t on fractional coordinates, as `SymmetryOperation`s with R
|
|
36
|
+
* row-major, or as strings such as `"-x, y+1/2, -z"`. They must include
|
|
37
|
+
* the identity. When absent or null, `spaceGroup` supplies them, and
|
|
38
|
+
* without a space group the sites list every atom of the cell.
|
|
39
|
+
*/
|
|
40
|
+
operations?: (SymmetryOperation | string)[] | null;
|
|
41
|
+
/** The space group by Hall symbol, Hermann-Mauguin symbol or number. */
|
|
42
|
+
spaceGroup?: Partial<SpaceGroupInfo> | null;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Read a structure given as data instead of a CIF, such as one a CIF reader
|
|
46
|
+
* outside this package produced, so it can be expanded, drawn and analysed
|
|
47
|
+
* like a structure from `readCif`. The data is checked and then read the way
|
|
48
|
+
* a CIF's atoms are: positions wrapped into the cell, species at one position
|
|
49
|
+
* joined into a site and sorted by occupancy, overfull sites scaled to a full
|
|
50
|
+
* one, and the symmetry checked against the atoms, or looked up from the
|
|
51
|
+
* space group.
|
|
52
|
+
*
|
|
53
|
+
* Throws `StructureDataError` for data that is missing or malformed, or
|
|
54
|
+
* whose operations do not fit its atoms, and `SpaceGroupLookupError` for an
|
|
55
|
+
* unknown space group.
|
|
56
|
+
*/
|
|
57
|
+
export declare function readStructure(data: StructureData): Promise<Structure>;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { Site, Vec3 } from "./types.js";
|
|
2
|
+
/** Rows this close in fractional coordinates describe one site. */
|
|
3
|
+
export declare const SITE_MERGE_TOLERANCE = 0.0001;
|
|
4
|
+
/** One species at one position, as a CIF atom-site row lists it. */
|
|
5
|
+
export interface SiteRow {
|
|
6
|
+
label: string;
|
|
7
|
+
element: string;
|
|
8
|
+
occupancy: number;
|
|
9
|
+
fractional: Vec3;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Sites from rows of one species at one position, the way a CIF lists its
|
|
13
|
+
* atoms. Positions are wrapped into the cell. Rows within
|
|
14
|
+
* `SITE_MERGE_TOLERANCE` of an earlier row join its site, which keeps that
|
|
15
|
+
* row's label, adds up the occupancy of a repeated element and sorts its
|
|
16
|
+
* species by descending occupancy. A site whose occupancies add up to more
|
|
17
|
+
* than 1 is scaled down to a full site.
|
|
18
|
+
*/
|
|
19
|
+
export declare function assembleSites(rows: Iterable<SiteRow>): Site[];
|
|
@@ -33,13 +33,13 @@ export interface SymmetryOperation {
|
|
|
33
33
|
rotation: number[];
|
|
34
34
|
translation: Vec3;
|
|
35
35
|
}
|
|
36
|
-
/** What a CIF says about its space group; null for what it leaves out. */
|
|
36
|
+
/** What a CIF or structure data says about its space group; null for what it leaves out. */
|
|
37
37
|
export interface SpaceGroupInfo {
|
|
38
38
|
/** Number in the International Tables, 1 to 230. */
|
|
39
39
|
number: number | null;
|
|
40
|
-
/** Hermann-Mauguin symbol as written in the
|
|
40
|
+
/** Hermann-Mauguin symbol as written in the source. */
|
|
41
41
|
symbol: string | null;
|
|
42
|
-
/** Hall symbol as written in the
|
|
42
|
+
/** Hall symbol as written in the source. */
|
|
43
43
|
hallSymbol: string | null;
|
|
44
44
|
}
|
|
45
45
|
export interface Structure {
|
|
@@ -49,4 +49,15 @@ export interface Structure {
|
|
|
49
49
|
operations: SymmetryOperation[];
|
|
50
50
|
spaceGroup: SpaceGroupInfo;
|
|
51
51
|
}
|
|
52
|
+
/**
|
|
53
|
+
* A structure as its source lists it, before its symmetry is settled: the
|
|
54
|
+
* operations are null when the source gives none, and `spaceGroup` then
|
|
55
|
+
* decides them.
|
|
56
|
+
*/
|
|
57
|
+
export interface StructureListing {
|
|
58
|
+
lattice: Lattice;
|
|
59
|
+
sites: Site[];
|
|
60
|
+
operations: SymmetryOperation[] | null;
|
|
61
|
+
spaceGroup: SpaceGroupInfo;
|
|
62
|
+
}
|
|
52
63
|
export declare const IDENTITY_OPERATION: SymmetryOperation;
|
|
@@ -38,10 +38,10 @@ export interface OperationSetting {
|
|
|
38
38
|
operations: SymmetryOperation[];
|
|
39
39
|
}
|
|
40
40
|
/**
|
|
41
|
-
* Every setting the space group
|
|
42
|
-
*
|
|
43
|
-
*
|
|
44
|
-
*
|
|
41
|
+
* Every setting the named space group admits, spglib's standard one first:
|
|
42
|
+
* one for most symbols, several for a short symbol such as `P 21/c` or a
|
|
43
|
+
* rhombohedral symbol without `:H` or `:R`. A bare number gives the standard
|
|
44
|
+
* setting alone.
|
|
45
45
|
*/
|
|
46
46
|
export declare function operationSettings(info: SpaceGroupInfo): Promise<OperationSetting[]>;
|
|
47
47
|
/**
|
|
@@ -1,11 +1,14 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { type SymmetryOperation } from "../structure/types.js";
|
|
1
|
+
import type { StructureError } from "../structure/errors.js";
|
|
2
|
+
import { type StructureListing, type SymmetryOperation } from "../structure/types.js";
|
|
3
|
+
/** The error a reader reports with, such as `CifStructureError`. */
|
|
4
|
+
export type StructureErrorClass = new (message: string) => StructureError;
|
|
3
5
|
/**
|
|
4
|
-
* The operations a
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
6
|
+
* The operations a listing's atoms are expanded with: its own operations,
|
|
7
|
+
* checked to fit the atoms, or else the setting of its space group that fits
|
|
8
|
+
* them. A symbol admitting several settings, such as a rhombohedral group
|
|
9
|
+
* with no `:H` or `:R`, is settled by the atoms when the list is already
|
|
10
|
+
* expanded, since only the right setting maps it onto itself, and otherwise
|
|
11
|
+
* by the cell shape, then by the standard setting. Operations that do not
|
|
12
|
+
* fit are reported as `ErrorClass`.
|
|
10
13
|
*/
|
|
11
|
-
export declare function resolveOperations(parsed:
|
|
14
|
+
export declare function resolveOperations(parsed: StructureListing, ErrorClass: StructureErrorClass): Promise<SymmetryOperation[]>;
|