Разбор путей
Синтаксический анализ - это способность разбирать информацию, то есть записывать строки на основе данных, содержащихся в заголовке FITS. Синтаксический анализ путей, введенный в Siril 1.2.0, направлен на придание большей гибкости сценариям за счет использования данных заголовка для записи/чтения имен файлов или путей. На данный момент это используется со следующими командами:
и, конечно же, их аналоги в графическим интерфейсе пользователя.
Пример синтаксиса
Для начала возьмем простой пример. Допустим, у вас есть файл с именем light_00001.fit
, и вы хотите найти темновой мастер-кадр из вашей библиотеки мастер-кадров, который соответствует характеристикам указанного снимка. Поскольку вы выбрали соглашение для именования своих темновых мастер-кадров, вы знаете, что правильный темновой кадр должен называться примерно так:
DARK_"exposure"s_G"gain"_O"offset"_T"temperature"C_bin"binning".fit
с терминами в кавычках, замененными на значения, считанные из заголовка вашего снимка. Для экспозиции 120с, температуры -10°C, усиления/смещения 120/30 и биннинга 1, темновой мастер-кадр будет называться:
DARK_120s_G120_O30_T-10C_bin1.fit
Что ж, это именно то, что позволяет делать эта функция. Если вы укажете имя темновому кадру с описанными ниже соглашениями, вы можете сказать Siril открыть снимок, прочитать его заголовок и использовать его значения для записи такой строки (а затем использовать ее для калибровки вашего снимка).
Вы можете прочитать информацию, содержащуюся в заголовке, либо с помощью команды dumpheader, либо щелкнув правой кнопкой мыши по открытому изображению и выбрав Заголовок FITS.... Скорее всего вы получите распечатку, подобную той, что приведена ниже (некоторые строки удалены для краткости):
SIMPLE = T / C# FITS
BITPIX = 16 /
NAXIS = 2 / Dimensionality
NAXIS1 = 4144 /
NAXIS2 = 2822 /
BZERO = 32768 /
EXTEND = T / Extensions are permitted
IMAGETYP= 'LIGHT' / Type of exposure
EXPOSURE= 120.0 / [s] Exposure duration
DATE-OBS= '2022-01-24T01:03:34.729' / Time of observation (UTC)
XBINNING= 1 / X axis binning factor
YBINNING= 1 / Y axis binning factor
GAIN = 120 / Sensor gain
OFFSET = 30 / Sensor gain offset
INSTRUME= 'ZWO ASI294MC Pro' / Imaging instrument name
SET-TEMP= -10.0 / [degC] CCD temperature setpoint
CCD-TEMP= -10.0 / [degC] CCD temperature
BAYERPAT= 'RGGB' / Sensor Bayer pattern
TELESCOP= '61EDPH' / Name of telescope
FILTER = 'DualBand' / Active filter name
OBJECT = 'Rosette Nebula '/ Name of the object of interest
OBJCTRA = '06 30 36' / [H M S] RA of imaged object
OBJCTDEC= '+04 58 51' / [D M S] Declination of imaged object
RA = 97.6960081674312 / [deg] RA of telescope
DEC = 4.99212765957446 / [deg] Declination of telescope
END
Тогда формат, используемый для указания имени темнового кадра, будет следующим:
DARK_$EXPTIME:%d$s_G$GAIN:%d$_O$OFFSET:%d$_T$SET-TEMP:%d$C_bin$XBINNING:%d$.fit
Все термины для разбора формируются следующим образом: $KEY:fmt$
KEY — любое (допустимое) имя строки из заголовка FITS файла
fmt — это спецификатор формата.
Например, $EXPTIME:%d$
будет преобразовано в 120
, если снимок был экспонирован в течение 120с. Но будет преобразовано в 120.0
, если вы укажете $EXPTIME:%0.1f$
, благодаря спецификатору формата %x.yf
.
Таким образом, полное выражение написанное выше будет иметь вид:
DARK_**120**s_G**120**_O**30**_T**-10**C_bin**1**.fit
В этом первом примере мы использовали преобразование только в целые числа с %d. Но есть и другие общепринятые средства форматирования, которые вы можете использовать:
%x.yf
для десятичных дробей%s
для строк
Примечание
Для строк начальные и конечные пробелы всегда удаляются, а пробелы внутри строк заменяются знаками _
. Пример: $OBJECT:%s$
будет преобразовано в Rosette_Nebula
.
Вы также можете использовать некоторые менее традиционные спецификаторы формата:
Чтобы преобразовать дату из ключа заголовка дата-время, можно использовать специальный нестандартный спецификатор формата dm12, который означает дату минус 12 часов. В заголовке выше строка DATE-OBS имеет значение
2022-01-24T01:03:34.729
.$DATE-OBS:dm12$
преобразуется в2022-01-23
, что является датой в начале ночи. Можно также использовать спецификатор формата dm0, который просто преобразует дату, не вычитая 12 часов.Чтобы преобразовать дату-время из строки заголовка даты-времени, можно использовать нестандартный спецификатор формата dt, который просто означает дату-время. В заголовке выше строка
DATE-OBS
имеет значение2022-01-24T01:03:34.729
.$DATE-OBS:dt$
будет преобразована в2022-01-24_01-03-34
.Для преобразования информации
RA
иDEC
из строк заголовкаOBJCTRA
иOBJCTDEC
можно использовать нестандартные спецификаторы формата ra и dec. В заголовке выше строкиOBJCTRA
иOBJCTDEC
имеют значения06 30 36
и+04 58 51
соответственно.$OBJCTRA:ra$_$OBJCTDEC:dec$
преобразуется в06h30m36s_+04d58m51s
.Чтобы проанализировать информацию
RA
иDEC
из строк заголовкаRA
иDEC
, когда они в десятичном формате, вы можете использовать нестандартные спецификаторы формата ran и decn. В заголовке выше строкиRA
иDEC
имеют значения97.6960081674312
и4.99212765957446
соответственно.$RA:ran$_$DEC:decn$
будет преобразовано в06h30m47s_+04d59m32s
.
Чтобы проверить синтаксис, вы можете загрузить изображение и использовать команду parser, как указано ниже.
Командная строка Siril
parse str [-r]
Поиск файла с помощью разбора пути
В примере выше мы увидели, что можем найти имя темнового мастер-кадра на основе информации, содержащейся в заголовке калибруемого изображения. Это то, что называется в команде parse
, режим чтения
.
Это поведение в основном используется в сочетании с командой calibrate и на вкладке Калибровка. В опции -dark=
команды или в поле Темновой мастер-кадр
графического интерфейса вы можете использовать синтаксис, описанный выше. Так вы будете уверены, что для калибровки изображения будет извлечен соответствующий темновой кадр . То же самое в равной степени применимо к полям Мастер-кардр шума считывания
и Мастер-кадр плоского поля
. Конечно, вы также можете указать полный (или относительный) путь к файлу. И путь также может содержать подобные выражения.
Например, для кадров плоского поля вы можете указать путь к библиотеке, которая может содержать информацию о фильтре или телескопе, поскольку у вас может быть несколько настроек. Такой путь:
~/astro/masters/flats/$INSTRUME:%s$_$TELESCOP:%s$/$FILTER:%s$/FLAT_bin$XBINNING:%d$.fit
Может быть преобразован так:
~/astro/masters/flats/ZWO_ASI294MC_Pro_61EDPH/DualBand/FLAT_bin1.fit
и является допустимым значением для поля Мастер-кадр плоского поля
.
Конечно, если бы вы каждый раз при калибровке писали это как команду в своих скриптах или в поле Мастер-кадр плоского поля
графического пользовательского интерфейса, это могло бы стать немного утомительным. Вот тогда на помощь приходят зарезервированные ключевые слова. Для мастер-кадров есть 3 зарезервированных ключевых слова:
$defdark
$defflat
$defbias
Их значения задаются в ` разделе . Они соответствуют значениям gui_prepro.dark_lib
, gui_prepro.flat_lib
и gui_prepro.bias_lib
.
Когда их значения установлены и вы решили использовать их в качестве значений по умолчанию, они будут отображаться в полях вкладки Калибровка. Вы также можете начать писать свои скрипты, используя эти ключевые слова. Шаг калибровки нового универсального скрипта для цветной камеры может выглядеть так:
calibrate light -dark=$defdark -cc=dark -flat=$defflat -cfa -equalizecfa -debayer
Это позволит вам выбирать мастер-файлы непосредственно из ваших библиотек и гарантировать, что вы не перепутаете их на этапе калибровки.
Запись файла с разбором пути
Теперь, когда удобно иметь возможность находить файлы, было бы столь же полезно использовать этот синтаксис для сохранения ваших файлов при укладке изображений. Именно это и есть режим записи
. Синтаксис можно использовать в поле -out=
команд stack и stackall или в соответствующем поле в графическом интерфейсе пользователя.
Допустим, вы хотите написать общий скрипт, который подготавливает вам темновые мастер-кадры каждый раз, когда вы обновляете свою библиотеку. В строке stack
скрипта вы можете написать:
stack dark rej 3 3 -nonorm -out=$defdark
Эта строка гарантирует, что полученный темновой мастер-кадр будет сохранен в правильном месте с правильным именем, который затем можно будет извлечь для калибровки вашего освещения.
Чтобы обеспечить еще большую гибкость при использовании команд stack
, есть еще два зарезервированных ключевых слова:
$defstack
$sequencename$
Что касается настроек по умолчанию, $def stack настраивается в том же разделе Настроек или с помощью команды set в gui_prepro.stack_default. Например, давайте предположим, что вы определили $def stack как:
Result_$OBJECT:%s$_$DATE-OBS:dm12$_$LIVETIME:%d$s
Строка скрипта:
stack r_pp_light rej 3 3 -norm=addscale -output_norm -out=$defstack
сохранит результат укладки в файл с именем:
Result_Rosette_Nebula_2022-01-24_12000s.fit
Начиная с Siril 1.2.0, имя по умолчанию для результата укладки определяется как $sequencename$stacked
(знак _
добавляется, если его не указали). Это похоже на поведение в предыдущих версиях, за исключением того, что теперь явно указано, что используется разбор пути.
Использование подстановочных знаков
Возможно, вы хотите использовать какое-то ключевое значение в имени вашего мастера, которое не соответствует ключевому значению в кадрах, которые нужно откалибровать. На примере это может быть немного понятнее. Допустим, вы хотите, чтобы в названиях ваших мастер-кадров плоского поля был указан срок их хранения. Что-то вроде:
FLAT_1.32s_Halpha_G120_O30_bin1.fit
Если вы поместите поле $EXPTIME:%0.2f$ в $defflat
, это приведет к ошибке на этапе калибровки. Просто потому, что ключ EXPTIME будет считываться из калибруемого изображения, а не из кадра плоского поля.
Чтобы справиться с этой ситуацией, можно использовать подстановочные знаки в выражениях для разбора:
FLAT_$*EXPTIME:%0.2f$_$FILTER:%s$_G$GAIN:%d$_O$OFFSET:%d$_bin$XBINNING:%d$
Обратите внимание на символ *, расположенный непосредственно перед EXPTIME
.
Этот символ означает следующее:
В
режиме записи
, то есть, по сути, при укладке вашего мастер-кадра плоского поля, значение строкиEXPOSURE
будет использоваться для формирования имени сохраняемого файла. В приведенном выше примере вы бы тогда фактически сохранили вFLAT_1.32s_Halpha_G120_O30_bin1.fit
.В
режиме чтения
, когда калибруются ваши изображения, значение строкиEXPOSURE
будет заменено на *. При поиске такого файла Siril извлечет все файлы, которые соответствуют шаблонуFLAT_*_Halpha_G120_O30_bin1.fit
. Надеюсь, ваше соглашение об именовании достаточно продумано, чтобы найти только один соответствующий файл и использовать его для калибровки.
Предупреждение
В случае, если Siril обнаружит более одного файла в режиме чтения
, он выдаст предупреждение в консоли и выберет самый последний файл. Поскольку это может не дать желаемого результата, вам следует пересмотреть соглашение об именовании файлов, если это произойдет.