From 3babfb55c39f69eb57f4b1e1752d6e6ab6e916bc Mon Sep 17 00:00:00 2001 From: David Sehnal <david.sehnal@gmail.com> Date: Thu, 26 Apr 2018 19:36:32 +0200 Subject: [PATCH] Renamed Conformation to AtomSiteConformation --- src/mol-model/structure/model/formats/gro.ts | 8 ++++---- src/mol-model/structure/model/formats/mmcif.ts | 8 ++++---- src/mol-model/structure/model/model.ts | 4 ++-- .../{conformation.ts => atom-site-conformation.ts} | 0 .../structure/model/properties/coarse-grained.ts | 10 +++++++--- src/mol-model/structure/model/properties/hierarchy.ts | 7 +------ .../element/properties/bonds/group-compute.ts | 2 +- src/mol-model/structure/structure/unit.ts | 8 ++++---- src/perf-tests/structure.ts | 6 +++--- 9 files changed, 26 insertions(+), 27 deletions(-) rename src/mol-model/structure/model/properties/{conformation.ts => atom-site-conformation.ts} (100%) diff --git a/src/mol-model/structure/model/formats/gro.ts b/src/mol-model/structure/model/formats/gro.ts index cad8c441a..cb868ff96 100644 --- a/src/mol-model/structure/model/formats/gro.ts +++ b/src/mol-model/structure/model/formats/gro.ts @@ -11,7 +11,7 @@ import { Atoms } from 'mol-io/reader/gro/schema' import Format from '../format' import Model from '../model' import * as Hierarchy from '../properties/hierarchy' -import Conformation from '../properties/conformation' +import AtomSiteConformation from '../properties/atom-site-conformation' import CoarseGrained from '../properties/coarse-grained' import findHierarchyKeys from '../utils/hierarchy-keys' import { guessElement } from '../utils/guess-element' @@ -77,7 +77,7 @@ function createHierarchyData(atomsData: Atoms, offsets: HierarchyOffsets): Hiera return { atoms, residues, chains }; } -function getConformation(atoms: Atoms): Conformation { +function getConformation(atoms: Atoms): AtomSiteConformation { return { id: UUID.create(), atomId: atoms.atomNumber, @@ -105,7 +105,7 @@ function createModel(format: gro_Format, modelNum: number, previous?: Model): Mo if (previous && isHierarchyDataEqual(previous.hierarchy, hierarchyData)) { return { ...previous, - conformation: getConformation(structure.atoms) + atomSiteConformation: getConformation(structure.atoms) }; } @@ -133,7 +133,7 @@ function createModel(format: gro_Format, modelNum: number, previous?: Model): Mo hierarchy, entities, sequence: Sequence.fromHierarchy(hierarchy), - conformation: getConformation(structure.atoms), + atomSiteConformation: getConformation(structure.atoms), coarseGrained: CoarseGrained.Empty, symmetry: { assemblies: [] }, atomCount: structure.atoms.count diff --git a/src/mol-model/structure/model/formats/mmcif.ts b/src/mol-model/structure/model/formats/mmcif.ts index d88ca8ac7..dddb04627 100644 --- a/src/mol-model/structure/model/formats/mmcif.ts +++ b/src/mol-model/structure/model/formats/mmcif.ts @@ -10,7 +10,7 @@ import { Interval, Segmentation } from 'mol-data/int' import Format from '../format' import Model from '../model' import * as Hierarchy from '../properties/hierarchy' -import Conformation from '../properties/conformation' +import AtomSiteConformation from '../properties/atom-site-conformation' import CoarseGrained from '../properties/coarse-grained' import Symmetry from '../properties/symmetry' import findHierarchyKeys from '../utils/hierarchy-keys' @@ -67,7 +67,7 @@ function createHierarchyData({ data }: mmCIF_Format, bounds: Interval, offsets: return { atoms, residues, chains }; } -function getConformation({ data }: mmCIF_Format, bounds: Interval): Conformation { +function getConformation({ data }: mmCIF_Format, bounds: Interval): AtomSiteConformation { const start = Interval.start(bounds), end = Interval.end(bounds); const { atom_site } = data; return { @@ -99,7 +99,7 @@ function createModel(format: mmCIF_Format, bounds: Interval, previous?: Model): if (previous && isHierarchyDataEqual(previous.hierarchy, hierarchyData)) { return { ...previous, - conformation: getConformation(format, bounds) + atomSiteConformation: getConformation(format, bounds) }; } @@ -121,7 +121,7 @@ function createModel(format: mmCIF_Format, bounds: Interval, previous?: Model): entities, hierarchy, sequence: getSequence(format.data, entities, hierarchy), - conformation: getConformation(format, bounds), + atomSiteConformation: getConformation(format, bounds), coarseGrained: CoarseGrained.Empty, symmetry: getSymmetry(format), atomCount: Interval.size(bounds) diff --git a/src/mol-model/structure/model/model.ts b/src/mol-model/structure/model/model.ts index 9652cf5b1..e685af863 100644 --- a/src/mol-model/structure/model/model.ts +++ b/src/mol-model/structure/model/model.ts @@ -8,7 +8,7 @@ import UUID from 'mol-util/uuid' import Format from './format' import Sequence from './properties/sequence' import Hierarchy from './properties/hierarchy' -import Conformation from './properties/conformation' +import AtomSiteConformation from './properties/atom-site-conformation' import Symmetry from './properties/symmetry' import CoarseGrained from './properties/coarse-grained' import { Entities } from './properties/common'; @@ -32,7 +32,7 @@ interface Model extends Readonly<{ sequence: Sequence, hierarchy: Hierarchy, - conformation: Conformation, + atomSiteConformation: AtomSiteConformation, symmetry: Symmetry, coarseGrained: CoarseGrained, diff --git a/src/mol-model/structure/model/properties/conformation.ts b/src/mol-model/structure/model/properties/atom-site-conformation.ts similarity index 100% rename from src/mol-model/structure/model/properties/conformation.ts rename to src/mol-model/structure/model/properties/atom-site-conformation.ts diff --git a/src/mol-model/structure/model/properties/coarse-grained.ts b/src/mol-model/structure/model/properties/coarse-grained.ts index 730724114..5787428ee 100644 --- a/src/mol-model/structure/model/properties/coarse-grained.ts +++ b/src/mol-model/structure/model/properties/coarse-grained.ts @@ -9,13 +9,14 @@ import { Tensor } from 'mol-math/linear-algebra'; import { Column } from 'mol-data/db'; interface CoarseGrained { + isDefined: boolean, modelList: mmCIF['ihm_model_list'], - spheres: { [P in keyof CoarseGrained.Sphere]: Column<CoarseGrained.Sphere[P]> }, - gaussians: { [P in keyof CoarseGrained.Gaussian]: Column<CoarseGrained.Gaussian[P]> } + spheres: CoarseGrained.Spheres, + gaussians: CoarseGrained.Gaussians } namespace CoarseGrained { - export const Empty: CoarseGrained = { } as any; + export const Empty: CoarseGrained = { isDefined: false } as any; interface Site { // index to the Model.hierarchy.entities table @@ -40,6 +41,9 @@ namespace CoarseGrained { weight: number, covarianceMatrix: Tensor.Data } + + export type Spheres = { count: number} & { [P in keyof Sphere]: Column<Sphere[P]> } + export type Gaussians = { count: number} & { [P in keyof Gaussian]: Column<Gaussian[P]> } } export default CoarseGrained; \ No newline at end of file diff --git a/src/mol-model/structure/model/properties/hierarchy.ts b/src/mol-model/structure/model/properties/hierarchy.ts index 8987e070d..d25903d95 100644 --- a/src/mol-model/structure/model/properties/hierarchy.ts +++ b/src/mol-model/structure/model/properties/hierarchy.ts @@ -40,15 +40,10 @@ export const ChainsSchema = { export type ChainsSchema = typeof ChainsSchema export interface Chains extends Table<ChainsSchema> { } -// export const EntitySchema = mmCIF['entity'] -// export type EntitySchema = typeof EntitySchema -// export interface Entities extends Table<EntitySchema> { } - export interface Data { atoms: Atoms, residues: Residues, - chains: Chains, - //entities: Entities + chains: Chains } export interface Segments { diff --git a/src/mol-model/structure/structure/element/properties/bonds/group-compute.ts b/src/mol-model/structure/structure/element/properties/bonds/group-compute.ts index fb078c889..a75540509 100644 --- a/src/mol-model/structure/structure/element/properties/bonds/group-compute.ts +++ b/src/mol-model/structure/structure/element/properties/bonds/group-compute.ts @@ -110,7 +110,7 @@ function computePerAtomBonds(atomA: number[], atomB: number[], _order: number[], function _computeBonds(unit: Unit.Atomic, atoms: ElementGroup, params: BondComputationParameters): GroupBonds { const MAX_RADIUS = 3; - const { x, y, z } = unit.model.conformation; + const { x, y, z } = unit.model.atomSiteConformation; const atomCount = ElementGroup.size(atoms); const { residueIndex } = unit; const { type_symbol, label_atom_id, label_alt_id } = unit.model.hierarchy.atoms; diff --git a/src/mol-model/structure/structure/unit.ts b/src/mol-model/structure/structure/unit.ts index 2109cc10b..201002b58 100644 --- a/src/mol-model/structure/structure/unit.ts +++ b/src/mol-model/structure/structure/unit.ts @@ -47,7 +47,7 @@ namespace Unit { // Reference some commonly accessed things for faster access. readonly residueIndex: ArrayLike<number>, readonly chainIndex: ArrayLike<number>, - readonly conformation: Model['conformation'] + readonly conformation: Model['atomSiteConformation'] } // Coarse grained representations. @@ -58,7 +58,7 @@ namespace Unit { export function createAtomic(model: Model, operator: SymmetryOperator, fullGroup: ElementGroup): Unit { const h = model.hierarchy; - const { invariantPosition, position, x, y, z } = SymmetryOperator.createMapping(operator, model.conformation); + const { invariantPosition, position, x, y, z } = SymmetryOperator.createMapping(operator, model.atomSiteConformation); return { model, @@ -68,7 +68,7 @@ namespace Unit { residueIndex: h.residueSegments.segmentMap, chainIndex: h.chainSegments.segmentMap, hierarchy: model.hierarchy, - conformation: model.conformation, + conformation: model.atomSiteConformation, invariantPosition, position, x, y, z @@ -89,7 +89,7 @@ namespace Unit { export function getLookup3d(unit: Unit, group: ElementGroup) { if (group.__lookup3d__) return group.__lookup3d__; if (Unit.isAtomic(unit)) { - const { x, y, z } = unit.model.conformation; + const { x, y, z } = unit.model.atomSiteConformation; group.__lookup3d__ = GridLookup3D({ x, y, z, indices: group.elements }); return group.__lookup3d__; } diff --git a/src/perf-tests/structure.ts b/src/perf-tests/structure.ts index 57a23cec6..1e0a9b972 100644 --- a/src/perf-tests/structure.ts +++ b/src/perf-tests/structure.ts @@ -356,11 +356,11 @@ export namespace PropertyAccess { // return; console.log('bs', baseline(models[0])); - console.log('sp', sumProperty(structures[0], l => l.unit.model.conformation.atomId.value(l.element))); - console.log(sumPropertySegmented(structures[0], l => l.unit.model.conformation.atomId.value(l.element))); + console.log('sp', sumProperty(structures[0], l => l.unit.model.atomSiteConformation.atomId.value(l.element))); + console.log(sumPropertySegmented(structures[0], l => l.unit.model.atomSiteConformation.atomId.value(l.element))); //console.log(sumPropertySegmentedMutable(structures[0], l => l.unit.model.conformation.atomId.value(l.element)); - console.log(sumPropertyAtomSetIt(structures[0], l => l.unit.model.conformation.atomId.value(l.element))); + console.log(sumPropertyAtomSetIt(structures[0], l => l.unit.model.atomSiteConformation.atomId.value(l.element))); //console.log(sumProperty(structures[0], Property.cachedAtomColumn(m => m.conformation.atomId))); //console.log(sumDirect(structures[0])); //console.log('r', sumPropertyResidue(structures[0], l => l.unit.hierarchy.residues.auth_seq_id.value(l.unit.residueIndex[l.atom]))); -- GitLab