format CPA pour analyse Python

L'analyse des images.
Répondre
Thomas Bexant
Messages : 105
Enregistré le : 13 févr. 2012, 13:22

format CPA pour analyse Python

Message par Thomas Bexant »

Bonjour,
Depuis 10 années de prises de vue avec Prism, j'ai quelques tonnes de fichiers dans ma besace. Du bon et du moins bon.
Je voudrais travailler en lot et analyser toutes ces séances et bidouiller avec les données que l'on trouve notamment dans les entêtes. J'ai bossé sur les fichiers cpa natifs et ceux transformés en fits mais on ne retrouve pas toute les infos en format FITS "légal". Celle qui m'intéresse sont celles qui s'affiche quans on affiche les infos de l'image ouverte sous prism.
Y a t-il quelque part moyen d'avoir la structure du fichier pour retrouver les infos sur chaque image ?
Merci d'avance.
Thomas Bexant
10micron 1000 - Newthom 250 F/4
Nomade du Nord
Marc DELDEM
Messages : 1265
Enregistré le : 20 juin 2009, 01:01

Re: format CPA pour analyse Python

Message par Marc DELDEM »

Salut Thomas,

Qu'est ce qu'il te manquerait dans l'entête FITS pour tes besoins ?

Marc
Thomas Bexant
Messages : 105
Enregistré le : 13 févr. 2012, 13:22

Re: format CPA pour analyse Python

Message par Thomas Bexant »

Bonjour Marc,
Quand je bosse sur un Fits type NASA ou autre : j'ai pas mal de données genre ça (fichier un peu vide mais c’est pour l'exemple des champs):


Filename: image.fits
No. Name Ver Type Cards Dimensions Format
0 PRIMARY 1 PrimaryHDU 7 ()
1 1 TableHDU 36 10R x 7C [E14.7, E14.7, E14.7, E14.7, E14.7, E14.7, E14.7]
SIMPLE = T / STANDARD FITS FORMAT (REV OCT 1981) BITPIX = 8 / CHARACTER INFORMATION NAXIS = 0 / NO IMAGE DATA ARRAY PRESENT EXTEND = T / THERE IS AN EXTENSION ORIGIN = 'ESO ' / EUROPEAN SOUTHERN OBSERVATORY OBJECT = 'SNG - CAT. ' / THE IDENTIFIER DATE = '27/ 5/84' / DATE THIS TAPE WRITTEN DD/MM/YY END XTENSION= 'TABLE ' / TABLE EXTENSION BITPIX = 8 / CHARACTER INFORMATION NAXIS = 2 / SIMPLE 2-D MATRIX NAXIS1 = 98 / NO. OF CHARACTERS PER ROW NAXIS2 = 10 / NO. OF ROWS PCOUNT = 0 / RANDOM PARAMETER COUNT GCOUNT = 1 / GROUP COUNT TFIELDS = 7 / NO. OF FIELDS PER ROW TTYPE1 = 'IDEN. ' / NAME OF ROW TBCOL1 = 1 / BEGINNING COLUMN OF THE FIELD TFORM1 = 'E14.7 ' / FORMAT TNULL1 = ' ' / NULL VALUE TTYPE2 = 'RA ' / NAME OF ROW TBCOL2 = 15 / BEGINNING COLUMN OF THE FIELD TFORM2 = 'E14.7 ' / FORMAT TNULL2 = ' ' / NULL VALUE TTYPE3 = 'DEC ' / NAME OF ROW TBCOL3 = 29 / BEGINNING COLUMN OF THE FIELD TFORM3 = 'E14.7 ' / FORMAT TNULL3 = ' ' / NULL VALUE TTYPE4 = 'TYPE ' / NAME OF ROW TBCOL4 = 43 / BEGINNING COLUMN OF THE FIELD TFORM4 = 'E14.7 ' / FORMAT TNULL4 = ' ' / NULL VALUE TTYPE5 = 'D25 ' / NAME OF ROW TBCOL5 = 57 / BEGINNING COLUMN OF THE FIELD TFORM5 = 'E14.7 ' / FORMAT TNULL5 = ' ' / NULL VALUE TTYPE6 = 'INCL. ' / NAME OF ROW TBCOL6 = 71 / BEGINNING COLUMN OF THE FIELD TFORM6 = 'E14.7 ' / FORMAT TNULL6 = ' ' / NULL VALUE TTYPE7 = 'RV ' / NAME OF ROW TBCOL7 = 85 / BEGINNING COLUMN OF THE FIELD TFORM7 = 'E14.7 ' / FORMAT TNULL7 = ' ' / NULL VALUE END




Côté fits converti à partir d'un cpa Prism, j'ai :
SIMPLE = T /FITS header BITPIX = -32 /No.Bits per pixel NAXIS = 2 /No.dimensions NAXIS1 = 2744 /Length X axis NAXIS2 = 1836 /Length Y axis DATE = '2020-04-01T14:12:21.207100' /Date of FITS file creation SWCREATE= 'PRISM, Version 10.3.67.516, 21/03/2020' /Software Name and versionORIGIN = 'saveuse ' /Origin place of FITS image OBSERVER= 'T Bexant ' /Observer name SITELAT = '+49:53:57:00 ' /Latitude observatory SITELONG= '+02:13:02:00 ' /Longitude observatory DATE-OBS= '2020-04-01T01:43:56.995200' /UT date of Observation UT = '01:43:56.99 ' /UT begining of observation EXPOSURE= 4500.00000 /Exposure time seconds XPIXELSZ= 4.80 /X pixel size microns CDELTM1 = 4.79999999999999958E-003 /Size of a pixel (x) in mm XPIXSZ = 4.8 /X Binned pixel size as microns YPIXELSZ= 4.80 /Y pixel size microns CDELTM2 = 4.79999999999999958E-003 /Size of a pixel (y) in mm YPIXSZ = 4.8 /X Binned pixel size as microns INSTRUME= 'ZWO ASI183MM Pro ' /Camera which created data FILTERS = 'L ' /Filters CVF = 5.000 /Conversion factor (e-/adu) READOUTT= 0.06 /Image readout time (sec) X1 = 1 /X1 image windowing Y1 = 1 /Y1 image windowing X2 = 5496 /X2 image windowing Y2 = 3672 /Y2 image windowing COMPRESS= 0 /Number of compression TELESCOP= 'NEWTHOM ' /Telescope FOCAL = 1004.0 /Focal length in mm DIAMETER= 250.0 /Diameter in mm OBJCTRA = '14 03 12.625 ' /Object Right Ascension (J2000) OBJCTDEC= '+54 21 01.24 ' /Object Declinaison (J2000) RA = 2.10802605296761669E+002 /Telescope RA DEC = 5.43503471219737975E+001 /Telescope DEC POSTN-RA= 2.10802605296761669E+002 /Telescope RA POSTN-DE= 5.43503471219737975E+001 /Telescope DEC CRVAL1 = 2.10802605296761669E+002 /approx coord. in RA CRVAL2 = 5.43503471219737975E+001 /approx coord. in DEC CDELT1 = 1.36962022740174944E-004 /ScaleX in deg/pix CDELT2 = 1.36962022740174944E-004 /ScaleY in deg/pix DATAMAX = 569876.00 /Maximum data value DATAMIN = 492946.00 /Minimum data value PIERSIDE= 'EAST ' /Side of the tube wrt to Pier CCD-TEMP= -20.0 /CCD temperature as Celsius degrees FOCUSPOS= 3.364 /Focuser position as mm FOCUSTMP= -1.3 /Focuser temperature as Celsius degrees BITCAMPX= 16 /Native camera dynamic in bits per pixel STACKNB = 1 /Amount of stacked images STARCNT = 0 /Amount of extracted stars GAIN_ELE=




Mais en CPA j'ai :

üáÁM ¸
, nmm¡¥@ °—@ 2­·Áqå@ Lí@NEWTHOM T Bexant ZWO ASI183MM Pro B saveuse `@GOÐ"L@Ä“â³JZê? 333333@333333@ x X à…@ ‰@ @o@ @ 4À y­¦¤sÞë?☣3У¿ €O@ '<¬? ‘"ÊÕ~Þ@ ð?%PRISM Version 10.3.67.516 21/03/2020 TW>Ëóà
@ d¹@{®Gáz„?


En fait je voudrais éviter de convertir tous mes cpa en fits pour avoir accès aux en-tête... je cherche donc une piste pour décoder directement.
Thomas Bexant
10micron 1000 - Newthom 250 F/4
Nomade du Nord
Marc DELDEM
Messages : 1265
Enregistré le : 20 juin 2009, 01:01

Re: format CPA pour analyse Python

Message par Marc DELDEM »

Salut Thomas,

Je ne comprends pas bien ton problème.

Si je peux exposer mon expérience.
Je gère tout au niveau de Prism et les acquisitions sont en CPA.
Mais j'utilise énormément d'autres logiciels spécialisés, qui eux, ont besoin du FITS.
Donc j'utilise massivement la conversion par lot de Prism CPA > FITS (Touche F2 ou menu Fichier / Conversion de format de fichiers par lot. Avant cette fonction j'avais même un script Prism pour faire ça).

Un truc à savoir: si tu fais une calibration astrométrique des images CPA, la conversion en FITS conserve la calibration et tu peux ouvrir le fichier FITS dans Aladin par exemple et le fichier est parfaitement calibré en astrométrie donc aucun problème pour ensuite sélectionner les catalogues souhaités sur Aladin.

Les points plus délicats sont:
1) Dans le fichier FITS, c'est l'heure de début de pose qui est encodé dans l'entête. Donc attention en fonction du logiciel externe que tu utilises si la datation est importante (on peut si besoin modifier par script Prism par lot des entêtes FITS, j'ai posté un message à ce sujet récemment sur le forum).
2) Pour certaines propriétés, il n'y a pas de mot clé défini par une norme/spécification. Par exemple le temps de pose peut être EXPOSURE (c'est le cas pour Prism) mais aussi EXPTIME. Donc en fonction du logiciel externe utilisé, soit le logiciel permet de configurer la recherche du mot clé dans l'entête, soit il faut modifier l'entête FITS pour coller au besoin du logiciel externe.

Cela ne sert à rien de faire les acquisitions directement en FITS, les problèmes ci-dessus seront les mêmes.
En revanche une fois finie l'utilisation des FITS, tu peux les supprimer de ton disque dur pour un gain de place et ne conserver que les images CPA.

Enfin, il existe dans Prism quelque part la documentation du format CPA. Donc rien n'empêcherait de faire du code Python qui convertirait à la volée du CPA en FITS. Mais je ne vois pas bien l'intérêt car de toute manière, les librairies python ont besoin de fichiers FITS. A moins d'arriver à gérer la conversion dans un flux mémoire et de passer ce flux mémoire aux fonctions Python (mais les fonctions Python ont probablement des interfaces avec des chemins de fichiers vers du FITS plutôt que des interfaces avec des flux/stream mémoire, mais à voir).

Sinon par script Prism tu peux obtenir toutes les informations contenues dans une image CPA. Il y a un paquet de fonctions pour faire ça.

Marc
Thomas Bexant
Messages : 105
Enregistré le : 13 févr. 2012, 13:22

Re: format CPA pour analyse Python

Message par Thomas Bexant »

Merci Beaucoup Marc c'est très instructif.
D'après ton expérience, mieux vaudrait que je commence par une lecture/préparation des fichiers via un script et après un traitement par un logiciel tiers.
Je vais regarder ça et éviter de passer du temps sur le décorticage des fichiers CPA et utiliser les outils existants.
Bon cieux !
Thomas Bexant
10micron 1000 - Newthom 250 F/4
Nomade du Nord
Jean-paul GODARD
Messages : 105
Enregistré le : 22 sept. 2010, 17:44

Re: format CPA pour analyse Python

Message par Jean-paul GODARD »

Bonjour Messieurs,
je cherchais le mot clé "Python" et je suis tombé sur votre fil....

1 @Marc: est ce que tu sous-entends que les scripts Prism imposent de-facto du CPA, car les fonctions ne sont pas disponibles pour FITS??

2 @Thomas: Puis-je reformuler ta demande en parlant d'une mise en base de données (SQL, tableur?, CSV) de tous les contenus des entêtes d'images que tu as pour "revue à plat" de tes avoirs... Est ce ça?

Amitiés
JPG
Jean-Paul GODARD
Associations AT60 , OATBL , Uranoscope, Planète-Sciences TJMS
Marc DELDEM
Messages : 1265
Enregistré le : 20 juin 2009, 01:01

Re: format CPA pour analyse Python

Message par Marc DELDEM »

Salut Jean-Paul,

Non les scripts Prism fonctionnent que tu charges une image CPA ou une image FITS.
Par contre, si ton image FITS ne vient pas de Prism, il faut faire attention à certaines choses, comme l'heure de datation (est-ce le début, milieu, fin de pose) ? Les mots clés dans l'entête FITS c'est aussi un peu le bazar car il n'y a pas une spécification complète. Donc là encore si tu importes une image FITS qui vient d'ailleurs dans Prism, certains mots clés peuvent ne pas être bien interprétés. Par exemple le champ pour le filtre, ou encore le temps d'exposition.

Marc
Répondre