m27trognondepomme Posté 21 août 2020 Posté 21 août 2020 (modifié) Bonjour, je viens de créer une librairie python étendant les capacités de script de SiriL. Elle se nomme "pySiril" et s'adresse aux personnes qui écrivent des scripts Siril et qui sont obligées de jongler avec des shells (ou bat sous windows). Elle permet dans un script Python d'appeler les commandes de SiriL. Elle offre donc : la possibilité de faire des tests et boucles ( if, else , for ... ) la possibilité de créer facilement des fonctions la possibilité de récupérer les valeurs retournées par des fonctions telles que stat, bg, cdg, bgnoise ... Cette librairie fonctionne sous les 3 OS : Windows , Linux et MAC OS ( à tester). Elle est disponible : https://gitlab.com/free-astro/pysiril/-/releases L'installation se fait en tapant : python -m pip install pysiril-0.0.4-py3-none-any.whl Et pour désinstaller la version précédente: python -m pip uninstall pysiril Astronomicalement, M27 trognon de pomme Un premier exemple récupérant les infos de quelques fonction de SiriL: import sys import os from pysiril.siril import * from pysiril.wrapper import * from pysiril.addons import * # ============================================================================== # Example of functions which return values # ============================================================================== app=Siril() try: cmd=Wrapper(app) fct=Addons(app) #app.Display(bLog=True,bInfo=False) #app.MuteSiril(True) app.Open() if sys.platform.startswith('win32'): app.Execute("cd 'D:/_TraitAstro/20-SiriL/work/TestSirilMono'") app.Execute("load result") app.Execute("load 'D:/_TraitAstro/20-SiriL/work/M101/M101_c.fit'") else: app.Execute("cd '/home/barch/siril/work'") app.Execute("load M31_DSLR") if False : cmd.help() cmd.help("stat") cmd.help("xxx") print("BG:" ,cmd.bg()) print("BGNOISE:" ,cmd.bgnoise()) print("STAT:" ,cmd.stat()) print("CDG:" ,cmd.cdg()) print("ENTROPY:" ,cmd.entropy()) app.Script("basic.ssf") except Exception as e : print("\n**** ERROR *** " + str(e) + "\n" ) app.Close() del app un second exemple de traitement: import sys import os from pysiril.siril import * from pysiril.wrapper import * from pysiril.addons import * # ============================================================================== # EXAMPLE DSLR with a functions wrapper # ============================================================================== def master_bias(bias_dir, process_dir): cmd.cd(bias_dir ) cmd.convert( 'bias', out=process_dir, fitseq=True ) cmd.cd( process_dir ) cmd.stack( 'bias', type='rej', sigma_low=3, sigma_high=3, norm='no') def master_flat(flat_dir, process_dir): cmd.cd(flat_dir ) cmd.convert( 'flat', out=process_dir, fitseq=True ) cmd.cd( process_dir ) cmd.preprocess( 'flat', bias='bias_stacked' ) cmd.stack( 'pp_flat', type='rej', sigma_low=3, sigma_high=3, norm='mul') def master_dark(dark_dir, process_dir): cmd.cd(dark_dir ) cmd.convert( 'dark', out=process_dir, fitseq=True ) cmd.cd( process_dir ) cmd.stack( 'dark', type='rej', sigma_low=3, sigma_high=3, norm='no') def light(ligth_dir, process_dir): cmd.cd(ligth_dir) cmd.convert( 'light', out=process_dir, fitseq=True ) cmd.cd( process_dir ) cmd.preprocess( 'light', dark='dark_stacked', flat='pp_flat_stacked', cfa=True, equalize_cfa=True, debayer=True ) cmd.register( 'pp_light') cmd.stack( 'r_pp_light', type='rej', sigma_low=3, sigma_high=3, norm='addscale', output_norm=True, out='../result') cmd.close() # ============================================================================== # run Siril Dev app=Siril("C:/awin/msys64/mingw64/bin/siril.exe", False) workdir = "D:/_TraitAstro/20-SiriL/work/TestSiril" try: cmd=Wrapper(app) app.Open() process_dir = '../process' cmd.set16bits() cmd.setext('fit') master_bias(workdir+ '/biases' ,process_dir) master_flat(workdir+ '/flats' ,process_dir) master_dark(workdir+ '/darks' ,process_dir) light( workdir+ '/lights' ,process_dir) except Exception as e : print("\n**** ERROR *** " + str(e) + "\n" ) app.Close() del app Modifié 23 août 2020 par m27trognondepomme ** mise à jour pysiril-0.0.4-py3-none-any.whl *** 2
m27trognondepomme Posté 21 août 2020 Auteur Posté 21 août 2020 Le même exemple mais écrit d'une autre façon ( ça permet une certaine souplesse d'écriture ) import sys import os from pysiril.siril import * from pysiril.wrapper import * from pysiril.addons import * # ============================================================================== # EXAMPLE DSLR with a Execute function without wrapper functions # ============================================================================== def master_bias(bias_dir, process_dir): app.Execute("cd " + bias_dir ) app.Execute("convert bias -out=" + process_dir + " -fitseq" ) app.Execute("cd " + process_dir ) app.Execute("stack bias rej 3 3 -nonorm") def master_flat(flat_dir, process_dir): app.Execute("cd " + flat_dir + "\n" "convert flat -out=" + process_dir + " -fitseq" + "\n" "cd " + process_dir + "\n" "preprocess flat -bias=bias_stacked" + "\n" "stack pp_flat rej 3 3 -norm=mul") def master_dark(dark_dir, process_dir): app.Execute(""" cd %s convert dark -out=%s -fitseq cd %s stack dark rej 3 3 -nonorm """ % (dark_dir,process_dir,process_dir) ) def light(ligth_dir, process_dir): app.Execute("cd " + ligth_dir) app.Execute("convert light -out=" + process_dir + " -fitseq" ) app.Execute("cd " + process_dir ) app.Execute("preprocess light -dark=dark_stacked -flat=pp_flat_stacked -cfa -equalize-cfa -debayer" ) app.Execute("register pp_light") app.Execute("stack r_pp_light rej 3 3 -norm=addscale -output_norm -out=../result") app.Execute("close") # ============================================================================== # run Siril Dev workdir = "/home/barch/siril/work/TestSiril" try: app.Open( ) process_dir = '../process' app.Execute("set16bits") app.Execute("setext fit") master_bias(workdir+ '/biases' ,process_dir) master_flat(workdir+ '/flats' ,process_dir) master_dark(workdir+ '/darks' ,process_dir) light( workdir+ '/lights' ,process_dir) except Exception as e : print("\n**** ERROR *** " + str(e) + "\n" ) app.Close( ) del app
m27trognondepomme Posté 21 août 2020 Auteur Posté 21 août 2020 un dernier exemple sur des fonctions annexes (Addons) pouvant être utiles ( à enrichir au fur et à mesure des besoins ) import sys import os from pysiril.siril import * from pysiril.wrapper import * from pysiril.addons import * # ============================================================================== # Example of addons functions # ============================================================================== app=Siril() try: cmd=Wrapper(app) fct=Addons(app) # Create a seqfile workdir = "D:/_TraitAstro/20-SiriL/work/TestSiril" processdir = workdir + "/" + "xxxx" fct.CleanFolder(processdir,ext_list=[ ".cr2",".seq"]) fct.MkDirs(processdir) NbImage= fct.GetNbFiles(workdir+ '/lights/*.CR2') print( "CR2 number:",NbImage) number=fct.NumberImages(workdir+ '/lights/*.CR2',processdir,"offsets",start=10,bOverwrite=True) if number == NbImage : fct.CreateSeqFile(processdir+"/toto.seq", number ) else: print("error of images number:",number, "<>",NbImage) except Exception as e : print("\n**** ERROR *** " + str(e) + "\n" ) app.Close() del app
gehelem Posté 21 août 2020 Posté 21 août 2020 Excellent ! Je me garde ça de côté pour la prochaine session
m27trognondepomme Posté 21 août 2020 Auteur Posté 21 août 2020 Pour l'instant, la documentation est peu légère . N'hésitez à me poser les questions.
m27trognondepomme Posté 21 août 2020 Auteur Posté 21 août 2020 j'ai fait un petite mise à jour pour que l'aide en ligne soit fonctionnelle. Il me reste à finir l'aide du Wrapper de fonction . Cependant elle est disponible via la commande cmd.help() Un exemple montrant les différentes façon pour obtenir une aide basique: import sys import os from pysiril.siril import * from pysiril.wrapper import * from pysiril.addons import * app=Siril() cmd=Wrapper(app) help( Siril ) # 1) pour la doc des fonctions de base de la librairie help( Wrapper ) # 2) pour l'aide des fonctions wrapper *** pas encore fini *** help( Addons ) # 3) pour l'aide des fonctions annexes cmd.help() # 4) liste de toutes les fonctions SiriL cmd.help( 'convertraw') # 5) pour l'aide d'une fonction Siril app.Close() del app 1
Sebriviere Posté 13 novembre 2020 Posté 13 novembre 2020 (modifié) @m27trognondepomme Aurais-tu plus d'info pour faire fonctionner PySiril sur Win10? Faut il installer un python (au chaud dans sa Windows en hiver)? Apparemment, c'est dans ta paroisse que l'on peut faire des bon script Siril... vu que la fonction "répertoire de travail" n'est pas dispo dans SIRIL. Merci, En ce moment, j'explore en suivant ce lien: Mise en place Python/VS_Code.... Modifié 13 novembre 2020 par Sebriviere
m27trognondepomme Posté 13 novembre 2020 Auteur Posté 13 novembre 2020 (modifié) oui, pour utiliser la librairie pysiril, il faut au préalable télécharger Python : https://www.python.org/downloads/release/python-390 Ensuite, un simple éditeur tel que notepad++ est suffisant mais tu peux charger des environnements complets de développement qui permettent de faire du débug en mode pas à pas: eclipse + plugin pydev spyder pydev idle Edupython ... Un des avantages de la librairie en plus de la programmations avancées (if, else for etc...) est la possibilité de récupérer les valeurs retournées par des fonctions telles que stat, bg, cdg, bgnoise. Les exemples ci-dessus montrent différents styles de script d'écriture possibles avec la librairie. N'hésites pas à me contacter si tu bloques dans tes premiers scripts. Je te met aussi le lien : la librairie est sur gitlab: https://gitlab.com/free-astro/pysiril pour l'installation de la librairie, il faut taper dans une console : python -m pip install pysiril-0.0.5-py3-none-any.whl Modifié 13 novembre 2020 par m27trognondepomme
Cissou8 Posté 13 novembre 2020 Posté 13 novembre 2020 4 hours ago, Sebriviere said: En ce moment, j'explore en suivant ce lien: Mise en place Python/VS_Code.. Si tu as des questions pour faire le setup de vscode pour python, n'hésite pas a me demander. J'écris/debuggue avec. C.
Sebriviere Posté 13 novembre 2020 Posté 13 novembre 2020 il y a 11 minutes, Cissou8 a dit : Si tu as des questions pour faire le setup de vscode pour python, n'hésite pas a me demander. Ça va viendre, c'est sûr.... Va y avoir matière... Je vais déjà explorer les exemples de @m27trognondepomme et les tiens... voir structure/code... puis quand je chercherai a faire ma sauce.... il se pourrait fort que ça fuse... 1
Sebriviere Posté 13 novembre 2020 Posté 13 novembre 2020 Bon, ben en fait facile.... Ctrl C puis Ctrl V et hop... PySiril c'est loché... il voulait que j'update pip, pareil, Ctrl C, Ctrl V essai transformé.... Facile le Python.... sortez les Anaconda..... @Cissou8, sympa, elle a mis un pdf.... En fait, mal au crâne.... bobo la tête. Va y avoir de la lecture....et de la vidéo a digérer.
Sebriviere Posté 14 novembre 2020 Posté 14 novembre 2020 (modifié) @m27trognondepomme & @Cissou8 Pour bien démarrer entre python, VSCode et PySiril (Et Puis Siril), quelle serait la structure de répertoire la plus appropriée, ou mettre les telechargement, repertoire travail, script.... Bon tuto ou video? J'aimerai eviter de faire un gros bordel de débutant sur mon PC.... Modifié 14 novembre 2020 par Sebriviere
Cissou8 Posté 15 novembre 2020 Posté 15 novembre 2020 Salut, j'ai envie de te dire que le rangement, c'est un peu une histoire de préférences personnelles... Pour Siril et python, rien a faire, ils se sont installes et ils sont bien ranges. Pysiril, c'est bien range aussi. Le fait que @m27trognondepomme ait fait un whl, ça va le ranger proprement et le rend appelable par n'importe quel script que tu écrirais, par une commande d'import (regarde ses exemples ou le mien, y a toujours un from pysiril.siril import * etc). Pour ce que tu vas vouloir écrire toi, ben je te dirais de te faire un répertoire de travail ou ça te fait plaisir. Dans lequel tu vas aller benner tous les morceaux de bidouille que tu vas écrire. Ce répertoire de travail, tu peux le déclarer dans VS code comme Workspace, et faire des configs de debug generiques et des specifiques a certains .py que tu ecrirais (cf la: https://code.visualstudio.com/docs/python/debugging). Puis quand tu veux faire un projet en particulier, tu lui fais un répertoire spécifique sous ton répertoire de travail...Pareil pour les modules que tu aurais été téléchargés. Mais bon, je sais pas si ça t'avance beaucoup tout ça.
m27trognondepomme Posté 15 novembre 2020 Auteur Posté 15 novembre 2020 @Sebriviere , si tu m'expliques ton besoin clairement, je peux te faire une ébauche de script, ensuite à toi de le compléter et de l'améliorer.
Sebriviere Posté 15 novembre 2020 Posté 15 novembre 2020 @Cissou8 & @m27trognondepomme Ok, doucement, je pars de super loin.... la première fois que j'ai codé, c'était en Hexa sur Videopac 52.... la dernière fois sur oric atmos/C64.... Depuis, vide spatial, en dehors d'une instal AstroLinux / KStar.... Donc j'apprivoise encore cette nouvelle fenêtre de VSCode et ce que je vais bien pouvoir en faire, Pro & Cons... où plutôt revoir mon idée d'avoir le PC faire plus... C'est pas non plus comme si en Bretagne, on avait des ciels nocturnes qui tuent toutes les nuits, donc des jours et des jours de photos à processer.... 2
m27trognondepomme Posté 15 novembre 2020 Auteur Posté 15 novembre 2020 J'ai commencé sur ZX81 mais je n'ai pas décroché 2
Sebriviere Posté 15 novembre 2020 Posté 15 novembre 2020 (modifié) il y a 18 minutes, m27trognondepomme a dit : J'ai commencé sur ZX81 Mon premier truc electro, en fait était un ping/pong... en... Ouh la...fin 70... Sinclair (Spectrum...) J'avais a cette epoque un Texas Instrument Ti99... un microprocesseur 16 bits cadencé à 3,3 MHz (le TMS9900) ; 16 Ko de RAM ; 26 Ko de ROM. Résolution graphique : 256 × 192 pixels ; 16 couleurs ; Et pour les jeunes.... non, il n'y a pas d'erreur dans les specs, on est bien en Ko et pixel...... Et il a encore fallu presque 10 ans après, pour que les premiers PC (a max quoi, 50/100 Mhz...), puis arrivent disques dur que, dixit vendeurs, jamais vous ne réussirez à remplir ... pour un bras, vous aviez 20 Mo, si vous rajoutiez une jambe, ca montait a 40Mo.... Vous dire... Apple France a même fait faillite a l'époque... Modifié 15 novembre 2020 par Sebriviere
m27trognondepomme Posté 15 novembre 2020 Auteur Posté 15 novembre 2020 (modifié) N’hésites pas à décrire ton besoin à l'aide d'un script ssl en mettant en commentaire les commandes qui te manques. ... à partir de ça, je te retranscris en python Modifié 15 novembre 2020 par m27trognondepomme
Sebriviere Posté 15 novembre 2020 Posté 15 novembre 2020 il y a 1 minute, m27trognondepomme a dit : N’hésites pas à décrire ton besoin à l'aide d'un script ssl en mettant en commentaire les commandes qui te manques. ... à partir de ça, je te retranscris en python Cool, je vais travailler au "concept" alors...
Sebriviere Posté 16 novembre 2020 Posté 16 novembre 2020 (modifié) Le 15/11/2020 à 11:04, m27trognondepomme a dit : N’hésites pas à décrire ton besoin à l'aide d'un script ssl en mettant en commentaire les commandes qui te manques. ... à partir de ça, je te retranscris en python Le premier, pas de script ssl, car rien dans SIRIL pour le faire. Un module d'importation de fichier de la clé USB/SSD vers répertoire de travail sur PC. Tu t'attendais à ca, ou on s'égare dès le début? Projet Python_Importation module.pdf Ajout: A-t-on un moyen en plus dans l'importation des Light de faire un tri des meilleurs XX%, mettre de côté les passages de nuages? How, et voila la partie Calibration et Light. Projet Python Calibration_Light Module.pdf Probable que celle-ci puisse bénéficier du travail de @Cissou8 ou une adaptation.... Des script Siril ou instructions existent, pas sur si mieux d'utiliser python pour les "formater" ou si faire via script.ssl Bon, ben désolé.... c'est pas rien?... ou ca peut se faire "finger in the noze" (enfin pour coder, mieux sur le clavier....)? Modifié 16 novembre 2020 par Sebriviere
Cissou8 Posté 16 novembre 2020 Posté 16 novembre 2020 Salut, j'ai jete un oeil a la partie calibration/register/stack. Oui c'est a peu pres ce que fait GSS. Pour les entrées, l'adaptation a faire serait de crawler ton arbo et en fonction de ce qu'il trouve, ecrire un fichier cfg additionel (voir dans le pdf) qui overloade tes options de base. Du style, s'il a pas trouve de flats, mettre ppflat=False etc... Et ensuite tu peux passer ca a GSS. Sur ce qui est du filtrage apres alignement (FWHM/roundness) pour l'empilement, j'aime pas passer ca en auto, donc je l'ai pas prevu. Ca veut pas dire que je le ferai jamais, mais pour le moment, GSS en auto stacke tout ce qu'il y a a stacker. Je repasse ensuite en manuel (il ne reste plus que l'etape d'empilement) pour decider de qui je garde et qui je garde pas, dans un second temps. Par contre, je suis en train de faire une suite a GSS qui permettrait d'analyser les logs d'alignement...mais c'est encore work in progress.
Sebriviere Posté 16 novembre 2020 Posté 16 novembre 2020 il y a 24 minutes, Cissou8 a dit : la partie calibration/register/stack Et la partie importation? Jouable, tendu ou sans intérêts?
lock042 Posté 16 novembre 2020 Posté 16 novembre 2020 Il y a 9 heures, Sebriviere a dit : Ajout: A-t-on un moyen en plus dans l'importation des Light de faire un tri des meilleurs XX%, mettre de côté les passages de nuages? Ca siril le fait pendant l'alignement avec la fwhm pondérée.
Papalima Posté 16 novembre 2020 Posté 16 novembre 2020 C’est à la limite du HS mais @Cissou8, quand tu parles de GSS, c’est bien Green Swamp Software ?
Sebriviere Posté 16 novembre 2020 Posté 16 novembre 2020 il y a 14 minutes, lock042 a dit : Ca siril le fait pendant l'alignement avec la fwhm pondérée. J'ai vu oui, dans les filtres.... repris aussi dans Sirilic pour les criteres. On en serait pas là si tu avais fait un module Importation/Biblio en amont de Siril, comme Lightroom pour Photoshop... 😅😂🤣 Serieux, je boutade... bien conscient du job derriere Siril deja, enfin je dis conscient, comme beaucoup, c'est du domaine de l'imaginaire...car rien que gratter les débuts de Python m'inquiète.
Cissou8 Posté 16 novembre 2020 Posté 16 novembre 2020 13 minutes ago, Papalima said: C’est à la limite du HS mais @Cissou8, quand tu parles de GSS, c’est bien Green Swamp Software ? @PapalimaNon...je connaissais pas Green Swamp Software, j'en ai entendu parler pour la première fois hier...Si j'avais su, j'aurais donne un autre nom! Donc non, GSS c'est une bibliothèque de fonctions python basées sur pySiril pour automatiser certaines parties du traitement. @m27trognondepomme a donne le lien vers mon post a ce sujet un peu plus haut. 1 hour ago, Sebriviere said: Et la partie importation? Jouable, tendu ou sans intérêts? @SebriviereJe te dirais que si tu as pris la peine d'en faire un workflow, c'est que tu y voies un intérêt pour ton utilisation. Donc, c'est une des meilleures motivations pour se lancer...
Sebriviere Posté 16 novembre 2020 Posté 16 novembre 2020 il y a 25 minutes, Cissou8 a dit : Donc, c'est une des meilleures motivations pour se lancer... Pas faux, la motivation peut être bonne... faut que le neurone suive.
lock042 Posté 16 novembre 2020 Posté 16 novembre 2020 il y a 8 minutes, Sebriviere a dit : faut que le neurone suive. Y a 8 ans, quand j'ai commencé Siril, le C et moi on n'était pas copain .... Mais alors pas du tout. Mais comme je voulais un programme qui tourne sous Linux, j'ai trouvé la motivation pour aider @vinvin. Et depuis ...
m27trognondepomme Posté 16 novembre 2020 Auteur Posté 16 novembre 2020 @lock042Je sens que tu vas te mettre au maintenant au python et puis dans 10ans, tu diras " le Python et moi on n'était pas copain .... Mais alors pas du tout" 2
Messages recommandés