Données de pixels et métadonnées

Le module Python sirilpy offre un accès direct à un large éventail de données.

import sirilpy as s
import numpy as np
siril = s.SirilInterface()
try:
   siril.connect():
   print("Connected successfully!")
except SirilConnectionError as e:
   print(f"Connection failed: {e}")
   quit()

def siril_module_example():
   try:
      # Lock the main image to prevent anything else altering it while we
      # are working on it
      with siril.image_lock():
         # Get the global fits object
         fit = siril.get_image()

         siril.log(f"The value of the first pixel is: {fit.data.flat[0]}")
         fit.data[:] *= 2
         siril.set_image_pixeldata(fit.data)

      siril.log(f"The value of the first pixel is now: {fit.data.flat[0]}")
      siril.log(f"Data type: {fit.data.dtype}")
      siril.log(f"Array shape: {fit.data.shape}")
      history = fit.history
      siril.log(f"History: {history}")

   except AttributeError as e:
      siril.log(f"Error: {e}")
      fit = None  # Ensure the FFit object is released

# Run the function
if __name__ == "__main__":
   siril_module_example()

Comme précédemment, nous importons le module siril : nous importons maintenant également numpy, que nous utiliserons pour opérer sur les données de pixels de l'image chargée dans Siril. Notez qu'il n'est pas nécessaire d'utiliser la méthode import_or_install(), car numpy est une dépendance du module Python siril et aura été préinstallé dans le venv.

Nous allons maintenant présenter différentes façons d'interagir avec les données d'image et les métadonnées :

# Get the global fits object
with siril.image_lock():
   fit = siril.get_image(True) # True indicates that we want the pixel data
   # not just the metadata. It is not required as this is the default, but
   # if you only want the metadata you can specify False here to save a bit
   # of memory.

   siril.log(f"The value of the first pixel is: {fit.data.flat[0]}")
   fit.data[:] *= 2
   siril.set_image_pixeldata(fit.data)
   siril.log(f"The value of the first pixel is now: {fit.data.flat[0]}")

Nous récupérons l'image actuelle à l'aide de siril.get_image()

Astuce

Notez que siril.fits n'est absolument pas la même chose que astropy.io.fits. Alors qu'astropy.io.fits fournit une interface polyvalente pour tous les fichiers FITS, siril.fits fournit une interface correspondant à la structure de données fits utilisée dans Siril.

Nous accédons ensuite aux données des pixels sous la forme d'un tableau NumPy array et effectuons des opérations sur ce tableau afin de modifier les données de l'image. Dans ce cas précis, nous multiplions toutes les valeurs des pixels par 2.

Une fois que nous avons terminé de modifier l'image, nous appelons siril.set_image_pixeldata(fit.data) pour mettre à jour les données de pixels dans Siril et déclencher le redessin de l'interface graphique de Siril afin d'afficher l'image mise à jour. Au passage, nous utilisons siril.log() pour mettre en évidence la modification du premier pixel.

Ensuite, nous affichons le type de données et la forme du tableau :

siril.log(f"Data type: {fit.data.dtype}")
siril.log(f"Array shape: {fit.data.shape}")

Nous allons maintenant vous montrer comment accéder à l'historique des images. Celui-ci se présente sous la forme d'une liste d'en-têtes FITS HISTORY individuels, nous les regroupons donc et ajoutons des caractères de nouvelle ligne avant de les enregistrer.

history = fit.history
siril.log(f"History: {history}")

Tous les détails de l'API peuvent être obtenus en important le module Siril et en appelant la commande help(sirilpy), ou plus spécifiquement en appelant help() pour la partie particulière de l'API que vous souhaitez connaître, par exemple help(sirilpy.FFit).

Comme les doctsrtings ne sont pas traduisible, pour une traduction de l'aide de l'API vous devez consulter la page de l'API dans ce manuel en ligne.