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