diff --git a/package.json b/package.json index 4e959aeb69ec07ba6d21bf3d0708cdd3310ed93f..58063c0f529d6e7e66126062b60c766bf529dfca 100644 --- a/package.json +++ b/package.json @@ -54,7 +54,7 @@ "mol-math($|/.*)": "<rootDir>/src/mol-math$1", "mol-model($|/.*)": "<rootDir>/src/mol-model$1", "mol-model-props($|/.*)": "<rootDir>/src/mol-model-props$1", - "mol-model-parsers($|/.*)": "<rootDir>/src/mol-model-parsers$1", + "mol-model-formats($|/.*)": "<rootDir>/src/mol-model-formats$1", "mol-plugin($|/.*)": "<rootDir>/src/mol-plugin$1", "mol-ql($|/.*)": "<rootDir>/src/mol-ql$1", "mol-repr($|/.*)": "<rootDir>/src/mol-repr$1", diff --git a/src/apps/structure-info/model.ts b/src/apps/structure-info/model.ts index 8d06ce4f5d3190c6ccd3706a90f48a8ec00cbb32..58c76c69f32b3202f852b75bf5d1a54126eb3de4 100644 --- a/src/apps/structure-info/model.ts +++ b/src/apps/structure-info/model.ts @@ -14,8 +14,7 @@ import { Model, Structure, StructureElement, Unit, StructureProperties, UnitRing import { OrderedSet } from 'mol-data/int'; import { openCif, downloadCif } from './helpers'; import { Vec3 } from 'mol-math/linear-algebra'; -import { trajecotryFromMmCIF } from 'mol-model-parsers/structure/mmcif'; -import { ModelFormat } from 'mol-model-parsers/structure/format'; +import { trajectoryFromMmCIF } from 'mol-model-formats/structure/mmcif'; async function downloadFromPdb(pdb: string) { @@ -200,7 +199,7 @@ export function printModelStats(models: ReadonlyArray<Model>) { } export async function getModelsAndStructure(frame: CifFrame) { - const models = await trajecotryFromMmCIF(ModelFormat.mmCIF(frame)).run(); + const models = await trajectoryFromMmCIF(frame).run(); const structure = Structure.ofModel(models[0]); return { models, structure }; } @@ -249,7 +248,7 @@ interface Args { download?: string, file?: string, - models?:boolean, + models?: boolean, seq?: boolean, ihm?: boolean, units?: boolean, diff --git a/src/apps/structure-info/volume.ts b/src/apps/structure-info/volume.ts index 56a7812d9af2ae3b78f588bd80ec21d60057ce9a..378f4631358b3626d6cab6f8497dcce53d61df68 100644 --- a/src/apps/structure-info/volume.ts +++ b/src/apps/structure-info/volume.ts @@ -8,7 +8,7 @@ import * as fs from 'fs' import * as argparse from 'argparse' import * as util from 'util' -import { VolumeData, parseDensityServerData, VolumeIsoValue } from 'mol-model/volume' +import { VolumeData, VolumeIsoValue } from 'mol-model/volume' import { downloadCif } from './helpers' import CIF from 'mol-io/reader/cif' import { DensityServer_Data_Database } from 'mol-io/reader/cif/schema/density-server'; @@ -17,6 +17,7 @@ import { StringBuilder } from 'mol-util'; import { Task } from 'mol-task'; import { createVolumeIsosurfaceMesh } from 'mol-repr/volume/isosurface'; import { createEmptyTheme } from 'mol-theme/theme'; +import { parseDensityServerData } from 'mol-model-formats/volume/density-server'; require('util.promisify').shim(); const writeFileAsync = util.promisify(fs.writeFile); diff --git a/src/mol-model-parsers/structure/format.ts b/src/mol-model-formats/structure/format.ts similarity index 100% rename from src/mol-model-parsers/structure/format.ts rename to src/mol-model-formats/structure/format.ts diff --git a/src/mol-model-parsers/structure/gro.ts b/src/mol-model-formats/structure/gro.ts similarity index 100% rename from src/mol-model-parsers/structure/gro.ts rename to src/mol-model-formats/structure/gro.ts diff --git a/src/mol-model-parsers/structure/mmcif.ts b/src/mol-model-formats/structure/mmcif.ts similarity index 74% rename from src/mol-model-parsers/structure/mmcif.ts rename to src/mol-model-formats/structure/mmcif.ts index c3ea2870b77de63aa2218cb8db0e4604eeb52f1b..6eecc06b6b3e94ae8e5da0aa09141a4582fdb15c 100644 --- a/src/mol-model-parsers/structure/mmcif.ts +++ b/src/mol-model-formats/structure/mmcif.ts @@ -9,8 +9,8 @@ import { Model } from 'mol-model/structure/model/model'; import { Task } from 'mol-task'; import { ModelFormat } from './format'; import { _parse_mmCif } from './mmcif/parser'; -import mmCIF_Format = ModelFormat.mmCIF +import { CifFrame } from 'mol-io/reader/cif'; -export function trajecotryFromMmCIF(format: mmCIF_Format): Task<Model.Trajectory> { - return Task.create('Create mmCIF Model', ctx => _parse_mmCif(format, ctx)); +export function trajectoryFromMmCIF(frame: CifFrame): Task<Model.Trajectory> { + return Task.create('Create mmCIF Model', ctx => _parse_mmCif(ModelFormat.mmCIF(frame), ctx)); } \ No newline at end of file diff --git a/src/mol-model-parsers/structure/mmcif/assembly.ts b/src/mol-model-formats/structure/mmcif/assembly.ts similarity index 100% rename from src/mol-model-parsers/structure/mmcif/assembly.ts rename to src/mol-model-formats/structure/mmcif/assembly.ts diff --git a/src/mol-model-parsers/structure/mmcif/atomic.ts b/src/mol-model-formats/structure/mmcif/atomic.ts similarity index 100% rename from src/mol-model-parsers/structure/mmcif/atomic.ts rename to src/mol-model-formats/structure/mmcif/atomic.ts diff --git a/src/mol-model-parsers/structure/mmcif/bonds.ts b/src/mol-model-formats/structure/mmcif/bonds.ts similarity index 100% rename from src/mol-model-parsers/structure/mmcif/bonds.ts rename to src/mol-model-formats/structure/mmcif/bonds.ts diff --git a/src/mol-model-parsers/structure/mmcif/bonds/comp.ts b/src/mol-model-formats/structure/mmcif/bonds/comp.ts similarity index 100% rename from src/mol-model-parsers/structure/mmcif/bonds/comp.ts rename to src/mol-model-formats/structure/mmcif/bonds/comp.ts diff --git a/src/mol-model-parsers/structure/mmcif/bonds/struct_conn.ts b/src/mol-model-formats/structure/mmcif/bonds/struct_conn.ts similarity index 100% rename from src/mol-model-parsers/structure/mmcif/bonds/struct_conn.ts rename to src/mol-model-formats/structure/mmcif/bonds/struct_conn.ts diff --git a/src/mol-model-parsers/structure/mmcif/ihm.ts b/src/mol-model-formats/structure/mmcif/ihm.ts similarity index 100% rename from src/mol-model-parsers/structure/mmcif/ihm.ts rename to src/mol-model-formats/structure/mmcif/ihm.ts diff --git a/src/mol-model-parsers/structure/mmcif/pair-restraint.ts b/src/mol-model-formats/structure/mmcif/pair-restraint.ts similarity index 100% rename from src/mol-model-parsers/structure/mmcif/pair-restraint.ts rename to src/mol-model-formats/structure/mmcif/pair-restraint.ts diff --git a/src/mol-model-parsers/structure/mmcif/pair-restraints/cross-links.ts b/src/mol-model-formats/structure/mmcif/pair-restraints/cross-links.ts similarity index 100% rename from src/mol-model-parsers/structure/mmcif/pair-restraints/cross-links.ts rename to src/mol-model-formats/structure/mmcif/pair-restraints/cross-links.ts diff --git a/src/mol-model-parsers/structure/mmcif/pair-restraints/predicted-contacts.ts b/src/mol-model-formats/structure/mmcif/pair-restraints/predicted-contacts.ts similarity index 100% rename from src/mol-model-parsers/structure/mmcif/pair-restraints/predicted-contacts.ts rename to src/mol-model-formats/structure/mmcif/pair-restraints/predicted-contacts.ts diff --git a/src/mol-model-parsers/structure/mmcif/parser.ts b/src/mol-model-formats/structure/mmcif/parser.ts similarity index 100% rename from src/mol-model-parsers/structure/mmcif/parser.ts rename to src/mol-model-formats/structure/mmcif/parser.ts diff --git a/src/mol-model-parsers/structure/mmcif/secondary-structure.ts b/src/mol-model-formats/structure/mmcif/secondary-structure.ts similarity index 100% rename from src/mol-model-parsers/structure/mmcif/secondary-structure.ts rename to src/mol-model-formats/structure/mmcif/secondary-structure.ts diff --git a/src/mol-model-parsers/structure/mmcif/sequence.ts b/src/mol-model-formats/structure/mmcif/sequence.ts similarity index 100% rename from src/mol-model-parsers/structure/mmcif/sequence.ts rename to src/mol-model-formats/structure/mmcif/sequence.ts diff --git a/src/mol-model-parsers/structure/mmcif/sort.ts b/src/mol-model-formats/structure/mmcif/sort.ts similarity index 100% rename from src/mol-model-parsers/structure/mmcif/sort.ts rename to src/mol-model-formats/structure/mmcif/sort.ts diff --git a/src/mol-model-parsers/structure/mmcif/util.ts b/src/mol-model-formats/structure/mmcif/util.ts similarity index 100% rename from src/mol-model-parsers/structure/mmcif/util.ts rename to src/mol-model-formats/structure/mmcif/util.ts diff --git a/src/mol-model-parsers/structure/pdb.ts b/src/mol-model-formats/structure/pdb.ts similarity index 100% rename from src/mol-model-parsers/structure/pdb.ts rename to src/mol-model-formats/structure/pdb.ts diff --git a/src/mol-model-parsers/structure/pdb/to-cif.ts b/src/mol-model-formats/structure/pdb/to-cif.ts similarity index 100% rename from src/mol-model-parsers/structure/pdb/to-cif.ts rename to src/mol-model-formats/structure/pdb/to-cif.ts diff --git a/src/mol-model-parsers/volume/ccp4.ts b/src/mol-model-formats/volume/ccp4.ts similarity index 100% rename from src/mol-model-parsers/volume/ccp4.ts rename to src/mol-model-formats/volume/ccp4.ts diff --git a/src/mol-model-parsers/volume/density-server.ts b/src/mol-model-formats/volume/density-server.ts similarity index 100% rename from src/mol-model-parsers/volume/density-server.ts rename to src/mol-model-formats/volume/density-server.ts diff --git a/src/mol-model-parsers/volume/dsn6.ts b/src/mol-model-formats/volume/dsn6.ts similarity index 100% rename from src/mol-model-parsers/volume/dsn6.ts rename to src/mol-model-formats/volume/dsn6.ts diff --git a/src/mol-model/structure/model/model.ts b/src/mol-model/structure/model/model.ts index 9face1a566e496965171e30294e07945e0d890f1..9c44135df7b8e64b081ffa4c449622d0a4443635 100644 --- a/src/mol-model/structure/model/model.ts +++ b/src/mol-model/structure/model/model.ts @@ -14,7 +14,7 @@ import { CustomProperties } from './properties/custom'; import { SecondaryStructure } from './properties/seconday-structure'; import { ChemicalComponentMap } from './properties/chemical-component'; import { SaccharideComponentMap } from '../structure/carbohydrates/constants'; -import { ModelFormat } from 'mol-model-parsers/structure/format'; +import { ModelFormat } from 'mol-model-formats/structure/format'; /** * Interface to the "source data" of the molecule. diff --git a/src/mol-model/structure/structure/unit/links/data.ts b/src/mol-model/structure/structure/unit/links/data.ts index 00559aec5a5cb63269a7ef784ccc5b7bb8d145d0..d8f40a7ec87e3328bb1adc1d763928b08c79bba2 100644 --- a/src/mol-model/structure/structure/unit/links/data.ts +++ b/src/mol-model/structure/structure/unit/links/data.ts @@ -66,10 +66,10 @@ class InterUnitBonds { pairBonds.linkedElementIndices.forEach(indexA => { pairBonds.getBonds(indexA).forEach(bondInfo => { const { unitA, unitB } = pairBonds - + const bondKey = InterUnitBonds.getBondKey(indexA, unitA, bondInfo.indexB, unitB) bondKeyIndex.set(bondKey, bonds.length) - + const elementKey = InterUnitBonds.getElementKey(indexA, unitA) const e = elementKeyIndex.get(elementKey) if (e === undefined) elementKeyIndex.set(elementKey, [bonds.length]) diff --git a/src/mol-model/structure/structure/unit/links/inter-compute.ts b/src/mol-model/structure/structure/unit/links/inter-compute.ts index 3fa358f98601f97dee210884396d1c2360202ad4..ac094daa8c3f143658e3783378f50e1ab2be1487 100644 --- a/src/mol-model/structure/structure/unit/links/inter-compute.ts +++ b/src/mol-model/structure/structure/unit/links/inter-compute.ts @@ -13,7 +13,7 @@ import { UniqueArray } from 'mol-data/generic'; import { SortedArray } from 'mol-data/int'; import { Vec3, Mat4 } from 'mol-math/linear-algebra'; import StructureElement from '../../element'; -import { StructConn } from 'mol-model-parsers/structure/mmcif/bonds'; +import { StructConn } from 'mol-model-formats/structure/mmcif/bonds'; const MAX_RADIUS = 4; diff --git a/src/mol-model/structure/structure/unit/links/intra-compute.ts b/src/mol-model/structure/structure/unit/links/intra-compute.ts index f5aa2ad7c0d422532c7a740b610eed1f9452b5ee..04b7497de8988bcda8b034a76fff8971c41e6834 100644 --- a/src/mol-model/structure/structure/unit/links/intra-compute.ts +++ b/src/mol-model/structure/structure/unit/links/intra-compute.ts @@ -10,7 +10,7 @@ import Unit from '../../unit' import { IntAdjacencyGraph } from 'mol-math/graph'; import { LinkComputationParameters, getElementIdx, MetalsSet, getElementThreshold, isHydrogen, getElementPairThreshold } from './common'; import { SortedArray } from 'mol-data/int'; -import { StructConn, ComponentBond } from 'mol-model-parsers/structure/mmcif/bonds'; +import { StructConn, ComponentBond } from 'mol-model-formats/structure/mmcif/bonds'; function getGraph(atomA: number[], atomB: number[], _order: number[], _flags: number[], atomCount: number): IntraUnitLinks { const builder = new IntAdjacencyGraph.EdgeBuilder(atomCount, atomA, atomB); diff --git a/src/mol-model/structure/structure/unit/pair-restraints/extract-cross-links.ts b/src/mol-model/structure/structure/unit/pair-restraints/extract-cross-links.ts index 298c46c0e6c774533d1779960a5f6f2d0992e521..a6e027e9cc5937eecdcd7e39b129c186cbbb6871 100644 --- a/src/mol-model/structure/structure/unit/pair-restraints/extract-cross-links.ts +++ b/src/mol-model/structure/structure/unit/pair-restraints/extract-cross-links.ts @@ -8,7 +8,7 @@ import Unit from '../../unit'; import Structure from '../../structure'; import { PairRestraints, CrossLinkRestraint } from './data'; import { StructureElement } from '../../../structure'; -import { IHMCrossLinkRestraint } from 'mol-model-parsers/structure/mmcif/pair-restraint'; +import { IHMCrossLinkRestraint } from 'mol-model-formats/structure/mmcif/pair-restraint'; function _addRestraints(map: Map<number, number>, unit: Unit, restraints: IHMCrossLinkRestraint) { const { elements } = unit; diff --git a/src/mol-model/volume.ts b/src/mol-model/volume.ts index 093da9a40d46e47c5a99d42d07ff8c7685eeab25..c622e171bf076b1d77cca1d2f027464ac44734ee 100644 --- a/src/mol-model/volume.ts +++ b/src/mol-model/volume.ts @@ -4,5 +4,4 @@ * @author David Sehnal <david.sehnal@gmail.com> */ -export * from './volume/data' -export * from '../mol-model-parsers/volume/density-server' \ No newline at end of file +export * from './volume/data' \ No newline at end of file diff --git a/src/mol-plugin/state/transforms/model.ts b/src/mol-plugin/state/transforms/model.ts index 15838cd424c04922956bf2e1c669372f25116e49..10a92df5b64ef9ebbc6016ea6e9be91b1bcfaeb2 100644 --- a/src/mol-plugin/state/transforms/model.ts +++ b/src/mol-plugin/state/transforms/model.ts @@ -16,13 +16,12 @@ import { MolScriptBuilder } from 'mol-script/language/builder'; import { StateObject } from 'mol-state'; import { PluginContext } from 'mol-plugin/context'; import { stringToWords } from 'mol-util/string'; -import { volumeFromCcp4 } from 'mol-model-parsers/volume/ccp4'; +import { volumeFromCcp4 } from 'mol-model-formats/volume/ccp4'; import { Vec3 } from 'mol-math/linear-algebra'; -import { volumeFromDsn6 } from 'mol-model-parsers/volume/dsn6'; -import { trajecotryFromMmCIF } from 'mol-model-parsers/structure/mmcif'; -import { ModelFormat } from 'mol-model-parsers/structure/format'; +import { volumeFromDsn6 } from 'mol-model-formats/volume/dsn6'; +import { trajectoryFromMmCIF } from 'mol-model-formats/structure/mmcif'; import { parsePDB } from 'mol-io/reader/pdb/parser'; -import { trajectoryFromPDB } from 'mol-model-parsers/structure/pdb'; +import { trajectoryFromPDB } from 'mol-model-formats/structure/pdb'; export { TrajectoryFromMmCif } type TrajectoryFromMmCif = typeof TrajectoryFromMmCif @@ -49,7 +48,7 @@ const TrajectoryFromMmCif = PluginStateTransform.BuiltIn({ const header = params.blockHeader || a.data.blocks[0].header; const block = a.data.blocks.find(b => b.header === header); if (!block) throw new Error(`Data block '${[header]}' not found.`); - const models = await trajecotryFromMmCIF(ModelFormat.mmCIF(block)).runInContext(ctx); + const models = await trajectoryFromMmCIF(block).runInContext(ctx); if (models.length === 0) throw new Error('No models found.'); const props = { label: models[0].label, description: `${models.length} model${models.length === 1 ? '' : 's'}` }; return new SO.Molecule.Trajectory(models, props); diff --git a/src/perf-tests/lookup3d.ts b/src/perf-tests/lookup3d.ts index fb75917fc0d9299310e6c4c79ef5c673f1cd03cd..a625a6cd16187429723d8b36b6fbb0e29bc52d7d 100644 --- a/src/perf-tests/lookup3d.ts +++ b/src/perf-tests/lookup3d.ts @@ -7,8 +7,7 @@ import { Structure } from 'mol-model/structure' import { GridLookup3D } from 'mol-math/geometry'; // import { sortArray } from 'mol-data/util'; import { OrderedSet } from 'mol-data/int'; -import { ModelFormat } from 'mol-model-parsers/structure/format'; -import { trajecotryFromMmCIF } from 'mol-model-parsers/structure/mmcif'; +import { trajectoryFromMmCIF } from 'mol-model-formats/structure/mmcif'; require('util.promisify').shim(); const readFileAsync = util.promisify(fs.readFile); @@ -33,11 +32,10 @@ export async function readCIF(path: string) { throw parsed; } - const mmcif = ModelFormat.mmCIF(parsed.result.blocks[0]); - const models = await trajecotryFromMmCIF(mmcif).run(); + const models = await trajectoryFromMmCIF(parsed.result.blocks[0]).run(); const structures = models.map(Structure.ofModel); - return { mmcif: mmcif.data, models, structures }; + return { mmcif: models[0].sourceData.data, models, structures }; } export async function test() { diff --git a/src/perf-tests/structure.ts b/src/perf-tests/structure.ts index 60f485c27ecc8ead2305c85ee7f45973f16b28be..48f9e54d5823f01af4f6d529a278513827004bab 100644 --- a/src/perf-tests/structure.ts +++ b/src/perf-tests/structure.ts @@ -16,8 +16,7 @@ import { Structure, Model, Queries as Q, StructureElement, StructureSelection, S import to_mmCIF from 'mol-model/structure/export/mmcif' import { Vec3 } from 'mol-math/linear-algebra'; -import { ModelFormat } from 'mol-model-parsers/structure/format'; -import { trajecotryFromMmCIF } from 'mol-model-parsers/structure/mmcif'; +import { trajectoryFromMmCIF } from 'mol-model-formats/structure/mmcif'; // import { printUnits } from 'apps/structure-info/model'; // import { EquivalenceClasses } from 'mol-data/util'; @@ -71,16 +70,12 @@ export async function readCIF(path: string) { } const data = parsed.result.blocks[0]; - console.time('schema') - const mmcif = ModelFormat.mmCIF(data); - - console.timeEnd('schema') console.time('buildModels') - const models = await trajecotryFromMmCIF(mmcif).run(); + const models = await trajectoryFromMmCIF(data).run(); console.timeEnd('buildModels') const structures = models.map(Structure.ofModel); - return { mmcif, models, structures }; + return { mmcif: models[0].sourceData.data, models, structures }; } const DATA_DIR = './build/data'; diff --git a/src/servers/model/server/structure-wrapper.ts b/src/servers/model/server/structure-wrapper.ts index b124bdd2869147a7aae429cb2487cabbe7243969..615e57e758653a9aa27fd43ef896be644b3ed91b 100644 --- a/src/servers/model/server/structure-wrapper.ts +++ b/src/servers/model/server/structure-wrapper.ts @@ -15,8 +15,7 @@ import * as zlib from 'zlib' import { Job } from './jobs'; import { ConsoleLogger } from 'mol-util/console-logger'; import { ModelPropertiesProvider } from '../property-provider'; -import { trajecotryFromMmCIF } from 'mol-model-parsers/structure/mmcif'; -import { ModelFormat } from 'mol-model-parsers/structure/format'; +import { trajectoryFromMmCIF } from 'mol-model-formats/structure/mmcif'; require('util.promisify').shim(); @@ -110,7 +109,7 @@ export async function readStructureWrapper(key: string, sourceId: string | '_loc const frame = (await parseCif(data)).blocks[0]; perf.end('parse'); perf.start('createModel'); - const models = await trajecotryFromMmCIF(ModelFormat.mmCIF(frame)).run(); + const models = await trajectoryFromMmCIF(frame).run(); perf.end('createModel'); const modelMap = new Map<number, Model>(); diff --git a/tsconfig.json b/tsconfig.json index a4dc45eb08df77d06720a54c0635828beabb0956..0a845d1985969692496c7afa252226647952ee33 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -23,7 +23,7 @@ "mol-math": ["./mol-math"], "mol-model": ["./mol-model"], "mol-model-props": ["./mol-model-props", "./mol-model-props/index.ts"], - "mol-model-parsers": ["./mol-model-parsers"], + "mol-model-formats": ["./mol-model-formats"], "mol-ql": ["./mol-ql"], "mol-repr": ["./mol-repr"], "mol-script": ["./mol-script"],