UNPKG

slimfits

Version:

Package for loading data stored in FITS data format

56 lines 2.7 kB
import { Constants, BitPix, BitPixUtils } from '../interfaces'; import { KeywordsManager } from '../utils/KeywordsManager'; import { LinearTransformers } from '../utils/LinearTransformers'; var SimpleDataReader = /** @class */ (function () { function SimpleDataReader() { } Object.defineProperty(SimpleDataReader.prototype, "name", { get: function () { return 'simple data'; }, enumerable: true, configurable: true }); SimpleDataReader.prototype.canReadData = function (header) { return (KeywordsManager.hasValue(header, 'SIMPLE', true) || KeywordsManager.hasValue(header, 'XTENSION', 'IMAGE')) && !KeywordsManager.hasValue(header, 'GROUPS', true); }; SimpleDataReader.prototype.readDataSize = function (header) { var elementType = KeywordsManager.getValue(header, 'BITPIX', BitPix.Unknown); var elementTypeSize = BitPixUtils.getByteSize(elementType); if (KeywordsManager.hasValue(header, 'NAXIS', 0)) { return 0; } var length = header .filter(function (k) { return k.key.indexOf('NAXIS') === 0 && k.key !== 'NAXIS'; }) .reduce(function (prev, cur) { return prev * cur.value; }, 1); return Math.ceil(elementTypeSize * length / Constants.blockLength) * Constants.blockLength; }; SimpleDataReader.prototype.readDataAsync = function (file, offsetBytes, header, changeEndian) { if (changeEndian === void 0) { changeEndian = true; } var dataType = KeywordsManager.getValue(header, 'BITPIX', BitPix.Unknown); var naxisKeywords = header.filter(function (k) { return k.key.indexOf('NAXIS', 0) === 0 && k.key !== 'NAXIS'; }); var length = naxisKeywords.map(function (k) { return k.value; }).reduce(function (a, b) { return a * b; }, 1); var bscale = KeywordsManager.getValue(header, 'BSCALE', 1); var bzero = KeywordsManager.getValue(header, 'BZERO', 0); if (naxisKeywords.length > 0 && length !== 0) { var promise = file.getDataAsync(offsetBytes, length, dataType, changeEndian); if (bscale !== 1 || bzero !== 0) { return promise.then(function (data) { var transformer = LinearTransformers.getTransformerFor(dataType); return transformer.transformBack(data, bscale, bzero); }); } else { return promise; } } else { throw new Error('no data found in segment'); } }; return SimpleDataReader; }()); export { SimpleDataReader }; //# sourceMappingURL=SimpleDataReader.js.map