IRAF
Oryginalni autorzy | Narodowe Obserwatorium Astronomii Optycznej |
---|---|
Deweloperzy | Wolontariusze społeczności IRAF |
Pierwsze wydanie | 1984 |
Wersja stabilna | |
Magazyn | |
System operacyjny | Linux, macOS, FreeBSD, Hurd |
Platforma | x86_64, ARMv8, x86, MIPS, PowerPC, ARMv7, RISC-V, DEC Alpha, x32 ABI, Apple M1 |
Typ | Analiza astronomiczna |
Licencja | oprogramowanie open-source |
Strona internetowa | https://iraf-community.github.io |
IRAF (Image Reduction and Analysis Facility) to zbiór oprogramowania napisanego w National Optical Astronomy Observatory (NOAO) ukierunkowanego na redukcję obrazów astronomicznych i widm w postaci macierzy pikseli. Są to przede wszystkim dane pobierane z matrycowych detektorów obrazowania, takich jak matryce CCD . Jest dostępny dla wszystkich głównych systemów operacyjnych dla komputerów typu mainframe i komputerów stacjonarnych. IRAF został zaprojektowany jako wieloplatformowy, obsługujący systemy operacyjne typu VMS i UNIX. Użyj w systemie Microsoft Windows było możliwe dzięki Cygwin we wcześniejszych wersjach i można to zrobić dzisiaj za pomocą podsystemu Windows dla systemu Linux . Obecnie jest używany głównie w systemach macOS i Linux .
Polecenia IRAF (znane jako zadania) są zorganizowane w struktury pakietów. Do IRAF mogą zostać dodane dodatkowe pakiety. Paczki mogą zawierać inne paczki. Istnieje wiele pakietów dostępnych przez NOAO i zewnętrznych programistów, często skupiających się na określonej gałęzi badań lub placówce.
Funkcjonalności dostępne w IRAF obejmują kalibrację strumieni i pozycji obiektów astronomicznych na obrazie, kompensację różnic czułości między pikselami detektora, łączenie wielu obrazów czy pomiar przesunięć ku czerwieni linii absorpcyjnych lub emisyjnych w widmie .
Chociaż IRAF jest nadal bardzo popularny wśród astronomów, rozwój instytucjonalny i konserwacja zostały wstrzymane. IRAF jest obecnie utrzymywany jako oprogramowanie społecznościowe.
Historia
Projekt IRAF rozpoczął się jesienią 1981 roku w Kitt Peak National Observatory. W 1982 roku ukończono wstępny projekt i pierwszą wersję języka poleceń (CL). Powstała Grupa IRAF. Projektantem systemu IRAF i głównym programistą był Doug Tody. W 1983 roku Space Telescope Science Institute wybrał IRAF jako środowisko dla swojego systemu analizy danych SDAS i przeportował system do VMS. Pierwsze wewnętrzne wydanie IRAF miało miejsce w 1984 r. Po ograniczonej dystrybucji kilku zewnętrznych witryn, pierwsze publiczne wydanie miało miejsce w 1987 r.
W połowie lat 90. rozpoczęto projekt „Otwarty IRAF”, mający na celu rozwiązanie problemów, które wówczas były widoczne. Obejmuje to powiązania językowe, sposób korzystania z komponentów IRAF bez pełnego środowiska IRAF, nowe typy danych i dynamicznie ładowany kod użytkownika. Ten projekt nigdy nie został ukończony.
Pod koniec lat 90. rozwój IRAF-u znacznie wyhamował, ponieważ system uznano za dojrzały. Wsparcie użytkowników zostało przeniesione na forum internetowe w 2005 roku, a nowy rozwój głównego systemu został oficjalnie obniżony do bardzo niskiego poziomu. Jednak dobrowolna praca programistów IRAF była kontynuowana i rozpowszechniali niektóre nieoficjalne wersje pośrednie.
W latach 2006-2009 podjęto pierwsze próby przeniesienia IRAF do wersji 64-bitowej w Instytucie Nauk Kosmicznych i Astronautycznych w Japonii. Chociaż wysiłek ten nie przekształcił się w nową oficjalną wersję IRAF, wniósł znaczną część do 64-bitowego portu NOAO.
NOAO wznowiło prace rozwojowe w 2007 roku, przenosząc system do wersji 64-bitowej i dodając do niego możliwości wirtualnego obserwatorium. Faza ta zakończyła się w 2013 roku wydaniem wersji 2.16.1.
W 2017 roku kod źródłowy został przeniesiony na GitHub . W celu spakowania oprogramowania IRAF dla Debiana zostało ono oczyszczone z pozostałego niewolnego kodu źródłowego i od tego czasu jest utrzymywane wyłącznie przez społeczność. Po kilku wydaniach wstępnych wersja 2.17 została wydana na początku 2022 roku.
Wersja | Data wydania | Uwagi |
---|---|---|
2.1 | 1984 | pierwsze wydanie wewnętrzne |
2.2 | 1985 | |
2.3 | luty 1986 | ograniczona publikacja publiczna |
2.4 | Lato 1986 | |
2.5 | lipiec 1987 | pierwsze publiczne wydanie |
2.6 | luty 1988 | |
2.7 | grudzień 1988 | |
2.8 | 30 czerwca 1989 | |
2.9 | 10 kwietnia 1990 | |
2.10 | 7 lipca 1992 | |
2.11 | 27 sierpnia 1997 | |
2.12 | 25 stycznia 2002 | |
2.13 | 2006 | nieoficjalne komunikaty wolontariuszy NOAO |
2.14 | 1 grudnia 2007 r | |
2.15 | 22 listopada 2010 r | |
2.16 | 22 marca 2012 r | ostatnie główne wydanie NOAO |
2.17 | 4 stycznia 2022 r | pierwsze wydanie społecznościowe |
Koncesjonowanie
Status licencyjny IRAF jest generalnie zgodny ze schematem licencji MIT . Starsze wersje zawierały trochę niewolnego oprogramowania. W szczególności NCAR ograniczał ponowną dystrybucję IRAF, zanim został usunięty w wersji 2.16. Również stare wersje wykorzystywały kod zaczerpnięty z Numerical Recipes na innej licencji. Ten kod został usunięty lub zastąpiony Open Source w wersjach późniejszych niż 2.16.1. Pozwoliło to na dystrybucję pakietów IRAF w głównych dystrybucjach Linuksa, takich jak Debian czy Ubuntu.
Projekt systemu
Cztery podstawowe komponenty składają się na system IRAF w czasie wykonywania:
- Pakiety aplikacji to uporządkowany zbiór przenośnych zadań służących do redukcji i analizy danych naukowych, ale także narzędzi systemowych.
- Język poleceń ( CL ) jest domyślnym interaktywnym interfejsem użytkownika i jest również używany jako język skryptowy dla zadań w pakietach aplikacji.
- Wirtualny system operacyjny ( VOS ) zapewnia przenośny interfejs do zadań aplikacji. Jest wzorowany na funkcjach systemu Unix, ale z interfejsem API dla specyficznego dla IRAF języka Subset Preprocessor ( SPP ).
- Interfejs systemu hosta ( HSI ) to jądro zapewniające interfejs między systemem hosta a funkcjami VOS. Zapewnia również narzędzia niezbędne do ładowania systemu ze źródła. Kompilator SPP jest również częścią HSI.
Tylko HSI jest zależny od systemu. Wszystkie inne komponenty są przenośne dzięki wykorzystaniu funkcji zapewnianych przez HSI. W ten sposób przeniesienie na nowy system wymaga jedynie zmian w tym komponencie. Jednak początkowy projekt był domyślnie oparty na uniwersalnym użyciu 32-bitowych typów danych, dlatego przejście na 64-bitowy wymagało znacznych wysiłków nie tylko w HSI, ale we wszystkich komponentach systemu.
Pakiety aplikacji
Pakiety aplikacji są rekurencyjnie podzielone na podpakiety i zadania. Można je podzielić na dwie klasy: ogólne narzędzia systemowe i podstawowe narzędzia do przetwarzania danych oraz pakiety specyficzne dla redukcji i analizy danych astronomicznych. Zadania są napisane głównie w SPP i CL.
Pakiety systemowe
Pakiety systemowe znajdują się w podstawowym pakiecie IRAF i zawierają narzędzia dla CL, przydatne narzędzia systemu operacyjnego oraz podstawowe narzędzia naukowe, np. do przetwarzania obrazu:
- dataio
- Konwersja formatu danych ( format FITS , format obrazu IRAF itp.)
- obrazy
- Ogólne przetwarzanie obrazów bitmapowych i wyświetlanie
- list
- Przetwarzanie list
- wykres
- Narzędzia do kreślenia grafiki wektorowej
- softools
- Narzędzia do rozwoju oprogramowania i utrzymania systemu
- system
- Narzędzia
- systemowe
- Narzędzia różne, w tym ntools do obsługi tabel.
Pakiety astronomii optycznej
Pakiety noao służą do analizy danych astronomii optycznej. Większość z tych zadań ma charakter ogólny, ale imred zawiera również zadania redukcji danych dla określonych instrumentów. Niektóre z ważnych pakietów to:
- imred Pakiet
- redukcji obrazu , zawierający zarówno ogólne zadania do redukcji danych astronomicznych, jak i dla konkretnych instrumentów KPNO
- artdata
- Pakiet do generowania sztucznych danych. Może generować sztuczne katalogi, widma 2D i 2D, tworzyć obrazy ze sztucznych gwiazd, galaktyk, szumu i promieni kosmicznych itp. do celów testowych.
- astrometry Pakiet
- astrometryczny do uzyskiwania współrzędnych astrometrycznych obiektów w polach gwiazdowych
- digiphot
- Pakiet cyfrowej fotometrii gwiazdowej
- onedspec
- Jednowymiarowy pakiet do redukcji i analizy danych spektralnych. Jednym z ważnych zadań w tym pakiecie jest splot , graficzne narzędzie do analizy widm.
- twodspec
- Pakiet do dwuwymiarowej redukcji widma i analizy, te same operacje dla widm dwuwymiarowych ( longslit , multispec)
- surfphot
- Pakiet analizy izofotalnej galaktyki
- astcat
- Katalog astronomiczny i pakiet dostępu do przeglądów
Pakiety zewnętrzne
Jedną z mocnych stron IRAF było istnienie różnych pakietów zewnętrznych, które rozwiązywały określone problemy lub wdrażały wyspecjalizowane potoki redukcji danych. Wśród pakietów są
- fitsutil Utilities dla
- plików FITS z pojedynczym i wielokrotnym rozszerzeniem
- sptable
- IRAF pakiet dla tabelarycznego widma
- Narzędzia
- dla Cerro Tololo Inter-American Observatory
- stsdas
- System oprogramowania Space Telescope Science Institute do kalibracji i analizy danych z Teleskopu Kosmicznego Hubble'a (oryginalny pakiet tabel z STSci jest dołączony jako narzędzia.nttables w pakietach systemowych).
- stecf
- Zadania IRAF opracowane na Space Telescope European Coordinating Facility
- rvsao
- Radial Velocity Package autorstwa Smithsonian Astrophysical Observatory
- wcstools
- Image World Coordinate System Utilities autorstwa Jessiki Mink
- axe
- Oprogramowanie do ekstrakcji widmowej i wizualizacji
- gemini
- Rurociąg redukcji danych dla Obserwatorium Gemini
Jednak wiele z tych pakietów nie jest już utrzymywanych. Portowanie do wersji 64-bitowej również wymagało znacznego wysiłku, a nie wszystkie pakiety zewnętrzne zostały przeniesione i dlatego można ich używać tylko w środowisku 32-bitowym.
Zadania zdefiniowane przez użytkownika
IRAF pozwala użytkownikom pisać własne zadania na dwa główne sposoby. Jednym z nich jest pisanie nieskompilowanych skryptów proceduralnych (język poleceń, CL). Drugi to skompilowane programy preprocesora podzbioru (SPP). Dokumenty samouczka istnieją dla obu metod.
specyficzne języki IRAF
Język poleceń
Język poleceń (CL) służy jako interfejs obsługujący polecenia i środowisko wykonawcze między użytkownikiem na jego terminalu komputerowym a programami użytkowymi, które wykonuje. Użytkownik wpisuje swoje polecenia do CL, a CL wykonuje wszelkie operacje na zadaniach i plikach, które są niezbędne do wykonania poleceń. W późniejszych wersjach oryginalny CL został rozszerzony na ECL, którego główną zaletą jest edytowalny wiersz poleceń. Opracowano również wersję umożliwiającą bezpośredni dostęp do Wirtualnego Obserwatorium (VOCL).
CL służy przede wszystkim jako powłoka i organizuje pracę z systemem i aplikacjami. Istnieją trzy typy zadań, które może wykonywać CL: zadania natywne, które są częścią skompilowanych plików wykonywalnych IRAF, skrypty (zadania CL, które są zadaniami napisanymi w CL) oraz zadania obce, zewnętrzne programy lub skrypty, które są wykonywane przez CL. Dla każdego zadania może istnieć plik parametrów. Zawiera opis każdego z parametrów używanych przez zadanie, które powinny być znane i zarządzane przez CL.
Oto prosty skrypt Hello World w CL:
{ print ( ' Witaj , świecie ! ' ) }
Skrypty CL mają zwykle sufiks .cl
, co może powodować konflikty z plikami kodu Common Lisp .
Podzbiór języka preprocesora
Język preprocesora podzbioru (SPP) implementuje podzbiór języka preprocesora IRAF , który był planowany we wczesnych dniach IRAF. Język SPP jest oparty na Ratfor . Forma leksykalna, operatory i konstrukcje przepływu sterowania są identyczne z tymi dostarczonymi przez Ratfor. Główne różnice to typy danych, forma procedury, dodanie wbudowanych ciągów znaków i stałych znakowych, użycie nawiasów kwadratowych dla tablic oraz instrukcja zadania . Dostępne urządzenia we/wy są zupełnie inne.
Program xc , dostarczany z IRAF, tłumaczy programy SPP na Fortran 66 , a stamtąd z f2c na kod C.
Preprocesor jest uzupełniony o mkpkg , narzędzie do automatyzacji budowania typu make -like, generic , narzędzie do tłumaczenia typów ogólnych na kod źródłowy zależny od typu oraz xyacc , zmodyfikowany yacc do generowania danych wyjściowych SPP.
Oto prosty program Hello World w SPP:
task hello # CL wywoływalna procedura zadania hello () # wspólna procedura begin call printf ( "witaj, świecie \n " ) koniec
Programy SPP mają zwykle sufiks .x
, te, które wymagają wstępnego przetworzenia za pomocą ogólnego narzędzia, mają .gx
.
Oprogramowanie dodatkowe
Pełne środowisko pracy IRAF zwykle wymaga dwóch innych aplikacji: rozszerzonego okna xterm z oknami graficznymi (nazywanego xgterm i dystrybuowanego w osobnym pakiecie x11iraf) oraz programu do wyświetlania obrazów zwanego „serwerem obrazów”. Dwa najpopularniejsze serwery obrazów to SAOImageDS9 (firmy SAO ) i ximtool (NOAO, również dystrybuowany w pakiecie x11iraf).
Jako alternatywę dla xgterm i języka poleceń można użyć pakietu Pythona PyRAF. PyRAF jest w stanie tłumaczyć skrypty CL na skrypty Pythona. Zapewnia również okno graficzne (oparte na Tk lub na Matplotlib ). Jako powłokę poleceń można użyć powłoki poleceń Pythona lub IPython lub specjalnego trybu przypominającego wyglądem i działaniem powłokę poleceń CL.