araucaria-project / pyaraucaria

OCA Observatory and Araucaria Project Common Routines Library
0 stars 2 forks source link

FITS Headers BETA3 - > 0.4 #28

Open ocacontrolroom opened 12 months ago

ocacontrolroom commented 12 months ago

Chyba czas kontynuowac dyskusje o FITS Headers, kontynuując tematy z #9

Oto moje (nowe) uwagi:

1. OCASTD: "BETA3" na "0.4.0" (string).

Myślę że przy okazji version bump przejść na "x.y.x". Kiesyś będziemy musieli powównywać wesje etc i wtedy używanie standardy się opłaci.

DONE

2. Dokumenacja refwerencyjna:

Jako referencję proponuję przyjąć: https://fits.gsfc.nasa.gov/standard40/fits_standard40aa-le.pdf Tutaj jest wąski podzbiór używanych przez nas nagłówków ale to chyba właśnie dobrze.

3. EQUINOX - float

W tej chwili zapisujemy jako string:

EQUINOX = '2000    '           / Requested RA DEC epoch                         

(sekcja 8.3)

4. OBJECT - przy obrazach kalibracyjnych.

Mamy:

IMAGETYP= 'flat    '           / Image type                                     
OBSTYPE = 'calib   '           / Observation type                               
OBJECT  = 'skyflat '           / Object name                                    

OBJECT jest obowiązkowy ale nie wstawiabym tam pseudowartości - mamy to że flaty gdzie indziej. Dokumentacja:

OBJECT keyword. The value field shall contain a character string giving a name for the object observed.

Proponuję dla FLAT albo nawet generalnie wstawiać nazwę TARGET z TOI, co by tam nie było - jak pusta to pusta.

Co do pozostałych trzeba by podyskutować:

Co robimy OBSTYPE IMAGETYP
naukowy obraz science science
dome flat calib domeflat
sky flat calib skyflat
bias calib zero
dark calib dark
testy test co tam testujemy
standart field science standard?
master sky flat calib masterskyflat
master dome flat calib masterdomeflat
master dark calib masterdark
ładne obrazki art
trening training

Przypominam dyskuję (#9 ) o zero i IRAF. Tutaj też wniosek że IMAGETYP ma zawierać indykator "zero" czy "bias" a nie OBSTYPE.

5. JD -> MJD-OBS

Bo tak jest w standardzie, samo MJD lub JD nie wiadomo do czego się odnosi (a w zasadzie odnosi się do DATE czyli momentu stworzenia pliku a nie obserwacji), w duchu standardu jest suffix -OBS lub inny tak dla MJD jak i DATE.

2024-10-17: Zostawiamy jak jest, niech sobie ludzie przeliczają. Ponadto dojdzie kiedyś do DATE-OBS DATE-END (lub podobie).

6. Uzupełnić units

W komentarzu po /, np. CCD-TEMP, FOCUS, RA_TEL

7. DATE, TIMESYS

9.8:

The presence of the informational DATE keyword is strongly recommended in all HDUs. The global keyword TIMESYS is strongly recommended

Można by dodawać w pyaraucaria DATE jako data wygenerowania pliku. Może się przydać w workflowach, jak będziemy pisać zawsze - mniej ifologii.

TIMESYS ma domyślnie UTC. Ale jak bardzo chcą to TIMESYS= 'UTC ' nam nie zaszkodzi.

To co tam jest recomended a nie "strongly recomended" bym nie dodawał na siłę.

8. EXP-TIME vs XPOSURE i TELAPSE

Wygląda na to (9.7) że EXP-TIME nie jest standardowy. Można by rozważyć XPOSURE i/lub TELAPSE. Możemy pisać oba, bo TELAPSE jest chyba używany do obliczania czasu średniego ekspozycji DATE-AVG na przykład, który potem jest istotny przy timingu zmiennych obiektów. (no a XPOSURE to czasu integracji).

See also: https://github.com/araucaria-project/oca-problems/issues/123

9. GAIN

Zgodnie z #9 wartości GAIN_MOD miały być typu x2. Co my na to? myślnik w nazwie czy podkreślenie. jakiev wartości, może zacząć zapisywać wartość GAIN i RON jak je znamy?

Teraz jest:

GAIN-MOD=                    2 / Gain mode                                      
GAIN    =                 0.97 / [e-/ADU] Gain

Chcemy mieć też informację x4 albo jak komentarz, albo (i pewnie tak będzie) nowe pole typu GAIN-NAM='x4'

10. SATURATE

Float lub integer.

SATURATE w obrazach skalibrowanych powinno być w skali obrazu skalibrowanego. (albo skalibrowane przesuwamy do RAW albo przeliczamy SATURATE)

11. O "trailing spaces"

4.2.1.1:

Leading spaces are significant; trailing spaces are not. [...] Earlier versions of this Standard also required that fixed-format characters strings must be padded with space characters to at least a length of eight characters so that the closing quote character does not occur before Byte 20.

12. OBSERVAT = "OCM"

12.5 CAM-SN

Serial number kamery - sprawdzić -> manual -> configuracja projekt ocabox-config-ocm: /tree/<tel>/observarory/components/camera/camera_sn -> nagłówki FTIS CAM-SN.

13. Komentarze /

Nie wiem czemu po postych polach '= ' komentarze idą od razu, a chyba powinny być "klasycznie" od którejś kolumny. Ale to chyba astropy?

BTW, a'propous pustych pól 4.1.2.1:

KEYWORD1= '' / null string keyword
KEYWORD2= ' ' / empty string keyword
KEYWORD3= / undefined keyword

ale nie ma czegoś takiego jak "null float keyword"...

To pewnie nie wszystko, można jeszcze raz zrobić przegląd przykłady @pkarczmarek .

Na dobranoc aktualny header:

SIMPLE  =                    T / conforms to FITS standard                      
BITPIX  =                   16 / array data type                                
NAXIS   =                    2 / number of array dimensions                     
NAXIS1  =                 2048                                                  
NAXIS2  =                 2048                                                  
OCASTD  = 'BETA3   '           / OCA FITS HDU standard version                  
OBSERVAT= 'OCA     '           / Observatory name                               
OBS-LAT =           -24.598056 / [deg] Observatory longitude                    
OBS-LONG=           -70.196389 / [deg] Observatory latitude                     
OBS-ELEV=                 2817 / [m] Observatory elevation                      
ORIGIN  = 'CAMK PAN'           / Institution created this FITS file             
TELESCOP= 'zb08    '           / Telescope name                                 
DATE-OBS= '2023-11-29T05:56:42.193637' / DateTime of observation start          
JD      =    2460277.747710574 / Julian date of observation start               
RA      =            84.977125 / Requested field RA                             
DEC     =           -68.428667 / Requested field DEC                            
EQUINOX = '2000    '           / Requested RA DEC epoch                         
RA_OBJ  = '' / Program object RA                                                
DEC_OBJ = '' / Program object DEC                                               
RA_TEL  =    84.96363506108054 / Telescope mount RA                             
DEC_TEL =   -68.41316290298165 / Telescope mount DEC                            
ALT_TEL =    46.17481113058421 / [deg] Telescope mount ALT                      
AZ_TEL  =    181.1951297490728 / [deg] Telescope mount AZ                       
AIRMASS = '' / Airmass                                                          
OBSMODE = '' / Observation mode                                                 
FOCUS   =                15257 / Focuser position                               
ROTATOR =    86.15309143066406 / [deg] Rotator position                         
OBSERVER= '' / Observers who acquired the data                                  
IMAGETYP= 'science '           / Image type                                     
OBSTYPE = 'science '           / Observation type                               
OBJECT  = 'OGLE-LMC-ECL-21905' / Object name                                    
OBS-PROG= '' / Name of the science project                                      
NLOOPS  =                    1 / Number of all exposures in this sequence       
LOOP    =                    1 / Number of exposure within this sequence        
FILTER  = 'V       '           / Filter                                         
EXPTIME =                 75.0 / [s] Executed exposure time                     
INSTRUME= 'DW936_BV'           / Instrument name                                
CCD-TEMP=   -60.42599868774414 / Ccd actual temperature                         
SET-TEMP= '' / Ccd set temperature                                              
XBINNING=                    1 / Ccd binx                                       
YBINNING=                    1 / Ccd biny                                       
READ-MOD=                    2 / Readout mode                                   
GAIN-MOD=                    2 / Gain mode                                      
GAIN    = '' / [e-/ADU] Gain                                                    
RON     = '' / [e-/read] Readout noise                                          
SUBRASTR= '' / Subraster size                                                   
SCALE   = '' / [arcsec/pixel] Image scale                                       
SATURATE= '' / Data value at which saturation occurs                            
BZERO   =                32768                                                  
COMMENT                                                                         
END                                                                                                                                                              
ocacontrolroom commented 12 months ago

PS. Jeszcze bym wrzucił wysokość słońca - przyda się do statystki jasności filtrów przy flatach

oraz jak już słońce to może i księżyc. A tu najlepsza byłaby separacja i faza....

MMiirrkk commented 12 months ago

A moze także np. średnia czy inne statystyki...

pkarczmarek commented 11 months ago

Jedna tylko uwaga z mojej strony:

pkt. 10. SATURATE

Jest różnica pomiędzy wejściem w reżim nieliniowy kamery a prześwietleniem. Zgadzam się, by SATURATE wpisać na poziomie 60000 ADU, ale też proponuję, by wpisać, że LINEARITY = 40000 lub 50000 ADU (konserwatywnie), przynajmniej dla większości modów gainu. Chyba tylko dla "1x" liniowość już się psuje przy ok. 25000 ADU (testy FLAT rampup, obrazek 23 tutaj)

ocacontrolroom commented 11 months ago

14. Binning:

jest:

XBINNING=                    1 / Ccd binx                                       
YBINNING=                    1 / Ccd biny                                       

winno być

CCD_BINX= 1
CCD_BINY= 1

(nie pamiętam skąd ta uwaga, @pkarczmarek zobacz)

ocacontrolroom commented 11 months ago

@pkarczmarek :

Jedna tylko uwaga z mojej strony: liczyłem na więcej

pkt. 10. SATURATE

Jest różnica pomiędzy wejściem w reżim nieliniowy kamery a prześwietleniem. Zgadzam się, by SATURATE wpisać na poziomie 60000 ADU, ale też proponuję, by wpisać, że LINEARITY = 40000 lub 50000 ADU (konserwatywnie), przynajmniej dla większości modów gainu. Chyba tylko dla "1x" liniowość już się psuje przy ok. 25000 ADU (testy FLAT rampup, obrazek 23 tutaj)

tak, słusznie żeby nie mieszać saturacji z liniowością. Generlanie dla zb08 pixele saturacji - są na wykresie radialnym , nie osiągają granicy zapisu 16bit (65535). są na poziomie 64479 albo trochę mniej. Screenshot from 2023-12-01 20-57-17

majkelx commented 8 months ago

Jeszcze o SATURATE, IMHO to powinno być rozumiane tak jak jest potrzebne oprogramowaniu do maskowania złych wartości (DAOPHOT, IRAF). Czyli dla x1 ~25000 ADU (okolice limitu studni), dla innych trybów ~65000 okolice limitu reprezentacji. na tą wartość pipeliny powinny ustawiać treshold górny. Pipeliny powinny również (@MMiirrkk) przekształącać tą wartość wraz z przeksztaleceniami wartości tablicy (przejście na float, odjęcie bias, normalizacja), aby maksa "złych" punktów pozostawała taka sama moreless.

majkelx commented 7 months ago

Mirror-covers, dome-shutter, dome-az, To wszystko dodatkowo przyda się do szybkich quality check.

majkelx commented 7 months ago

Prpozycja sekcji Quality by exmaple:

QC-SUN=0                      / Quality Code [0,1,2] - Sun Altitude
QM-SUN='OK: Sun Alt < -18'    / Quality Message [optional]
QC-FWHM=1
QM-FWHM='LOW: FWHM > 6px'
QC-INSTR=2
QM-INSTR=`BAD: Dome AZ diverged from telescope AZ`
QC-SATUR=0
QC-OPER=2
QM-OPER='BAD: OPERATOR: Kopula się zaciela'
...
QC=2                         / Final Quality Code max(QC-x): 0-OK, 1-LOW, 2-BAD
QM='BAD: Some of quality flags are BAD, Recommendation: Reject frame'

trzeba wziąć pod uwagę że różne QC będą mogly być dodawane:

majkelx commented 7 months ago
astromg commented 7 months ago

to trochę inaczej niż wcześniej gadaliśmy chyba, ale w sumie mi ta opcja pasuje.

MMiirrkk commented 3 months ago

ROWORDER ROWORDER= 'TOP-DOWN' / Row Order Może zastanowilibyśmy się i dodali take pole, wtedy program przeczytał by jaki jest row order i wyświetlił fitsa w prawidłowy sposób. No i nie trzeba by zmieniać milionów fitsów? To oczywiście propozycja.

PIERSIDE Już dodane do nagłówka

SITELAT i SITELONG

Odległóść do księżyca, wysokość księżyca, faza księżyca

Wysokość słońca

SCALE Skala zdjęcia

Apertura i focal lenght

Czy guided

Czy dome otwarte i czy lustro otwarte

majkelx commented 1 month ago

The Mirka lista: IMG20241017141849

digitlaizacja by ChatGPT and Mikołaj:


    1.  DOME_SHU  (Dome Shutter)
    2.  TELCOVER  (Telescope Cover)
    3.  MOONDIST  (Moon Distance)
    4.  MOONAZ    (Moon Azimuth)
    5.  MOONALT   (Moon Altitude)
    6.  PIXSCALE  (Camera Pixel Size - skala w arcsec/pixel)
    7.  SUNAZ     (Sun Azimuth)
    8.  SUNALT    (Sun Altitude)
    9.  MOONPHAS  (Moon Phase)
    10. SCALE1M  (Scale for 1M in arcmin)
    11. APERTURE (Telescope Aperture)
    12. MNT_TYPE (Mount Type, EQ/AZ)
    13. FOCALLEN (Focal Length)
    14. GUIDEMOD (Guide Mode - Pulse Follow Guide)
    15. ROWORDER  (Row Order - left-rigt / top-down)
    16. WINDDIR  (Wind Direction)
    17. WINDSPD  (Wind Speed/Value)
    18. TEMPERAT (Temperature)
    19. HUMIDITY (Humidity)
    20. PRESSURE (Pressure)
    21. DOMEAZ   (Dome Azimuth)
    22. DEWPOINT (Dew Point)
    23. BSCALE   (B Scale)
    24. READMOD  (Read Mode - HZ, NAME)
    25. GAIN     (Gain)
    26. QUALITY  (Quality)
majkelx commented 1 month ago

podrkeślniki _ versus -

pkarczmarek commented 1 month ago

podrkeślniki _ versus -

Lepiej _, bo - może być mylnie uznany za znak odejmowania (za "Definition of the Flexible Image Transport System (FITS)"). Ale ta sama publikacja wypisuje keywordy, które mają myślniki w nazwach (np. DATE-OBS).

Moja propozycja: aby trzymać się myślników tam gdzie mamy wybór (znaczy, tam gdzie nie jest to ustandaryzowane).

pkarczmarek commented 1 month ago

14. Binning:

jest:

XBINNING=                    1 / Ccd binx                                       
YBINNING=                    1 / Ccd biny                                       

winno być

CCD_BINX= 1
CCD_BINY= 1

(nie pamiętam skąd ta uwaga, @pkarczmarek zobacz)

ESO używa keywordu HIERARCH ESO DET WIN1 BINX (analogicznie dla Y). Nie wiem, skąd się wzięło CCD_BINX, ale wolałabym o nim zapomnieć, bo może być tak, że w przyszłości nie wszędzie będziemy mieć matryce CCD i lepiej mieć keyword, który nie ma CCD w nazwie.

Po konsultacji z Chatem GPT wychodzi, że najczęściej używane keywordy na binning (choć niestety żaden nie jest standardowy) to:

Moja propozycja: aby zostać przy XBINNING i YBINNING, bo są ok i już są używane.

Pytanie: czy XBINNING dotyczy NAXIS1 a YBINNING dotyczy NAXIS2 ?

pkarczmarek commented 1 month ago

ESO documentation about FITS headers: https://archive.eso.org/cms/tools-documentation/dicb/ESO-044156_7_DataInterfaceControlDocument.pdf

The official reference document that defines the requirements for FITS format data files: https://fits.gsfc.nasa.gov/fits_standard.html

Dictionary of most commonly used keywords (also non-standard): https://heasarc.gsfc.nasa.gov/docs/fcg/common_dict.html

majkelx commented 1 month ago

14. Binning:

Moja propozycja: aby zostać przy XBINNING i YBINNING, bo są ok i już są używane.

brzmi rozsądnie.

Pytanie: czy XBINNING dotyczy NAXIS1 a YBINNING dotyczy NAXIS2 ?

Ha, trudne pytanie przy naszym krzywym zapisie matrycy. Będą korespondować z ALPACA BINX BINY na pewno.