Browse Source

added more helper methods

Alexander Rose 7 years ago
parent
commit
fe85307716
3 changed files with 22 additions and 3 deletions
  1. 8 0
      src/mol-data/db/database.ts
  2. 5 2
      src/mol-io/reader/cif.ts
  3. 9 1
      src/mol-io/reader/cif/schema.ts

+ 8 - 0
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

+ 5 - 2
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)
     }
 }
 

+ 9 - 1
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;
 }