Sirilpy Python Module API 1.0.25 Reference

Le module Python sirilpy prend en charge la communication avec une instance Siril en cours d'exécution. Il peut demander des représentations de l'image actuellement chargée ainsi que ses métadonnées, y compris les détails des étoiles détectées, ainsi que la séquence actuellement chargée et la plupart des métadonnées des images.

Cette documentation est généré automatique depuis la version 1.0.25 du module python.

Il peut également exécuter des commandes Siril à l'aide de la méthode SirilInterface.cmd(), l'objectif étant de fournir une interface performante pour écrire des scripts avancés pour Siril, à un niveau qui n'était pas possible avec les précédents simples fichiers de script.

Par exemple, les scripts peuvent désormais disposer d'interfaces PyQt6 ou TKinter en utilisant les modules PyQt6 ou tkinter et ttkthemes, et ils peuvent tirer parti d'une grande partie de l'écosystème des modules Python, notamment numpy, scipy, pillow et bien d'autres.

Note

Il existe certaines restrictions concernant les modules qui nécessitent l'installation de paquets binaires système pour fonctionner.

Dans la version initiale du module, la plupart des méthodes relatives à l'image ou à la séquence chargée dans Siril sont en lecture seule. L'idée est que les paramètres de l'image ou de la séquence chargée puissent être obtenus et utilisés comme entrées pour les scripts, par exemple pour des calculs ou des conditions, mais que l'ensemble mature des commandes Siril existantes soit dans la plupart des cas utilisé pour agir sur l'image chargée. Ainsi, les mots-clés d'en-tête peuvent être définis à l'aide de cmd("update_key", "key", "value"), et la plupart des opérations d'image intégrées peuvent être effectuées à l'aide de la commande Siril appropriée. La principale exception à la règle selon laquelle les méthodes python fournissent un accès en lecture seule est la méthode set_image_pixeldata(), qui permet de définir les données de pixels de l'image chargée à partir d'un tableau numpy. Cela signifie que de nouveaux algorithmes de traitement de pixels peuvent être ajoutés en python, en récupérant d'abord les données de pixels de l'image chargée à l'aide de get_image_pixeldata(), puis en les définissant à la fin à l'aide de set_image_pixeldata(). Des fonctions similaires sont disponibles pour récupérer et définir les données de pixels des images d'une séquence.

Dépendances

Le module sirilpy dépend des éléments suivants :

  • numpy >= 1.20.0

  • packaging >= 21.0

  • pywin32 >= 300 (seulement sur Windows)

Guide de codage des Script Siril

  • Contrairement à la plupart des environnements python, les scripts Siril s'exécutent directement depuis Siril et l'utilisateur final ne sait généralement pas comment accéder au venv python ou l'utiliser en dehors de Siril. Cela signifie que certaines tâches assez triviales dans les scénarios python classiques, comme l'installation de paquets, deviennent plus difficiles. On ne peut pas s'attendre à ce que l'utilisateur accède à la ligne de commande et installe lui-même des paquets à l'aide de python3 -m pip install.

    • Le module fournit donc la méthode «ensure_installed(). Celle-ci utilise pip pour s'assurer que les modules sont installés afin qu'ils puissent être importés.

  • Les scripts Siril doivent toujours fournir le nom de l'auteur, les détails de copyright / informations de licence et les coordonnées de contact telles qu'une chaîne YouTube, un site web ou un forum où l'auteur peut être contacté au sujet de son script. Ceci est une recommandation pour les scripts distribués indépendamment et une obligation pour tout script soumis au dépôt de scripts. Si vous écrivez un script, vous êtes responsable de son support.

  • Au fur et à mesure que le répertoire s'enrichit et que l'API évolue, tous les scripts publiés ne seront pas nécessairement toujours compatibles avec toutes les versions de Siril qui seront utilisé :

    • Si votre script utilise des commandes Siril, vous devriez utiliser la commande Siril requires. Elle peut être appelée directement dans un fichier de script Siril, ou depuis un script Python à l'aide de SirilInterface.cmd("requires", "min_version", {"max_version"}) (max_version est facultatif), et permet de garantir que les scripts conçus pour d'anciennes versions de Siril ne s'affichent plus comme applicables aux versions plus récentes si la syntaxe des commandes a changé.

    • Si votre script utilise des fonctionnalités du module Python Siril ajoutées depuis la version initiale, vous devriez appeler la méthode sirilpy.check_module_version() pour vous assurer que la version installée répond aux exigences de votre script. Les versions auxquelles les fonctionnalités ont été ajoutées seront répertoriées dans la documentation de l'API pour toutes les fonctionnalités ajoutées après la première publication.

    • Le code qui alimente la vue de Siril sur le dépôt de scripts filtrera automatiquement les scripts dont les exigences de version de Siril ou du module Python ne sont pas satisfaites.

    • Si de nouvelles classes ou méthodes sont ajoutées au module après sa première publication, la version à laquelle elles ont été introduites sera indiquée dans la docstring et dans la documentation en ligne générée à partir de celle-ci.

  • Siril cible Linux, Windows et MacOS. Les auteurs de scripts sont encouragés, dans la mesure du possible, à s'assurer que leurs scripts fonctionnent correctement sur les trois systèmes d'exploitation.

Connexion Sirilpy

Ce sous-module fournit la classe principale SirilInterface utilisée pour la communication entre Siril et le script Python. Tous ses membres sont disponibles au niveau racine du module, il n'est pas nécessaire d'importer connection séparément.

Module de connexion pour Siril, offrant la possibilité de se connecter à une instance Siril en cours d'exécution et de communiquer avec elle. Comprend un large éventail de méthodes pouvant être utilisées pour récupérer et envoyer des données depuis/vers Siril.

class sirilpy.connection.SirilInterface

Bases : object

SirilInterface est la classe principale fournissant une interface vers une instance Siril en cours d'exécution et un accès aux méthodes permettant d'interagir avec elle via le système de commandes intégré de Siril et d'accéder aux données d'image et de séquence.

analyse_image_from_file(filepath)

Demander à Siril de charger une image depuis un fichier et de l'analyser. Cette méthode ne modifie pas l'image actuellement chargée dans Siril. Tout format d'image pris en charge par Siril est accepté. Un objet ImageAnalysis est renvoyé, contenant des paramètres pouvant être utilisés pour évaluer la qualité d'une image en vue d'un tri.

Paramètres:

filepath (str) -- Chaîne de caractères indiquant le chemin d'accès au fichier image à charger.

Type renvoyé:

ImageAnalysis

Renvoie:

Objet ImageAnalysis contenant les indicateurs de qualité de l'image analysée.

Lève:
  • FileNotFoundError -- si le fichier indiqué n'existe pas,

  • DataError -- en cas de réception de données erronées,

  • SirilError -- si une erreur est survenue.

clear_image_bgsamples()

Efface tous les points d'échantillonnage du fond de l'image.

clear_undo_history()

Efface l'historique des annulations de l'image, s'il y a un historique à effacer

cmd(*args)

Envoyer une commande à Siril pour exécution. L'ensemble des commandes disponibles peut être consulté dans la documentation en ligne. La commande et ses arguments sont fournis sous forme d'une liste de chaînes.

Paramètres:

*args (str) -- Nombre variable d'arguments sous forme de chaînes à combiner en une commande

Lève:
  • DataError -- Si aucune réponse (ou une réponse incorrecte) a été reçue,

  • CommandError -- Si la commande renvoie un code d'erreur,

  • SirilError -- Si une autre erreur est survenue durant l'exécution.

Exemple

siril.cmd("ght", "-D=0.5", "-b=2.0")
command_error_message(status_code)

Fournit une chaîne décrivant le statut de retour d'une commande Siril.

Paramètres:

status_code (CommandStatus) -- Le code de statut renvoyé par le gestionnaire de commandes Siril, ou par l'exception CommandError.

Renvoie:

Une chaîne fournissant une description du code d'erreur renvoyé par une commande Siril, destinée à être utilisée dans la gestion des exceptions.

Type renvoyé:

str

confirm_messagebox(title, message, confirm_label)

Créez une boîte de dialogue modale de confirmation dans Siril et attendez la réponse.

Paramètres:
  • title (str) -- Le titre à afficher dans la boîte de message (256 caractères maximum)

  • message (str) -- Le message à afficher dans la boîte de dialogue (1 021 caractères maximum)

  • confirm_label (str) -- Le libellé à afficher sur le bouton de confirmation de la boîte de dialogue (OK, Oui, Confirmer, etc.) (24 caractères maximum)

Renvoie:

True si l'on a cliqué sur le bouton de confirmation de la boîte de dialogue, False dans le cas contraire

Type renvoyé:

bool

Lève:
connect()

Établir une connexion avec Siril en utilisant le chemin d'accès au fichier pipe ou socket.

Type renvoyé:

bool

Renvoie:

True en cas de succès

Lève:

SirilConnectionError -- si une erreur de connexion s'est produite

create_new_seq(seq_root)

Crée un nouveau fichier .seq avec toutes les images nommées seq_rootXXXXX.ext situées dans le dossier personnel actuel. Si une séquence portant le même nom est déjà chargée dans Siril, elle ne sera pas recréée. Cela ne fonctionne que pour les fichiers FITS, pas pour FITSEQ ni SER. La séquence nouvellement créée n'est pas chargée dans Siril.

Paramètres:

seq_root (str) -- Le nom racine de la séquence à créer.

Renvoie:

True si la séquence a été créée avec succès, False sinon.

Type renvoyé:

bool

Lève:

SirilError -- si une erreur est survenue.

disconnect()

Ferme la connexion socket ou pipe établie. Notez qu'il n'est généralement pas nécessaire de la fermer, sauf si, pour une raison quelconque, vous souhaitez fermer une connexion puis en rouvrir une autre. Cette méthode est automatiquement appelée à la fin du script via un gestionnaire atexit, il n'est donc pas nécessaire de le faire manuellement. Appeler cette méthode réinitialisera la barre de progression.

Lève:

SirilConnectionError -- si la connexion ne peut pas être fermée.

error_messagebox(my_string, modal=False)

Envoyer un message d'erreur à Siril. La longueur maximale du message est de 1022 octets : les messages plus longs seront tronqués (mais cela est largement suffisant pour une boîte de message d'erreur). Notez que la boîte de message d'erreur n'est pas modale par défaut : elle est destinée à afficher un message d'erreur de manière plus visible qu'en utilisant le journal de Siril avant de quitter l'application.

Paramètres:
  • my_string (str) -- Le message à afficher dans la boîte de message d'erreur

  • modal (Optional[bool]) -- Définit si la boîte de message doit être modale et attendre la fin de son affichage, ou non modale et permettre au script de continuer son exécution. Notez que, bien qu'une boîte de message modale bloque l'exécution du script, si une boucle principale TKinter est en cours d'exécution, les événements continueront à s'accumuler ; ainsi, si la boîte de message est déclenchée en cliquant sur un bouton, l'utilisateur peut cliquer dessus pendant que la boîte de message est affichée et déclencher une seconde boîte de message qui s'affichera dès que la première sera fermée.

Renvoie:

Vrai si l'erreur a été affichée avec succès, faux dans le cas contraire

Type renvoyé:

bool

Lève:

SirilError -- si une erreur est survenue.

get_image(with_pixels=True, preview=False)

Request a copy of the current image open in Siril. Requires a single image to be loaded.

Paramètres:
  • with_pixels (Optional[bool]) -- booléen facultatif indiquant s'il faut récupérer les données pixel sous forme d'un NumPy array ou uniquement les métadonnées de l'image. La valeur par défaut est True

  • preview (Optional[bool]) -- booléen facultatif indiquant s'il faut obtenir les données pixel sous forme d'aperçu (i.e. des données étirées automatiquement sur 8 bits) ou sous forme de données image réelles. La valeur par défaut est False (i.e. des données image réelles)

Type renvoyé:

Optional[FFit]

Renvoie:

Objet FFit contenant les métadonnées de l'image et (éventuellement) les données pixel, ou None si une erreur s'est produite

Lève:
  • NoImageError -- si aucune image n'est chargée dans Siril

  • SirilError -- si une erreur de décodage se produit

get_image_bgsamples()

Demander les données des échantillons de fond à Siril.

Type renvoyé:

Optional[List[BGSample]]

Renvoie:

Liste d'échantillons de fond BGSamples, chaque ensemble de coordonnées étant exprimé sous forme de tuple[float, float], ou None si aucun échantillon de fond n'a été défini.

Lève:
  • NoImageError -- Si aucune image n'est actuellement chargée,

  • DataError -- à la réception de mauvaise données,

  • SirilError -- Pour les autres erreurs survenant lors de la récupération des données,

get_image_filename()

Request the filename of the loaded image from Siril. Requires a single image to be loaded.

Type renvoyé:

Optional[str]

Renvoie:

Le nom de fichier comme une chaîne de caractère.

Lève:
get_image_fits_header(return_as='str')

Retrieve the full FITS header of the current image loaded in Siril. Requires a single image to be loaded.

Paramètres:

return_as -- Chaîne facultative spécifiant le format de l'en-tête renvoyé. Peut prendre la valeur 'str' pour une chaîne de caractères ou 'dict' pour un dictionnaire.

Renvoie:

L'en-tête FITS de l'image sous forme de chaîne, ou None s'il n'y a pas d'en-tête. dict : l'en-tête FITS de l'image sous forme de dictionnaire, ou None s'il n'y a pas d'en-tête. None : si l'en-tête est vide ou non disponible.

Type renvoyé:

str

Lève:
  • NoImageError -- Si aucune image n'est actuellement chargée,

  • SirilError -- Pour les autres erreurs survenant lors de la récupération des données,

get_image_history()

Retrieve history entries in the FITS header of the current loaded Siril image using shared memory. Requires a single image to be loaded.

Paramètres:

none.

Renvoie:

Les entrées HISTORY dans l'entête FITS sous forme de liste de chaînes, ou None s'il n'y a pas de mots-clés HISTORY.

Type renvoyé:

list

Lève:
  • NoImageError -- Si aucune image n'est actuellement chargée,

  • SirilError -- Pour les autres erreurs survenant lors de la récupération des données.

get_image_iccprofile()

Retrieve the ICC profile of the current Siril image using shared memory. Requires a single image to be loaded.

Args: none.

Renvoie:

Le profil ICC de l'image sous forme de tableau d'octets, ou None si l'image actuelle n'a pas de profil ICC.

Type renvoyé:

bytes

Lève:
get_image_keywords()

Request FITS keywords data from Siril as a FKeywords object. Requires a single image to be loaded.

Type renvoyé:

Optional[FKeywords]

Renvoie:

Objet FKeywords contenant les mots-clés FITS, ou None si une erreur s'est produite

Lève:

SirilError -- si une erreur de décodage se produit.

get_image_pixeldata(shape=None, preview=False, linked=False)

Récupère les données de pixels de l'image actuellement chargée dans Siril.

Paramètres:
  • shape (Optional[list[int]]) -- Liste facultative [x, y, w, h] spécifiant la région à récupérer. Si elle est fournie, récupère les données de pixels uniquement pour cette région. Si None, récupère les données de pixels de l'image entière.

  • preview (Optional[bool]) -- booléen facultatif indiquant s'il faut obtenir les données pixel sous forme d'aperçu (i.e. des données étirées automatiquement sur 8 bits) ou sous forme de données image réelles. La valeur par défaut est False (i.e. des données image réelles)

  • linked (Optional[bool]) -- booléen facultatif indiquant si l'aperçu de l'auto ajustement doit être lié ou dissocié. Si preview == False, cette option est ignorée.

Renvoie:

Les données d'image en format numpy array

Type renvoyé:

numpy.ndarray

Lève:
  • NoImageError -- Si aucune image n'est actuellement chargée,

  • ValueError -- Si une taille invalide est fournie,

  • DataError -- si le tableau ne peut pas être redimensionné à la bonne dimension,

  • SirilError -- Pour les autres erreurs survenant lors de la récupération des données pixel,

get_image_shape()

Demande la taille de l'image à Siril.

Type renvoyé:

Optional[Tuple[int, int, int]]

Renvoie:

Un tuple (canaux, hauteur, largeur) représentant la forme de l'image, ou None si aucune forme d'image n'est disponible à renvoyer.

Lève : SirilError : si une erreur s'est produite.

get_image_stars(channel=None)

Demander les données du modèle PSF des étoiles à Siril.

Paramètres:

channel (Optional[int]) -- Entier facultatif spécifiant le canal à partir duquel récupérer les données. S'il est fourni, 0 = Rouge / Mono, 1 = Vert, 2 = Bleu. Si le canal est omis, le comportement par défaut sera utilisé : canal 0 pour les images mono, canal 1 (vert) pour les images couleur. channel nécessite sirilpy v1.0.8 ou supérieur.

Type renvoyé:

List[PSFStar]

Renvoie:

Liste d'objets PSFStar contenant les données des étoiles, ou None si aucune étoile n'est trouvée. Si des étoiles ont déjà été détectées à l'aide de la commande findstar, cette liste sera renvoyée, sinon une détection automatique des étoiles sera tentée avec les paramètres actuels du détecteur d'étoiles.

Lève:
  • NoImageError -- Si aucune image n'est actuellement chargée,

  • ValueError -- Si un canal non valide est fourni,

  • SirilError -- Pour les autres erreurs survenant lors de la récupération des données,

get_image_stats(channel)

Request image statistics from Siril for a specific channel. Requires a single image to be loaded.

Paramètres:

channel (int) -- Nombre entier indiquant le canal pour lequel obtenir les statistiques (généralement 0, 1 ou 2)

Type renvoyé:

Optional[ImageStats]

Renvoie:

Objet ImageStats contenant les statistiques, ou None si aucune statistique n'est disponible pour le canal sélectionné

Lève:
get_image_unknown_keys()

Retrieve the unknown key in a FITS header of the current loaded Siril image using shared memory. Requires a single image to be loaded.

Paramètres:

none.

Renvoie:

Les clés inconnues sous forme de chaîne, ou None s'il n'y a pas de clés inconnues.

Type renvoyé:

bytes

Lève:
  • NoImageError -- Si aucune image n'est actuellement chargée,

  • SirilError -- Pour les autres erreurs survenant lors de la récupération des données.

get_selection_star(shape=None, channel=None, assume_centred=False)

Retrieves a PSFStar star model from the current selection in Siril. Only a single PSFStar is returned: if there are more than one in the selection, the first one identified by Siril's internal star detection algorithm is returned. Update: from sirilpy 1.0.4 this method uses Siril's photometry functions to try to provide photometrically accurate values for PSFStar.mag, PSFStar.s_mag and PSFStar.SNR. If photometry succeeded and no saturated pixels were detected then PSFStar.phot_is_valid will be True, otherwise it will be False. :type shape: Optional[list[int]] :param shape: Optional list of [x, y, w, h] specifying the selection to

retrieve from. w x h must not exceed 300 px x 300 px. If provided, looks for a star in the specified selection If None, looks for a star in the selection already made in Siril, if one is made.

Paramètres:
  • channel (Optional[int]) -- Entier facultatif spécifiant le canal à partir duquel récupérer les données. S'il est fourni, 0 = Rouge / Mono, 1 = Vert, 2 = Bleu. Si le canal est omis, la zone d'affichage actuelle sera utilisée en mode interface graphique, ou, si ce n'est pas le mode interface graphique, la méthode se repliera sur le canal 0

  • assume_centred (bool) -- Booléen facultatif indiquant s'il faut supposer que l'étoile est déjà centrée dans la sélection. La valeur par défaut est False.

Renvoie:

l'objet PSFStar représentant le modèle d'étoile, ou None si

aucune étoile n'a été détectée dans la sélection.

Type renvoyé:

PSFStar

Lève:
  • ValueError -- Si une taille invalide est fournie,

  • NoImageError -- If no image is loaded,

  • SirilConnectionError -- If a communication error occurs,

  • SirilError -- Si une autre erreur s'est produite pendant l'exécution.

get_selection_stats(shape=None, channel=None)

Retrieves statistics for the current selection in Siril. Requires a single image or a sequence to be loaded.

Paramètres:
  • shape (Optional[list[int]]) -- Liste facultative de [x, y, w, h] spécifiant la sélection à partir de laquelle récupérer les données. Si elle est fournie, recherche une étoile dans la sélection spécifiée. Si None, recherche une étoile dans la sélection déjà faite dans Siril, si une sélection existe.

  • channel (Optional[int]) -- Entier facultatif spécifiant le canal à partir duquel récupérer les données. S'il est fourni, 0 = Rouge / Mono, 1 = Vert, 2 = Bleu. Si le canal est omis, la zone d'affichage actuelle sera utilisée en mode interface graphique, ou, si ce n'est pas le mode interface graphique, la méthode se repliera sur le canal 0

Renvoie:

l'objet ImageStats représentant les statistiques de la sélection.

Type renvoyé:

ImageStats

Lève:
  • SirilError -- Si une erreur s'est produite pendant le traitement,

  • ValueError -- Si une forme non valide est fournie.

get_seq()

Demander les métadonnées de la séquence actuellement chargée dans Siril.

Type renvoyé:

Optional[Sequence]

Renvoie:

Objet de séquence contenant les métadonnées de la séquence actuelle, ou None si une erreur s'est produite

Lève:
get_seq_distodata(channel)

Demander les données de distorsion de la séquence à Siril

channel : entier spécifiant le canal pour lequel obtenir les données d'alignement (généralement 0, 1 ou 2)

Type renvoyé:

Optional[DistoData]

Renvoie:

Objet DistoData contenant les paramètres de distorsion du canal, ou None si une erreur s'est produite

Lève:
get_seq_frame(frame, with_pixels=True, preview=False, linked=False)

Demander une image de la séquence sous forme de FFit à Siril. Les mots-clés, statistiques, en-tête et autres métadonnées sont toujours renvoyés : si un profil ICC est présent, il sera également renseigné dans le FFit résultant, et les données de pixels peuvent aussi être renvoyées en option.

Paramètres:
  • frame (int) -- Entier spécifiant l'image de la séquence pour laquelle récupérer les données (entre 0 et Sequence.number - 1). Ceci utilise un indexage débutant à 0, c'est-à-dire que la première image est l'image numéro 0, et non l'image numéro 1.

  • with_pixels (Optional[bool]) -- booléen spécifiant s'il faut renvoyer ou non les données de pixels de l'image (la valeur par défaut est True).

  • preview (Optional[bool]) -- booléen spécifiant s'il faut renvoyer les données de pixels réelles ou une version d'aperçu en uint8_t avec auto ajustement. N'a d'effet qu'en combinaison avec with_pixels = True

Type renvoyé:

Optional[FFit]

Renvoie:

Objet FFit contenant les données de l'image

Lève:
get_seq_frame_filename(frame)

Request the filename of the specified frame of the loaded sequence from Siril. Requires a sequence to be loaded.

Paramètres:

frame (int) -- Spécifie l'index de l'image. Ceci utilise un indexage débutant à 0, c'est-à-dire que la première image est l'image numéro 0, et non l'image numéro 1.

Type renvoyé:

Optional[str]

Renvoie:

Le nom de fichier comme une chaîne de caractère.

Lève:
get_seq_frame_header(frame, return_as='str')

Récupérer l'en-tête FITS complet d'une image de la séquence chargée dans Siril.

Paramètres:
  • frame (int) -- Entier spécifiant l'image de la séquence pour laquelle récupérer les données (entre 0 et Sequence.number - 1). Ceci utilise un indexage débutant à 0, c'est-à-dire que la première image est l'image numéro 0, et non l'image numéro 1.

  • return_as -- Chaîne facultative spécifiant le format de l'en-tête renvoyé. Peut prendre la valeur 'str' pour une chaîne de caractères ou 'dict' pour un dictionnaire.

Renvoie:

L'en-tête FITS de l'image sous forme de chaîne, ou None s'il n'y a pas d'en-tête. dict : l'en-tête FITS de l'image sous forme de dictionnaire, ou None s'il n'y a pas d'en-tête. None : si l'en-tête est vide ou non disponible.

Type renvoyé:

str

Lève:
  • NoSequenceError -- Si aucune séquence n'est actuellement chargé,

  • SirilError -- Pour les autres erreurs survenant lors de la récupération des données,

get_seq_frame_pixeldata(frame, shape=None, preview=False, linked=False)

Récupère les données de pixels d'une image de la séquence actuellement chargée dans Siril.

Paramètres:
  • frame (int) -- sélectionne l'image à partir de laquelle récupérer les données de pixels. Ceci utilise un indexage débutant à 0, c'est-à-dire que la première image est l'image numéro 0, et non l'image numéro 1.

  • shape (Optional[List[int]]) -- Liste facultative [x, y, w, h] spécifiant la région à récupérer. Si elle est fournie, récupère les données de pixels uniquement pour cette région. Si None, récupère les données de pixels de l'image entière.

  • preview (Optional[bool]) -- booléen facultatif spécifiant s'il faut récupérer les données de pixels sous forme d'aperçu (c'est-à-dire des données en 8 bits avec auto ajustement) ou sous forme de données d'image réelles. La valeur par défaut est False (c'est-à-dire les données d'image réelles).

  • linked (Optional[bool]) -- booléen facultatif spécifiant si l'aperçu avec auto ajustement doit être lié ou dissocié. Cette option est ignorée si preview n'est pas True

Renvoie:

Les données d'image en format numpy array

Type renvoyé:

numpy.ndarray

Lève:
  • ValueError -- Si une taille invalide est fournie,

  • DataError -- si le tableau ne peut pas être redimensionné à la bonne dimension,

  • SirilError -- Pour les autres erreurs survenant lors de la récupération des données des pixels.

get_seq_imgdata(frame)

Demander les métadonnées des images de la séquence à Siril.

Paramètres:

frame (int) -- Entier spécifiant l'image de la séquence pour laquelle obtenir les métadonnées de l'image (entre 0 et Sequence.number). Ceci utilise un indexage débutant à 0, c'est-à-dire que la première image est l'image numéro 0, et non l'image numéro 1.

Type renvoyé:

Optional[ImgData]

Renvoie:

Objet ImgData contenant les métadonnées de l'image, ou None si une erreur s'est produite

Lève:
get_seq_regdata(frame, channel)

Demander les données d'alignement d'une image de la séquence à Siril.

Paramètres:
  • frame (int) -- Entier spécifiant l'image de la séquence pour laquelle obtenir les données d'alignement (entre 0 et Sequence.number). Ceci utilise un indexage débutant à 0, c'est-à-dire que la première image est l'image numéro 0, et non l'image numéro 1.

  • channel (int) -- Entier spécifiant le canal pour lequel obtenir les données d'alignement (généralement 0, 1 ou 2)

Type renvoyé:

Optional[RegData]

Renvoie:

Objet RegData contenant les données d'alignement, ou None si aucune donnée d'alignement n'est disponible pour l'image et le canal spécifiés

Lève:
get_seq_stats(frame, channel)

Demander les statistiques sur les images de la séquence à Siril.

Paramètres:
  • frame (int) -- Entier spécifiant l'image de la séquence pour laquelle obtenir les statistiques (entre 0 et Sequence.number). Ceci utilise un indexage débutant à 0, c'est-à-dire que la première image est l'image numéro 0, et non l'image numéro 1.

  • channel (int) -- Nombre entier indiquant le canal pour lequel obtenir les statistiques (généralement 0, 1 ou 2)

Type renvoyé:

Optional[ImageStats]

Renvoie:

Objet ImageStats contenant les statistiques, ou None si une erreur s'est produite

Lève:
get_siril_active_vport()

Demande à Siril d'indiquer la fenêtre d'affichage active.

Renvoie:

  • sirilpy.SirilVport.RED / sirilpy.SirilVport.MONO

  • sirilpy.SirilVport.GREEN,

  • sirilpy.SirilVport.BLUE,

  • sirilpy.SirilVport.RGB

Notez que RED et MONO partagent la même valeur IntEnum, il n'y a donc aucune différence entre un test sur l'un ou l'autre ; les deux étiquettes d'énumération sont fournies uniquement pour faciliter la lisibilité du code.

Type renvoyé:

A SirilVport representing the active vport

Lève:
  • DataError -- si aucune réponse n'est reçue ou si la réponse n'est pas valide,

  • SirilError -- si une erreur est survenue.

get_siril_config(group, key)

Demandez une valeur de configuration à Siril.

Paramètres:
  • group (str) -- Nom du groupe de configuration,

  • key (str) -- Nom de la clé de configuration au sein du groupe (les valeurs disponibles pour le groupe et la clé peuvent être déterminées à l'aide de la commande « get -A »)

Type renvoyé:

Union[bool, int, float, str, List[str], None]

Renvoie:

La valeur de configuration avec le type Python correspondant, ou None si une erreur s'est produite.

Lève:
  • DataError -- si un type de configuration inconnu est détecté,

  • SirilError -- si une erreur s'est produite lors de la récupération de la valeur de configuration demandée

get_siril_configdir()

Demander le répertoire de configuration utilisateur utilisé par Siril.

Type renvoyé:

str

Renvoie:

Le répertoire de configuration de l'utilisateur sous forme de chaîne de caractères.

Lève:
get_siril_display_iccprofile()

Récupérer le profil ICC de l'écran de Siril.

Args: none.

Renvoie:

Le profil ICC de l'affichage sous forme de tableau d'octets, ou None si Siril fonctionne en mode sans interface graphique.

Type renvoyé:

bytes

Lève:
get_siril_log()

Récupérer l'intégralité des logs Siril sous forme de chaîne de texte.

Renvoie:

Le texte des logs Siril.

Type renvoyé:

str

Lève:

SirilError -- En cas d'erreurs lors de la récupération des données,

get_siril_panzoom()

Demander l'état de panoramique et de zoom à Siril.

Type renvoyé:

Tuple[float, float, float]

Renvoie:

Un tuple (décalage x, décalage y, niveau de zoom) représentant l'état actuel du panoramique et du zoom de l'image.

Lève:

SirilError -- si une erreur est survenue.

get_siril_selection()

Demandez la sélection d'images à Siril.

Type renvoyé:

Optional[Tuple[int, int, int, int]]

Renvoie:

Un tuple (x, y, hauteur, largeur) représentant la sélection actuelle, ou None si aucune sélection n'est faite.

Lève:

SirilError -- si une erreur est survenue.

get_siril_slider_state(float_range=False)

Demander l'état des curseurs d'affichage à Siril.

Type renvoyé:

Tuple[int, int, SlidersMode]

Renvoie:

Un tuple (min, max, mode du curseur) représentant l'état actuel du curseur.

Lève:

SirilError -- si une erreur est survenue.

get_siril_stf()

Demander la fonction de transfert d'écran utilisée dans Siril.

Type renvoyé:

STFType

Renvoie:

Un STFType représentant l'état STF actuel.

Lève:

SirilError -- si une erreur est survenue.

get_siril_stf_linked()

Déterminer si le STF Auto ajustement est configuré pour être lié ou non

Type renvoyé:

bool

Renvoie:

Un booléen représentant l'état actuel de liaison des canaux du STF.

Lève:

SirilError -- si une erreur est survenue.

get_siril_systemdatadir()

Demander le répertoire de données système utilisé par Siril.

Type renvoyé:

Optional[str]

Renvoie:

Le répertoire de données du système sous forme de chaîne de caractères.

Lève:
get_siril_userdatadir()

Demander le répertoire de données utilisateur utilisé par Siril.

Type renvoyé:

str

Renvoie:

Le répertoire des données utilisateur sous forme de chaîne de caractères.

Lève:
get_siril_wd()

Demander le répertoire de travail actuel à Siril.

Type renvoyé:

str

Renvoie:

Le répertoire de travail actuel sous forme de chaîne de caractères.

Lève:
  • DataError -- si aucune réponse n'a été obtenue,

  • SirilError -- pour toutes les autres erreurs.

image_lock()

Un gestionnaire de contexte qui gère l'acquisition et la libération du thread de traitement.

Cette méthode est conçue pour être utilisée avec une instruction with afin de garantir que le thread soit correctement acquis avant le traitement et libéré après celui-ci, même si une exception se produit pendant le traitement. Il est préférable d'utiliser ce gestionnaire de contexte plutôt que d'appeler manuellement claim_thread() et release_thread(), car le gestionnaire de contexte garantira un nettoyage correct en cas d'exception.

Notez que le contexte image_lock() ne doit être utilisé que lorsque le script lui-même agit sur les données de l'image Siril. Si le script appelle une commande Siril pour modifier l'image Siril, alors ce contexte ne doit pas être utilisé, sinon la commande Siril ne pourra pas acquérir le thread de traitement et échouera.

Exemple :

try:
    with siril.image_lock():
        # Get image data
        image_data = self.get_image_pixeldata()
        # Process image data
        processed_data = some_processing_function(image_data)
        # Set the processed image data
        siril.set_image_pixeldata(processed_data)
except ProcessingThreadBusyError:
    # Handle busy thread case
    pass
except ImageDialogOpenError:
    # Handle open dialog case
    pass
Lève:
info_messagebox(my_string, modal=False)

Envoyer un message d'information à Siril. La longueur maximale du message est de 1022 octets : les messages plus longs seront tronqués. Ceci est destiné à afficher des messages d'information de manière plus visible qu'en utilisant le journal de Siril.

Paramètres:
  • my_string (str) -- Le message à afficher dans la boîte de dialogue d'information

  • modal (Optional[bool]) -- Définit si la boîte de message doit être modale et attendre la fin de son affichage, ou non modale et permettre au script de continuer son exécution. Notez que, bien qu'une boîte de message modale bloque l'exécution du script, si une boucle principale TKinter est en cours d'exécution, les événements continueront à s'accumuler ; ainsi, si la boîte de message est déclenchée en cliquant sur un bouton, l'utilisateur peut cliquer dessus pendant que la boîte de message est affichée et déclencher une seconde boîte de message qui s'affichera dès que la première sera fermée.

Renvoie:

True si l'information a été affichée avec succès, False sinon

Type renvoyé:

bool

Lève:

SirilError -- si une erreur est survenue.

is_cli()

Vérifier si l'instance actuelle s'exécute en mode ligne de commande. Cette méthode est utile pour détecter comment le script a été invoqué et s'il faut afficher ou non une interface graphique. Ceci vaut False lorsque le script est appelé en cliquant dans le menu Scripts, True sinon.

Renvoie:

True si exécuté en mode ligne de commande, False sinon.

Type renvoyé:

bool

is_image_loaded()

Vérifie si une seule image est chargée dans Siril.

Renvoie:

True si une seule image est chargée, False si aucune image seule n'est chargée

Type renvoyé:

bool

Lève:
is_sequence_loaded()

Vérifie si une séquence est chargé dans Siril.

Renvoie:

True si une séquence est chargée, False si aucune séquence n'est chargée

Type renvoyé:

bool

Lève:
load_image_from_file(filepath, with_pixels=True, preview=False, linked=False)

Demander à Siril de charger une image depuis un fichier et de la transférer vers sirilpy. Cette méthode ne modifie pas l'image actuellement chargée dans Siril. Tout format d'image pris en charge par Siril est accepté. Elle peut être utilisée comme alternative au chargement d'une image via astropy.io.fits, mais son principal avantage est peut-être qu'elle prend en charge l'option d'aperçu, qui permet d'obtenir un rendu 8 bits avec auto ajustement de l'image plus rapidement qu'en utilisant astropy et en appliquant un auto ajustement avec numpy.

Paramètres:
  • filepath (str) -- Chaîne de caractères indiquant le chemin d'accès au fichier image à charger.

  • with_pixels (Optional[bool]) -- booléen spécifiant s'il faut renvoyer ou non les données de pixels de l'image (la valeur par défaut est True).

  • preview (Optional[bool]) -- booléen spécifiant s'il faut renvoyer les données de pixels réelles ou une version d'aperçu en uint8_t avec auto ajustement. N'a d'effet qu'en combinaison avec with_pixels = True

  • linked (Optional[bool]) -- booléen spécifiant si l'aperçu avec auto ajustement doit être lié ou non. N'a d'effet que si preview est True.

Type renvoyé:

Optional[FFit]

Renvoie:

Objet FFit contenant les données de l'image

Lève:
  • FileNotFoundError -- si le fichier indiqué n'existe pas,

  • DataError -- en cas de réception de données erronées,

  • SirilError -- si une erreur est survenue.

log(my_string, color=LogColor.DEFAULT)

Envoyer un message au journal de Siril. La longueur maximale du message est de 1022 octets : les messages plus longs seront tronqués.

Paramètres:
  • my_string (str) -- Le message à loger

  • color (LogColor) -- Définit la couleur du texte, blanc par défaut. Voir la documentation

  • which (for LogColor for an explanation of which colors should be used for)

  • purposes.

Lève:

SirilError -- si la commande échoue

Type renvoyé:

bool

open_dialog(dialog)

Opens a Siril GUI dialog. Introduced in sirilpy version 1.0.20.

Paramètres:

dialog (DialogID) -- Specifies the dialog to open.

Renvoie:

True if the dialog-opening action succeeded False if the dialog-opening action failed (e.g. because the criteria were not met)

Lève:
  • TypeError -- if the parameter is not a DialogID.

  • SirilError -- if the method is called headless or an error occurs.

overlay_add_polygon(polygon)

Ajoute un polygone utilisateur à la superposition d'affichage de Siril :type polygon: Polygon :param polygon: Polygon définissant le polygone à ajouter

Renvoie:

les entrées mise à jours avec l'ID assigné par Siril

Type renvoyé:

Polygon

Lève:
  • TypeError -- données non valides fournies,

  • SirilConnectionError -- en cas d'échec de la connexion,

  • DataError -- en cas de réception de données non valides,

  • SirilError -- pour toutes défaillance

overlay_clear_polygons()

Supprime tous les polygones utilisateur de l'affichage Siril

Renvoie:

True si la commande a abouti, False dans le cas contraire

Type renvoyé:

bool

Lève:
overlay_delete_polygon(polygon_id)

Supprime un seul polygone utilisateur de la superposition Siril, spécifié par ID

Paramètres:

id -- entier spécifiant l'ID du polygone à supprimer

Lève:

SirilError -- en cas d'échec

overlay_draw_polygon(color=16711744, fill=False)

Entre dans un mode où l'utilisateur peut dessiner un polygone dans la fenêtre Siril en cliquant sur le bouton principal de la souris et en faisant glisser. Relâcher le bouton de la souris finalise et ferme le polygone.

Paramètres:
  • color -- uint32 spécifiant des valeurs RGBA compactées. Par défaut : 0x00FF0040, vert transparent à 75 %)

  • fill -- booléen spécifiant s'il faut remplir le polygone ou non (par défaut : False)

overlay_get_polygon(polygon_id)

Récupère un seul polygone utilisateur de la superposition Siril, spécifié par ID

Paramètres:

id -- entier spécifiant l'ID du polygone à récupérer. L'ID spécial -1

récupère le polygone ajouté le plus récemment.

Renvoie:

le polygone spécifié s'il existe, None sinon

Type renvoyé:

Polygon

Lève:

SirilError -- en cas d'échec

overlay_get_polygons_list()

Récupère une liste de tous les polygones utilisateur de la superposition Siril

Renvoie:

la liste des Polygon s'il en existe, None sinon

Type renvoyé:

List[Polygon]

Lève:
pix2radec(x, y)

Convertit une paire de coordonnées de pixels en coordonnées RA et dec à l'aide du WCS de l'image chargée dans Siril. Cela nécessite qu'une image soit chargée dans Siril et qu'elle ait été résolue en astrométrie (c'est-à-dire qu'elle possède une solution WCS).

Paramètres:
  • x (float) -- float : fournit la coordonnée x à convertir

  • y (float) -- float : fournit la coordonnée y à convertir

Renvoie:

(RA, Dec) sous la forme d'un tuple de deux floats.

Type renvoyé:

Tuple[float, float]

Lève:
  • NoImageError -- Si aucune image ou séquence n'est chargé,

  • ValueError -- Si l'image ou l'image de la séquence chargée n'est pas résolue en astrométrie,

  • SirilError -- En cas d'erreurs survenant lors de l'exécution de pix2radec.

radec2pix(ra, dec)

Convertit une paire de coordonnées RA, dec en coordonnées de pixels de l'image à l'aide du WCS de l'image chargée dans Siril. Cela nécessite qu'une image soit chargée dans Siril et qu'elle ait été résolue en astrométrie (c'est-à-dire qu'elle possède une solution WCS).

Paramètres:
  • ra (float) -- float : fournit la coordonnée RA à convertir

  • dec (float) -- float : fournit la coordonnée dec à convertir

Renvoie:

[x,y] comme un Tuple de deux nombres flottants.

Type renvoyé:

Tuple[float, float]

Lève:
  • NoImageError -- Si aucune image ou séquence n'est chargé,

  • ValueError -- Si l'image ou l'image de la séquence chargée n'est pas résolue en astrométrie,

  • SirilError -- En cas d'erreurs survenant lors de l'exécution de radec2pix.

redo()

Rétablit la dernière opération annulée, s'il existe un historique d'annulation et une opération annulée disponible à rétablir.

reset_progress()

Réinitialise la barre de progression de Siril.

Paramètres:

none

Lève:

SirilError -- Pour toutes erreurs.

Type renvoyé:

bool

save_image_file(data, header=None, filename=None)

Enregistrer les données de pixels et les métadonnées de l'image dans un fichier FITS. Cette méthode utilise Siril pour enregistrer l'image et permet donc d'éviter une dépendance du script à astropy si celle-ci n'est nécessaire que pour enregistrer une image. Cela permet d'enregistrer des images directement depuis python sans avoir à utiliser set_image_pixeldata() et set_image_metadata_from_header_string() puis à enregistrer l'image Siril. Elle prend en charge le traitement de plusieurs images sans affecter l'image actuellement chargée dans Siril.

Paramètres:
  • data -- Soit un numpy.ndarray contenant les données de l'image (doit être un tableau 2D ou 3D avec un dtype float32 ou uint16), soit un objet FFit contenant à la fois les données et l'en-tête.

  • header -- chaîne contenant les données de l'en-tête FITS. Requis si data est un tableau numpy, ignoré si data est un objet FFit.

  • filename -- chaîne contenant le chemin où le fichier doit être enregistré. Requis si data est un tableau numpy. Si data est un objet FFit et que filename est None, fit.filename sera utilisé.

Renvoie:

True en cas de succès, False dans le cas contraire

Type renvoyé:

bool

Lève:
  • ValueError -- si le tableau d'entrée ou l'en-tête n'est pas valide,

  • TypeError -- si des types de paramètres non valides sont fournis,

  • SirilError -- si une erreur s'est produite lors du traitement de la commande.

Exemples

# En utilisant un tableau numpy et une chaîne d'en-tête siril.save_image_file(data_array, header_string, "output.fit")

# En utilisant un objet FFit siril.save_image_file(fit, filename="output.fit")

# En utilisant un objet FFit avec son propre nom de fichier siril.save_image_file(fit)

set_image_bgsamples(points, show_samples=False, recalculate=True)

Sérialise un ensemble de points d'échantillonnage de fond et les envoie via la mémoire partagée. Les points peuvent être fournis soit sous forme : - de liste de tuples (x,y) : des BGSamples sont créés avec ces positions et Siril calculera automatiquement les statistiques. - de liste d'objets BGSample : les données complètes de l'échantillon sont envoyées à Siril. Par défaut, Siril recalculera les statistiques des points d'échantillonnage à leur réception, mais cela peut être modifié avec l'argument recalculate=False

Paramètres:
  • points (Union[List[Tuple[float, float]], List[BGSample]]) -- Liste de points d'échantillonnage, soit sous forme de tuples (x,y), soit d'objets BGSample

  • show_samples (bool) -- Afficher ou non les points d'échantillonnage dans Siril

  • recalculate -- Indique s'il faut recalculer les points d'échantillonnage une fois définis. Cela ne s'applique que si les points d'échantillonnage sont fournis sous forme de liste de BGSamples, auquel cas la valeur par défaut est True. Si les points d'échantillonnage sont fournis sous forme de liste de tuples (x,y), ce paramètre n'a aucun effet. Définir recalculate=False est généralement une mauvaise idée, mais cette option est fournie pour prendre en charge d'éventuels usages avancés où les valeurs sont ajustées en code python pour manipuler l'ajustement du fond.

Retourne : True si la commande a abouti, False dans le cas contraire

Lève:
  • NoImageError -- si aucune image n'est chargée dans Siril,

  • ValueError -- si les échantillons n'ont pas de positions valides,

  • SirilError -- s'il y a eu une erreur Siril lors du traitement de la commande.

set_image_filename(filename)

Set the image filename in Siril. :type filename: str :param filename: the image filename to set :type filename: str

Lève:
  • SirilError -- si une erreur est survenue.

  • ValueError -- si les paramètres ne sont pas correctement fournis.

Renvoie:

True si le nom de fichier a été défini avec succès

Type renvoyé:

bool

set_image_iccprofile(iccprofile)

Configurer le profil ICC de l'image dans Siril

Paramètres:
  • iccprofile (bytes) -- The ICC profile to send to Siril. This will

  • profile (replace an existing ICC)

  • None (if one is set. If)

:param : :param any existing image ICC profile will be removed.:

Retourne : True si la commande a abouti, False dans le cas contraire

Lève:
  • NoImageError -- si aucune image n'est chargée dans Siril,

  • ValueError -- if iccprofile is not valid type,

  • SirilError -- s'il y a eu une erreur Siril lors du traitement de la commande.

set_image_metadata_from_header_string(header)

Envoyer les métadonnées de l'image à Siril à partir d'un en-tête FITS. L'en-tête peut être obtenu à partir d'un FFit.header de sirilpy, ou bien à partir d'un fichier FITS ouvert depuis le disque à l'aide d'astropy.fits.

Exemple :

hdul = fits.open('your_fits_file.fits')
# Get the header from the primary HDU (or any other HDU you want)
header = hdul[0].header
# Convert the header to string
header_string = header.tostring(sep='\\n')
# Send the metadata to Siril
siril.set_image_metadata_from_header_string(header_string)
Paramètres:

header (str) -- chaîne contenant les données de l'en-tête FITS

Renvoie:

True en cas de succès, False dans le cas contraire

Type renvoyé:

bool

Lève:
  • TypeError -- paramètre invalide fourni,

  • NoImageError -- si aucune image n'est chargée dans Siril,

  • SirilError -- si une erreur est survenue.

set_image_pixeldata(image_data)

Envoyer les données d'image à Siril à l'aide de la mémoire partagée.

Paramètres:

image_data (ndarray) -- numpy.ndarray contenant les données de l'image. Doit être un tableau 2D (canal unique) ou 3D (multi-canal) avec un dtype np.float32 ou np.uint16.

Lève:
  • NoImageError -- si aucune image n'est chargée dans Siril,

  • ValueError -- Si le tableau d'entré est invalide,

  • SirilError -- si une erreur s'est produite lors du traitement de la commande.

Type renvoyé:

bool

set_seq_frame_incl(index, incl)

Définir si les image(s) données sont incluses dans la séquence actuellement chargée dans Siril. Cette méthode est destinée à être utilisée pour créer des filtres de séquence personnalisés.

Paramètres:
  • index (Union[int, List[int]]) -- entier ou liste d'entiers spécifiant pour quelle(s) image(s) définir le statut d'inclusion. Ceci utilise un indexage débutant à 0, c'est-à-dire que la première image est l'image numéro 0, et non l'image numéro 1. Le passage d'une liste est disponible depuis sirilpy 1.0.17

  • incl (bool) -- booléen spécifiant si les image(s) sont incluses ou non.

Lève:
  • NoSequenceError -- si aucune séquence n'est chargée dans Siril,

  • TypeError -- si l'index n'est pas un entier ou une liste d'entiers,

  • SirilError -- en cas d'échec.

set_seq_frame_pixeldata(index, image_data, prefix)

Envoyer les données d'image d'une image de séquence à Siril via la mémoire partagée. Notez que cette méthode ne fonctionne qu'avec les séquences d'images FITS : elle ne fonctionne pas avec les séquences en fichier unique FITSEQ, SER ou AVI. Le gestionnaire de contexte image_lock() n'est pas nécessaire pour utiliser cette méthode.

Paramètres:
  • index (int) -- entier spécifiant l'image pour laquelle définir les données de pixels. Ceci utilise un indexage débutant à 0, c'est-à-dire que la première image est l'image numéro 0, et non l'image numéro 1.

  • image_data (ndarray) -- numpy.ndarray contenant les données de l'image. Doit être un tableau 2D (canal unique) ou 3D (multi-canal) avec un dtype np.float32 ou np.uint16.

  • prefix (str) -- Préfixe de chaîne à utiliser lors de l'enregistrement du fichier pour créer une nouvelle séquence. Notez qu'enregistrer les images de la séquence avec un nouveau préfixe ne crée pas en soi une nouvelle séquence : une fois que toutes les images ont été enregistrées avec le nouveau préfixe de séquence, sirilpy.SirilInterface.create_new_seq() doit être appelée pour créer le fichier de séquence proprement dit. Notez que, bien qu'il soit permis de passer prefix=None, cela écrasera la séquence existante et ce n'est généralement pas ce qui est souhaité ; ce paramètre n'est donc pas facultatif et doit être passé explicitement.

Lève:
  • NoSequenceError -- si aucune séquence n'est chargée dans Siril,

  • ValueError -- Si le tableau d'entré est invalide,

  • SirilError -- si une erreur s'est produite lors du traitement de la commande.

Type renvoyé:

bool

set_siril_pan(xoff, yoff)

Set the display offset (pan) in Siril to (xoff, yoff). :type xoff: float :param xoff: x display offset :type xoff: float :type yoff: float :param yoff: y display offset :type yoff: float

Lève:
  • SirilError -- si une erreur est survenue.

  • ValueError -- si les paramètres ne sont pas correctement fournis.

Renvoie:

True si le décalage d'affichage a été défini avec succès

Type renvoyé:

bool

set_siril_selection(x=None, y=None, w=None, h=None, selection=None)

Défini la sélection d'image dans Siril à l'aide des coordonnées et des dimensions fournies.

Paramètres:
  • x (Optional[int]) -- Coordonnée X du coin supérieur gauche de la sélection (doit être fournie avec y, w, h)

  • y (Optional[int]) -- Coordonnée Y du coin supérieur gauche de la sélection (doit être fournie avec x, w, h)

  • w (Optional[int]) -- Largeur de la sélection (doit être fournie avec x, y, h)

  • h (Optional[int]) -- Hauteur de la sélection (doit être fournie avec x, y, w)

  • selection (Optional[Tuple[int, int, int, int]]) -- Un tuple (x, y, w, h) tel que renvoyé par get_siril_selection()

Lève:
  • SirilError -- si une erreur est survenue.

  • ValueError -- si les paramètres ne sont pas correctement fournis.

Renvoie:

True si la sélection a été effectuée avec succès

Type renvoyé:

bool

set_siril_slider_lohi(lo=None, hi=None)

Définir les valeurs des curseurs dans Siril à l'aide des valeurs lo et hi fournies. Si le mode des curseurs n'est pas déjà réglé sur USER, il est réglé sur ce mode car la définition des valeurs de curseur n'est pertinente que dans ce mode. :type lo: Union[float, int] :param lo: valeur basse du curseur (float [0,1] ou uint16) :type hi: Union[float, int] :param hi: valeur haute du curseur (float [0,1] ou uint16)

Lève:
  • SirilError -- si une erreur est survenue.

  • ValueError -- si les paramètres ne sont pas correctement fournis.

Renvoie:

True si l'état du curseur a été défini correctement

Type renvoyé:

bool

set_siril_slider_mode(mode)

Définir l'état des curseurs dans Siril à l'aide des valeurs lo, hi et mode fournies. :type mode: SlidersMode :param mode: valeur d'énumération SlidersMode

Lève:
  • SirilError -- si une erreur est survenue.

  • ValueError -- si les paramètres ne sont pas correctement fournis.

Renvoie:

True si l'état du curseur a été défini correctement

Type renvoyé:

bool

set_siril_stf(mode)

Définir la fonction de transfert d'écran dans Siril à l'aide de la valeur d'énumération fournie. :type mode: SlidersMode :param mode: valeur d'énumération STFType

Lève:
  • SirilError -- si une erreur est survenue.

  • ValueError -- si les paramètres ne sont pas correctement fournis.

Renvoie:

True si l'état du curseur a été défini correctement

Type renvoyé:

bool

set_siril_stf_linked(state)

Définir la fonction de transfert d'écran dans Siril à l'aide de la valeur d'énumération fournie. :type state: bool :param state: bool

Lève:
  • SirilError -- si une erreur est survenue.

  • ValueError -- si les paramètres ne sont pas correctement fournis.

Renvoie:

True si l'état du curseur a été défini correctement

Type renvoyé:

bool

set_siril_zoom(zoom)

Set the display zoom. Passing any negative value will set 'zoom to fit'. :type zoom: float :param zoom: zoom level :type zoom: float

Lève:
  • SirilError -- si une erreur est survenue.

  • ValueError -- si les paramètres ne sont pas correctement fournis.

Renvoie:

True si le décalage d'affichage a été défini avec succès

Type renvoyé:

bool

undo()

Annule la dernière opération, s'il existe un historique d'annulation disponible.

undo_save_state(my_string)

Saves an undo state. The maximum message length is 70 bytes: longer messages will be truncated. Requires a single image to be loaded.

Paramètres:

my_string (str) -- Le message à écrire dans le FITS HISTORY

Renvoie:

True if the message was successfully logged, False if a logging error occurred or None if the script is headless (undo does not happen when headless)

Type renvoyé:

Optional[bool]

Lève:

SirilError -- si une erreur est survenue.

update_progress(message, progress)

Envoyer une mise à jour de progression à Siril avec un message et un pourcentage d'achèvement.

Paramètres:
  • message (str) -- Message de statu à afficher

  • progress (float) -- Valeur de progression comprise entre 0,0 et 1,0. Les valeurs spéciales suivantes peuvent être utilisées : -1,0 fera pulser la barre de progression, et -2,0 mettra à jour le texte de la barre de progression sans mettre à jour la progression affichée dans la barre.

Lève:
  • ValueError -- Si l'argument progress est hors limites,

  • SirilError -- Pour tout autre erreurs.

Type renvoyé:

bool

warning_messagebox(my_string, modal=False)

Envoyer un message d'avertissement à Siril. La longueur maximale du message est de 1022 octets : les messages plus longs seront tronqués. Ceci est destiné à afficher des messages d'avertissement de manière plus visible qu'en utilisant le journal de Siril.

Paramètres:
  • my_string (str) -- Le message à afficher dans la boite de message d'avertissement

  • modal (Optional[bool]) -- Définit si la boîte de message doit être modale et attendre la fin de son affichage, ou non modale et permettre au script de continuer son exécution. Notez que, bien qu'une boîte de message modale bloque l'exécution du script, si une boucle principale TKinter est en cours d'exécution, les événements continueront à s'accumuler ; ainsi, si la boîte de message est déclenchée en cliquant sur un bouton, l'utilisateur peut cliquer dessus pendant que la boîte de message est affichée et déclencher une seconde boîte de message qui s'affichera dès que la première sera fermée.

Renvoie:

True si l'avertissement a correctement été affiché, False sinon

Type renvoyé:

bool

Lève:

SirilError -- si une erreur est survenue.

xy_plot(plot_data, display=True, save=False)

Sérialise les données de tracé et les envoie via la mémoire partagée. Consultez la documentation du sous-module sirilpy.plot pour savoir comment configurer un objet PlotData à utiliser avec SirilInterface.xy_plot()

Paramètres:
  • plot_metadata -- Objet PlotMetadata contenant la configuration du graphique

  • display -- booléen indiquant s'il faut afficher le graphique à l'écran (valeur par défaut : True)

  • save -- booléen indiquant s'il faut enregistrer dans le fichier spécifié dans PlotData.savename (par défaut False)

Lève:
  • DataError -- si des données xy_plot non valides sont reçues via la mémoire partagée,

  • SirilError -- Si une erreur se produit.

Modèles de données Sirilpy

Ce sous-module fournit des dataclasses pour représenter les principales structures de données de Siril. La plupart des dataclasses disposent de méthodes de désérialisation correspondantes utilisées par les méthodes de SirilInterface. Tous ses membres sont disponibles au niveau racine du module, il n'est pas nécessaire d'importer models séparément.

class sirilpy.models.BGSample(x=None, y=None, position=None, size=25, **kwargs)

Bases : object

Équivalent Python de la structure Siril background_sample. Utilisée pour contenir les données d'échantillonnage de fond obtenues depuis Siril, ou pour générer ou modifier des données d'échantillonnage de fond à définir dans Siril. Un BGSample peut être construit ainsi : - s1 = BGSample(x=1.0, y=2.0) - s2 = BGSample(position=(1.0, 2.0)) - s3 = BGSample(x=1.0, y=2.0, mean=0.5, size=31)

classmethod deserialize(data)

Désérialise une portion d'un tampon en un objet BGSample

Paramètres:

data (bytes) -- Le tampon binaire complet contenant les données BGSample

Renvoie:

Un objet BGSample

Type renvoyé:

BGSample

Lève:
  • ValueError -- Si la taille de la tranche du tampon ne correspond pas à la taille attendue.

  • struct.error -- S'il y a une erreur lors du dépaquetage des données binaires.

max: float = 0.0
mean: float = 0.0
median: Tuple[float, float, float] = (0.0, 0.0, 0.0)

Valeur médiane des canaux R, V et B. Pour les images mono, seul median[0] est utilisé.

min: float = 0.0
position: Tuple[float, float] | None = None

Position (x, y) en coordonnées image

size: int = 25

La taille par défaut correspond à la taille des échantillons de fond de Siril.

valid: bool = True

Par défaut, les échantillons sont considérés comme valides

class sirilpy.models.DistoData(index=DistoType.DISTO_UNDEF, filename='', velocity=(0, 0))

Bases : object

Équivalent Python de la structure Siril disto_params

filename: str = ''

nom de fichier si DISTO_FILE ou DISTO_MASTER (et facultatif pour DISTO_FILE_COMET)

index: DistoType = 0

Spécifie le type de distortion

velocity: Tuple[float, float] = (0, 0)

vitesse de décalage si DISTO_FILE_COMET

class sirilpy.models.FFit(bitpix=None, orig_bitpix=None, naxis=0, _naxes=(0, 0, 0), keywords=<factory>, checksum=False, header=None, unknown_keys=None, stats=<factory>, mini=0.0, maxi=0.0, neg_ratio=0.0, _data=None, top_down=False, _focalkey=False, _pixelkey=False, history=<factory>, color_managed=False, _icc_profile=None)

Bases : object

Équivalent Python de la structure Siril ffit (FITS), contenant les données de pixels de l'image et les métadonnées.

allocate_data()

Alloue de la mémoire pour les données d'image avec le type approprié. self.width, self.height, self.naxis, self.naxes et self.dtype doivent être définis avant d'appeler cette méthode.

Lève:

ValueError -- si self.bitpix n'est pas défini sur BitpixType.USHORT_IMG ou BitpixType.FLOAT_IMG

ensure_data_type(target_type=None)

S'assurer que les données sont du bon type avec une mise à l'échelle appropriée

Paramètres:

target_type -- np.dtype facultatif vers lequel convertir. Si None, utilise self.type

Lève:

ValueError -- si la conversion se fait entre des types de données qui ne sont pas utilisés en interne par Siril pour le calcul

estimate_noise(array, nullcheck=True, nullvalue=0.0)

Estime le bruit de fond dans l'image d'entrée à l'aide de l'écart-type des différences du premier ordre.

bruit = 1.0 / sqrt(2) * RMS de (flux[i] - flux[i-1])

Paramètres:
  • array (np.ndarray) -- Tableau 2D de pixels d'image (np.uint16 ou np.float32).

  • nullcheck (bool) -- Si la valeur est True, vérifiez s'il y a des valeurs nulles.

  • nullvalue (Optional[float]) -- La valeur des pixels nuls (utilisée uniquement si nullcheck est True).

Renvoie:

Valeur estimé du bruit.

Type renvoyé:

float

Lève:

ValueError -- si le tableau n'a pas la bonne taille

get_channel(channel)

Récupère un canal spécifique des données de pixels. Notez que cela ne récupère pas directement les données de pixels de l'image chargée dans Siril : celles-ci doivent avoir été préalablement obtenues à l'aide de get_image_pixeldata() ou get_image()

Type renvoyé:

ndarray

update_stats()

Met à jour les statistiques de l'image pour tous les canaux. Notez que cela ne met à jour les statistiques qu'à partir du tableau NumPy représentant les données de pixels dans l'objet FFit Python ; cela ne met pas à jour les statistiques de l'image dans Siril.

bitpix: BitpixType | None = None

Spécification de l'en-tête FITS du type de données de l'image.

property channels: int

Canaux d'image

checksum: bool = False

Indique si Siril écrira les sommes de contrôle des données FITS pour ce fichier.

color_managed: bool = False

Spécifie si l'image bénéficie ou non de la gestion des couleurs.

property data: ndarray | None

Les données de pixels de l'image actuellement chargée dans Siril, stockées sous forme de tableau NumPy

header: str | None = None

L'entête FITS en temps que chaîne de caractère.

property height: int

Hauteur de l'image

history: list[str]

Contient une liste de chaînes contenant les entrées HISTORY de cette image.

property icc_profile: bytes | None

Le profil ICC sous forme de données brutes en octets. Celui-ci peut être converti pour être utilisé par des modules tels que pillow, capables de gérer les profils ICC.

keywords: FKeywords

Un objet FKeywords contenant les mots-clés de l'en-tête FITS.

maxi: float = 0.0

La valeur maximal à travers tous les canaux de l'image.

mini: float = 0.0

La valeur minimal à travers tous les canaux de l'image.

property naxes: Tuple[int, int, int]

Le tuple naxes contient les dimensions de l'image sous forme largeur x hauteur x canaux. Notez que l'ordre des axes diffère entre la représentation Siril contenue dans naxes et la représentation numpy contenue dans _data.shape (qui est canaux x hauteur x largeur)

naxis: int = 0

Le nombre d'axes (2 pour une image mono, 3 pour une image RGB). Correspond au mot clé FITS NAXIS.

neg_ratio: float32 = 0.0

Le rapport entre le nombre de pixels négatifs et le nombre total de pixels.

orig_bitpix: BitpixType | None = None

Spécification de l'en-tête FITS du type de données de l'image d'origine.

stats: List[ImageStats | None]

Une liste d'objets ImageStats, un pour chaque canal.

top_down: bool = False

Spécifie le ROWORDER pour cette image. La spécification FITS indique que les fichiers FITS doivent être stockés de bas en haut (bottom-up), mais de nombreux capteurs CMOS sont nativement TOP_DOWN et les logiciels de capture ont tendance à enregistrer les images FITS capturées par ces capteurs en TOP_DOWN.

unknown_keys: str | None = None

Toutes les clés d'en-tête FITS inconnues sous forme de chaîne. Cela donne accès aux cartes d'en-tête que Siril n'utilise pas en interne.

property width: int

Largeur de l'image

class sirilpy.models.FKeywords(bscale=1.0, bzero=0.0, lo=0, hi=0, flo=0.0, fhi=0.0, program='', filename='', row_order='', filter='', image_type='', object='', instrume='', telescop='', observer='', bayer_pattern='', sitelat_str='', sitelong_str='', focname='', date=None, date_obs=None, data_max=0.0, data_min=0.0, pixel_size_x=0.0, pixel_size_y=0.0, binning_x=1, binning_y=1, expstart=0.0, expend=0.0, bayer_xoffset=0, bayer_yoffset=0, airmass=1.0, focal_length=0.0, flength=0.0, iso_speed=0.0, exposure=0.0, aperture=0.0, ccd_temp=0.0, set_temp=0.0, livetime=0.0, stackcnt=0, cvf=0.0, gain=0, offset=0, focuspos=0, focussz=0, foctemp=0.0, centalt=0.0, centaz=0.0, sitelat=0.0, sitelong=0.0, siteelev=0.0, objctra=None, objctdec=None, ra=None, dec=None, pltsolvd=False, pltsolvd_comment=None)

Bases : object

Équivalent Python de la structure Siril fkeywords. Contient les valeurs des mots-clés de l'en-tête FITS converties en types de données appropriés.

classmethod deserialize(data)

Désérialise un bloc binaire de mots-clés (le bloc produit par keywords_to_py()) en un objet FKeywords. Lève ValueError en cas d'incohérence de taille et SirilError pour les autres problèmes de dépaquetage.

Type renvoyé:

FKeywords

FLEN_VALUE: ClassVar[int] = 71
KEYWORDS_FORMAT: ClassVar[str] = '!71s71s71s71s71s71s71s71s71s71s71s71s71s71s71s71sddQQddddddQQdddddddqqdddddddddQdqqqqdqqdd?'
KEYWORDS_SIZE: ClassVar[int] = 1465
airmass: float = 1.0

Masse d'air au centre du cadre (Gueymard 1993)

aperture: float = 0.0

Valeur de l'ouverture en nombre flottant

bayer_pattern: str = ''

Matrice de Bayer

bayer_xoffset: int = 0

Décalage X du motif Bayer

bayer_yoffset: int = 0

Décalage Y du motif Bayer

binning_x: int = 1

Carte d'en-tête FITS XBINNING sous forme d'entier

binning_y: int = 1

mot clé YBINNING de l'en-tête FITS en int

bscale: float = 1.0

Décalage de la plage de données par rapport à celle d'une valeur non signée (unsigned short)

bzero: float = 0.0

Facteur d'échelle par défaut

ccd_temp: float = 0.0

Température du CCD en nombre à virgule flotante

centalt: float = 0.0

[deg] Altitude du télescope

centaz: float = 0.0

[deg] Azimut du télescope

cvf: float = 0.0

Facteur de conversion (e-/ ADU)

data_max: float = 0.0

utilisé pour vérifier si le flottant 32 bits est dans la plage [0, 1]

data_min: float = 0.0

utilisé pour vérifier si le flottant 32 bits est dans la plage [0, 1]

date: datetime | None = None

Date UTC de création du fichier FITS

date_obs: datetime | None = None

ss début de l'observation, UT

Type:

YYYY-MM-DDThh

Type:

mm

dec: float | None = None

Dec en nombre flottant, si disponible

expend: float = 0.0

Fin de l'exposition sous forme de date julienne

exposure: float = 0.0

Temps d'exposition en nombre flottant (s)

expstart: float = 0.0

Début de l'exposition sous forme de date julienne

fhi: float32 = 0.0

Clé MIPS-Hi dans le fichier FITS, « coupure supérieure de visualisation (flottant) »

filename: str = ''

Nom de fichier d'origine

filter: str = ''

Nom du filtre actif

flength: float = 0.0

[mm] Longueur focale

flo: float32 = 0.0

Clé MIPS-LO dans le fichier FITS, « coupure inférieure de visualisation (flottant) »

focal_length: float = 0.0

[mm] Longueur focale

focname: str = ''

Nom de l'équipement de mise au point

foctemp: float = 0.0

Température du focuseur

focuspos: int = 0

Position du focuseur

focussz: int = 0

[um] Taille du pas du focuseur

gain: int = 0

Facteur de gain lu depuis la caméra

hi: int = 0

Clé MIPS-HI dans le fichier FITS, « coupure supérieure de visualisation »

image_type: str = ''

Types d'image

instrume: str = ''

Nom de l'instrument

iso_speed: float = 0.0

Valeur de sensibilité ISO sous forme de nombre à virgule flottante

livetime: float = 0.0

Somme des temps d'expositions (s)

lo: int = 0

Clé MIPS-LO dans le fichier FITS, « coupure inférieure de visualisation »

objctdec: str | None = None

objet Dec sous forme de string, si disponible

objctra: str | None = None

objet Ra sous forme de string, si disponible

object: str = ''

Nom de l'objet d'intérêt

observer: str = ''

Nom de l'observateur

offset: int = 0

Valeur d'offset lue dans la caméra

pixel_size_x: float = 0.0

mot clé XPIXSZ de l'entête FITS en float

pixel_size_y: float = 0.0

mot clé YPIXSZ de l'entête FITS en float

pltsolvd: bool = False

si résolution astrométrique ou non

pltsolvd_comment: str | None = None

commentaire sur a solution astrométrique

program: str = ''

Logiciel qui a créé ce HDU

ra: float | None = None

Ra en nombre flottant, si disponible

row_order: str = ''

Ordre des lignes dans le tableau d'images

set_temp: float = 0.0

Température de consigne du CCD sous forme de nombre flottant

siteelev: float = 0.0

[m] Élévation du site d'observation

sitelat: float = 0.0
sitelat_str: str = ''
sitelong: float = 0.0

[deg] Longitude du site d'observation

sitelong_str: str = ''
stackcnt: int = 0

Nombres d'images empilé

telescop: str = ''

Télescope utilisé pour acquérir cette image

class sirilpy.models.FPoint(x, y)

Bases : object

Représente un point 2D avec des valeurs de coordonnées x et y flottantes dans l'image Siril.

x: float

coordonnée x

y: float

coordonnée y

class sirilpy.models.Homography(h00=0.0, h01=0.0, h02=0.0, h10=0.0, h11=0.0, h12=0.0, h20=0.0, h21=0.0, h22=0.0, pair_matched=0, Inliers=0)

Bases : object

Équivalent Python de la structure Siril Homography. Contient les coefficients de la matrice d'homographie qui projette une image de la séquence sur l'image de référence.

Inliers: int = 0

nombre d'inliers conservés après l'étape RANSAC

h00: float = 0.0

Matrice d'homographie H00

h01: float = 0.0

Matrice d'homographie H01

h02: float = 0.0

Matrice d'homographie H02

h10: float = 0.0

Matrice d'homographie H10

h11: float = 0.0

Matrice d'homographie H11

h12: float = 0.0

Matrice d'homographie H12

h20: float = 0.0

Matrice d'homographie H20

h21: float = 0.0

Matrice d'homographie H21

h22: float = 0.0

Matrice d'homographie H22

pair_matched: int = 0

nombre de paires trouvées

class sirilpy.models.ImageAnalysis(bgnoise=0.0, fwhm=0.0, wfwhm=0.0, nbstars=0, roundness=0.0, imagetype=0, timestamp=0, channels=0, height=0, width=0, filter='')

Bases : object

Structure destinée à contenir les données d'analyse d'image, utilisée pour le tri

classmethod deserialize(data)

Dépaquette une structure binaire compatible réseau en une instance ImageAnalysis.

Type renvoyé:

ImageAnalysis

serialize()

Empaquette la dataclass en une structure binaire compatible réseau.

Type renvoyé:

bytes

FLEN: ClassVar[int] = 71
bgnoise: float = 0.0

Bruit de fond RMS

channels: int = 0

nombre de canaux dans l'image

filter: str = ''

nom du filtre (chaîne de longueur fixe issue du C, 70 caractères max)

fwhm: float = 0.0

Moyenne fwhm

height: int = 0

hauteur de l'image

imagetype: ImageType = 0

Énumération du type d'image

nbstars: int = 0

Nombre d'étoiles détectées

roundness: float = 0.0

Moyenne de la rondeur des étoiles

timestamp: int = 0

00 UTC)

Type:

horodatage UNIX (secondes sur 64 bits depuis le 1/1/1970 00

wfwhm: float = 0.0

FWHM pondérée moyenne

width: int = 0

largeur de l'image

class sirilpy.models.ImageStats(total=0, ngoodpix=0, mean=0.0, median=0.0, sigma=0.0, avgDev=0.0, mad=0.0, sqrtbwmv=0.0, location=0.0, scale=0.0, min=0.0, max=0.0, normValue=0.0, bgnoise=0.0)

Bases : object

Équivalent Python de la structure Siril imstats. Contient les statistiques d'un canal particulier d'une image Siril.

classmethod deserialize(data)

Désérialise des données binaires en un objet ImageStats.

Paramètres:

data (bytes) -- (bytes) Données binaires à dépaqueter

Type renvoyé:

ImageStats

Renvoie : un objet ImageStats

Raises: SirilError: Si la taille des données reçues est incorrecte

struct.error : En cas d'échec du décompressage

avgDev: float = 0.0

écart moyen des pixels

bgnoise: float = 0.0

Bruit de fond RMS

location: float = 0.0

position des valeurs de pixels

mad: float = 0.0

écart moyen des pixels

max: float = 0.0

valeur maximale du pixel

mean: float = 0.0

valeur moyenne des pixels

median: float = 0.0

valeur médiane des pixels

min: float = 0.0

valeur minimale du pixel

ngoodpix: int = 0

nombre de pixels différents de zéro

normValue: float = 0.0

valeur normé des pixels

scale: float = 0.0

Valeur de normalisation des pixels

sigma: float = 0.0

déviation standard des pixels

sqrtbwmv: float = 0.0

racine carrée de la biweight midvariance des valeurs de pixels

total: int = 0

nombre total de pixels

class sirilpy.models.ImgData(filenum=0, incl=False, date_obs=None, airmass=0.0, rx=0, ry=0)

Bases : object

Équivalent Python de la structure Siril imgdata

classmethod deserialize(response)

Désérialise une réponse binaire en un objet ImgData.

Paramètres:

response (bytes) -- Données binaires à décompresser.

Renvoie:

Un objet ImgData contenant les données désérialisées.

Type renvoyé:

ImgData

Lève:
  • ValueError -- Si la taille des données reçues est incorrecte.

  • struct.error -- Si la décompression échoue.

airmass: float = 0.0

airmass de l'image

date_obs: datetime | None = None

date de l'observation

filenum: int = 0

index réel du fichier dans la séquence

incl: bool = False

sélectionné dans la séquence

rx: int = 0

width

ry: int = 0

height

class sirilpy.models.PSFStar(star_name=None, B=0.0, A=0.0, x0=0.0, y0=0.0, sx=0.0, sy=0.0, fwhmx=0.0, fwhmy=0.0, fwhmx_arcsec=0.0, fwhmy_arcsec=0.0, angle=0.0, rmse=0.0, sat=0.0, R=0, has_saturated=False, beta=0.0, profile=StarProfile.GAUSSIAN, xpos=0.0, ypos=0.0, mag=0.0, Bmag=0.0, s_mag=999.99, s_Bmag=999.99, SNR=0.0, phot_is_valid=False, BV=0.0, B_err=0.0, A_err=0.0, x_err=0.0, y_err=0.0, sx_err=0.0, sy_err=0.0, ang_err=0.0, beta_err=0.0, layer=0, units=None, ra=0.0, dec=0.0)

Bases : object

Équivalent Python de la structure Siril fwhm_struct. Contient les données d'un ajustement modélisé pour une étoile identifiée dans l'image.

classmethod deserialize(data)

Désérialise une portion d'un tampon en un objet PSFStar.

Paramètres:

data (bytes) -- (bytes) Le tampon binaire complet contenant les données PSFStar.

Type renvoyé:

PSFStar

Renvoie:

Objet PSFStar

Lève:
  • ValueError -- Si la taille de la tranche du tampon ne correspond pas à la taille attendue.

  • struct.error -- S'il y a une erreur lors du dépaquetage des données binaires.

A: float = 0.0

amplitude

A_err: float = 0.0

erreur en A

B: float = 0.0

valeur moyenne du fond du ciel

BV: float = 0.0

utilisé uniquement pour transmettre des données lors de l'étalonnage des couleurs par photométrie

B_err: float = 0.0

erreur en B

Bmag: float = 0.0

magnitude B

R: int = 0

Taille de boîte optimisée pour englober suffisamment de pixels dans le fond

SNR: float = 0.0

SNR de l'étoile

ang_err: float = 0.0

erreur sur l'angle

angle: float = 0.0

angle des axes x et y de l'étoile par rapport aux axes x et y de l'image

beta: float = 0.0

Paramètre beta de l'équation Moffat

beta_err: float = 0.0

erreur en beta

dec: float = 0.0

Déclinaison

fwhmx: float = 0.0

FWHM selon l'axe x en pixels

fwhmx_arcsec: float = 0.0

FWHM sur l'axe x en arc seconds

fwhmy: float = 0.0

FWHM selon l'axe y en pixels

fwhmy_arcsec: float = 0.0

FWHM sur l'axe xyen arc seconds

has_saturated: bool = False

Indique si l'étoile est saturée ou non

layer: int = 0

canal de l'image sur lequel la modélisation de l'étoile a été effectuée

mag: float = 0.0
  1. magnitude, approximatif ou précis

phot_is_valid: bool = False

True si mag, Bmag, s_mag, s_Bmag et SNR sont photométriquement précis, sans pixels saturés. Introduit dans sirilpy 1.0.4.

profile: StarProfile = 0
ra: float = 0.0

Ascension droite

rmse: float = 0.0

RMSE de la minimisation

s_Bmag: float = 999.99

Erreur sur la magnitude B

s_mag: float = 999.99

erreur sur la magnitude (V)

sat: float = 0.0

Niveau au dessus duquel les pixels sont saturés

star_name: str | None = None
sx: float = 0.0

Taille de la fonction ajustée sur l'axe x en coordonnées PSF

sx_err: float = 0.0

erreur en sx

sy: float = 0.0

Taille de la fonction ajustée sur l'axe y en coordonnées PSF

sy_err: float = 0.0

erreur en sy

units: str | None = None

Unité

x0: float = 0.0

coordonnée x du pic

x_err: float = 0.0

erreur en x

xpos: float = 0.0

position x de l'étoile dans l'image

y0: float = 0.0

coordonnée y du pic

y_err: float = 0.0

erreur en y

ypos: float = 0.0

position y de l'étoile dans l'image

class sirilpy.models.Polygon(points, polygon_id=0, color=4294967295, fill=False, legend=None)

Bases : object

Représente un polygone défini par l'utilisateur. Ceux-ci peuvent être remplis ou en contour seul, et peuvent avoir n'importe quelle couleur et valeur de transparence (alpha). Ils peuvent également avoir une étiquette facultative affichée centrée sur le polygone.

Notez que les Polygons doivent être considérés comme transitoires s'ils sont utilisés avec la superposition - ils peuvent être utilisés pour afficher des informations à l'utilisateur, mais ils peuvent être effacés à tout moment si l'utilisateur active le bouton de superposition dans l'interface principale de Siril pour effacer la superposition.

classmethod deserialize_polygon(data)

Crée un objet Polygon en désérialisant un tableau d'octets.

Renvoie:

Un objet Polygon et les octets restants dans le tableau d'octets. (Les octets restants sont destinés à être utilisés dans deserialize_polygon_list et peuvent être ignorés sans risque si vous désérialisez un seul polygone.)

Type renvoyé:

Tuple

Lève:

ValueError -- Si les données disponibles sont insuffisantes pour la désérialisation.

classmethod deserialize_polygon_list(data)

Crée une liste d'objets Polygon en désérialisant un tableau d'octets.

Renvoie:

Une liste d'objets Polygon.

Type renvoyé:

List

Lève:

ValueError -- S'il y a des données non valides à désérialiser.

classmethod from_rectangle(rect, **kwargs)

Crée un Polygon à partir d'un rectangle du type de celui renvoyé par sirilpy.connection.get_siril_selection().

Paramètres:
  • rect (Tuple[int, int, int, int]) -- Rectangle tel que (x,y largeur, hauteur)

  • **kwargs -- Arguments nommés supplémentaires à transmettre au constructeur de Polygon (polygon_id, color, fill, legend)

Renvoie:

Une nouvelle instance de Polygon représentant le rectangle

Type renvoyé:

Polygon

contains_point(x, y)

Détermine si un point se trouve à l'intérieur du polygone à l'aide de l'algorithme optimisé du nombre d'enroulement (winding number) de Dan Sunday.

Cet algorithme est plus robuste que le lancer de rayons pour les polygones complexes et gère mieux les cas limites, y compris les points situés sur les bords et les polygones auto-intersectants.

Paramètres:
  • x (float) -- Coordonnée X du point à tester.

  • y (float) -- Coordonnée Y du point à tester.

Renvoie:

True si le point est à l'intérieur du polygone, False sinon.

Type renvoyé:

bool

get_bounds()

Obtenir la boîte englobante du polygone.

Renvoie:

(min_x, min_y, max_x, max_y)

Type renvoyé:

Tuple[float, float, float, float]

Lève:

ValueError -- Si le polygone n'a aucun point.

get_max_x()

Obtenir la coordonnée x maximale du polygone.

Type renvoyé:

float

get_max_y()

Obtenir la coordonnée y maximale du polygone.

Type renvoyé:

float

get_min_x()

Obtenir la coordonnée x minimale du polygone.

Type renvoyé:

float

get_min_y()

Obtenir la coordonnée y minimale du polygone.

Type renvoyé:

float

serialize()

Sérialise un seul objet Polygon en un tableau d'octets.

Renvoie:

Un tableau d'octets représentant les données sérialisées du polygone.

Type renvoyé:

bytes

Lève:

ValueError -- Si le nombre de points dépasse la limite autorisée.

color: int = 4294967295

Couleur RGBA 32 bits (compactée, uint_8 par composant. La valeur par défaut est 0xFFFFFFFF)

fill: bool = False

indique si le polygone doit être rempli ou non lors du dessin

legend: str = None

une légende optionnelle

points: List[FPoint]

Liste de points définissant la forme du polygone

polygon_id: int = 0

identifiant unique

class sirilpy.models.RegData(fwhm=0.0, weighted_fwhm=0.0, roundness=0.0, quality=0.0, background_lvl=0.0, number_of_stars=0, H=<factory>)

Bases : object

Équivalent Python de la structure Siril regdata

classmethod deserialize(data)

Désérialise une réponse binaire en un objet RegData.

Paramètres:

data (bytes) -- Binary data to unpack

Type renvoyé:

RegData

Returns: RegData object

Raises: SirilError if the received data doesn't match the expected size'

struct.error If unpacking fails

H: Homography

Stocke une matrice d'homographie décrivant la transformation affine de cette image vers l'image de référence

background_lvl: float32 = 0.0

niveau du fond de ciel

fwhm: float = 0.0

copie de fwhm->fwhmx, utilisée comme indicateur de qualité

number_of_stars: int = 0

nombre d'étoiles détectées dans l'image

quality: float = 0.0

mesure de la qualité de l'image

roundness: float32 = 0.0

fwhm->fwhmy / fwhm->fwhmx, 0 si non initialisé, ]0, 1] si défini

weighted_fwhm: float32 = 0.0

utilisé pour exclure les images douteuses

class sirilpy.models.Sequence(seqname='', number=0, selnum=0, fixed=0, nb_layers=-1, rx=0, ry=0, is_variable=False, bitpix=0, reference_image=0, imgparam=None, regparam=None, stats=None, distoparam=None, beg=0, end=0, exposure=0.0, fz=False, type=None, cfa_opened_monochrome=False, current=0)

Bases : object

Équivalent Python de la structure Siril sequ

beg: int = 0

imgparam[0]->filenum

bitpix: int = 0

format des pixels de l'image, à partir du fits

cfa_opened_monochrome: bool = False

SER CFA ouvert en mode monochrome

current: int = 0

numéro du fichier actuellement chargé

distoparam: List[DistoData] = None

données de distorsion pour la séquence [nb_layers]

end: int = 0

imgparam[number-1]->filenum

exposure: float = 0.0

exposition de l'image

fixed: int = 0

longueur fixe de l'index d'image dans le nom de fichier

fz: bool = False

si le fichier est compressé

imgparam: List[ImgData] = None

une structure pour chaque image de la séquence [nombre]

is_variable: bool = False

La séquence contient des images de différentes tailles

nb_layers: int = -1

nombre de couches intégrées dans chaque fichier image

number: int = 0

nombres d'images dans la séquence

reference_image: int = 0

image de référence pour l'alignement

regparam: List[List[RegData]] = None

paramètres d'alignement pour chaque couche [nb_layers][number]

rx: int = 0

largeur de la première image

ry: int = 0

hauteur de la première image

selnum: int = 0

nombres d'images sélectionné

seqname: str = ''

nom de la séquence

stats: List[List[ImageStats]] = None

statistiques des images pour chaque couche [nb_couche][nombre]

type: SequenceType = None

le type de séquence

Sirilpy Enums

Ce module fournit toutes les énumérations utilisées au sein de sirilpy.

Sous-module d'énumérations pour Siril. Ce sous-module contient toutes les énumérations utilisées au sein de sirilpy.

class sirilpy.enums.BitpixType(value)

Bases : IntEnum

Reproduit l'énumération bitpix de Siril. Notez que bien que Siril puisse gérer l'ouverture de fichiers FITS de tout type de données, il ne traite en interne les images qu'en USHORT_IMG (uint16) ou FLOAT_IMG (float32).

BYTE_IMG = 8
DOUBLE_IMG = -64
FLOAT_IMG = -32
LONG_IMG = 32
SHORT_IMG = 16
USHORT_IMG = 20
class sirilpy.enums.CommandStatus(value)

Bases : IntEnum

Contient les codes de statut des commandes Siril, correspondant aux valeurs renvoyées en interne par Siril. Ils peuvent être utilisés pour la gestion des erreurs. CMD_OK et CMD_NO_WAIT sont des codes sans erreur ; tous les autres codes représentent des erreurs de commande. Ils sont accessibles via l'exception CommandError et peuvent généralement être traités sans être considérés comme fatals pour le script.

CMD_ALLOC_ERROR = 1048576
CMD_ARG_ERROR = 32
CMD_DIR_NOT_FOUND = 4194304
CMD_FILE_NOT_FOUND = 131072
CMD_FOR_CFA_IMAGE = 65536
CMD_FOR_PLATE_SOLVED = 262144
CMD_GENERIC_ERROR = 128
CMD_IMAGE_NOT_FOUND = 256
CMD_INVALID_IMAGE = 1024
CMD_LOAD_IMAGE_FIRST = 2048
CMD_NEED_INIT_FIRST = 524288
CMD_NOT_FOR_MONO = 16384
CMD_NOT_FOR_RGB = 32768
CMD_NOT_FOR_SINGLE = 8192
CMD_NOT_FOUND = 1
CMD_NOT_SCRIPTABLE = 8
CMD_NO_CWD = 4
CMD_NO_WAIT = 2
CMD_OK = 0
CMD_ONLY_SINGLE_IMAGE = 4096
CMD_SELECTION_ERROR = 64
CMD_SEQUENCE_NOT_FOUND = 512
CMD_THREAD_RUNNING = 2097152
CMD_WRONG_N_ARG = 16
class sirilpy.enums.DialogID(value)

Bases : IntEnum

classmethod from_name(name)

Safely create from a str containing a potential dialog name (e.g. "ASINH_DIALOG", returning None if the name no longer exists.

Type renvoyé:

DialogID | None

ABERRATION_DIALOG = 19
ABOUT_DIALOG = 0
ANNOTATE_DIALOG = 1
ASINH_DIALOG = 2
ASTROMETRY_DIALOG = 3
BACKGROUND_EXTRACTION_DIALOG = 4
BINXY_DIALOG = 6
CANON_FIXBANDING_DIALOG = 7
CCM_DIALOG = 8
CLAHE_DIALOG = 9
COLOR_CALIBRATION = 10
COMPOSITION_DIALOG = 12
COMPSTARS_DIALOG = 11
COSMETIC_DIALOG = 13
CURVES_DIALOG = 14
CWD_DIALOG = 15
DECONV_DIALOG = 5
DENOISE_DIALOG = 16
DIALOG_FFT = 17
DIALOG_STAR_REMIX = 18
EPF_DIALOG = 20
EXTRACT_CHANNEL_DIALOG = 21
EXTRACT_WAVELETS_LAYERS_DIALOG = 22
FILE_INFORMATION = 23
GHT_DIALOG = 24
HISTOGRAM_DIALOG = 25
ICC_DIALOG = 26
KEYWORDS_DIALOG = 27
LINEARMATCH_DIALOG = 28
MEDIAN_DIALOG = 29
MERGE_CFA_DIALOG = 30
NINA_LIGHT_CURVE = 31
OPEN_DIALOG = 32
PCC_DIALOG = 33
PIXEL_MATH_DIALOG = 34
PREFS_DIALOG = 35
RESAMPLE_DIALOG = 36
RGRADIENT_DIALOG = 37
ROTATION_DIALOG = 38
SATU_DIALOG = 40
SAVEAS_DIALOG = 41
SCNR_DIALOG = 42
SEQLIST_DIALOG = 43
SPLIT_CFA_DIALOG = 44
STARNET_DIALOG = 45
STARS_LIST_WINDOW = 46
STAT_WINDOW = 47
S_PCC_DIALOG = 39
UNPURPLE_DIALOG = 48
WAVELETS_DIALOG = 49
class sirilpy.enums.DialogReq(value)

Bases : IntEnum

Represents the requirements to open a dialog represented by a DialogID

ANY = 1

Image or sequence loaded

IMG = 2

Image loaded

MONO = 3

Mono image loaded

NONE = 4

No requirement, this action works at any time

PLTSOLVD = 5

Image or sequence frame loaded and plate solved

RGB = 6

RGB image loaded

RGBPLTSOLVD = 7

RGB image or sequence frame loaded and plate solved

SEQ = 8

Sequence loaded

class sirilpy.enums.DistoType(value)

Bases : IntEnum

Équivalent Python de l'énumération Siril disto_source

DISTO_FILE = 2

Distorsion provenant d'un fichier fourni

DISTO_FILES = 4

Distorsion stockée dans chaque fichier (vrai uniquement depuis seq platesolve ; même sans distorsion, elle sera vérifiée lors du rechargement)

DISTO_FILE_COMET = 5

spécial pour l'alignement cométaire, à détecter par apply reg

DISTO_IMAGE = 1

Distorsion par rapport à l'image actuelle

DISTO_MASTER = 3

Distorsion à partir d'un fichier maître

DISTO_UNDEF = 0

Aucune distorsion

class sirilpy.enums.ImageType(value)

Bases : IntEnum

énumération représentant les types fonctionnels d'image

BIAS = 4
DARK = 2
FLAT = 3
LIGHT = 1
UNKNOWN = 0
class sirilpy.enums.LogColor(value)

Bases : IntEnum

Defines colors available for use with SirilInterface.log() For consistency LogColor.Default should be used for normal messages, LogColor.Red should be used for error messages, LogColor.Salmon should be used for warning messages, LogColor.Green should be used for completion notifications, and LogColor.Blue should be used for technical messages such as equations, coefficients etc.

BLUE = 4
DEFAULT = 0
GREEN = 3
RED = 1
SALMON = 2
class sirilpy.enums.PlotType(value)

Bases : IntEnum

Énumération des types de tracé disponibles pour visualiser des séries de données.

HYPHENS = 2
LINES = 3
LINESHYPHENS = 6
LINESMARKS = 5
LINESPOINTS = 4
MARKS = 1
POINTS = 0
class sirilpy.enums.STFType(value)

Bases : IntEnum

enum représentant les types STF

ASINH_DISPLAY = 4
AUTOSTRETCH_DISPLAY = 5
HISTEQ_DISPLAY = 6
LINEAR_DISPLAY = 0
LOG_DISPLAY = 1
SQRT_DISPLAY = 2
SQUARED_DISPLAY = 3
class sirilpy.enums.SequenceType(value)

Bases : IntEnum

Équivalent Python de l'énumération Siril sequence_type

SEQ_AVI = 3
SEQ_FITSEQ = 2
SEQ_INTERNAL = 4
SEQ_REGULAR = 0
SEQ_SER = 1
class sirilpy.enums.SirilVport

Bases : object

Définit les fenêtres d'affichage Siril

BLUE = 2
GREEN = 1
MONO = 0
RED = 0
RGB = 3
class sirilpy.enums.SlidersMode(value)

Bases : IntEnum

MINMAX = 1
MIPSLOHI = 0
USER = 2
class sirilpy.enums.StarProfile(value)

Bases : IntEnum

Équivalent Python de l'énumération Siril starprofile. Utilisée pour identifier le type d'ajustement utilisé pour modéliser une étoile dans l'image. Notez que MOFFAT_FIXED n'est actuellement pas utilisé dans Siril, mais est réservé pour un usage futur pour les étoiles de Moffat modélisées avec un paramètre bêta fixe

GAUSSIAN = 0
MOFFAT = 1
MOFFAT_FIXED = 2

Traçage de graphiques avec Sirilpy

Ce sous-module fournit des classes et des méthodes pour accéder à la fonctionnalité de tracé native de Siril. Bien sûr, vous pouvez également utiliser matplotlib, mais ce sous-module donne accès aux mêmes capacités de tracé que celles utilisées en interne par Siril, pour un résultat plus homogène. Tous ses membres sont disponibles au niveau racine du module, il n'est pas nécessaire d'importer models séparément.

Une fois rempli, l'objet PlotData peut être tracé à l'aide de SirilInterface.xy_plot().

Sous-module de tracé pour Siril, fournissant des classes pour la représentation et la sérialisation des données de tracé. Ce sous-module permet aux utilisateurs de créer et de configurer différents types de tracés avec une apparence personnalisable et des barres d'erreur.

class sirilpy.plot.PlotData(title='Data Plot', xlabel='X', ylabel='Y', savename='plot', show_legend=True, datamin=None, datamax=None)

Bases : object

Conteneur de métadonnées pour la configuration du tracé. Les données de série proprement dites sont contenues dans des objets SeriesData et peuvent être ajoutées à l'aide des méthodes de classe add_series ou add_series_obj après l'initialisation du PlotData.

Membres :

title : titre du tracé xlabel : étiquette de l'axe X ylabel : étiquette de l'axe Y savename : nom de fichier d'enregistrement (l'extension est ajoutée automatiquement) show_legend : booléen indiquant s'il faut afficher la légende datamin : liste [xmin, ymin] forçant l'affichage de la coordonnée inférieure gauche. Si omis, la plage est définie sur la plage des données. datamax : liste [xmax, ymax] forçant l'affichage de la coordonnée supérieure droite. Si omis, la plage est définie sur la plage des données.

classmethod serialize(plot_data)

Sérialise les données de tracé pour un transfert par mémoire partagée en utilisant l'ordre des octets réseau.

Paramètres:

plot_data (PlotData) -- Objet PlotData contenant la configuration du graphique

Type renvoyé:

Tuple[bytes, int]

Renvoie:

Tuple des octets sérialisés et de la longueur totale

add_series(x_coords, y_coords, label=None, plot_type=PlotType.LINES, n_error=None, p_error=None)

Ajouter une nouvelle série aux métadonnées du graphique.

Renvoie:

l'objet SeriesData créé, pour une manipulation ultérieure si nécessaire.

Type renvoyé:

SeriesData

add_series_obj(series)

Ajoute un objet SeriesData préalablement créé aux métadonnées du tracé.

Retourne : None

Type renvoyé:

None

class sirilpy.plot.SeriesData(x_coords, y_coords, label=None, plot_type=PlotType.LINES, n_error=None, p_error=None)

Bases : object

Représente une seule série de données à tracer.

Membres :

x_coords : soit une List[float], soit un np.ndarray contenant les valeurs des coordonnées x pour cette série

y_coords : soit une List[float], soit un np.ndarray contenant les valeurs des coordonnées y pour cette série

label : une chaîne de caractères contenant le libellé de la série (affiché dans la légende du graphique)

plot_type : un PlotType définissant le type de marques à utiliser

n_error : soit une List[float], soit un np.ndarray contenant les valeurs des erreurs négatives sur l'axe y pour cette série

p_error : soit une List[float], soit un np.ndarray contenant les valeurs des erreurs positives sur l'axe y pour cette série

Méthodes utilitaires Sirilpy

Ce sous-module fournit des méthodes utilitaires destinées à être utilisées dans les scripts Python de Siril. La plus importante est ensure_installed(), mais il existe aussi des méthodes telles que download_with_progress() qui offre une méthode très robuste pour télécharger de gros fichiers avec une bonne récupération d'erreurs grâce à un mécanisme de tentatives et de reprise.

Module utilitaire pour l'interface Python de Siril, fournissant des fonctions d'aide pour les opérations sur fichiers, la gestion des paquets et le contrôle des E/S standard, afin de prendre en charge les capacités de script de Siril.

class sirilpy.utility.SuppressedStderr

Bases : object

Ce gestionnaire de contexte permet de supprimer le stderr du script, ce qui peut être utile si vous utilisez des fonctions de module connues pour produire des avertissements que vous souhaitez éviter d'afficher à l'utilisateur, tels que des FutureWarnings de fonctionnalités devenues obsolètes mais présentes dans une dépendance plutôt que dans votre propre code. Cette classe doit être utilisée avec parcimonie et ne doit pas servir à masquer des traces de mauvais code.

class sirilpy.utility.SuppressedStdout

Bases : object

Ce gestionnaire de contexte permet de supprimer le stdout du script, ce qui peut être utile pour éviter de saturer le journal avec des messages stdout provenant d'un module trop verbeux utilisé dans le script.

Exemple

import sirilpy as s
siril = s.SirilInterface()
print("This message will appear in the Siril log")
with s.SuppressedStdout():
    print("This message will not appear")
print("This message will appear again")
sirilpy.utility.check_module_version(requires=None)

Vérifie que la version du module Siril est suffisante pour prendre en charge le script. Ceci n'est pas obligatoire si vous n'utilisez que des classes, méthodes, etc. fournies dans la version publique initiale, mais si vous vous appuyez sur des méthodes indiquées dans la documentation de l'API comme ayant été ajoutées à une version particulière du module, vous devez alors vérifier que le module sirilpy en cours d'exécution prend en charge votre script en appelant cette fonction.

Siril n'affichera pas les scripts dont les appels à check_module_version() ne sont pas satisfaits dans la liste du dépôt de « Obtenir des scripts », donc si vous voulez une fonction permettant différents chemins de code selon les versions, vous devriez plutôt utiliser needs_module_version().

Paramètres:

requires (str) -- Une chaîne spécifiant un format de version suivant le même format que celui utilisé par pip, c'est-à-dire qu'elle peut contenir '==1.2', '!=3.4', '>5.6', '>=7.8', ou une combinaison telle que '>=1.2,<3.4'

Renvoie:

True si requires = None ou si la version du module sirilpy disponible satisfait le spécificateur de version, False sinon

Lève:

ValueError -- si requires est un spécificateur de version non valide.

sirilpy.utility.download_with_progress(siril, url, file_path, max_retries=3, retry_delay=5, resume=True)

Méthode robuste de téléchargement de fichiers avec suivi natif de la progression par Siril et gestion des erreurs à l'aide de tentatives et d'un mécanisme de reprise.

Type renvoyé:

bool

sirilpy.utility.ensure_installed(*packages, version_constraints=None, reinstall=False)

S'assure que le(s) paquet(s) spécifié(s) est/sont installé(s) et respecte(nt) les contraintes de version facultatives.

Paramètres:
  • *packages (str or List[str]) -- Nom(s) du/des paquet(s) dont on doit s'assurer qu'ils sont installés.

  • version_constraints (str or List[str], optional) -- Chaîne(s) de contrainte de version (par exemple ">=1.5", "==2.0"). Peut être une contrainte unique ou une liste correspondant aux paquets.

  • reinstall (bool, optional) -- Force la réinstallation. La valeur par défaut est False.

Renvoie:

Vrai si tous les paquets sont installés avec succès ou répondent déjà aux contraintes.

Type renvoyé:

bool

Lève:
  • SirilError -- Si l'installation du paquet échoue.

  • ValueError -- Si le nombre de contraintes diffère du nombre de paquets à installer.

  • TimeoutError -- Si pip échoue avec un délai d'attente apparent.

  • SystemExit -- Si un paquet déjà importé doit être réinstallé avec une version différente.

sirilpy.utility.human_readable_size(bytes_size)

Convertir les bytes en un format lisible par l'homme.

Paramètres:

bytes_size (int) -- Taille en bytes

Renvoie:

Taille formatée avec l'unité appropriée (B, KB, MB, GB, TB)

Type renvoyé:

str

Lève:

TypeError -- sur un type d'entrée incorrect

sirilpy.utility.needs_module_version(requires=None)

Vérifie que la version du module Siril est suffisante pour prendre en charge une fonctionnalité. Cela permet d'écrire des chemins de code facultatifs pour différents niveaux d'API sirilpy. Cette fonction fonctionne comme check_module_version(), mais la présence d'un appel à needs_module_version() non satisfait n'empêchera pas un script d'apparaître dans la liste de « Obtenir des scripts »

Paramètres:

requires (str) -- Une chaîne spécifiant un format de version suivant le même format que celui utilisé par pip, c'est-à-dire qu'elle peut contenir '==1.2', '!=3.4', '>5.6', '>=7.8', ou une combinaison telle que '>=1.2,<3.4'

Renvoie:

True si requires = None ou si la version du module sirilpy disponible satisfait le spécificateur de version, False sinon

Lève:

ValueError -- si requires est un spécificateur de version non valide.

sirilpy.utility.parse_fits_header(header_text, include_comments=False)

Analyse un en-tête FITS à partir d'un contenu texte pour le convertir en dictionnaire, avec prise en charge des mots-clés HIERARCH et CONTINUE.

Gère le format d'en-tête FITS de Siril séparé par des retours à la ligne et le convertit en un dictionnaire compatible avec astropy.wcs.WCS. Prend en charge les mots-clés FITS étendus via HIERARCH et les longues valeurs de chaîne via CONTINUE.

Paramètres:
  • header_text (str) -- Chaîne brute d'en-tête avec les cartes d'en-tête séparées par des retours à la ligne. Format attendu : "KEYWORD = value / comment"

  • include_comments (bool) -- Si True, inclut les cartes COMMENT et HISTORY dans la sortie. Si False (par défaut), ces cartes sont ignorées.

Type renvoyé:

Dict[str, Union[str, int, float, bool]]

Renvoie:

Dictionnaire associant les mots-clés d'en-tête FITS (str) à leurs valeurs analysées. Les valeurs sont converties dans les types Python appropriés : - 'T'/'F' -> bool - Chaînes entre guillemets -> str (guillemets supprimés, avec prise en charge de CONTINUE pour les chaînes longues) - Chaînes numériques -> int ou float - Tout le reste -> str - Cartes COMMENT/HISTORY -> str (contenu après le mot-clé, si include_comments=True) - Mots-clés HIERARCH -> str (mot-clé hiérarchique complet conservé)

Notes

  • Filtre les messages d'avertissement, les trace d'appels et tout autre contenu ne faisant pas partie de l'en-tête

  • Par défaut les champs COMMENT et HISTORY sont ignorées (utilisez include_comments=True pour les inclure)

  • Ignore les champs mal formées ou les mots-clés non valides

  • Les mots-clés standard doivent comporter au maximum 8 caractères et être alphanumériques (plus, un underscore ou un tiret)

  • Les mots-clés HIERARCH peuvent être plus longs et contenir des espaces / points

  • Les champs CONTINUE sont automatiquement fusionnées avec la valeur de chaîne précédente

  • Les commentaires après '/' sont ignorés pour les cartes normales

Exemple

>>> header_str = '''SIMPLE  = T / file conforms to FITS standard
... BITPIX  = -32 / bits per pixel
... HIERARCH ESO DET CHIP1 NAME = 'CCD #1' / detector name
... LONGSTR = 'This is a very long string that needs to be '
... CONTINUE  'continued on the next line'
... COMMENT Test comment'''
>>> result = parse_fits_header(header_str)
>>> result['SIMPLE']
True
>>> result['BITPIX']
-32
>>> result['HIERARCH ESO DET CHIP1 NAME']
'CCD #1'
>>> result['LONGSTR']
'This is a very long string that needs to be continued on the next line'
sirilpy.utility.safe_subprocess_Popen(command, **kwargs)

Fournit une alternative sûre à subprocess.Popen, tenant compte du fait qu'une ligne de commande de sous-processus peut être exécutée depuis un environnement flatpak et nécessiter l'utilisation de flatpak-spawn pour garantir son exécution en dehors du bac à sable, évitant ainsi les problèmes avec les sous-processus qui dépendent de variables d'environnement, etc. safe_subprocess_Popen est un remplacement direct de subprocess.Popen à utiliser dans les scripts Siril.

Introduit dans la version 1.0.3 de Sirilpy

sirilpy.utility.safe_subprocess_run(command, **kwargs)

Fournit une alternative sûre à subprocess.Popen, tenant compte du fait qu'une ligne de commande de sous-processus peut être exécutée depuis un environnement flatpak et nécessiter l'utilisation de flatpak-spawn pour garantir son exécution en dehors du bac à sable, évitant ainsi les problèmes avec les sous-processus qui dépendent de variables d'environnement, etc. safe_subprocess_run est un remplacement direct de subprocess.run à utiliser dans les scripts Siril.

Introduit dans la version 1.0.3 de Sirilpy

sirilpy.utility.truncate_utf8(data, max_bytes)

Tronque l'entrée utf8. Accepte soit des octets, soit des chaînes de caractères en entrée et renvoie les données dans le même format que l'entrée.

Paramètres:

data (bytes or str) -- Les données à tronquer

Renvoie:

Les données tronquées

Type renvoyé:

bytes or str

Lève:

TypeError -- si l'entrée n'est pas de type bytes ou str

sirilpy.utility.uninstall_package(package_name)

Désinstalle un paquet à l'aide de pip, en diffusant la sortie vers stdout. Introduit dans sirilpy 1.0.15.

Paramètres:

package_name (str) -- Nom du paquet à désinstaller.

Lève:

subprocess.CalledProcessError -- Si la désinstallation avec pip échoue.

Assistants GPU Sirilpy

Ce sous-module fournit des classes d'aide pour faciliter la gestion des paquets de frameworks GPU tels qu'ONNX, Torch, etc. destinés à être utilisés dans les scripts Python de Siril. Le paysage du support de ces frameworks pour différentes architectures GPU sur différents systèmes d'exploitation évolue rapidement, et ces aides visent à suggérer des paquets/configurations fiables. Cela signifie que les configurations proposées peuvent dans certains cas être prudentes : l'objectif est de fournir un niveau de support GPU bon et robuste pour le plus grand nombre d'utilisateurs possible dans un environnement python automatisé, plutôt que la meilleure optimisation absolue, mais potentiellement fragile.

Module d'aide GPU pour l'interface Python de Siril, fournissant des fonctions d'aide pour la détection, l'installation et le test des modules liés au GPU. Le périmètre initial couvre ONNX, torch et jax

class sirilpy.gpuhelper.JaxHelper

Bases : object

Une classe d'aide pour détecter, installer et tester JAX avec l'accélération matérielle appropriée.

Cette classe détecte automatiquement la configuration du système et installe la variante JAX appropriée (CPU, CUDA, ROCm, etc.) en fonction du matériel disponible.

ensure_jax()

Wrapper pour install_jax() qui ne l'installe que si nécessaire, avec une surcharge négligeable s'il est déjà installé.

Type renvoyé:

bool

Détermine le backend JAX recommandé et les paramètres d'installation. Lorsque plusieurs GPU sont présents, utilise un système de priorité pour choisir le meilleur.

JAX dispose d'un support de plateforme limité : - NVIDIA : CUDA sous Linux (support Windows expérimental/limité) - AMD ROCm : Linux uniquement - Apple Silicon : backend Metal - Intel : plugin expérimental avec des problèmes de dépendances

Type renvoyé:

Dict[str, Any]

Renvoie:

Dict avec les clés 'backend', 'packages', 'extra_index_url'

install_jax(force_variant=None, version_constraint=None, force_reinstall=False)

Installe JAX avec la variante appropriée pour le matériel détecté. Utilisez ceci à la place de ensure_installed() pour vous assurer que jax est correctement installé pour le matériel/système d'exploitation donné

Paramètres:
  • force_variant (Optional[str]) -- Remplace la détection automatique par une variante spécifique (par exemple, 'jax[cpu]')

  • version_constraint (Optional[str]) -- Chaîne de contrainte de version (par exemple, '>=0.4.0')

force_reinstall : Force une réinstallation

Renvoie:

True si l'installation a réussi, False sinon

Type renvoyé:

bool

is_jax_installed()

Vérifie si PyTorch est installé sans l'importer.

Type renvoyé:

bool

status()

Affiche le statut actuel de la classe Jax Helper concernant sa prise en charge des différents systèmes d'exploitation et GPU. Le monde du calcul hétérogène évolue rapidement et, bien que la prise en charge de certains frameworks pour lesquels des aides sont disponibles ne soit pas encore universelle, elle devrait s'améliorer à l'avenir.

test_jax()

Teste la fonctionnalité de JAX et renvoie le fournisseur d'exécution.

Renvoie:

le booléen renvoyé est True si jax fonctionne ou False sinon, et la str vaut "gpu" si JAX utilise le GPU, "cpu" s'il utilise le CPU, ou None si

Type renvoyé:

Tuple[bool,str]

Lève:
  • RuntimeError -- Si le calcul JAX échoue ou si la vérification de précision échoue

  • ImportError -- Si JAX n'est pas installé

uninstall_jax(dry_run=False)

Détecte et désinstalle tout paquet lié à JAX existant.

Ceci est utile lorsque vous devez nettoyer une installation JAX problématique avant d'installer une variante différente (par exemple, revenir du GPU au CPU).

Paramètres:

dry_run (bool) -- Si True, détecter uniquement les paquets sans les désinstaller

Type renvoyé:

Dict[str, Any]

Renvoie:

Dictionnaire contenant des informations sur les paquets détectés et désinstallés

class sirilpy.gpuhelper.ONNXHelper

Bases : object

Une classe pour gérer la détection et l'installation du paquet ONNX Runtime approprié en fonction du matériel et de la configuration du système.

Exemple d'utilisation (ceci doit être utilisé à la place de sirilpy.ensure_installed("onnxruntime") pour installer le paquet correct pour le système de l'utilisateur.)

oh = sirilpy.ONNXHelper()
oh.ensure_onnxruntime()
ensure_onnxruntime()

Wrapper pour install_onnxruntime() qui ne l'installe que si nécessaire, avec une surcharge négligeable s'il est déjà installé.

Type renvoyé:

bool

get_execution_providers_ordered(ai_gpu_acceleration=True, force_check=False)

Récupère les fournisseurs d'exécution classés par priorité. Cette fonction renvoie une liste des fournisseurs d'exécution ONNX Runtime disponibles dans un ordre de priorité raisonnable, couvrant les principales plateformes GPU : le fournisseur CPU est toujours inclus comme option de repli finale.

Paramètres:
  • ai_gpu_acceleration (bool) -- Indique s'il faut inclure les fournisseurs d'accélération GPU. La valeur par défaut est True.

  • force_check (bool) -- Détermine s'il faut forcer une nouvelle vérification même si une configuration est mise en cache. La valeur par défaut est False.

Renvoie:

Liste triée des fournisseurs d'exécution disponibles.

Type renvoyé:

list

Détermine le backend ONNX Runtime recommandé en fonction du matériel. Lorsque plusieurs GPU sont présents, utilise un système de priorité pour choisir le meilleur.

Remarque : ONNX Runtime dispose d'un support de backend spécifique à chaque plateforme : - Windows : DirectML pour tous les GPU (NVIDIA, AMD, Intel) - plus fiable, sans dépendance aux pilotes - Linux : CUDA pour NVIDIA, CPU pour AMD (pas encore de support ROCm), OpenVINO pour Intel

Renvoie:

'gpu', 'directml', 'openvino', 'coreml', ou 'cpu'

Type renvoyé:

Backend name

import_onnxruntime()

Importe onnxruntime, l'ajoute au dictionnaire global, teste s'il est compilé avec CUDA et, si c'est le cas, précharge les bibliothèques CUDA et CUDNN pour améliorer les chances de les trouver si Torch[CUDA] est installé.

install_onnxruntime(force=False)

Détecter la configuration du système et installer le package ONNX Runtime approprié.

Paramètres:

force -- bool : Si True, force la réinstallation même si onnxruntime est déjà installé.

Renvoie:

True si l'installation a réussi ou si le paquet était déjà installé, False sinon.

Type renvoyé:

bool

Lève:

TimooutError -- si une TimeoutError se produit dans ensure_installed() - cela évite de revenir au paquet CPU uniquement purement à cause de problèmes réseau

is_onnxruntime_installed()

Vérifiez si un paquet onnxruntime est déjà installé et opérationnel.

Renvoie:

(is_installed, package_name) où package_name peut être 'onnxruntime', 'onnxruntime-gpu', 'onnxruntime-silicon', etc.

Type renvoyé:

tuple

run(session, model_path, output_names, input_feed, run_options=None, return_first_output=False)

Lancer l'inférence avec basculement automatique vers le CPU en cas d'échec de la session.

Paramètres:
  • session -- La session d'inférence ONNX runtime

  • model_path (str) -- Chemin vers le fichier de modèle ONNX (nécessaire pour le repli CPU)

  • output_names -- Noms des sorties à calculer, ou None pour toutes les sorties

  • input_feed -- Dictionnaire associant les noms d'entrée aux tenseurs d'entrée

  • run_options -- Options d'exécution facultatives pour la session d'inférence

  • return_first_output (bool) -- Si True, ne renvoie que la première sortie au lieu de la liste complète

Renvoie:

(result, session) où result est la sortie de l'inférence (ou la première sortie si return_first_output=True) et session est la session d'inférence (potentiellement mise à jour)

Type renvoyé:

tuple

status()

Affiche le statut actuel de la classe ONNX Helper concernant sa prise en charge des différents systèmes d'exploitation et GPU. Le monde du calcul hétérogène évolue rapidement et, bien que la prise en charge de certains frameworks pour lesquels des aides sont disponibles ne soit pas encore universelle, elle devrait s'améliorer à l'avenir.

test_onnxruntime(ort=None)

Tester un fichier onnxruntime importé.

Args:install_torch(cuda_version=cuda_version)
ort : le module ONNX runtime à tester. Si None, la méthode

tentera d'importer onnxruntime pour le test.

Renvoie:

une liste des ExecutionProviders ONNXRuntime confirmés fonctionnels, par ordre de priorité

Type renvoyé:

list

uninstall_onnxruntime()

Détecte et désinstalle toutes les variantes des paquets onnxruntime. Vérifie tout paquet commençant par 'onnxruntime'.

Renvoie:

Liste des paquets désinstallés

Type renvoyé:

list

class sirilpy.gpuhelper.TorchHelper

Bases : object

Classe d'aide pour la détection, l'installation et le test de PyTorch.

ensure_torch(cuda_version=None)

S'assurer que PyTorch est installé avec le backend approprié.

Paramètres:

cuda_version (Optional[str]) -- Version CUDA facultative pour outrepasser la détection automatique (par exemple, 'cu118', 'cu126', 'cu128')

Type renvoyé:

bool

Retourne : True en cas de succès, False dans le cas contraire

Détermine le backend PyTorch recommandé et les paramètres d'installation. Lorsque plusieurs GPU sont présents, utilise un système de priorité pour choisir le meilleur.

PyTorch dispose d'un bon support multiplateforme : - NVIDIA : CUDA sur toutes les plateformes - AMD compatible ROCm : ROCm sous Linux ET Windows - Intel Arc : backend XPU - Apple Silicon : backend MPS

Type renvoyé:

Dict[str, Any]

Renvoie:

Dictionnaire avec les clé 'backend', 'cuda_version', 'extra_index_url', 'packages'

get_torch_device(use_gpu=True)

Obtient un périphérique torch adapté en fonction des capacités du paquet torch installé. Si use_gpu est False, torch.device("cpu") sera renvoyé. Cette fonction est disponible depuis sirilpy 1.0.17

Type renvoyé:

torch.device

install_torch(cuda_version=None, extra_index_url=None, packages=None)

Installe PyTorch avec la configuration indiquée.

Paramètres:
  • cuda_version (Optional[str]) -- Version CUDA (ex : 'cu118', 'cu126', 'cu128')

  • extra_index_url (Optional[str]) -- URL du dépôt des wheels PyTorch

  • packages (Optional[list]) -- Liste des paquets à installer

is_torch_installed()

Vérifie si PyTorch est installé sans l'importer.

Type renvoyé:

bool

status()

Affiche le statut actuel de la classe Torch Helper concernant sa prise en charge des différents systèmes d'exploitation et GPU. Le monde du calcul hétérogène évolue rapidement et, bien que la prise en charge de certains frameworks pour lesquels des aides sont disponibles ne soit pas encore universelle, elle devrait s'améliorer à l'avenir.

test_torch()

Effectuez des tests pour vérifier que Torch est bien installé et fonctionne correctement.

uninstall_torch()

Détecte et désinstalle PyTorch et les paquets associés. Vérifie les paquets de l'écosystème torch. :returns: Une liste des paquets désinstallés :rtype: list

sirilpy.gpuhelper.detect_gpu_capabilities()

Détection GPU complète pour tout le matériel pris en charge.

Type renvoyé:

Dict[str, Any]

Renvoie:

Dict contenant les informations sur le matériel détecté et les recommandations pour les backends PyTorch, ONNX et JAX.

sirilpy.gpuhelper.get_gpu_detection_report()

Génère un rapport complet de détection GPU adapté à l'affichage dans une interface graphique.

Type renvoyé:

Dict[str, Any]

Renvoie:

Dict contenant tout le matériel détecté et les configurations recommandées pour ONNX, PyTorch et JAX, y compris les informations de priorité GPU.

Sirilpy TK GUI

Avertissement

This submodule is now deprecated. There are no longer any scripts in the repository that use tksiril and submissions to the siril-scripts repository will no longer be accepted if they use tksiril. You should migrate any personal scripts to use PyQt6 instead. The tksiril submodule will be removed in a future version of Siril.

Ce sous-module fournit des fonctions d'aide pour faciliter une implémentation cohérente d'interfaces graphiques à l'aide de tkinter. Il doit être explicitement importé pour être utilisé. Notez que lors de l'écriture d'interfaces graphiques TKinter, vous devriez importer ThemedTK depuis le module ttkthemes, car l'interface TKinter brute s'affiche mal sous MacOS. ThemedTK et les méthodes disponibles dans le module tksiril aident à fournir un aspect cohérent pour les interfaces graphiques des scripts Siril sur toutes les plateformes.

Avertissement

Les utilisateurs Linux utilisant un bureau Wayland doivent noter que Tkinter ne prend pas encore en charge Wayland pur. Pour utiliser des scripts Python utilisant des interfaces graphiques Tkinter, vous devez avoir le paquet de compatibilité XWayland installé. Sinon, vous verrez des erreurs indiquant que DISPLAY n'est pas disponible.

from sirilpy import tksiril

TKsiril submodule for Siril, providing utility methods to achieve consistent script GUI appearance using the TKinter toolkit.

DEPRECATION WARNING: the tksiril submodule is deprecated from Siril 1.4.3. It will remain part of sirilpy throughout the stable 1.4 series but has been removed from master and will therefore disappear with the release of Siril 1.6.0.

No new scripts will be accepted in the siril-scripts repository if they use the tksiril submodule.

class sirilpy.tksiril.ScrollableFrame(container, *args, **kwargs)

Bases : Frame

A scrollable frame widget that can contain other widgets.

This class creates a frame with vertical scrolling capability using a Canvas widget and Scrollbar. It supports both scrollbar and mouse wheel scrolling across all platforms (Windows, Mac, Linux).

Usage:

scrollable = ScrollableFrame(parent) scrollable.pack(fill="both", expand=True)

# Add widgets to scrollable.scrollable_frame label = ttk.Label(scrollable.scrollable_frame, text="Hello") label.pack()

# Optionally bind mouse wheel to child widgets scrollable.add_mousewheel_binding(label)

add_mousewheel_binding(widget=None)

Add mouse wheel scrolling support to a widget and its children.

This method recursively binds mouse wheel events to the specified widget and all its child widgets. It uses platform detection to apply the appropriate event bindings for each operating system.

Paramètres:

widget -- The tkinter widget to bind mouse wheel events to. The binding will be applied recursively to all children. If no widget is specified it will default to the ScrollableFrame itself.

Exemple

# Add a complex widget to the scrollable frame frame = ttk.Frame(scrollable.scrollable_frame) label = ttk.Label(frame, text="Hello") button = ttk.Button(frame, text="Click me")

# Bind mouse wheel to the entire widget hierarchy scrollable.add_mousewheel_binding(frame)

sirilpy.tksiril.create_tooltip(widget, text, wrap_length=250)

Create a tooltip for a given Tkinter widget.

Paramètres:
  • widget (tk.Widget) -- The widget to attach the tooltip to

  • text (str) -- The tooltip text to display

  • max_width (int, optional) -- Maximum width of the tooltip. Defaults to 300.

  • wrap_length (int, optional) -- Length at which text wraps. Defaults to 250.

Lève:

TypeError -- If text is not a string or the provided widget is not a valid Tkinter widget

sirilpy.tksiril.elevate(root)

Raises the Tk root window to the top of the window stack. Useful after calls to sirilpy methods that present child windows of the main Siril window such as info_messagebox().

NOTE: For this to work on KDE desktops, focus-stealing prevention must be disabled.

sirilpy.tksiril.match_theme_to_siril(themed_tk, s, on_top=False)

Match the Tkinter theme to the Siril configuration and set the script dialog to have topmost status, meaning that it will remain in front of other non-topmost windows.

Paramètres:
  • s (SirilInterface) -- sirilpy.SirilInterface class to provide the Siril theme (light or dark) to match

  • themed_tk (ThemedTk) -- ThemedTk instance to apply the theme to

  • on_top -- whether the script window should be always on top of other windows

Lève:
  • TypeError -- If input arguments are of incorrect type

  • ValueError -- If the theme configuration is not 0 or 1

  • AttributeError -- If required methods are not available

  • RuntimeError -- If there are errors installing or setting the theme

sirilpy.tksiril.standard_style()

Provide a standardised ttk style to allow consistent visual appearance between different Siril python scripts.

Paramètres:

none

Lève:

SirilError -- If the style creation or configuration fails

Sirilpy Tkfilebrowser

Avertissement

This submodule is now deprecated. There are no longer any scripts in the repository that use tkfilebrowser and submissions to the siril-scripts repository will no longer be accepted if they use tkfilebrowser. You should migrate any personal scripts to use PyQt6 instead. The tkfilebrowser submodule will be removed in a future version of Siril.

Ce sous-module est un fork de tkfilebrowser. Ce fork corrige un bogue du code original où des entrées de périphériques en double pouvaient provoquer des erreurs lors de la génération du sélecteur de fichiers, et permet de garantir la maintenabilité du code, le paquet d'origine n'ayant pas été mis à jour depuis plusieurs années.

La documentation de tkfilebrowser se trouve ici. Notez que certaines améliorations de compatibilité ont été apportées dans la version incluse dans sirilpy :

  • sirilpy.tkfilebrowser.askdirectory() a été ajouté en tant qu'alias de tkfilebrowser.askopendirname() pour maintenir la compatibilité avec tk.filedialog.askdirectory().

  • Dans les spécifications de filefilter, tkfilebrowser exige que plusieurs extensions soient fournies séparées par | alors que filedialog exige des extensions séparées par des espaces : sirilpy.tkfilebrowser a été adapté pour accepter les deux formats.

Ce sous-module a pour seul objectif de servir de remplacement direct au filedialog Tk standard sous Linux, celui-ci étant peu agréable à utiliser sous Linux. Il peut être utilisé comme remplacement de la manière suivante :

if sys.platform.startswith("linux"):
    import sirilpy.tkfilebrowser as filedialog
else:
    from tkinter import filedialog

Exceptions Sirilpy

Ce sous-module fournit des exceptions personnalisées pour prendre en charge la gestion des erreurs spécifiques à Siril. Tous ses membres sont disponibles au niveau racine du module, il n'est pas nécessaire de l'importer séparément.

La politique de gestion des exceptions de sirilpy est la suivante :

  • À bas niveau, au sein des méthodes de sirilpy, divers types d'exceptions peuvent être levés (ceux présentés ci-dessous ainsi que des exceptions levées par d'autres modules tels que struct.error). Les types d'exceptions internes descendent tous de SirilError et peuvent donc être interceptés à l'aide de except SirilError. Les autres types d'exceptions sont relevés sous forme de SirilError afin d'indiquer la méthode où ils ont été générés, mais l'erreur sous-jacente reste visible soit dans une trace d'appel, soit à l'aide de la propriété __cause__ de l'exception.

  • Certains types d'erreurs sont des erreurs récupérables, telles que NoImageError, NoSequenceError et CommandError. Ces types d'exceptions peuvent être gérés au niveau du script (par exemple en affichant une boîte de dialogue d'avertissement rappelant à l'utilisateur de charger une image).

  • D'autres types d'erreurs ne sont généralement pas récupérables, comme SharedMemoryError ou SirilConnectionError.

Sous-module d'exceptions pour Siril, fournissant des classes d'exception destinées à être utilisées pour lever des exceptions au sein du module sirilpy.

exception sirilpy.exceptions.CommandError(message='Command execution failed', status_code=CommandStatus.CMD_GENERIC_ERROR)

Bases : SirilError

Levée lorsqu'une commande envoyée à Siril ne s'exécute pas correctement. (Remarque : « commande » désigne ici les commandes internes envoyées par le module python au gestionnaire python de Siril, et non les commandes Siril du type que l'on pourrait saisir dans la ligne de commande de Siril.) L'ensemble complet des codes de statut de commande est présenté dans l'énumération CommandStatus. Ces exceptions sont souvent récupérables et devraient donc être gérées avant de traiter génériquement les autres types de SirilError considérés comme fatals.

status_code

(CommandStatus) Indique le code de statut renvoyé par la commande Siril. Cela peut être utilisé dans les gestionnaires d'erreurs pour permettre aux scripts de traiter certains types d'erreurs de commande et de continuer (par exemple en demandant une intervention de l'utilisateur).

exception sirilpy.exceptions.DataError(message='Error handling data')

Bases : SirilError

Levée en cas de problème de traitement des données. Cela comprend des cas tels que :

  • Données d'image invalides

  • Erreurs de conversion des données

  • Échecs d'allocation de mémoire

  • Débordements du buffer

exception sirilpy.exceptions.ImageDialogOpenError(message='Siril image dialog is open')

Bases : SirilError

Exception levée lorsqu'une boîte de dialogue de traitement d'image est ouverte.

exception sirilpy.exceptions.MouseModeError(message='Siril mouse mode error')

Bases : SirilError

Exception levée lorsque Siril est dans le mauvais mode souris.

exception sirilpy.exceptions.NoImageError(message='No Siril image loaded')

Bases : SirilError

Levée lorsqu'une méthode nécessite qu'une image soit chargée, mais qu'aucune image n'est chargée. Ces exceptions sont souvent récupérables et devraient donc être gérées avant de traiter génériquement les autres types de SirilError considérés comme fatals.

exception sirilpy.exceptions.NoSequenceError(message='No Siril sequence loaded')

Bases : SirilError

Levée lorsqu'une méthode nécessite qu'une séquence soit chargée, mais qu'aucune séquence n'est chargée. Ces exceptions sont souvent récupérables et devraient donc être gérées avant de traiter génériquement les autres types de SirilError considérés comme fatals.

exception sirilpy.exceptions.ProcessingThreadBusyError(message='Siril processing thread is busy')

Bases : SirilError

Exception levée lorsque le thread de traitement est déjà utilisé.

exception sirilpy.exceptions.SharedMemoryError(message='Siril shared memory error')

Bases : SirilError

Levée en cas de problème de connexion ou de communication avec Siril via la mémoire partagée.

SharedMemoryError n'est pas levée directement mais sera encapsulée dans une SirilError. Elle doit généralement être considérée comme fatale et le script devrait s'arrêter proprement si possible, ou simplement s'arrêter.

exception sirilpy.exceptions.SirilConnectionError(message='Failed to connect to Siril')

Bases : SirilError

Soulevé en cas de problèmes de connexion ou de communication avec Siril. Cela inclut les cas suivants :

  • Siril n'est pas en fonctionnement

  • Échecs de connexion au socket

  • Erreurs de protocole de communication

  • Déconnexions inattendues

SirilConnectionError n'est pas levée directement mais sera encapsulée dans une SirilError. Elle doit généralement être considérée comme fatale et le script devrait s'arrêter proprement si possible, ou simplement s'arrêter.

exception sirilpy.exceptions.SirilError(message='An error occurred')

Bases : Exception

Classe d'exception de base pour toutes les erreurs liées à Siril.

Toutes les autres exceptions Siril héritent de cette classe, ce qui permet de détecter facilement toute erreur liée à Siril à l'aide d'une seule clause except.