Sterrekunde

Omskakeling van 'n RGB-beeld na pas (astropie)

Omskakeling van 'n RGB-beeld na pas (astropie)


We are searching data for your request:

Forums and discussions:
Manuals and reference books:
Data from registers:
Wait the end of the search in all databases.
Upon completion, a link will appear to access the found materials.

Ek probeer om 'n NumPy RGB-skikking ('n 3D-skikking met dimensie 512x512x3) in 'n .fits-lêer te stoor met behulp vanastropie.io. Stoor hierdie skikking in 'n .png ">


Ek het nog nie veel astronomiese beeldverwerking gedoen nie, maar aangesien hierdie vraag onbeantwoord is, sal ek dit 'n kans gee - hopelik tot 'n mate. As die probleem meer spesifiek is, sal 'n kodemonster / beeldmonster waarskynlik nuttig wees vir verdere diagnose, maar andersins kan hierdie voorbeeld help. Dit bespreek die proses om 'n 3-kanaal beeld te skryf om FITS-beelde te skei. Ek sal dit eers probeer en kyk of hierdie uitvoer ook vullis is - dit kan net 'n probleem wees met hoe u die HDUList.writeto () -funksie gebruik. Die betrokke kode word hieronder geplak (met 'n paar wysigings, aangesien die voorbeeld eers die Pillow Image-klas gebruik):

Verdeel die drie kanale (RGB):

r, g, b = afbeelding [:,:, 0], afbeelding [:,:, 1], afbeelding [:,:, 2]

Skryf die kanale uit as afsonderlike FITS-beelde

rooi = pas.PrimêreHDU (data = r) rooi.writeto ('red.fits') groen = pas.PrimêreHDU (data = g) groen.writeto ('green.fits') blou = pas.PrimêreHDU (data = b) blue.writeto ('blue.fits')

Ook uit nuuskierigheid - waarom stoor u 'gevoelloos RGB-skema' waardes tussen 0 en 512? Die standaard vir beelde is gewoonlik heelgetalle tussen 0-255 of dryf tussen 0 en 1; maar ek dink dat astronomie 'n groter diepte benodig? In elk geval moet u ook seker maak dat die dtype van u verdoofde skikking groot genoeg is vir die gewenste bitdiepte - dikwels word beelde gestoor met dtype = "uint8" wat wissel van 0 tot 255.


Hierdie afdeling bied 'n vinnige inleiding tot die gebruik van astropy.io.fits . Die doel is om die pakket en sy basiese funksies te demonstreer sonder om in te veel besonderhede te kom. As u 'n eerste keer gebruiker is of nog nooit Astropy of PyFITS gebruik nie, moet u hier begin. Sien ook die Vrae vir antwoorde op algemene vrae / kwessies.

As u 'n enkele tabel in FITS-formaat wil lees of skryf, is die eenvoudigste metode dikwels via die hoë vlak Eenvoudige lêer- / skryfkoppelvlak vir lêers. Sien veral die Verenigde I / O-PAS afdeling.

Bestaande FITS-lêers lees en bywerk¶

Maak 'n FITS-lêer oop¶

Sodra die astropy.io.fits pakket gelaai is volgens die standaardkonvensie [1], kan ons 'n bestaande FITS-lêer oopmaak:

Die maak oop () funksie het verskeie opsionele argumente wat in 'n latere hoofstuk bespreek sal word. Die standaardmodus, soos in die bostaande voorbeeld, is & # 8220lees alleen & # 8221. Die oopfunksie gee 'n voorwerp terug wat 'n 'genoem word HDULis wat 'n lys -like versameling HDU-voorwerpe. 'N HDU (Header Data Unit) is die komponent van die FITS-lêerstruktuur op die hoogste vlak, bestaande uit 'n koptekst en (tipies) 'n data-skikking of -tabel.

Na die oproep hierbo, hdulis [0] is die primêre HDU, hdulis [1] is die eerste uitbreiding HDU, ens (as daar enige uitbreidings is), ensovoorts. Daar moet op gelet word dat Astropy 'n nul-gebaseerde indeksering gebruik wanneer hy na HDU's en koptekaarte verwys, hoewel die FITS-standaard (wat ontwerp is met die oog op FORTRAN) een-gebaseerde indeksering gebruik.

Die HDULis het 'n nuttige metode HDUList.info () , wat die inhoud van die geopende FITS-lêer saamvat:

Nadat u klaar is met die oop lêer, maak dit toe met die HDUList.close () metode:

Die opskrifte sal steeds toeganklik wees nadat die HDUList gesluit is. Die data is wel of nie toeganklik nie, afhangende van of die data aangeraak word en as dit geheue-gekarteer is, sien die latere hoofstukke vir meer inligting.

Werk met groot lêers¶

Die maak oop () funksie ondersteun a memmap = Waar argument waarmee die skikking van elke HDU met mmap toeganklik is, eerder as om dit tegelyk in die geheue te lees. Dit is veral handig om met baie groot skikkings te werk wat nie heeltemal in die fisiese geheue kan pas nie.

Dit het ook 'n minimale impak op kleiner lêers, alhoewel sommige bewerkings, soos om die skyfdata agtereenvolgens te lees, bykomende bokoste kan veroorsaak. Op 32-bis-stelsels kan skikkings groter as 2-3 GB nie mmap & # 8217d wees nie (wat goed is, want op daardie stadium sal u fisiese geheue in elk geval opraak), maar 64-bit-stelsels is baie minder beperk hierin respek.

Wanneer u 'n lêer met memmap = Waar , vanweë hoe mmap werk, beteken dit dat wanneer toegang tot die HDU-data verkry word (d.w.s. hdul [0] .data ) 'n ander handvatsel in die FITS-lêer word deur mmap oopgemaak. Dit beteken dat selfs nadat u gebel het hdul.close () die mmap het steeds 'n oop handvatsel vir die data sodat dit steeds verkry kan word deur onbeduidende programme wat gebou is met die veronderstelling dat die .data-kenmerk al die data in die geheue bevat.

Om die mmap te dwing om te sluit, moet u wag tot die inhoud bevat HDULis maak beswaar om buite die bestek te gaan, of skakel dit handmatig del hdul [0] .data (dit werk solank daar geen ander verwysings na die data skikking is nie).

Werk met FITS-hoofde¶

Soos vroeër genoem, is elke element van 'n HDULis is 'n HDU-voorwerp met .kop en .data eienskappe, wat gebruik kan word om toegang te verkry tot die kop- en datagedeeltes van die HDU.

Vir diegene wat nie FITS-opskrifte ken nie, bestaan ​​dit uit 'n lys van 80 byte & # 8220cards & # 8221, waar 'n kaart 'n sleutelwoord, 'n waarde en 'n opmerking bevat. Die sleutelwoord en opmerking moet albei snare wees, terwyl die waarde 'n string of 'n heelgetal, drywende punt, komplekse getal of Waar / onwaar . Sleutelwoorde is gewoonlik uniek binne 'n opskrif, behalwe in enkele spesiale gevalle.

Die koptekstkenmerk is 'n koptekstinstansie, 'n ander Astropy-voorwerp. Om die waarde te kry wat verband hou met 'n koptekstwoord, doen dit eenvoudig (a la Python-voorskrifte):

om die waarde van die trefwoord targname te kry, wat 'n string is & # 8216NGC121 & # 8217.

Alhoewel die sleutelwoordname altyd in die hoofletter in die FITS-lêer voorkom, is die gebruik van 'n sleutelwoordnaam met Astropy nie vir 'n gebruiker hooflettergevoelig nie. As die gespesifiseerde sleutelwoordnaam nie bestaan ​​nie, sal dit a verhoog KeyError uitsondering.

Ons kan ook die sleutelwoordwaarde kry deur te indekseer (a la Python-lyste):

Hierdie voorbeeld gee die 28ste (soos Python-lyste, dit is 0-geïndekseer) trefwoord & # 8217s waarde & # 8211'n heelgetal & # 821196.

Net so is dit maklik om 'n sleutelwoordwaarde in Astropy by te werk, hetsy deur die sleutelwoordnaam of die indeks:

Let egter daarop dat byna alle toepassingskodes die koptekstwaardes moet bywerk via hul sleutelwoordnaam en nie via hul posisionele indeks nie. Dit is omdat die meeste FITS-sleutelwoorde op enige posisie in die kop verskyn.

Dit is ook moontlik om die waarde en kommentaar wat verband hou met 'n sleutelwoord by te werk deur dit as 'n tuple toe te ken:

Soos 'n voorskrif, kan 'n mens ook die sintaksis hierbo gebruik om 'n nuwe sleutelwoord / waardepaar by te voeg (en ook 'n opmerking). In hierdie geval word die nuwe kaart aan die einde van die opskrif toegevoeg (tensy dit 'n kommentaarwoord is soos KOMMENTAAR of GESKIEDENIS, in welke geval dit na die laaste kaart met die sleutelwoord toegevoeg word).

'N Ander manier om 'n bestaande kaart op te dateer of 'n nuwe kaart by te voeg, is om die Header.set () metode:

Kommentaar- of geskiedenisrekords word soos normale kaarte bygevoeg, maar in hul geval word daar altyd 'n nuwe kaart geskep in plaas van die opdatering van 'n bestaande GESKIEDENIS- of KOMMENTAAR-kaart:

Opmerking: wees versigtig om COMMENT-kaarte nie te verwar met die kommentaarwaarde vir normale kaarte nie.

Om bestaande COMMENT- of HISTORY-kaarte op te dateer, verwys dit na die indeks:

Om die hele kopkop te sien soos dit in die FITS-lêer verskyn (met die EINDE-kaart en die vulling gestroop), voer u die kopvoorwerp vanself in, of druk herhaal (kop) :

Gaan eenvoudig in drukopskrif sal ook werk, maar is miskien nie baie leesbaar op die meeste skerms nie, aangesien dit die kopkop vertoon soos dit in die FITS-lêer self geskryf is, wat beteken dat daar geen lynbreuke tussen kaarte is nie. Dit is 'n algemene verwarring by nuwe gebruikers.

Dit is ook moontlik om 'n deel van die kop te sien:

Slegs die eerste twee kaarte word hierbo getoon.

Gebruik die om 'n lys van alle sleutelwoorde te kry Header.keys () metode net soos met 'n voorskrif:

Werk met beelddata¶

As 'n HDU se data 'n beeld is, sal die data-attribuut van die HDU-voorwerp 'n dofheid gee ndarray beswaar. Verwys na die gevoelige dokumentasie vir besonderhede oor die manipulering van hierdie numeriese skikkings.

Hier wys scidata na die data-voorwerp in die tweede HDU (die eerste HDU, hdulis [0] , synde die primêre HDU) wat ooreenstem met die & # 8216SCI & # 8217 uitbreiding. Alternatiewelik het u toegang tot die uitbreiding op die naam van die uitbreiding (gespesifiseer in die sleutelwoord EXTNAME):

As daar meer as een uitbreiding met dieselfde EXTNAME is, moet die EXTVER-waarde saam met die EXTNAME as 'n tupel gespesifiseer word, byvoorbeeld:

Let daarop dat die EXTNAME ook nie hooflettergevoelig is nie.

Die teruggestoerde voorwerp het baie eienskappe en metodes waarop 'n gebruiker inligting oor die skikking kan kry, bv.

Aangesien beelddata 'n dof voorwerp is, kan ons dit sny, dit sien en wiskundige bewerkings daarop uitvoer. Om die pixelwaarde op x = 5, y = 2 te sien:

Let op dat, net soos C (en in teenstelling met FORTRAN), Python 0-geïndekseer is en dat die indekse die as wat die stadigste is en die laaste as wat die laaste keer verander, dws vir 'n 2-D-beeld, die vinnige as (X-as) wat ooreenstem met die FITS NAXIS1 sleutelwoord, is die tweede indeks. Net so sal die 1-geïndekseerde onderafdeling van x = 11 tot 20 (insluitend) en y = 31 tot 40 (insluitend) in Python gegee word as:

Om die waarde van 'n pixel of 'n onderafdeling op te dateer:

Hierdie voorbeeld verander die waardes van beide die pixel [1, 4] en die onderafdeling [30:40, 10:20] na die nuwe waarde van 999. Sien die Numpy-dokumentasie vir meer besonderhede oor Python-styl skikkingindeksering en snywerk .

Die volgende voorbeeld van skikkingmanipulasie is om die beelddata van tellings na stroom om te skakel:

Let daarop dat die uitvoering van 'n bewerking soos hierdie op 'n hele beeld die hele beeld in die geheue moet hou. In hierdie voorbeeld word die vermenigvuldiging op die plek uitgevoer sodat daar geen kopieë gemaak word nie, maar die oorspronklike beeld moet eers in die geheue kan pas. Vir die meeste waarnemings behoort dit nie 'n probleem op moderne persoonlike rekenaars te wees nie.

As u op hierdie stadium al die veranderinge wat u aangebring het, wil bewaar en in 'n nuwe lêer wil skryf, kan u die HDUList.writeto () metode (sien hieronder).

Werk met tabeldata¶

Hierdie afdeling beskryf die lees en skryf van data in die FITS-formaat met behulp van die pas pak direk in. Vir eenvoudige gevalle, maar die hoë vlak Eenvoudige lêer- / skryfkoppelvlak vir lêers is dikwels voldoende en is ietwat makliker om te gebruik. Sien die Verenigde I / O-PAS afdeling vir besonderhede.

Soos met beelde, is die datagedeelte van 'n FITS-tabeluitbreiding in die .data kenmerk:

As u bekend is met stom herhaling (rekord skikking) voorwerpe, sal u vind dat die tabel data basies 'n rekord skikking is met 'n paar ekstra eienskappe. Maar vertroudheid met rekordopstellings is nie 'n voorvereiste vir hierdie gids nie.

Om die eerste ry van die tabel te sien:

Elke ry in die tabel is a FITS_rekord voorwerp wat lyk soos 'n (Python) tupel wat elemente van heterogene datatipes bevat. In hierdie voorbeeld: 'n heelgetal, 'n string, 'n swewende puntetal en 'n Booleaanse waarde. Die tabeldata is dus slegs 'n verskeidenheid sulke rekords. Meer algemeen sal 'n gebruiker waarskynlik kolomgewys toegang tot die data verkry. Dit word bereik deur die veld () metode. Om die eerste kolom (of & # 8220field & # 8221 in Numpy-taal) te kry, word dit hier omruilend gebruik met & # 8220column & # 8221) van die tabel, gebruik:

'N Stomme voorwerp met die datatipe van die gespesifiseerde veld word teruggestuur.

Soos kolomkopwoorde, kan 'n kolom verwys word deur die indeks, soos hierbo, of deur die naam:

As u toegang tot 'n kolom op naam het, is diktagtige toegang ook moontlik (en selfs verkieslik):

In die meeste gevalle is dit verkieslik om toegang tot kolomme op hul naam te verkry, aangesien die kolomnaam heeltemal onafhanklik is van die fisiese volgorde in die tabel. Soos met kopwoorde, is kolomname nie hooflettergevoelig nie.

Maar hoe weet ons watter kolomme ons in 'n tabel het? Laat ons eers 'n ander kenmerk van die tafel HDU bekendstel: die kolomme kenmerk:

Hierdie eienskap is 'n ColDefs (kolomdefinisies) voorwerp. As ons die ColDefs.info () metode vanaf die interaktiewe aanwysing:

dit wys die eienskappe van alle kolomme in die tabel, soos hul name, formate, bskale, bzeros, ens. 'n Soortgelyke uitvoer wat die kolomname en hul formate sal vertoon, kan vanuit 'n script gedruk word met:

Ons kan hierdie eienskappe ook individueel kry, bv.

gee 'n (Python) lys veldname terug.

Aangesien elke veld 'n Numpy-voorwerp is, het ons die hele arsenaal Numpy-gereedskap om te gebruik. Ons kan die waardes weer toewys (opdateer):

neem die gemiddelde van 'n kolom:

Stoor lêerveranderings¶

Soos vroeër genoem, kan die gebruiker dit gebruik nadat 'n lêer 'n lêer oopgemaak het, 'n paar veranderinge aangebring het aan die kop of die data HDUList.writeto () om die veranderinge te stoor. Dit neem die weergawe van koptekste en data in die geheue en skryf dit na 'n nuwe FITS-lêer op die skyf. Daaropvolgende bewerkings kan met die data in die geheue uitgevoer word en na nog 'n ander lêer uitgeskryf word, alles sonder om die oorspronklike data in (meer) geheue te kopieer.

die huidige inhoud van hdulis na 'n nuwe skyflêer newfile.fits. As 'n lêer met die opdateringsmodus geopen is, word die HDUList.flush () metode kan ook gebruik word om al die veranderinge wat sedertdien aangebring is, te skryf maak oop () , terug na die oorspronklike lêer. Die naby() metode sal dieselfde doen vir 'n FITS-lêer wat met die opdateringsmodus oopgemaak word:

Skep 'n nuwe FITS-lêer¶

Skep 'n nuwe prentlêer¶

Tot dusver het ons getoon hoe om 'n bestaande FITS-lêer te lees en by te werk. Maar hoe gaan dit met die skep van 'n nuwe FITS-lêer van nuuts af? Sulke take is baie maklik in Astropy vir 'n HDU-beeld. Ons sal eers demonstreer hoe om 'n FITS-lêer te skep wat slegs die primêre HDU met beelddata bevat.

Eerstens skep ons 'n dof voorwerp vir die datadeel:

Vervolgens skep ons 'n PrimêreHDU maak beswaar om die data saam te vat:

Ons skep dan 'n HDUList om die nuutgeskepte primêre HDU te bevat, en skryf na 'n nuwe lêer:

Dit & dit is dit! Trouens, Astropy bied selfs 'n kortpad vir die laaste twee reëls om dieselfde gedrag te bewerkstellig:

Dit sal 'n enkele HDU na 'n FITS-lêer skryf sonder om dit handmatig in 'n HDULis maak eers beswaar.

Skep 'n nuwe tabellêer¶

Om 'n tafel te skep, is HDU 'n bietjie meer betrokke as 'n beeld-HDU, omdat 'n tafel en struktuur meer inligting benodig. In die eerste plek kan tabelle slegs 'n HDU-uitbreiding wees, nie 'n primêre nie. Daar is twee soorte FITS-tafeluitbreidings: ASCII en binêre. Ons sal hier voorbeelde van binêre tabel gebruik.

Om 'n tabel van nuuts af te skep, moet ons eers kolomme definieer deur die Kolom voorwerpe en hul gegewens. Gestel ons het twee kolomme, die eerste bevat stringe en die tweede bevat drywingsgetalle:

Skep vervolgens 'n ColDefs (kolom-definisies) voorwerp vir alle kolomme:

Skep nou 'n nuwe HDU-voorwerp met binêre tabel deur die BinTableHDU.from_columns () funksie:

Hierdie funksie gee terug (in hierdie geval) a BinTableHDU .

U kan dit natuurlik bondiger doen sonder om tussenveranderlikes vir die individuele kolomme te skep en sonder om 'n handmatig te skep ColDefs voorwerp:

Nou kan u hierdie nuwe tabel HDU direk in 'n FITS-lêer skryf:

Hierdie sneltoets skep outomaties 'n minimale primêre HDU sonder data en hang dit op die tafel HDU om 'n geldige FITS-lêer te skep. As u addisionele gegewens- of koptekstwoorde in die primêre HDU benodig, kan u steeds 'n PrimêreHDU beswaar maak en die FITS-lêer handmatig opbou met behulp van 'n HDULis .

Skep byvoorbeeld eers 'n nuwe Kopskrif maak beswaar om die sleutelwoorde wat u in die primêre HDU wil insluit, saam te vat, en skep dan soos voorheen 'n PrimêreHDU :

Wanneer ons 'n nuwe primêre HDU skep met 'n aangepaste koptekst soos in die voorbeeld hierbo, sal dit outomaties enige addisionele kopwoorde insluit wat vereis volgens die FITS-formaat (sleutelwoorde soos EENVOUDIG en NAXIS byvoorbeeld). Oor die algemeen moet gebruikers nie sulke sleutelwoorde handmatig hoef te bestuur nie, en slegs waarnemingspesifieke inligtingsleutelwoorde moet skep en verander.

Ons maak dan 'n HDUL-lys wat beide die primêre HDU en die nuutgeskepte tabeluitbreiding bevat, en skryf na 'n nuwe lêer:

Alternatiewelik kan ons die tabel byvoeg by die HDU-lys wat ons reeds in die beeldlêergedeelte gemaak het:

Die datastruktuur wat gebruik word om FITS-tabelle voor te stel, word a genoem FITS_rec en is afgelei van die gevoelloos.herhaling koppelvlak. Wanneer u 'n nuwe HDU-tabel skep, word die individuele kolomreeks in 'n enkele saamgestel FITS_rec skikking.

Tot dusver het ons die mees basiese kenmerke van astropy.io.fits . In die volgende hoofstukke wys ons meer gevorderde voorbeelde en verduidelik ons ​​opsies in elke klas en metode.

Geriefsfunksies¶

astropy.io.fits bied ook verskeie funksies op hoë vlak (& # 8220gerief & # 8221). So 'n gemakfunksie is 'n & # 8220canned & # 8221-operasie om een ​​eenvoudige taak te bereik. Deur hierdie & # 8220gerief & # 8221-funksies te gebruik, hoef 'n gebruiker nie bekommerd te wees oor die oopmaak of sluiting van 'n lêer nie; al die huishouding word implisiet gedoen.

Hierdie funksies is nuttig vir interaktiewe Python-sessies en eenvoudige analise-skrifte, maar moet nie gebruik word vir toepassingskode nie, aangesien dit baie ondoeltreffend is. Elke oproep na byvoorbeeld getval () moet die hele FITS-lêer hersien word. Die kode wat hierdie funksies herhaaldelik gebruik, moet die lêer oopmaak met maak oop () en direk toegang tot die datastrukture hê.

Die eerste van hierdie funksies is getheader () , om die koptekst van 'n HDU te kry. Hier is 'n paar voorbeelde van die kry van die kop. Slegs die lêernaam is nodig vir hierdie funksie. Die res van die argumente is opsioneel en buigsaam om aan te dui tot watter HDU die gebruiker toegang wil hê:

Dubbelsinnige spesifikasies sal 'n uitsondering oplewer:

Nadat u die opskrif gekry het, kan u toegang tot die inligting daarin kry, soos om 'n sleutelwoordwaarde te kry en te wysig:

Vir die kopwoorde is die opskrif soos 'n woordeboek, sowel as 'n lys. Die gebruiker het toegang tot die sleutelwoorde op naam of deur middel van 'n numeriese indeks, soos vroeër in hierdie hoofstuk uiteengesit.

As 'n gebruiker net een sleutelwoord hoef te lees, word die getval () funksie kan verder vereenvoudig tot net een oproep, in plaas van twee soos in die voorbeelde hierbo getoon:

Die funksie getdata () kry die data van 'n HDU. Soortgelyk aan getheader () , dit vereis slegs die invoer FITS-lêernaam terwyl die uitbreiding deur die opsionele argumente gespesifiseer word. Dit het wel een ekstra opsionele argumentkop. As header op True ingestel is, sal hierdie funksie beide data en header teruggee, anders word slegs data terugbesorg:

Die funksies hierbo bekendgestel is vir lees. Die volgende paar funksies demonstreer geriefsfunksies vir skryf:

Die skryf na() funksie gebruik die gegewe data en 'n opsionele koptekst om na 'n uitvoer FITS-lêer te skryf.

Die voeg by () funksie sal die gegewe data en die opsionele opskrif gebruik om by 'n bestaande FITS-lêer aan te voeg. As die gespesifiseerde uitvoerlêer nie bestaan ​​nie, sal dit een skep.

Die Opdateer() funksie sal die gespesifiseerde uitbreiding met die invoerdata / kopstuk opdateer. Die derde argument kan die opskrif wees wat met die data geassosieer word. As die 3de argument nie 'n opskrif is nie, word aanvaar dat dit (en ander posisionele argumente) die uitbreidingspesifikasie (s) is. Kop- en uitbreidingspesifikasies kan ook sleutelwoordargumente wees.

Uiteindelik het die info () funksie sal inligting van die gespesifiseerde FITS-lêer uitdruk:

Dit is een van die handigste geriefsfunksies om 'n oorsig te kry van wat 'n gegewe lêer bevat, sonder om na die besonderhede te kyk.


  • As u probleme ondervind met die installasie, stuur 'n e-pos na 'n e-poslys (bv. Astropie of pythonusers vir CfA-sterrekundiges), of kontak die outeurs direk by astropython & # 64 gmail & # 46 com.
  • As u 'n fout vind wat u glo, meld dit asseblief by die GitHub Issue Tracker.

Begin met die aflaai van hierdie teerlêer, brei dit uit en gaan na die APLpy-voorbeeldgids op die opdraglyn. Begin dan IPython:

As u sukkel om die lêer af te laai, voer dan binne u IPython-sessie in:

Voer die aplpy-module in (let op die naam van die kleinletter-module):

En skep 'n nuwe figuur om die FITS-lêer saam te stel:

Dit moet 'n matplotlib-venster oopmaak en 'n leë assestelsel met koördinate toon. Van nou af sal u met die figuur kommunikeer deur metodes wat verband hou met f aan te roep. Wys die beeld byvoorbeeld as 'n grysskaal:

Die outomatiese instellings vir die rek moet ordentlik wees, maar daar is natuurlik opsies om aangepaste min / maks vlakke toe te laat. U kan nou probeer om in te skuif en in te zoem soos u in Matplotlib sou doen, en u sal sien hoe die koördinate opgedateer word. Druk die Tuis-knoppie om die aansig te herstel.

Laat ons 'n stel kontoere van 'n ander beeld af bedek:

Ons kan ook 'n koördinaatrooster byvoeg:

Laat ons uiteindelik 'n skaalbalk byvoeg om die plot fyn te laat lyk:

Ons kan nou ons meesterstuk stoor deur op die Save-ikoon in die matplotlib-venster te klik, of deur te doen:

Laasgenoemde word aanbeveel, omdat dit outomaties die beste resolusie sal vind waarmee u plot uithaal. U plot moet so lyk:

Gebruik die hulp of? funksionaliteit in ipython om uit te vind hoe om die min / maks vlakke op die grysskaal handmatig in te stel, en om die rekfunksie na 'n vierkantswortel-rek te verander. Gebruik ook die gebruiksaanwysingsgids om uit te vind hoe u die grysskaal in 'n kleurskaal kan verander.

Klik om oplossing te wys / versteek

Om die vlakke handmatig in te stel:

Om ook 'n vierkantswortelstrek te gebruik:

Om na 'n kleurskaal te verander:

Let daarop dat die kleurkaart ingestel kan word deur byvoorbeeld:

waar die waarde van die cmap-argument enige van die name op hierdie bladsy kan wees.

Gebruik die Quick Reference Guide om die regmerkingsafstand op beide asse handmatig in te stel. In die standaardaansig vir die voorbeeld FITS-lêer hierbo, is die boogsekondes in die deklinasie nie nuttig nie (dit is altyd nul). Probeer om die formaat van die y-as-etikette te verander sodat dit slegs grade en boogminute bevat.

Klik om oplossing te wys / versteek

Om die y-as-etikette in dd: mm-formaat te wys:

Gebruik APLpy om een ​​van u eie FITS-beelde te teken! As u geen FITS-lêers byderhand het nie, kan u met hierdie pas uitgereikte WISE-data van M82 speel!

As u probleme ondervind met die aflaai van die lêer, voer dan binne u IPython-sessie in:

Inhoud van die bladsy

Vorige onderwerp

Volgende onderwerp

& kopie Kopiereg 2011-2015, Smithsonian Astrophysical Observatory onder terme van CC Attribution 3.0.
Geskep met behulp van Sphinx 1.3.1.


Skep kleur-RGB-beelde met behulp van die Lupton et al (2004) -skema¶

Lupton et al. (2004) beskryf 'n 'optimale' algoritme vir die vervaardiging van rooi-groen-blou saamgestelde beelde uit drie afsonderlike skikkings met 'n hoë dinamiese reeks. Hierdie metode word in make_lupton_rgb geïmplementeer as 'n gemaklike omslagfunksie en 'n gepaardgaande stel klasse om alternatiewe skale te bied. Die SDSS SkyServer-kleurbeelde is gemaak met behulp van 'n variasie op hierdie tegniek. Om 'n kleur-PNG-lêer te genereer met die standaardskaal (arcsinh):

Hierdie metode vereis dat die drie beelde in lyn is en dieselfde pixelskaal en grootte het. As u die minimum verander, sal die swart vlak verander word, terwyl rek en Q verander hoe die waardes tussen swart en wit geskaal word.

Vir 'n meer diepgaande voorbeeld, laai die g, r, i SDSS-rame af (dit dien onderskeidelik as die blou, groen en rooi kanale) van die gebied rondom die Hickson 88-groep en probeer die onderstaande voorbeeld en vergelyk dit met Figuur 1 van Lupton et al. (2004):

Die prentjie hierbo is met die verstekparameters gegenereer. Maar met behulp van 'n ander skaal, byvoorbeeld Q = 10, rek = 0.5, verskyn daar vaag eienskappe van die sterrestelsels. Vergelyk met Fig. 1 van Lupton et al. (2004) of die SDSS Skyserver-beeld.


As baie koördinate getransformeer moet word, is dit moontlik om Numpy-skikkings te gebruik:

Probeer om meer waardes van pixel na wêreldkoördinate om te skakel, en probeer om dit weer na pixelkoordinate om te skakel. Stem die resultate ooreen met die oorspronklike pixelkoördinate? Wat is die wêreldkoördinate van die pixel by (1, 1), en waarom?

Klik om oplossing te wys / versteek

Die finale pixelkoördinate moet altyd ooreenstem met die beginpunte, aangesien elke pixel 'n unieke wêreldkoördinaatposisie beslaan. Die wêreldkoördinate van die pixel by (1, 1) word nie gedefinieër nie:

omdat die pixel buite die koördinaatrooster lê. Dus, nie alle pixels in 'n beeld het 'n geldige posisie in die lug nie.

Onttrek en druk die waardes op die ROSAT-kaart uit op die posisie van die LAT-puntbronne (uit die FITS-handleiding)


Hierdie afdeling bied 'n vinnige inleiding tot die gebruik van astropy.io.fits . Die doel is om die pakket en sy basiese kenmerke te demonstreer sonder om in te veel besonderhede te kom. As u 'n eerste keer gebruiker is of nog nooit Astropy of PyFITS gebruik nie, moet u hier begin. Sien ook die Vrae vir antwoorde op algemene vrae / kwessies.

Bestaande FITS-lêers lees en bywerk¶

Maak 'n FITS-lêer oop¶

Sodra die astropy.io.fits pakket gelaai is volgens die standaardkonvensie [1], kan ons 'n bestaande FITS-lêer oopmaak:

Die maak oop () funksie het verskeie opsionele argumente wat in 'n latere hoofstuk bespreek sal word. Die standaardmodus, soos in die bostaande voorbeeld, is & # 8220lees alleen & # 8221. Die oopfunksie gee 'n voorwerp terug wat 'n 'genoem word HDULis wat 'n lys -like versameling HDU-voorwerpe. 'N HDU (Header Data Unit) is die komponent van die FITS-lêerstruktuur op die hoogste vlak, bestaande uit 'n koptekst en (tipies) 'n data-skikking of -tabel.

Na die oproep hierbo, hdulis [0] is die primêre HDU, hdulis [1] is die eerste uitbreiding HDU, ens (as daar enige uitbreidings is), ensovoorts. Daar moet op gelet word dat Astropy 'n nul-gebaseerde indeksering gebruik wanneer hy na HDU's en koptekaarte verwys, hoewel die FITS-standaard (wat ontwerp is met die oog op FORTRAN) een-gebaseerde indeksering gebruik.

Die HDULis het 'n nuttige metode HDUList.info () , wat die inhoud van die geopende FITS-lêer saamvat:

Nadat u klaar is met die oop lêer, maak dit toe met die HDUList.close () metode:

Die opskrifte sal steeds toeganklik wees nadat die HDUList gesluit is. Die data is wel of nie toeganklik nie, afhangende van of die data aangeraak word en as dit geheue-gekarteer is, sien die latere hoofstukke vir meer inligting.

Werk met groot lêers¶

Die maak oop () funksie ondersteun a memmap = Waar argument waarmee die skikking van elke HDU met mmap toeganklik is, eerder as om dit tegelyk in die geheue te lees. Dit is veral handig om met baie groot skikkings te werk wat nie heeltemal in die fisiese geheue kan pas nie.

Dit het ook 'n minimale impak op kleiner lêers, alhoewel sommige bewerkings, soos om die skyfdata agtereenvolgens te lees, bykomende bokoste kan veroorsaak. Op 32-bis-stelsels kan skikkings groter as 2-3 GB nie mmap & # 8217d wees nie (wat goed is, want op daardie stadium sal u fisiese geheue in elk geval opraak), maar 64-bit-stelsels is baie minder beperk hierin respek.

Wanneer u 'n lêer met memmap = Waar , vanweë hoe mmap werk, beteken dit dat wanneer toegang tot die HDU-data verkry word (d.w.s. hdul [0] .data ) 'n ander handvatsel in die FITS-lêer word deur mmap oopgemaak. Dit beteken dat selfs nadat u gebel het hdul.close () die mmap het steeds 'n oop handvatsel vir die data sodat dit steeds verkry kan word deur onversigtige programme wat gebou is met die veronderstelling dat die .data-kenmerk al die data in die geheue bevat.

Om die mmap te dwing om te sluit, moet u wag tot die inhoud bevat HDULis maak beswaar om buite die bestek te gaan, of bel dit handmatig hdul [0] .data (dit werk solank daar geen ander verwysings na die data skikking is nie).

Werk met FITS-hoofde¶

Soos vroeër genoem, is elke element van 'n HDULis is 'n HDU-voorwerp met .kop en .data eienskappe, wat gebruik kan word om toegang te verkry tot die kop- en datagedeeltes van die HDU.

Vir diegene wat nie FITS-opskrifte ken nie, bestaan ​​dit uit 'n lys van 80 byte & # 8220cards & # 8221, waar 'n kaart 'n sleutelwoord, 'n waarde en 'n opmerking bevat. Die sleutelwoord en opmerking moet albei snare wees, terwyl die waarde 'n string of 'n heelgetal, drywende punt, komplekse getal of Waar / onwaar . Sleutelwoorde is gewoonlik uniek binne 'n opskrif, behalwe in enkele spesiale gevalle.

Die koptekstkenmerk is 'n koptekstinstansie, 'n ander Astropy-voorwerp. Om die waarde te kry wat verband hou met 'n koptekstwoord, doen dit eenvoudig (a la Python-voorskrifte):

om die waarde van die trefwoord targname te kry, wat 'n string is & # 8216NGC121 & # 8217.

Alhoewel die sleutelwoordname altyd in die hoofletter in die FITS-lêer voorkom, is dit nie vir 'n gebruiker belangrik om 'n sleutelwoordnaam met Astropy op te gee nie. As die gespesifiseerde sleutelwoordnaam nie bestaan ​​nie, sal dit a verhoog KeyError uitsondering.

Ons kan ook die sleutelwoordwaarde kry deur te indekseer (a la Python-lyste):

Hierdie voorbeeld gee die 28ste (soos Python-lyste, dit is 0-geïndekseer) trefwoord & # 8217s waarde & # 8211'n heelgetal & # 821196.

Net so is dit maklik om 'n sleutelwoordwaarde in Astropy by te werk, hetsy deur die sleutelwoordnaam of die indeks:

Let egter daarop dat byna alle toepassingskodes die koptekstwaardes moet bywerk via hul sleutelwoordnaam en nie via hul posisionele indeks nie. Dit is omdat die meeste FITS-sleutelwoorde op enige posisie in die kop verskyn.

Dit is ook moontlik om die waarde en kommentaar wat verband hou met 'n sleutelwoord by te werk deur dit as 'n tuple toe te ken:

Soos 'n voorskrif, kan 'n mens ook die sintaksis hierbo gebruik om 'n nuwe sleutelwoord / waardepaar by te voeg (en ook 'n opmerking). In hierdie geval word die nuwe kaart aan die einde van die opskrif toegevoeg (tensy dit 'n kommentaarwoord is soos KOMMENTAAR of GESKIEDENIS, in welke geval dit na die laaste kaart met die sleutelwoord toegevoeg word).

'N Ander manier om 'n bestaande kaart op te dateer of 'n nuwe kaart by te voeg, is om die Header.set () metode:

Kommentaar- of geskiedenisrekords word soos normale kaarte bygevoeg, maar in hul geval word daar altyd 'n nuwe kaart geskep in plaas van die opdatering van 'n bestaande GESKIEDENIS- of KOMMENTAAR-kaart:

Opmerking: wees versigtig om COMMENT-kaarte nie te verwar met die kommentaarwaarde vir normale kaarte nie.

Om bestaande COMMENT- of HISTORY-kaarte op te dateer, verwys dit na die indeks:

Om die hele kopkop te sien soos dit in die FITS-lêer verskyn (met die EINDE-kaart en die vulling gestroop), voer u die kopvoorwerp vanself in, of druk herhaal (kop) :

Gaan eenvoudig in drukopskrif sal ook werk, maar is miskien nie baie leesbaar op die meeste skerms nie, aangesien dit die kopkop vertoon soos dit in die FITS-lêer self staan, wat beteken dat daar geen lynbreuke tussen kaarte is nie. Dit is 'n algemene verwarring by nuwe gebruikers.

Dit is ook moontlik om 'n deel van die kop te sien:

Slegs die eerste twee kaarte word hierbo getoon.

Gebruik die om 'n lys van alle sleutelwoorde te kry Header.keys () metode net soos met 'n voorskrif:

Werk met beelddata¶

As 'n HDU & # 8217; s data 'n beeld is, sal die data-attribuut van die HDU-voorwerp 'n dofgehalte gee ndarray beswaar. Verwys na die gevoelige dokumentasie vir besonderhede oor die manipulering van hierdie numeriese skikkings.

Hier wys scidata na die data-voorwerp in die tweede HDU (die eerste HDU, hdulis [0] , synde die primêre HDU) wat ooreenstem met die & # 8216SCI & # 8217 uitbreiding. Alternatiewelik het u toegang tot die uitbreiding op die naam van die uitbreiding (gespesifiseer in die sleutelwoord EXTNAME):

As daar meer as een uitbreiding met dieselfde EXTNAME is, moet die EXTVER-waarde saam met die EXTNAME as 'n tupel gespesifiseer word, byvoorbeeld:

Let daarop dat die EXTNAME ook nie hooflettergevoelig is nie.

Die teruggestoerde voorwerp het baie eienskappe en metodes waarop 'n gebruiker inligting oor die skikking kan kry, bv.

Aangesien beelddata 'n dof voorwerp is, kan ons dit sny, dit sien en wiskundige bewerkings daarop uitvoer. Om die pixelwaarde op x = 5, y = 2 te sien:

Let op dat, net soos C (en in teenstelling met FORTRAN), Python 0-geïndekseer is en dat die indekse die as wat die stadigste is en die laaste as wat die laaste keer verander, dws vir 'n 2-D-beeld, die vinnige as (X-as) wat ooreenstem met die FITS NAXIS1 sleutelwoord, is die tweede indeks. Net so sal die 1-geïndekseerde onderafdeling van x = 11 tot 20 (insluitend) en y = 31 tot 40 (insluitend) in Python gegee word as:

Om die waarde van 'n pixel of 'n onderafdeling op te dateer:

Hierdie voorbeeld verander die waardes van beide die pixel [1, 4] en die onderafdeling [30:40, 10:20] na die nuwe waarde van 999. Sien die Numpy-dokumentasie vir meer besonderhede oor Python-styl skikkingindeksering en snywerk .

Die volgende voorbeeld van skikkingmanipulasie is om die beelddata van tellings na stroom om te skakel:

Let daarop dat die uitvoering van 'n bewerking soos hierdie op 'n hele beeld die hele beeld in die geheue moet hou. In hierdie voorbeeld word die vermenigvuldiging op die plek uitgevoer sodat daar geen kopieë gemaak word nie, maar die oorspronklike beeld moet eers in die geheue kan pas. Vir die meeste waarnemings behoort dit nie 'n probleem op moderne persoonlike rekenaars te wees nie.

As u op hierdie stadium al die veranderinge wat u aangebring het, wil bewaar en in 'n nuwe lêer wil skryf, kan u die HDUList.writeto () metode (sien hieronder).

Werk met tabeldata¶

As u bekend is met stom herhaling (rekord skikking) voorwerpe, sal u vind dat die tabel data basies 'n rekord skikking is met 'n paar ekstra eienskappe. Maar vertroudheid met rekordopstellings is nie 'n voorvereiste vir hierdie gids nie.

Soos met beelde, is die datagedeelte van 'n FITS-tabeluitbreiding in die .data kenmerk:

Om die eerste ry van die tabel te sien:

Elke ry in die tabel is a FITS_rekord voorwerp wat lyk soos 'n (Python) tupel wat elemente van heterogene datatipes bevat. In hierdie voorbeeld: 'n heelgetal, 'n string, 'n swewende puntetal en 'n Booleaanse waarde. Die tabeldata is dus slegs 'n verskeidenheid sulke rekords. Meer algemeen sal 'n gebruiker waarskynlik kolomgewys toegang tot die data verkry. Dit word bereik deur die veld () metode. Om die eerste kolom (of & # 8220field & # 8221 in Numpy-taal) te kry, word dit hier omruilend gebruik met & # 8220column & # 8221) van die tabel, gebruik:

'N Stomme voorwerp met die datatipe van die gespesifiseerde veld word teruggestuur.

Soos kolomkopwoorde, kan 'n kolom verwys word deur die indeks, soos hierbo, of deur die naam:

As u toegang tot 'n kolom op naam het, is diktagtige toegang ook moontlik (en selfs verkieslik):

In die meeste gevalle is dit verkieslik om toegang tot kolomme op hul naam te verkry, aangesien die kolomnaam heeltemal onafhanklik is van die fisiese volgorde in die tabel. Soos met kopwoorde, is kolomname nie hooflettergevoelig nie.

Maar hoe weet ons watter kolomme ons in 'n tabel het? Laat ons eers 'n ander kenmerk van die tafel HDU bekendstel: die kolomme kenmerk:

Hierdie eienskap is 'n ColDefs (kolomdefinisies) voorwerp. As ons die ColDefs.info () metode:

dit sal die eienskappe van alle kolomme in die tabel toon, soos hul name, formate, skale, bzeros, ens. Ons kan hierdie eienskappe ook individueel kry, bv.

gee 'n (Python) lys veldname terug.

Aangesien elke veld 'n Numpy-voorwerp is, het ons die hele arsenaal Numpy-gereedskap om te gebruik. Ons kan die waardes weer toewys (opdateer):

neem die gemiddelde van 'n kolom:

Stoor lêerveranderings¶

Soos vroeër genoem, kan die gebruiker dit gebruik nadat 'n lêer 'n lêer oopgemaak het, 'n paar veranderings aan die kop of die data aangebring het HDUList.writeto () om die veranderinge te stoor. Dit neem die weergawe van koptekste en data in die geheue en skryf dit na 'n nuwe FITS-lêer op die skyf. Daaropvolgende bewerkings kan met die data in die geheue uitgevoer word en na nog 'n ander lêer uitgeskryf word, alles sonder om die oorspronklike data in (meer) geheue te kopieer.

sal die huidige inhoud van hdulis na 'n nuwe skyflêer newfile.fits. As 'n lêer met die opdateringsmodus geopen is, word die HDUList.flush () metode kan ook gebruik word om al die veranderinge wat sedertdien aangebring is, te skryf maak oop () , terug na die oorspronklike lêer. Die naby() metode sal dieselfde doen vir 'n FITS-lêer wat met die opdateringsmodus oopgemaak word:

Skep 'n nuwe FITS-lêer¶

Skep 'n nuwe prentlêer¶

Tot dusver het ons getoon hoe om 'n bestaande FITS-lêer te lees en by te werk. Maar hoe gaan dit met die skep van 'n nuwe FITS-lêer van nuuts af? Sulke take is baie maklik in Astropy vir 'n HDU-beeld. Ons sal eers demonstreer hoe om 'n FITS-lêer te skep wat slegs die primêre HDU met beelddata bevat.

Eerstens skep ons 'n dof voorwerp vir die datadeel:

Vervolgens skep ons 'n PrimêreHDU maak beswaar om die data saam te vat:

Ons skep dan 'n HDUList om die nuutgeskepte primêre HDU te bevat, en skryf na 'n nuwe lêer:

Dit & dit is dit! Trouens, Astropy bied selfs 'n kortpad vir die laaste twee reëls om dieselfde gedrag te bewerkstellig:

Dit sal 'n enkele HDU na 'n FITS-lêer skryf sonder om dit handmatig in 'n HDULis maak eers beswaar.

Skep 'n nuwe tabellêer¶

Om 'n tafel te skep, is HDU 'n bietjie meer betrokke as 'n beeld-HDU, omdat 'n tafel en struktuur meer inligting benodig. In die eerste plek kan tabelle slegs 'n HDU-uitbreiding wees, nie 'n primêre nie. Daar is twee soorte FITS-tafeluitbreidings: ASCII en binêre. Ons sal hier voorbeelde van binêre tabel gebruik.

Om 'n tabel van nuuts af te skep, moet ons eers kolomme definieer deur die Kolom voorwerpe en hul gegewens. Gestel ons het twee kolomme, die eerste bevat stringe en die tweede bevat drywingsgetalle:

Skep vervolgens 'n ColDefs (kolom-definisies) voorwerp vir alle kolomme:

Skep nou 'n nuwe HDU-voorwerp met binêre tabel deur die BinTableHDU.van_kolomme () funksie:

Hierdie funksie gee terug (in hierdie geval) a BinTableHDU .

U kan dit natuurlik bondiger doen sonder om tussenveranderlikes vir die individuele kolomme te skep en sonder om 'n handmatig te skep ColDefs voorwerp:

Nou kan u hierdie nuwe tabel HDU direk in 'n FITS-lêer skryf:

Hierdie sneltoets skep outomaties 'n minimale primêre HDU sonder data en hang dit op die tafel HDU om 'n geldige FITS-lêer te skep. As u addisionele gegewens of koptekstwoorde in die primêre HDU benodig, kan u steeds 'n PrimêreHDU maak beswaar teen en bou die FITS-lêer handmatig op met behulp van 'n HDULis .

Skep byvoorbeeld eers 'n nuwe Kopskrif maak beswaar om die sleutelwoorde wat u in die primêre HDU wil insluit, saam te vat, en skep dan soos voorheen 'n PrimêreHDU :

Wanneer ons 'n nuwe primêre HDU skep met 'n aangepaste koptekst soos in die voorbeeld hierbo, sal dit outomaties enige addisionele kopwoorde insluit wat vereis volgens die FITS-formaat (sleutelwoorde soos EENVOUDIG en NAXIS byvoorbeeld). Oor die algemeen moet gebruikers nie sulke sleutelwoorde handmatig hoef te bestuur nie, en slegs waarnemingspesifieke inligtingsleutelwoorde moet skep en verander.

Ons maak dan 'n HDUL-lys wat beide die primêre HDU en die nuutgeskepte tabeluitbreiding bevat, en skryf na 'n nuwe lêer:

Alternatiewelik kan ons die tabel byvoeg by die HDU-lys wat ons reeds in die beeldlêergedeelte gemaak het:

Die datastruktuur wat gebruik word om FITS-tabelle voor te stel, word a genoem FITS_rec en is afgelei van die gevoelloos.herhaling koppelvlak. Wanneer u 'n nuwe HDU-tabel skep, word die individuele kolomreeks in 'n enkele saamgestel FITS_rec skikking.

Tot dusver het ons die mees basiese kenmerke van astropy.io.fits . In die volgende hoofstukke wys ons meer gevorderde voorbeelde en verduidelik ons ​​opsies in elke klas en metode.

Geriefsfunksies¶

astropy.io.fits bied ook verskeie funksies op hoë vlak (& # 8220gerief & # 8221). So 'n gemakfunksie is 'n & # 8220canned & # 8221-operasie om een ​​eenvoudige taak te bereik. Deur hierdie & # 8220gerief & # 8221-funksies te gebruik, hoef 'n gebruiker nie bekommerd te wees oor die oopmaak of sluiting van 'n lêer nie; al die huishouding word implisiet gedoen.

Hierdie funksies is nuttig vir interaktiewe Python-sessies en eenvoudige analise-skrifte, maar moet nie gebruik word vir toepassingskode nie, aangesien dit baie ondoeltreffend is. Elke oproep na byvoorbeeld getval () moet die hele FITS-lêer hersien word. Die kode wat hierdie funksies herhaaldelik gebruik, moet die lêer oopmaak met maak oop () en direk toegang tot die datastrukture hê.

Die eerste van hierdie funksies is getheader () , om die koptekst van 'n HDU te kry. Hier is 'n paar voorbeelde van die kry van die kop. Slegs die lêernaam is nodig vir hierdie funksie. Die res van die argumente is opsioneel en buigsaam om aan te dui tot watter HDU die gebruiker toegang wil hê:

Dubbelsinnige spesifikasies sal 'n uitsondering oplewer:

Nadat u die opskrif gekry het, kan u toegang tot die inligting daarin kry, soos om 'n sleutelwoordwaarde te kry en te wysig:

Vir die kopwoorde is die opskrif soos 'n woordeboek, sowel as 'n lys. Die gebruiker het toegang tot die sleutelwoorde op naam of deur middel van 'n numeriese indeks, soos vroeër in hierdie hoofstuk uiteengesit.

As 'n gebruiker net een sleutelwoord hoef te lees, word die getval () funksie kan verder vereenvoudig tot net een oproep, in plaas van twee soos in die voorbeelde hierbo aangedui:

Die funksie getdata () kry die data van 'n HDU. Soortgelyk aan getheader () , dit vereis slegs die invoer FITS-lêernaam terwyl die uitbreiding deur die opsionele argumente gespesifiseer word. Dit het wel een ekstra opsionele argumentkop. As header op True ingestel is, sal hierdie funksie beide data en header teruggee, anders word slegs data terugbesorg:

Die funksies hierbo bekendgestel is vir lees. Die volgende paar funksies demonstreer geriefsfunksies vir skryf:

Die skryf na() funksie gebruik die gegewe data en 'n opsionele koptekst om na 'n uitvoer FITS-lêer te skryf.

Die voeg by () funksie sal die gegewe data en die opsionele opskrif gebruik om by 'n bestaande FITS-lêer aan te voeg. As die gespesifiseerde uitvoerlêer nie bestaan ​​nie, sal dit een skep.

Die Opdateer() funksie sal die gespesifiseerde uitbreiding met die invoerdata / kopstuk opdateer. Die derde argument kan die opskrif wees wat met die data geassosieer word. As die 3de argument nie 'n opskrif is nie, word aanvaar dat dit (en ander posisionele argumente) die uitbreidingspesifikasie (s) is. Kop- en uitbreidingspesifikasies kan ook sleutelwoordargumente wees.

Uiteindelik het die info () funksie sal inligting van die gespesifiseerde FITS-lêer uitdruk:

Dit is een van die handigste geriefsfunksies om 'n oorsig te kry van wat 'n gegewe lêer bevat, sonder om na die besonderhede te kyk.


As u die korrespondensie tussen ster en ster ken¶

estimation_transform van scikit-beeld word gemaklik in astroalign ingevoer.

As u om die een of ander rede weet watter ster ooreenstem met watter ander, kan u estimation_transform noem.

Laat ons veronderstel dat ons die korrespondensie ken:

  • (127.03, 85.98) in bron - & gt (175.13, 111.36) in teiken
  • (23.11, 31.87) in die bron - & gt (0.58, 119.04) in die teiken
  • (98.84, 142.99) in bron - & gt (181.55, 206.49) in teiken
  • (150.93, 85.02) in bron - & gt (205.60, 91.89) in teiken
  • (137.99, 12.88) in bron - & gt (134.61, 7.94) in teiken

Dan kan ons die transformasie skat:

En pas dit toe op 'n afbeelding met Apply_transform of op 'n stel punte met matrix_transform.


Skakel altyd oor na oorspronklike byte-orde met FITS Table.read () # 4069

As u nie-inheemse byte-orde in tabelle het, veroorsaak u 'n aantal probleme wat in # 4034 en # 1156 gedokumenteer is. Ek het net 'n ander vreemde probleem raakgeloop met die skryf van HDF5-lêers met behulp van PyTables.

In # 1156 was daar algemene konsensus dat dit altyd goed sou wees om na oorspronklike byte-omskakeling oor te skakel wanneer Table.read () vir FITS-lêers gebruik word. Die direkte astropy.io.fits-koppelvlak sal beskikbaar wees as die gedrag nie verlang word nie.

@embray het 'n klein kodestukkie verskaf wat die werk moet doen:

Hierdie kwessie is om formeel te besluit om met hierdie plan voort te gaan en dit dan te doen!

Die teks is suksesvol opgedateer, maar hierdie foute is ondervind:

Ons kan op die oomblik nie die taak na 'n probleem omskakel nie. Probeer asseblief weer.

Die probleem is suksesvol geskep, maar ons kan nie die opmerking op die oomblik opdateer nie.

Omhels het 12 Augustus 2015 kommentaar gelewer

Ek dink nie ek is mal oor hierdie idee nie, en ek sal jou vertel hoekom - een ding waarna ek probeer werk, is om die Tafelklas te gebruik as die sool koppelvlak vir FITS-tabelle op alle vlakke. Ja, Table.read () sal steeds werk, maar ook toegang tot die data in 'n FITS HDU sal 'n tabel gee. Daar is geen voordeel daaraan om 'n aparte "lae vlak" koppelvlak te hê wat in elk geval nie baie goed is nie, en dit is 'n pyn om te onderhou (net ook 'n pyn na oorgang).

Om die groot-endian-skikkings direk vanaf die skyf te kan lees, is baie belangrik vir baie toepassings, veral vir groot lêers. Ja, dit is ongemaklik dat FITS groot endian gebruik, maar nou ja. Ek kan nie sien hoe u van plan is om twee verskillende metodes te gebruik om 'n FITS-tabel in 'n tabel-voorwerp te laai nie, waar 'n mens ook al die kolomme in die geheue laai en byteswaps. Ek kan die foutverslag nou sien: "As ek hdu.data doen, kan ek kolomme fyn uit my tabel lees, maar as ek Table.read () gebruik, raak ek geheue op."

Ek dink 'n beter benadering hiertoe is om uit te vind waarom PyTables Numpy-skikkings met groot data nie kan hanteer nie. Aangesien Numpy reeds die nodige inligting verskaf oor endianheid, moet sagteware wat data van Numpy-skikkings inlees, weet wat om te doen met buffers wat nie-oorspronklike waardes bevat. My raaiskoot is dat hulle ook direk na die onderliggende skyfbuffers wil, maar nou ja, hulle moet die skyfbeskrywer nagaan en waardes wat bytes verruil word, in hul eie buffer kopieer. Numpy se API laat dit toe.

Taldcroft het 12 Augustus 2015 kommentaar gelewer

Aan die een kant sien ek u punt daarvan om nie bandhulpmiddels in astropie-tabel toe te pas nie, maar eerder stroomop foute op te los. Aan die ander kant lyk die stroomopwaartse foute wat verband hou met bytevolgorde redelik algemeen en kan dit baie moeilik wees om te diagnoseer. Ek het hierdie probleme per ongeluk by twee afsonderlike geleenthede raakgeloop en dit was albei frustrerend.

Vir die spesifieke geval van PyTables was daar eintlik twee kwessies:

  • Toe ek 'n tabel met gemengde byte-orde gehad het (ek het 'n nuwe kolom by 'n FITS-tabel gevoeg), het PyTables net geweier met 'n boodskap soos 'Sorry, PyTables ondersteun nog nie gemengde byte-bestelling nie'. Op die een of ander manier impliseer dit vir my dat dit nie binnekort met 'n klein pleister reggestel gaan word nie.
  • Toe ek 'n tafel met alle groot-endian's gehad het, het die kode voltooi, maar 'n beskadigde tabel geskryf. Toe ek dieselfde kode gebruik, maar die tabel in alle klein-endian omskakel, was daar geen probleem nie. Ja, ek moet die regte ding doen en 'n probleem aanhangig maak, maar ek het baie gehaas en wou net hê dinge moet werk. Dit is die standaard situasie vir die meeste sterrekundegebruikers.

Daarom dink ek dat daar 'n 'eenvoudige koppelvlak' vir FITS moet wees. As u die hele tabel in die geheue lees, word dit outomaties omgeskakel na oorspronklike orde. In hierdie regime sal dit vreemde foute verminder sonder om 'n groot boete in die optrede te maak.

'N Middelgrond sou 'n tabelmetode soos set_native_byteorder () wees wat kolomme in die plek sou bywerk na oorspronklike byte-volgorde. As u dit reg doen, het dit die voordeel dat elke kolom afsonderlik opgedateer kan word, wat die tydelike toename in geheue vir groot tafels verminder. Ek sal geneig wees om hierdie metode redelik gereeld vir enige produksiekode te gebruik.


Canon / Nikon RAW to FITS?

Ek dink daaraan om AstroImageJ te probeer om fotometrie met DSLR-beelde te doen. Aangesien AstroImageJ nie Canon / Nikon RAW-lêers kan lees nie, moet ek die RAW-lêers omskakel na soveel as moontlik exif-inligting wat in die FIT's-kopstuk geskryf is voordat ek begin. Google wys 'n paar opsies, maar een vereis python, 'n ander Linux, en 'n derde vereis 'n lisensie.

Voordat ek begin, wonder ek of iemand dit gedoen het en insig kan werp.

# 2 hcf

IRIS kan doen wat u wil

# 3 StarmanDan

# 4 S.Boerner

As dit my toekom, sou ek vir mense sê dat hulle pas by SGP, maar ek is op soek na gratis sagteware om die proses aan ander te demonstreer. Ek het nog nooit IRIS gebruik nie, maar ek het gehoor dat ander probleme ondervind om dit vir fotometrie te gebruik.

# 5 han.k

Ek het die probleem 'n paar weke gelede hersien. 'N Uitstekende gratis program vir omskakeling is DCRAW van Dave Coffin by

Windows-uitvoerbare kan gevind word by

Die program kan omskakel na 8-bits FITS, maar ek kon geen werkopsie vind om 16-bits FITS-lêer te skep nie. Aangesien die RAW's 'n resolusie van 12 of 14 bis het, is die 8-bit-omskakeling nie goed nie en sal dit swak resultate lewer. Die omskakeling na 16 bis PGM-lêers werk egter goed.

Die omskakeling na 16 bis PGM-lêers kan met die volgende opdraglyn uitgevoer word:

Hierdie PGM-lêers kan deur AstroimageJ gelees word en gekleur word, en indien nodig in FITS gestoor word.

Ek hoop steeds om in een stap 'n manier te vind om RAW na 16 bit FITS te omskakel. Bogenoemde omskakeling RAW- & gtPGM- & gtFITS is gebou in my eie program ASTAP.

# 6 giorgio_ne

INDI behoort te kan help

# 7 S. Boerner

So far my best solution is rawtran (http://integral.phys. uni.cz/rawtran/), a "wrapper around dcraw developed to produce images in the standard astronomical FITS format by processing of raw (CR2, CRW, MRW, etc.) photos." Rawtran is command line and has a number of interesting options.

Rawtran runs under any Unix-like operating system (all flavors of GNU/Linux and BSD, Solaris, Mac OS X, etc) as such I found that it runs well under Cygwin which was already installed on my laptop for ANSVR (https://adgsoftware.com/ansvr/) a local implementation of Astrometry.net's plate solve.

I did have to build it along with dcraw. FWIW ANSVR also included additional FITs utilities to view and edit fits headers so I can also add the keywords that the Canon exif info omits.


Convert FITS Online

The list shows what formats can convert to FITS and what formats can be converted from FITS. Click on a link below to start a specific conversion.

# Conversion Posisie Type
1 FITS to PDF convert from FITS convert image to document
2 FITS to PNG convert from FITS convert image to image
3 FITS to JPG convert from FITS convert image to image
4 FITS to BMP convert from FITS convert image to image
5 FITS to DDS convert from FITS convert image to image
6 FITS to DIB convert from FITS convert image to image
7 FITS to DPX convert from FITS convert image to image
8 FITS to EPS convert from FITS convert image to image
9 FITS to GIF convert from FITS convert image to image
10 FITS to JP2 convert from FITS convert image to image
11 FITS to JXR convert from FITS convert image to image
12 FITS to PS convert from FITS convert image to image
13 FITS to PSD convert from FITS convert image to image
14 FITS to SVG convert from FITS convert image to image
15 FITS to TGA convert from FITS convert image to image
16 FITS to TIFF convert from FITS convert image to image
17 FITS to WEBP convert from FITS convert image to image
18 FITS to XWD convert from FITS convert image to image
19 FITS to ICO convert from FITS convert image to icon
20 ART to FITS convert to FITS convert image to image
21 PNG to FITS convert to FITS convert image to image
22 JPG to FITS convert to FITS convert image to image
23 RAW to FITS convert to FITS convert image to image
24 BMP to FITS convert to FITS convert image to image
25 CR2 to FITS convert to FITS convert image to image
26 DDS to FITS convert to FITS convert image to image
27 DIB to FITS convert to FITS convert image to image
28 DNG to FITS convert to FITS convert image to image
29 DPX to FITS convert to FITS convert image to image
30 EMF to FITS convert to FITS convert image to image
31 EPS to FITS convert to FITS convert image to image
32 GIF to FITS convert to FITS convert image to image
33 JP2 to FITS convert to FITS convert image to image
34 JXR to FITS convert to FITS convert image to image
35 PS to FITS convert to FITS convert image to image
36 PSD to FITS convert to FITS convert image to image
37 SVG to FITS convert to FITS convert image to image
38 TGA to FITS convert to FITS convert image to image
39 TIFF to FITS convert to FITS convert image to image
40 TTF to FITS convert to FITS convert image to image
41 WEBP to FITS convert to FITS convert image to image
42 XWD to FITS convert to FITS convert image to image
43 DWG to FITS convert to FITS convert image to image
44 CDR to FITS convert to FITS convert image to image
45 AI to FITS convert to FITS convert image to image
46 DXF to FITS convert to FITS convert image to image
47 HEIF to FITS convert to FITS convert image to image
48 HEIC to FITS convert to FITS convert image to image
49 JFIF to FITS convert to FITS convert image to image
50 ICO to FITS convert to FITS convert icon to image
51 CUR to FITS convert to FITS convert icon to image

List of unpopular conversions supported:

Convert from FITS: FITS to AAI, FITS to AVS, FITS to CIN, FITS to CMYK, FITS to CMYKA, FITS to DCX, FITS to EPDF, FITS to EPI, FITS to EPS2, FITS to EPS3 and 49 more conversions.
Convert to FITS: AAI to FITS, AVS to FITS, CALS to FITS, CGM to FITS, CIN to FITS, CMYK to FITS, CMYKA to FITS, CRW to FITS, CUT to FITS, DCM to FITS and 76 more conversions.


Kyk die video: Arduino rgb LED (November 2022).