From fe8530771699c2d4f56230df46cbc79cef735cc2 Mon Sep 17 00:00:00 2001 From: Alexander Rose <alex.rose@rcsb.org> Date: Tue, 20 Mar 2018 20:23:45 -0700 Subject: [PATCH] added more helper methods --- src/mol-data/db/database.ts | 8 ++++++++ src/mol-io/reader/cif.ts | 7 +++++-- src/mol-io/reader/cif/schema.ts | 10 +++++++++- 3 files changed, 22 insertions(+), 3 deletions(-) diff --git a/src/mol-data/db/database.ts b/src/mol-data/db/database.ts index e25041fc0..5aa2f2700 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 a8e899269..168cceadb 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 973c16d27..d71b6cc89 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; } -- GitLab