UNPKG

molstar

Version:

A comprehensive macromolecular library.

50 lines 2.38 kB
/** * Copyright (c) 2017-2018 mol* contributors, licensed under MIT, See LICENSE file for more info. * * @author David Sehnal <david.sehnal@gmail.com> * @author Alexander Rose <alexander.rose@weirdbyte.de> */ import { ColumnHelpers } from '../../../../mol-data/db'; import { decode } from '../../../common/binary-cif'; import { parseInt as fastParseInt, parseFloat as fastParseFloat } from '../../common/text/number-parser'; export function Field(column) { var mask = column.mask ? decode(column.mask) : void 0; var data = decode(column.data); var isNumeric = ColumnHelpers.isTypedArray(data); var str = isNumeric ? mask ? function (row) { return mask[row] === 0 /* Present */ ? '' + data[row] : ''; } : function (row) { return '' + data[row]; } : mask ? function (row) { return mask[row] === 0 /* Present */ ? data[row] : ''; } : function (row) { return data[row]; }; var int = isNumeric ? function (row) { return data[row]; } : function (row) { var v = data[row]; return fastParseInt(v, 0, v.length); }; var float = isNumeric ? function (row) { return data[row]; } : function (row) { var v = data[row]; return fastParseFloat(v, 0, v.length); }; var valueKind = mask ? function (row) { return mask[row]; } : function (row) { return 0 /* Present */; }; var rowCount = data.length; return { __array: data, binaryEncoding: column.data.encoding, isDefined: true, rowCount: rowCount, str: str, int: int, float: float, valueKind: valueKind, areValuesEqual: function (rowA, rowB) { return data[rowA] === data[rowB]; }, toStringArray: function (params) { return ColumnHelpers.createAndFillArray(rowCount, str, params); }, toIntArray: isNumeric ? function (params) { return ColumnHelpers.typedArrayWindow(data, params); } : function (params) { return ColumnHelpers.createAndFillArray(rowCount, int, params); }, toFloatArray: isNumeric ? function (params) { return ColumnHelpers.typedArrayWindow(data, params); } : function (params) { return ColumnHelpers.createAndFillArray(rowCount, float, params); } }; } //# sourceMappingURL=field.js.map