Script de pré-traitement

L'utilisation et la création des scripts.
Dekelver Pieter-Jan
Messages : 149
Enregistré le : 04 mars 2021, 15:23

Re: Script de pré-traitement

Message par Dekelver Pieter-Jan »

Merci. J'obtiens maintenant une liste "print" sur l'écran du prisme. Essayez maintenant de le convertir en une liste exploitable.

Une question:
Quel script Prism dois-je suivre : celui de "Local Prism Script Help" dans le logiciel V11

Ou : http://www.prism-astro.com/fr/aide/index.html

Quelle est la plus récente ?

Bon,
Je ne comprends pas:
Dans le script suivant, j'obtiens les données sur 1 ligne avec la commande d'impression.
Si je veux en faire une variable au lieu d'une commande d'impression, je n'obtiens rien.

Code : Tout sélectionner

REM Generate filename using fits data. 
GetImage Img
GetDate Img Yr Mo day
STR Yr Yr$
IF Yr<10
	Yr$="0"+Yr$
ENDIF
STR Mo Mo$
IF Mo<10
	Mo$="0"+Mo$
ENDIF	
STR day day$
IF day<10
	day$="0"+day$
ENDIF	
GetTime Img  HR  MM  SS  MS
STR HR HR$
IF HR<10
	HR$="0"+HR$
ENDIF	
STR MM MM$
IF MM<10
	MM$="0"+MM$
ENDIF	
GetExpTime Img ExpTime
ExpTime = ExpTime/1000	
GetFILTER Img Filter$ 
print "" Yr$ "" Mo$ "" day$ "_" HR$ "" MM$ "_" ExpTime "S_-35DEGC_" Filter$ "_1X1_M09"
REM print nfn$
Close Img
résultat:

[20/10/2022 09:17:30.264 UT] 20221011_1930_150S_-35DEGC_SDSS_R'2_1X1_M09
Script Completed...

Et avec

Code : Tout sélectionner

 
REM Generate filename using fits data. 
GetImage Img
GetDate Img Yr Mo day
STR Yr Yr$
IF Yr<10
	Yr$="0"+Yr$
ENDIF
STR Mo Mo$
IF Mo<10
	Mo$="0"+Mo$
ENDIF	
STR day day$
IF day<10
	day$="0"+day$
ENDIF	
GetTime Img  HR  MM  SS  MS
STR HR HR$
IF HR<10
	HR$="0"+HR$
ENDIF	
STR MM MM$
IF MM<10
	MM$="0"+MM$
ENDIF	
GetExpTime Img ExpTime
ExpTime = ExpTime/1000	
GetFILTER Img Filter$ 
nfn$="" Yr$ "" Mo$ "" day$ "_" HR$ "" MM$ "_" ExpTime "S_-35DEGC_" Filter$ "_1X1_M09"
print nfn$
Close Img
Je reçois:
[20/10/2022 09:18:44.373 UT]
Script Completed...
Marc DELDEM
Messages : 1264
Enregistré le : 20 juin 2009, 01:01

Re: Script de pré-traitement

Message par Marc DELDEM »

Salut,

La doc la plus à jour est je pense sur le site web http://www.prism-astro.com/fr/aide/index.html

Ton bug est un bug "classique" sur la concaténation de Strings.
Sur un PRINT tu peux concaténer des chaines avec des espaces entre les chaines de caractères.
Mais sur une variable, il faut utiliser l'opérateur +

Code : Tout sélectionner

firstname$="Marc"

PRINT "Hello" " " firstname$

str$="Hello"+" "+firstname$+", how are you ?"
PRINT str$
Marc
Dekelver Pieter-Jan
Messages : 149
Enregistré le : 04 mars 2021, 15:23

Re: Script de pré-traitement

Message par Dekelver Pieter-Jan »

Merci!

Je comprends ;) . Mais maintenant, j'ai eu une erreur avec le temps d'exposition. Cette valeur de temps est numérique.
Mais j'ai trouvé comment le faire dans les scripts de prisme. Code ci-dessous. :D

Code : Tout sélectionner

GetExpTime Img ExpTime
ExpTime = ExpTime/1000
STR ExpTime Exp$
Alors maintenant, la partie 1 fonctionne complètement : changer le nom des ajustements.

Voici la partie script complète du changement de nom. Si vous avez des commentaires, j'aimerais les entendre.

Code : Tout sélectionner

REM Generate filename using fits data. 
GetImage Img
GetDate Img Yr Mo day
STR Yr Yr$
IF Yr<10
	Yr$="0"+Yr$
ENDIF
STR Mo Mo$
IF Mo<10
	Mo$="0"+Mo$
ENDIF	
STR day day$
IF day<10
	day$="0"+day$
ENDIF	
GetTime Img  HR  MM  SS  MS
STR HR HR$
IF HR<10
	HR$="0"+HR$
ENDIF	
STR MM MM$
IF MM<10
	MM$="0"+MM$
ENDIF	
GETOBJECTNAME Img Name$
GetExpTime Img ExpTime
ExpTime = ExpTime/1000
STR ExpTime Exp$
GetFILTER Img Filter$ 
newname$=""+Yr$+""+Mo$+""+day$+"_"+HR$+""+MM$+"_"+Name$+"_"+Exp$+"S_-35DEGC_"+Filter$+"_1X1_M09"
PRINT newname$
Close Img
Merci!
Marc DELDEM
Messages : 1264
Enregistré le : 20 juin 2009, 01:01

Re: Script de pré-traitement

Message par Marc DELDEM »

Salut,

Tu as la fonction GetTCCD qui permet d'avoir la température du CCD.

Code : Tout sélectionner

GETTCCD Img Temp
Print "Température CCD = " Temp " °C"
Marc
Dekelver Pieter-Jan
Messages : 149
Enregistré le : 04 mars 2021, 15:23

Re: Script de pré-traitement

Message par Dekelver Pieter-Jan »

Merci. :D
J'ai fait beaucoup de progrès dans mon script entre-temps, merci à vous en général ! .

Avec le script suivant, il m'est possible de:

- Chargez les données du "FITS HEADER" et utilisez-les comme nom d'image.
- Changer le nom
- Créez un dossier supplémentaire " PREPROCESS".
- Charger les images d'étalonnage
- calibrer les images.
- Enregistrer les images calibrées dans le dossier "PREPROCESS"

Code : Tout sélectionner

REM AUTO SELECTING FILES

NOW Date
DATETOSTR Date Date$
PRINT "Current date :"Date$"Automated preprocess has started."


dir_ini$="E:\OBSERVATION DATA\STILL TO PROCEED\M09_Opglabbeek\test\"
filtre$="*.fits"
	GETREPDIR dir_ini$ filtre$ sAFileList$ nImageCount
	
For nImage=1 nImageCount
OPEN Img sAFileList[nImage]$
extractfilename sAFileList[nImage]$ oldname$
extractfilepath sAFileList[nImage]$ path$
PRINT sAFileList[nImage]$

REM EXTRACT FITS DATA AND RENAME	

GetDate Img Yr Mo day
STR Yr Yr$
IF Yr<10
	Yr$="0"+Yr$
ENDIF
STR Mo Mo$
IF Mo<10
	Mo$="0"+Mo$
ENDIF	
STR day day$
IF day<10
	day$="0"+day$
ENDIF	
Print "OBSERVATION DATE (UTC): " Yr$ "" Mo$ "" day$ ""
GetTime Img  HR  MM  SS  MS
STR HR HR$
IF HR<10
	HR$="0"+HR$
ENDIF	
STR MM MM$
IF MM<10
	MM$="0"+MM$
ENDIF	
Print "OBSERVATION TIME (UTC): " HR$ "h" MM$ "m"
GETOBJECTNAME Img Name$
PRINT "Observed Object is " Name$ "." 
GetExpTime Img ExpTime
ExpTime = ExpTime/1000
PRINT "Exposure time of the image is " ExpTime " seconds."
STR ExpTime Exp$
GetTCCD Img Temp
PRINT "Actual CCD temperature is " Temp "DEGC."
STR Temp Tmp$
GetFILTER Img Filter$
PRINT "Used filter is " Filter$ "." 
newname$=""+Yr$+""+Mo$+""+day$+"_"+HR$+""+MM$+"_"+Name$+"_"+Exp$+"S_"+Tmp$+"DEGC_"+Filter$+"_1X1_M09"
PRINT newname$

Rename path$+oldname$ path$+newname$+".fits"

REM START PREPROCESS - LOAD CURRENT MASTERS -

MASTER_dir$="E:\OBSERVATION DATA\Additional files\CCD Calibration files\Current files\M09\FLI ML3200ME\"
	ImageMB$=MASTER_dir$+"20220430_MB_0.1S_-35DEGC_1MHZ_1X1_MEAN_M09.fits"
	ImageMF$=MASTER_dir$+"20221009_MF_2.4S_-35DEGC_SDSS_R'2_ESHRCC_1MHZ_1X1_MEAN_M09.fits"
	MD30$=MASTER_dir$+"20220430_MD_30S_-35DEGC_1MHZ_1X1_MEAN_M09.fits"
	MD60$=MASTER_dir$+"20220430_MD_60S_-35DEGC_1MHZ_1X1_MEAN_M09.fits"
	MD90$=MASTER_dir$+"20220430_MD_90S_-35DEGC_1MHZ_1X1_MEAN_M09.fits"
	MD120$=MASTER_dir$+"20220430_MD_120S_-35DEGC_1MHZ_1X1_MEAN_M09.fits" 
	MD150$=MASTER_dir$+"20220430_MD_150S_-35DEGC_1MHZ_1X1_MEAN_M09.fits"
	MD180$=MASTER_dir$+"20220430_MD_180S_-35DEGC_1MHZ_1X1_MEAN_M09.fits"
	MD210$=MASTER_dir$+"20220430_MD_210S_-35DEGC_1MHZ_1X1_MEAN_M09.fits"
	MD240$=MASTER_dir$+"20220430_MD_240S_-35DEGC_1MHZ_1X1_MEAN_M09.fits"
	MD270$=MASTER_dir$+"20220430_MD_270S_-35DEGC_1MHZ_1X1_MEAN_M09.fits"
	MD300$=MASTER_dir$+"20220430_MD_300S_-35DEGC_1MHZ_1X1_MEAN_M09.fits"
	
REM Selecting correct DARK ImageMD$="MD"+Exp$

	OPEN ImgMB ImageMB$
	OPEN ImgMF ImageMF$
	OPEN ImgMD ImageMD$
 	
	PREPROCESS Img ImgMB ImgMD ImgMF 1
	
dir$=path$+"PreProcess"
CreateDir dir$
PreProcess$=path$+"PreProcess\"
savefit Img PreProcess$+"P_"+newname$+".fits"
	
	CLOSE Img
	next nImage
	
    CLOSE ImgMB
	CLOSE ImgMD
	CLOSE ImgMF
Et ceci pour toute la liste des images.

Mais 2 questions/problèmes.

1 : Est-il possible d'ajouter un numéro croissant aux noms des images ? par exemple - 001, 002, 003, etc.
2 : Pour le "MASTERDARK" je souhaite utiliser le noir avec le même temps de pose que la photo. J'ai plusieurs darks et ils sont dans la liste suivante:

Code : Tout sélectionner

REM START PREPROCESS - LOAD CURRENT MASTERS -

MASTER_dir$="E:\OBSERVATION DATA\Additional files\CCD Calibration files\Current files\M09\FLI ML3200ME\"
	ImageMB$=MASTER_dir$+"20220430_MB_0.1S_-35DEGC_1MHZ_1X1_MEAN_M09.fits"
	ImageMF$=MASTER_dir$+"20221009_MF_2.4S_-35DEGC_SDSS_R'2_ESHRCC_1MHZ_1X1_MEAN_M09.fits"
	MD30$=MASTER_dir$+"20220430_MD_30S_-35DEGC_1MHZ_1X1_MEAN_M09.fits"
	MD60$=MASTER_dir$+"20220430_MD_60S_-35DEGC_1MHZ_1X1_MEAN_M09.fits"
	MD90$=MASTER_dir$+"20220430_MD_90S_-35DEGC_1MHZ_1X1_MEAN_M09.fits"
	MD120$=MASTER_dir$+"20220430_MD_120S_-35DEGC_1MHZ_1X1_MEAN_M09.fits" 
	MD150$=MASTER_dir$+"20220430_MD_150S_-35DEGC_1MHZ_1X1_MEAN_M09.fits"
	MD180$=MASTER_dir$+"20220430_MD_180S_-35DEGC_1MHZ_1X1_MEAN_M09.fits"
	MD210$=MASTER_dir$+"20220430_MD_210S_-35DEGC_1MHZ_1X1_MEAN_M09.fits"
	MD240$=MASTER_dir$+"20220430_MD_240S_-35DEGC_1MHZ_1X1_MEAN_M09.fits"
	MD270$=MASTER_dir$+"20220430_MD_270S_-35DEGC_1MHZ_1X1_MEAN_M09.fits"
	MD300$=MASTER_dir$+"20220430_MD_300S_-35DEGC_1MHZ_1X1_MEAN_M09.fits"
	
REM Selecting correct DARK ImageMD$="MD"+Exp$

	OPEN ImgMB ImageMB$
	OPEN ImgMF ImageMF$
	OPEN ImgMD ImageMD$
 	
	PREPROCESS Img ImgMB ImgMD ImgMF 1
Maintenant, je veux calculer le temps des images, le convertir en variable ?, puis utiliser cette variable pour rechercher la bonne sélection sombre.
Est-ce possible? Je n'y arrive pas pour le moment.

Bon week-end.
Marc DELDEM
Messages : 1264
Enregistré le : 20 juin 2009, 01:01

Re: Script de pré-traitement

Message par Marc DELDEM »

Salut,
Dekelver Pieter-Jan a écrit : 22 oct. 2022, 07:12 1 : Est-il possible d'ajouter un numéro croissant aux noms des images ? par exemple - 001, 002, 003, etc.
Je ne vois pas bien ce qui te pose problème.

Code : Tout sélectionner

newname$=""+Yr$+""+Mo$+""+day$+"_"+HR$+""+MM$+"_"+Name$+"_"+Exp$+"S_"+Tmp$+"DEGC_"+Filter$+"_1X1_M09"
Il suffit d'ajouter à la fin du nom le compteur que tu souhaites.

Code : Tout sélectionner

For nImage=1 nImageCount
	// ...
	newname$=""+Yr$+""+Mo$+""+day$+"_"+HR$+""+MM$+"_"+Name$+"_"+Exp$+"S_"+Tmp$+"DEGC_"+Filter$+"_1X1_M09"
	
	STR nImage sCounter$
	IF nImage<10
		sCounter$="00"+sCounter$
	ELSE
		IF nImage<100
		sCounter$="0"+sCounter$
		ENDIF
	ENDIF
	
	newname$=newname$+"-"+sCounter$
	PRINT newname$
next nImage
Dekelver Pieter-Jan a écrit : 22 oct. 2022, 07:12 2 : Pour le "MASTERDARK" je souhaite utiliser le noir avec le même temps de pose que la photo. J'ai plusieurs darks et ils sont dans la liste suivante:
Tu as le temps de pose de ton image.
Tu as défini en dur les images des noirs maitres en fonction du temps de pose.
Il suffit juste de faire des tests. Là j'ai commencé, à toi de finir et de bien prévoir un ELSE final pour bien avoir un fichier Maitre noir dans tous les cas

Code : Tout sélectionner

MASTER_dir$="E:\DATA\"
MD30$=MASTER_dir$+"20220430_MD_30S_-35DEGC_1MHZ_1X1_MEAN_M09.fits"
MD60$=MASTER_dir$+"20220430_MD_60S_-35DEGC_1MHZ_1X1_MEAN_M09.fits"
MD90$=MASTER_dir$+"20220430_MD_90S_-35DEGC_1MHZ_1X1_MEAN_M09.fits"
MD120$=MASTER_dir$+"20220430_MD_120S_-35DEGC_1MHZ_1X1_MEAN_M09.fits" 
MD150$=MASTER_dir$+"20220430_MD_150S_-35DEGC_1MHZ_1X1_MEAN_M09.fits"
MD180$=MASTER_dir$+"20220430_MD_180S_-35DEGC_1MHZ_1X1_MEAN_M09.fits"
MD210$=MASTER_dir$+"20220430_MD_210S_-35DEGC_1MHZ_1X1_MEAN_M09.fits"
MD240$=MASTER_dir$+"20220430_MD_240S_-35DEGC_1MHZ_1X1_MEAN_M09.fits"
MD270$=MASTER_dir$+"20220430_MD_270S_-35DEGC_1MHZ_1X1_MEAN_M09.fits"
MD300$=MASTER_dir$+"20220430_MD_300S_-35DEGC_1MHZ_1X1_MEAN_M09.fits"

IF ExpTime<45
	ImageMD$=MD30$
ELSE
	IF ExpTime<75
		ImageMD$=MD60$
	ELSE
		IF ExpTime<105
			ImageMD$=MD90$
		ENDIF
	ENDIF
ENDIF

PRINT ImageMD$

Marc
Dekelver Pieter-Jan
Messages : 149
Enregistré le : 04 mars 2021, 15:23

Re: Script de pré-traitement

Message par Dekelver Pieter-Jan »

Merci encore!

Tout fonctionne très bien maintenant :).
Je voudrais également une copie des masters dans le dossier actuel.

J'ai eu la fonction de copie qui ne fonctionnait pas, j'ai donc utilisé la fonction savefit et maintenant les masters sont également enregistrés dans le dossier actuel. C'est ainsi que je travaille toujours, que j'ai les bons masters avec les bons originaux.

Code : Tout sélectionner

PRINT "Saving used MASTERS"
ExtractFileName ImageMB$ MBName$
savefit ImgMB path$+MBName$
PRINT MBName$
ExtractFileName ImageMD$ MDName$
savefit ImgMD path$+MDName$
PRINT MDName$
ExtractFileName ImageMF$ MFName$
savefit ImgMF path$+MFName$
PRINT MFName$
Dekelver Pieter-Jan
Messages : 149
Enregistré le : 04 mars 2021, 15:23

Re: Script de pré-traitement

Message par Dekelver Pieter-Jan »

J'ai créé un script "MASTER" et un script "preprocess" référencés selon le manuel PRISM.

Code : Tout sélectionner

PRINT "###### MASTER script has started. ######"


INCLUDESCRIPT "PREPROCESS.pgm" Rename:

INCLUDESCRIPT "PREPROCESS.pgm" Substract:

INCLUDESCRIPT "PREPROCESS.pgm" Gradient:

PRINT "End of script"
Tout cela fonctionne maintenant correctement. Tout cela pour 1 dossier.
MAIS (Il y a toujours un mais...) :D :D
Est-ce aussi possible avec plusieurs dossiers ?
Donc dossier principal contenant 7 observations de comètes d'une nuit. Le sous-dossier est créé par PRISM lui-même avec le nom de la comète.
Puis-je ajuster mon script de manière à ce qu'il fasse dossier par dossier ?

Merci.
Marc DELDEM
Messages : 1264
Enregistré le : 20 juin 2009, 01:01

Re: Script de pré-traitement

Message par Marc DELDEM »

Salut,

INCLUDESCRIPT va chercher le script dans un répertoire défini dans Prism. Il ne peut pas y avoir plusieurs répertoires pour INCLUDESCRIPT

Marc
Dekelver Pieter-Jan
Messages : 149
Enregistré le : 04 mars 2021, 15:23

Re: Script de pré-traitement

Message par Dekelver Pieter-Jan »

ok, donc si je travaille sans script d'inclusion et que je garde mon script de prétraitement comme 1 script, est-il possible de traiter différents répertoires ?
Répondre