From f8c9fec77e2102b92da33746e4a728a76397340f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Du=C5=A1an=20Poizl?= Date: Sun, 16 Jun 2024 16:31:53 +0200 Subject: [PATCH] Add scripts --- scripts/convert to XISF | 4 ++- scripts/example script | 13 ++++++-- scripts/median | 8 +++++ scripts/modify FITS header | 50 ++++++++++++++++++++++++++++++ scripts/scripts.qrc | 2 ++ space.nouspiro.tenmon.metainfo.xml | 2 +- 6 files changed, 74 insertions(+), 5 deletions(-) create mode 100644 scripts/median create mode 100644 scripts/modify FITS header diff --git a/scripts/convert to XISF b/scripts/convert to XISF index 5c02c34..9a11d29 100644 --- a/scripts/convert to XISF +++ b/scripts/convert to XISF @@ -1,6 +1,8 @@ +core.log("This script convert any FITS file into XISF with ZSTD compression"); + if(files.length == 0) { - core.files("No files"); + core.log("No input files"); throw ""; } diff --git a/scripts/example script b/scripts/example script index 93d886f..0ffdec4 100644 --- a/scripts/example script +++ b/scripts/example script @@ -11,10 +11,9 @@ for(file of files) if(file.suffix() == "fits" || file.suffix() == "fit" || file.suffix() == "xisf") { let keywords = file.fitsKeywords(); - let item = core.getItem(keywords); + let item = core.getItem(keywords, "Select keyword"); core.log("You selected keyword " + item); core.log(file.fitsKeywords()); - - // some sample files + core.log("fileName() " + file.fileName()); core.log("absoluteFilePath() " + file.absoluteFilePath()); core.log("absolutePath() " + file.absolutePath()); @@ -24,6 +23,14 @@ for(file of files) core.log("completeBase() " + file.completeBaseName()); core.log("suffix() " + file.suffix()); core.log("size() " + file.size()); + let stats = file.stats(); + core.log("Image statistics"); + core.log("\tMinimum: " + stats.min); + core.log("\tMaximum: " + stats.max); + core.log("\tMedian:" + stats.median); + core.log("\tStandard deviation:" + stats.stddev); + core.log("\tMedian Absolute Deviation:" + stats.mad); + break; } } diff --git a/scripts/median b/scripts/median new file mode 100644 index 0000000..1bad80f --- /dev/null +++ b/scripts/median @@ -0,0 +1,8 @@ +for(file of files) +{ + if(file.suffix() == "fits" || file.suffix() == "fit" || file.suffix() == "xisf") + { + let stats = file.stats(); + core.log("File: \"" + file.fileName() + "\" - median: " + stats.median); + } +} diff --git a/scripts/modify FITS header b/scripts/modify FITS header new file mode 100644 index 0000000..6edc4ee --- /dev/null +++ b/scripts/modify FITS header @@ -0,0 +1,50 @@ +function checkFITS(key) +{ + const noEditableKey = ["SIMPLE", "BITPIX", "NAXIS", "NAXIS1", "NAXIS2", "NAXIS3", "EXTEND", "BZERO", "BSCALE"]; + return noEditableKey.indexOf(key) < 0; +} + +if(files.length == 0) +{ + core.log("No input files"); + throw ""; +} + +let action = core.getItem(["UPDATE", "ADD", "REMOVE"], "Do you want update, add or remove record?"); + +let modify = new FITSRecordModify(); + +if(action == "UPDATE") +{ + let keywords = files[0].fitsKeywords().filter(checkFITS); + let keyword = core.getItem(keywords, "Select keyword to update"); + let value = files[0].fitsValue(keyword); + if(isNaN(value)) + value = core.getString("Enter new value", value); + else + value = core.getFloat("Enter new value", value); + modify.updateKeyword(keyword, value); +} +else if(action == "ADD") +{ + let keyword = core.getString("Enter keyword to add"); + let value = core.getString("Enter new value"); + keyword = keyword.toUpperCase(); + modify.addKeyword(keyword, value); +} +else if(action == "REMOVE") +{ + let keywords = files[0].fitsKeywords().filter(checkFITS); + let keyword = core.getItem(keywords, "Select keyword to remove"); + modify.removeKeyword(keyword); +} + +for(file of files) +{ + if(file.suffix() == "fits" || file.suffix() == "fit" || file.suffix() == "xisf") + { + core.log("Modifing " + file.fileName()); + file.modifyFITSRecords(modify); + } +} + diff --git a/scripts/scripts.qrc b/scripts/scripts.qrc index ba5272c..fabfd07 100644 --- a/scripts/scripts.qrc +++ b/scripts/scripts.qrc @@ -2,5 +2,7 @@ example script convert to XISF + median + modify FITS header diff --git a/space.nouspiro.tenmon.metainfo.xml b/space.nouspiro.tenmon.metainfo.xml index c3e0461..4dcf43e 100644 --- a/space.nouspiro.tenmon.metainfo.xml +++ b/space.nouspiro.tenmon.metainfo.xml @@ -57,7 +57,7 @@ - +
  • Batch processing with JavaScript