Script de pré-traitement

L'utilisation et la création des scripts.
Marc DELDEM
Messages : 1264
Enregistré le : 20 juin 2009, 01:01

Re: Script de pré-traitement

Message par Marc DELDEM »

Je ne suis pas sûr de bien comprendre ton besoin.

La commande INCLUDESCRIPT permet d'appeler dans un script d'autres scripts. La seule contrainte c'est que ces scripts appelés via INCLUDESCRIPT soient tous dans un seul et même répertoire qui est configuré dans Prism.
Cette possibilité est intéressante quand tu écris plusieurs scripts, qui vont utiliser des traitements communs. Tu mets dans un "sous-script" le traitement commun et dans chacun des scripts, tu appelles le traitement commun via INCLUDESCRIPT.

Maintenant, dans ta question, tu parles de dossier. Mais je ne comprends pas bien ce que tu mets dans tes dossiers.
Ton script fait du prétraitement et du renommage.
Donc tu as un ou plusieurs répertoires qui vont contenir les fichiers maitres pour l'Offset, le Dark (Noir) et le Flat (PLU).
Puis tu auras a priori un ou plusieurs répertoires pour tes images à traiter.

Si ton idée est de dupliquer ton script juste pour changer le répertoire le répertoire de travail, ce n'est pas très intéressant.
Dans ce cas, autant ajouter à ton script une interface utilisateur dans laquelle tu vas pouvoir indiquer à ton script le répertoire de travail à utiliser.

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

Re: Script de pré-traitement

Message par Dekelver Pieter-Jan »

Oubliez ce que j'ai dit à propos de "INCLUDESCRIPT". Maintenant, je n'ai plus qu'un seul script, avec tout ce que je veux, que je peux appliquer à un dossier.
Mais est-il possible d'appliquer ce script à n'importe quel dossier sans intervention ?
Voir l'image du dossier principal, avec les sous-dossiers.
folders.jpg
Et voici le code complet pour l'instant pour 1 dossier.
(L'ini-dir ne correspond en effet pas à l'image, mais l'image est à titre d'exemple uniquement.)

Code : Tout sélectionner

REM PREPROCESS Script 20221024_V00.6

Now  year  month  day  hour  minute  second  millisecond
PRINT "MASTER SCRIPT (20221024_V00.6)"
PRINT "Current date " Year "/" Month "/" Day
PRINT "at " hour ":" minute ":" Second "," millisecond "( Universal Time ! )"
PRINT "###### Automated rename has started. ######"

REM DIR_INI IMPORTANCE!

///////////////////////////////////////////////////////////////////////////////
dir_ini$="E:\OBSERVATION DATA\STILL TO PROCEED\M09_Opglabbeek\OBS_SERVER\"
//////////////////////////////////////////////////////////////////////////////

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 "- - - - - - ! NEW IMAGE SELECTING ! - - - - - -"
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	
STR SS SS$
IF SS<10
	SS$="0"+SS$
ENDIF
Print "OBSERVATION TIME (UTC): " HR$ "h" MM$ "m" SS$ "s"
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$ "." 
STR nImage sCounter$
	IF nImage<10
		sCounter$="00"+sCounter$
	ELSE
		IF nImage<100
		sCounter$="0"+sCounter$
		ENDIF
	ENDIF

newname$=""+Yr$+""+Mo$+""+day$+"_"+HR$+""+MM$+""+SS$+"_"+Name$+"_"+Exp$+"S_"+Tmp$+"DEGC_"+Filter$+"_1X1_M09_"+sCounter$+""
PRINT newname$

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

PRINT "###### Automated substraction has started. ######"

GetExpTime Img ExpTime
ExpTime = ExpTime/1000
PRINT "Exposure time of the image is " ExpTime " seconds."
STR ExpTime Exp$

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"
	
IF ExpTime<45
	ImageMD$=MD30$
ELSE
	IF ExpTime<75
		ImageMD$=MD60$
	ELSE
		IF ExpTime<105
			ImageMD$=MD90$
		ELSE
			IF ExpTime<135
				ImageMD$=MD120$
			ELSE
				IF ExpTime<165
					ImageMD$=MD150$
				ELSE
					IF ExpTime<195
						ImageMD$=MD180$
					ELSE
						IF ExpTime<225
							ImageMD$=MD210$
						ELSE
							IF ExpTime<255
								ImageMD$=MD240$
							ELSE
								IF ExpTime<285
									ImageMD$=MD270$
								ELSE
									ImageMD$=MD300$
								ENDIF
							ENDIF
						ENDIF
					ENDIF
				ENDIF
  			ENDIF
		ENDIF
	ENDIF
ENDIF

PRINT "Used MASTERDARK is " ImageMD$ "."

	OPEN ImgMB ImageMB$
	OPEN ImgMF ImageMF$
	OPEN ImgMD ImageMD$
 	
	PREPROCESS Img ImgMB ImgMD ImgMF 1
	
dir_m$=path$+"PreProcess"
CreateDir dir_m$
PreProcess$=path$+"PreProcess\"
savefit Img PreProcess$+"P_"+newname$
	
	CLOSE Img
	next nImage

REM SAVE CURRENT MASTERS.

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$

    CLOSE ImgMB
	CLOSE ImgMD
	CLOSE ImgMF
	
PRINT "###### Automated SkyBackGround Gradient Substratcion has started. ######"

REM AUTO SELECTING FILES

dir_sky$=dir_ini$+"PreProcess"
filtre$="*.fits"
	GETREPDIR dir_sky$ filtre$ sAFileList$ nImageCount
	
For nImage=1 nImageCount
OPEN Img sAFileList[nImage]$
extractfilename sAFileList[nImage]$ newname$
extractfilepath sAFileList[nImage]$ path$
PRINT sAFileList[nImage]$

DEFLAT_SKY_BKGND Img 32148 2

dir_skyb$=dir_ini$+"SkyBack"
CreateDir dir_skyb$
SkyBack$=dir_ini$+"SkyBack\"
savefit Img SkyBack$+"S_"+newname$
	
	CLOSE Img
	next nImage

end
Que pensez-vous est le meilleur? 1 grand dossier avec toutes les images qui sont ensuite placées dans un dossier correct par le script ?
Ce sont des dossiers contenant des sous-dossiers.
ou similaire ci-dessus et commencez avec déjà une subdivision faite par PRISM Automatisering.
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 : 24 oct. 2022, 21:24 Mais est-il possible d'appliquer ce script à n'importe quel dossier sans intervention ?
Tu n'as à mon avis que 2 solutions:

Solution 1:
Tu ajoutes dans ton script une interface utilisateur pour permettre la sélection d'un répertoire des images à traiter.

Solution 2:
Tu mets en place une structure de dossiers qui permet de faire le choix automatiquement.
Exemple:
.\Working_Directory\
.\Working_Directory\To_be_processed\
.\Working_Directory\Object_1\
.\Working_Directory\Object_2\
.\Working_Directory\Object_3\

Dans le répertoire To_be_processed tu mets tes images brutes que ton script va traiter.
A la fin du traitement, les images brutes et les images traitées doivent être mises dans le répertoire Object_1 pour l'objet 1, dans le répertoire Object_2 pour l'objet 2 et ainsi de suite.

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

Re: Script de pré-traitement

Message par Dekelver Pieter-Jan »

Merci beaucoup. J'ai en fait complètement révisé mon script et ça marche maintenant ! J'ai toutes les images placées dans 1 dossier tout en observant. Après le script, chaque image est dans le bon dossier etc etc. Le seul truc c'est que la numérotation continue dans les dossiers, mais bon, pas de problème.
À la fin du script, un fichier bat est ouvert qui déplace toutes les images de ce dossier vers un serveur.
Le seul problème que j'ai encore est que j'essaie de m'assurer que les masters ne sont pas enregistrés dans le dossier à chaque fois. J'essaie d'utiliser la fonction fileexist, mais cela ne fonctionne tout simplement pas très bien. "IF - ELSE - ENDIF"

Je soupçonne une transition de Boolean à Variable ou Integer quelque part ....

Voici ce morceau de code :

Code : Tout sélectionner

ExtractFileName ImageMB$ MBName$
CheckMB$=path$+foldername$+"\"+MBName$
FileExists CheckMB$ YesNo$
If YesNo$="Yes" then
savefit ImgMB path$+foldername$+"\"+MBName$
PRINT CheckMB$
PRINT "ImageMB file does not exists: saved to object directory"
Else
"PRINT "ImageMB file exists"
ENDIF
PRINT MBName$
Marc DELDEM
Messages : 1264
Enregistré le : 20 juin 2009, 01:01

Re: Script de pré-traitement

Message par Marc DELDEM »

Tu as une coquille sur la fonction FileExists, elle retourne un boolean, pas une string:

Code : Tout sélectionner

FILEEXISTS UserFullFilename$ YesNo
IF YesNo=FALSE
	// File is NOT existing
ELSE
	// File is existing
ENDIF
Marc
Dekelver Pieter-Jan
Messages : 149
Enregistré le : 04 mars 2021, 15:23

Re: Script de pré-traitement

Message par Dekelver Pieter-Jan »

Mais bien sûr... Stupide de ma part. Merci.
Tout fonctionne parfaitement maintenant ! :)
Maintenant je peux lancer le script suivant : post-processing.
Dekelver Pieter-Jan
Messages : 149
Enregistré le : 04 mars 2021, 15:23

Re: Script de pré-traitement

Message par Dekelver Pieter-Jan »

Bonjour,

Quel est le code pour interroger de quel côté de la jetée se trouvait le télescope dans le "FITS HEADER"
Je ne le trouve pas dans le livre d'aide sur les scripts.
Je veux donc lire le pierside qui se trouve dans le "FITS HEADER". Est-ce possible?

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

Re: Script de pré-traitement

Message par Marc DELDEM »

Bonsoir,

Regarde la fonction:

Code : Tout sélectionner

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

Re: Script de pré-traitement

Message par Dekelver Pieter-Jan »

Merci! Mon miroir de télescope est actuellement mesuré, j'ai donc un peu de temps pour écrire des scripts. :)
Est-il aussi possible d'ajouter du texte à une image en mode script ? Cela aiderait encore beaucoup mon automatisation. :)
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 : 05 nov. 2022, 17:29 Est-il aussi possible d'ajouter du texte à une image en mode script ?
Regarde la fonction

Code : Tout sélectionner

WRITETEXT
Marc
Répondre