UNPKG

slimfits

Version:

Package for loading data stored in FITS data format

58 lines 3.01 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var interfaces_1 = require("../interfaces"); var KeywordsManager_1 = require("../utils/KeywordsManager"); var LinearTransformers_1 = require("../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_1.KeywordsManager.hasValue(header, 'SIMPLE', true) || KeywordsManager_1.KeywordsManager.hasValue(header, 'XTENSION', 'IMAGE')) && !KeywordsManager_1.KeywordsManager.hasValue(header, 'GROUPS', true); }; SimpleDataReader.prototype.readDataSize = function (header) { var elementType = KeywordsManager_1.KeywordsManager.getValue(header, 'BITPIX', interfaces_1.BitPix.Unknown); var elementTypeSize = interfaces_1.BitPixUtils.getByteSize(elementType); if (KeywordsManager_1.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 / interfaces_1.Constants.blockLength) * interfaces_1.Constants.blockLength; }; SimpleDataReader.prototype.readDataAsync = function (file, offsetBytes, header, changeEndian) { if (changeEndian === void 0) { changeEndian = true; } var dataType = KeywordsManager_1.KeywordsManager.getValue(header, 'BITPIX', interfaces_1.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_1.KeywordsManager.getValue(header, 'BSCALE', 1); var bzero = KeywordsManager_1.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_1.LinearTransformers.getTransformerFor(dataType); return transformer.transformBack(data, bscale, bzero); }); } else { return promise; } } else { throw new Error('no data found in segment'); } }; return SimpleDataReader; }()); exports.SimpleDataReader = SimpleDataReader; //# sourceMappingURL=SimpleDataReader.js.map