diff --git a/src/mol-data/db/database.ts b/src/mol-data/db/database.ts index e25041fc0364e9160cf27f26ead92bdfcd90b2d5..5aa2f2700dd732f6d2981a1232e2a099109b2da0 100644 --- a/src/mol-data/db/database.ts +++ b/src/mol-data/db/database.ts @@ -31,6 +31,14 @@ namespace Database { } return ret; } + + export function getTablesAsRows<S extends Schema>(database: Database<S>) { + const ret: { [k: string]: Table.Row<any>[] } = {}; + for (const k of database._tableNames) { + ret[k] = Table.getRows(database[k]); + } + return ret; + } } export default Database \ No newline at end of file diff --git a/src/mol-io/reader/cif.ts b/src/mol-io/reader/cif.ts index a8e8992698ce11e7c9685129280913b91da518de..168cceadb1584cca8e8077a89d0858c19d3992c2 100644 --- a/src/mol-io/reader/cif.ts +++ b/src/mol-io/reader/cif.ts @@ -8,18 +8,21 @@ import parseText from './cif/text/parser' import parseBinary from './cif/binary/parser' import { Frame } from './cif/data-model' -import { toDatabase } from './cif/schema' +import { toDatabaseCollection, toDatabase } from './cif/schema' import { mmCIF_Schema, mmCIF_Database } from './cif/schema/mmcif' import { CCD_Schema, CCD_Database } from './cif/schema/ccd' +import { BIRD_Schema, BIRD_Database } from './cif/schema/bird' export default { parse: (data: string|Uint8Array) => typeof data === 'string' ? parseText(data) : parseBinary(data), parseText, parseBinary, + toDatabaseCollection, toDatabase, schema: { mmCIF: (frame: Frame) => toDatabase<mmCIF_Schema, mmCIF_Database>(mmCIF_Schema, frame), - CCD: (frame: Frame) => toDatabase<CCD_Schema, CCD_Database>(CCD_Schema, frame) + CCD: (frame: Frame) => toDatabase<CCD_Schema, CCD_Database>(CCD_Schema, frame), + BIRD: (frame: Frame) => toDatabase<BIRD_Schema, BIRD_Database>(BIRD_Schema, frame) } } diff --git a/src/mol-io/reader/cif/schema.ts b/src/mol-io/reader/cif/schema.ts index 973c16d27bcfb8a68d9fc4e8d89bb93ca3bd30ad..d71b6cc898f65b770c6883bdfcab57f3d1e96375 100644 --- a/src/mol-io/reader/cif/schema.ts +++ b/src/mol-io/reader/cif/schema.ts @@ -5,11 +5,19 @@ * @author Alexander Rose <alexander.rose@weirdbyte.de> */ -import { Database, Table, Column, ColumnHelpers } from 'mol-data/db' +import { DatabaseCollection, Database, Table, Column, ColumnHelpers } from 'mol-data/db' import { Tensor } from 'mol-math/linear-algebra' import { arrayEqual } from 'mol-util' import * as Data from './data-model' +export function toDatabaseCollection<Schema extends Database.Schema>(schema: Schema, file: Data.File): DatabaseCollection<Schema> { + const dbc: DatabaseCollection<Schema> = {} + for (const data of file.blocks) { + dbc[data.header] = toDatabase(schema, data) + } + return dbc; +} + export function toDatabase<Schema extends Database.Schema, Frame extends Database<Schema> = Database<Schema>>(schema: Schema, frame: Data.Frame): Frame { return createDatabase(schema, frame) as Frame; }