From 09fe6032dabd2a79d3999b0b77e6cdeede66c208 Mon Sep 17 00:00:00 2001 From: David Sehnal <david.sehnal@gmail.com> Date: Sun, 5 Nov 2017 17:45:35 +0100 Subject: [PATCH] CIF writer tweaks --- src/apps/domain-annotation-server/utils.ts | 3 +-- src/mol-data/structure/export/mmcif.ts | 2 +- src/mol-io/writer/cif/encoder.ts | 13 +++++++------ src/mol-io/writer/cif/encoder/text.ts | 2 +- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/apps/domain-annotation-server/utils.ts b/src/apps/domain-annotation-server/utils.ts index cb5c6badd..767de8fa4 100644 --- a/src/apps/domain-annotation-server/utils.ts +++ b/src/apps/domain-annotation-server/utils.ts @@ -20,8 +20,7 @@ function ofSchema(schema: Table.Schema) { const fields: Encoder.FieldDefinition[] = []; for (const k of Object.keys(schema)) { const t = schema[k]; - // TODO: matrix/vector/support - const type = t.kind === 'str' ? Encoder.FieldType.Str : t.kind === 'int' ? Encoder.FieldType.Int : Encoder.FieldType.Float; + const type: any = t.kind === 'str' ? Encoder.FieldType.Str : t.kind === 'int' ? Encoder.FieldType.Int : Encoder.FieldType.Float; fields.push({ name: k, type, value: columnValue(k), valueKind: columnValueKind(k) }) } return fields; diff --git a/src/mol-data/structure/export/mmcif.ts b/src/mol-data/structure/export/mmcif.ts index 5f3111f04..64d86d66c 100644 --- a/src/mol-data/structure/export/mmcif.ts +++ b/src/mol-data/structure/export/mmcif.ts @@ -49,7 +49,7 @@ function ofSchema(schema: Table.Schema) { for (const k of Object.keys(schema)) { const t = schema[k]; // TODO: matrix/vector/support - const type = t.kind === 'str' ? Encoder.FieldType.Str : t.kind === 'int' ? Encoder.FieldType.Int : Encoder.FieldType.Float; + const type: any = t.kind === 'str' ? Encoder.FieldType.Str : t.kind === 'int' ? Encoder.FieldType.Int : Encoder.FieldType.Float; fields.push({ name: k, type, value: columnValue(k), valueKind: columnValueKind(k) }) } return fields; diff --git a/src/mol-io/writer/cif/encoder.ts b/src/mol-io/writer/cif/encoder.ts index f32bec34b..ad036fcba 100644 --- a/src/mol-io/writer/cif/encoder.ts +++ b/src/mol-io/writer/cif/encoder.ts @@ -13,17 +13,18 @@ export const enum FieldType { Str, Int, Float } -export interface FieldDefinition<Key = any, Data = any> { +export interface FieldDefinitionBase<Key, Data> { name: string, - type: FieldType, - value(key: Key, data: Data): string | number, - valueKind?: (key: Key, data: Data) => Column.ValueKind - - /** determine whether to include this field base on the context */ + valueKind?: (key: Key, data: Data) => Column.ValueKind, // TODO: // shouldInclude?: (data: Data) => boolean } +export type FieldDefinition<Key = any, Data = any> = + | FieldDefinitionBase<Key, Data> & { type: FieldType.Str, value(key: Key, data: Data): string } + | FieldDefinitionBase<Key, Data> & { type: FieldType.Int, value(key: Key, data: Data): number } + | FieldDefinitionBase<Key, Data> & { type: FieldType.Float, value(key: Key, data: Data): number } + export interface FieldFormat { // TODO // textDecimalPlaces: number, diff --git a/src/mol-io/writer/cif/encoder/text.ts b/src/mol-io/writer/cif/encoder/text.ts index 46b3fd4cd..b07a54853 100644 --- a/src/mol-io/writer/cif/encoder/text.ts +++ b/src/mol-io/writer/cif/encoder/text.ts @@ -79,7 +79,7 @@ function writeValue(builder: StringBuilder, data: any, key: any, f: Enc.FieldDef } else if (t === Enc.FieldType.Int) { writeInteger(builder, val as number); } else { - writeFloat(builder, val as number, 1000); + writeFloat(builder, val as number, 1000000); } } return false; -- GitLab