Étiquette : tutoriel

  • Génération de définitions astronomiques sur l’ensemble des types objets du cosmos avec LLaMA

    Génération de définitions astronomiques sur l’ensemble des types objets du cosmos avec LLaMA

    Salut les passionnés d’astronomie et les codeurs curieux ! Aujourd’hui, je vous propose un voyage interstellaire à travers un script Python qui utilise l’API locale d’Ollama pour générer des définitions et des notes explicatives sur des objets astronomiques. 🌌✨

    Pourquoi ce script est-il génial ?

    Imaginez que vous avez un fichier Excel rempli de données sur des objets célestes, mais vous avez besoin de descriptions détaillées et de notes explicatives pour chaque type et sous-type d’objet. C’est là que notre script entre en jeu ! Il parcourt chaque ligne de votre fichier Excel, envoie des requêtes à l’API d’Ollama pour obtenir des définitions en français, et sauvegarde les résultats dans un nouveau fichier Excel. Et le meilleur dans tout ça ? Si un type ou un sous-type d’objet a déjà été traité, le script réutilise la définition précédemment générée pour éviter des appels redondants à l’API. 🚀

    Origine du Fichier Excel

    Le fichier Excel utilisé dans ce script provient du Catalogue Exotica de Breakthrough Listen, un projet de recherche de l’Université de Californie à Berkeley. Le Catalogue Exotica est une collection de plus de 700 objets célestes distincts, visant à inclure « un de chaque » type d’objet astronomique connu. Il comprend des exemples de chaque type dans l’échantillon Prototype, des objets extrêmes avec des propriétés record dans l’échantillon Superlative, et des cibles énigmatiques dans l’échantillon Anomaly. 🌠

    Le fichier Excel a été extrait du code source de l’article scientifique « One of Everything: The Breakthrough Listen Exotica Catalog » disponible sur arXiv. La conversion du tableau LaTeX en fichier Excel a été réalisée à l’aide du convertisseur en ligne disponible sur TableConvert.

    Prérequis

    Avant de plonger dans le code, assurez-vous d’avoir les éléments suivants :

    • Python 3.x
    • Bibliothèque pandas
    • Bibliothèque requests
    • API locale d’Ollama accessible à l’adresse http://localhost:11434/api/generate
    • Fichier Excel updated_table.xlsx avec les colonnes TypeSous-Type, et Exemple

    Installation des Prérequis

    1. Installer Python 3.x : Vous pouvez télécharger et installer Python à partir du site officiel python.org.
    2. Installer les bibliothèques nécessaires :pip install pandas requests openpyxl
    3. Configurer l’API locale d’Ollama : Assurez-vous que l’API locale d’Ollama est accessible à l’adresse http://localhost:11434/api/generate.

    Le Script Magique 🪄

    Voici le script complet avec des commentaires détaillés en français et en anglais :

    # -*- coding: utf-8 -*-
    # This program is free software: you can redistribute it and/or modify
    # it under the terms of the GNU General Public License as published by
    # the Free Software Foundation, either version 3 of the License, or
    # (at your option) any later version.
    #
    # This program is distributed in the hope that it will be useful,
    # but WITHOUT ANY WARRANTY; without even the implied warranty of
    # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    # GNU General Public License for more details.
    #
    # You should have received a copy of the GNU General Public License
    # along with this program. If not, see <https://www.gnu.org/licenses/>.
    
    # Description:
    # This script uses the local Ollama API to generate definitions and explanatory notes
    # on astronomical objects from an Excel file. The script iterates over each row of the
    # Excel file, sends requests to the API to obtain definitions in French, and saves the
    # results in a new Excel file. If a type or subtype of object has already been processed,
    # the script reuses the previously generated definition to avoid redundant API calls.
    #
    # Description :
    # Ce script utilise l'API locale d'Ollama pour générer des définitions et des notes explicatives
    # sur des objets astronomiques à partir d'un fichier Excel. Le script parcourt chaque ligne du
    # fichier Excel, envoie des requêtes à l'API pour obtenir des définitions en français, et sauvegarde
    # les résultats dans un nouveau fichier Excel. Si un type ou un sous-type d'objet a déjà été traité,
    # le script réutilise la définition précédemment générée pour éviter des appels redondants à l'API.
    
    # Origin of the Excel file:
    # The Excel file used in this script comes from the Breakthrough Listen Exotica Catalog,
    # a research project at the University of California, Berkeley. The Exotica Catalog is a
    # collection of over 700 distinct celestial objects, aiming to include "one of everything"
    # type of astronomical object known. It includes examples of each type in the Prototype sample,
    # extreme objects with record properties in the Superlative sample, and enigmatic targets in the Anomaly sample.
    #
    # The Excel file was extracted from the source code of the scientific article "One of Everything:
    # The Breakthrough Listen Exotica Catalog" available on arXiv. The conversion of the LaTeX table
    # to an Excel file was done using the online converter available on TableConvert.
    #
    # Origine du fichier Excel :
    # Le fichier Excel utilisé dans ce script provient du Catalogue Exotica de Breakthrough Listen,
    # un projet de recherche de l'Université de Californie à Berkeley. Le Catalogue Exotica est une
    # collection de plus de 700 objets célestes distincts, visant à inclure "un de chaque" type d'objet
    # astronomique connu. Il comprend des exemples de chaque type dans l'échantillon Prototype, des objets
    # extrêmes avec des propriétés record dans l'échantillon Superlative, et des cibles énigmatiques dans
    # l'échantillon Anomaly.
    #
    # Le fichier Excel a été extrait du code source de l'article scientifique "One of Everything:
    # The Breakthrough Listen Exotica Catalog" disponible sur arXiv. La conversion du tableau LaTeX
    # en fichier Excel a été réalisée à l'aide du convertisseur en ligne disponible sur TableConvert.
    
    # Import necessary libraries
    # Importer les bibliothèques nécessaires
    import pandas as pd
    import requests
    import json
    
    # Load the Excel file
    # Charger le fichier Excel
    print("Loading the Excel file...")
    print("Chargement du fichier Excel...")
    df = pd.read_excel('updated_table.xlsx', engine='openpyxl')
    print("Excel file loaded successfully.")
    print("Fichier Excel chargé avec succès.")
    
    # Dictionaries to store already generated definitions
    # Dictionnaires pour stocker les définitions déjà générées
    definitions_type = {}
    definitions_subtype = {}
    definitions_example = {}
    
    # Function to generate text using the local Ollama API
    # Fonction pour générer du texte avec l'API locale d'Ollama
    def generate_text(prompt):
        print(f"Sending request to the API for the prompt: {prompt}")
        print(f"Envoi de la requête à l'API pour le prompt : {prompt}")
        response = requests.post(
            "http://localhost:11434/api/generate",  # Ensure the local API is accessible at this address
            # Assurez-vous que l'API locale est accessible à cette adresse
            json={"model": "llama3.3:70b-instruct-q2_K", "prompt": prompt}
        )
        
        # Debugging: Print the raw API response
        # Débogage : Afficher la réponse brute de l'API
        print("Raw API response:", response.text)
        print("Réponse brute de l'API:", response.text)
        
        # Assemble fragmented responses
        # Assembler les réponses fragmentées
        full_response = ""
        for line in response.text.splitlines():
            try:
                json_line = json.loads(line)
                full_response += json_line["response"]
                if json_line.get("done", False):
                    break
            except json.JSONDecodeError as e:
                print("JSON decoding error:", e)
                print("Erreur de décodage JSON:", e)
                return "Text generation error"
                return "Erreur de génération de texte"
        
        print(f"Complete API response: {full_response}")
        print(f"Réponse complète de l'API : {full_response}")
        return full_response
    
    # Iterate over the DataFrame rows and fill the columns
    # Parcourir les lignes du DataFrame et remplir les colonnes
    print("Starting to process DataFrame rows...")
    print("Début du traitement des lignes du DataFrame...")
    for index, row in df.iterrows():
        print(f"Processing row {index + 1}/{len(df)}")
        print(f"Traitement de la ligne {index + 1}/{len(df)}")
        type_query = row['Type']
        subtype_query = row['Sous-Type']
        example_query = row['Exemple']
        
        # Check if the type definition has already been generated
        # Vérifier si la définition du type a déjà été générée
        if type_query in definitions_type:
            df.at[index, 'Définition du type'] = definitions_type[type_query]
        else:
            definition_type = generate_text(f"Définition du type d'objet astronomique {type_query} en français:")
            definitions_type[type_query] = definition_type
            df.at[index, 'Définition du type'] = definition_type
    
    # Save the updated Excel file after each definition
        # Sauvegarder le fichier Excel mis à jour après chaque définition
        df.to_excel(f'updated_table_with_definitions_{index + 1}_type.xlsx', index=False)
        
        # Check if the subtype definition has already been generated
        # Vérifier si la définition du sous-type a déjà été générée
        subtype_key = (type_query, subtype_query)
        if subtype_key in definitions_subtype:
            df.at[index, 'Définition du sous-type'] = definitions_subtype[subtype_key]
        else:
            definition_subtype = generate_text(f"Définition du sous-type d'objet astronomique {subtype_query} de type {type_query} en français:")
            definitions_subtype[subtype_key] = definition_subtype
            df.at[index, 'Définition du sous-type'] = definition_subtype
        
        # Save the updated Excel file after each definition
        # Sauvegarder le fichier Excel mis à jour après chaque définition
        df.to_excel(f'updated_table_with_definitions_{index + 1}_subtype.xlsx', index=False)
        
        # Check if the explanatory note on the example has already been generated
        # Vérifier si la note explicative sur l'exemple a déjà été générée
        example_key = (type_query, subtype_query, example_query)
        if example_key in definitions_example:
            df.at[index, 'Note explicative sur l\'exemple'] = definitions_example[example_key]
        else:
            definition_example = generate_text(f"Note explicative sur l'exemple d'objet astronomique {type_query}, {subtype_query}, {example_query} en français:")
            definitions_example[example_key] = definition_example
            df.at[index, 'Note explicative sur l\'exemple'] = definition_example
        
        # Save the updated Excel file after each definition
        # Sauvegarder le fichier Excel mis à jour après chaque définition
        df.to_excel(f'updated_table_with_definitions_{index + 1}_example.xlsx', index=False)
    
    print("Finished processing rows. Saving the final Excel file...")
    print("Traitement des lignes terminé. Sauvegarde du fichier Excel final...")
    
    # Save the final updated Excel file
    # Sauvegarder le fichier Excel final mis à jour
    df.to_excel('updated_table_with_definitions_final.xlsx', index=False)
    
    print("The Excel file has been updated with definitions generated by LLaMA in French.")
    print("Le fichier Excel a été mis à jour avec des définitions générées par LLaMA en français.")

    Médiagraphie

    • Breakthrough Listen. (n.d.). Exotic Target Catalog. Récupéré de http://seti.berkeley.edu/exotica/
    • Lacki, B. C., Lebofsky, M., Isaacson, H., Siemion, A., Sheikh, S., Croft, S., … & Werthimer, D. (2020). One of Everything: The Breakthrough Listen Exotica Catalog. arXiv. Récupéré de https://arxiv.org/pdf/2006.11304.pdf
    • TableConvert. (n.d.). Convert LaTeX Table to Excel Online. Récupéré de https://tableconvert.com/latex-to-excel
    • Python Software Foundation. (n.d.). pandas documentation. Récupéré de https://pandas.pydata.org/pandas-docs/stable/
    • Reitz, K., & Chovanec, T. (n.d.). Requests: HTTP for Humans. Récupéré de https://docs.python-requests.org/en/latest/

    Conclusion

    Et voilà ! Vous avez maintenant un script Python puissant et flexible pour générer des définitions et des notes explicatives sur des objets astronomiques à partir d’un fichier Excel. Ce script utilise l’API locale d’Ollama pour obtenir des définitions en français et sauvegarde les résultats dans un nouveau fichier Excel. N’hésitez pas à personnaliser ce script selon vos besoins et à explorer les merveilles de l’astronomie avec des descriptions détaillées et précises. 🚀🌌

    Si vous avez des questions ou des problèmes, n’hésitez pas à demander de l’aide ! 😊

    Bon codage et bon voyage interstellaire ! 🌠✨

    Plus de détails sur mon site Github : https://github.com/steveprudhomme/astronomical-object-type-metadata

  • Des images incroyables avec le télescope intelligent Seestar : Tutoriel complet et logiciels gratuits !

    Des images incroyables avec le télescope intelligent Seestar : Tutoriel complet et logiciels gratuits !

    Introduction

    Vous avez récemment acquis un télescope intelligent comme le Seestar S50 ? Vous avez probablement déjà obtenu de superbes résultats, mais saviez-vous qu’avec un peu plus d’effort et des logiciels gratuits, vous pouvez obtenir des images encore plus impressionnantes ? Ce tutoriel vous guidera à travers les étapes pour tirer le meilleur parti de votre télescope Seestar en utilisant des logiciels gratuits sur votre PC.

    Configuration du Seestar

    La première étape consiste à configurer correctement votre télescope Seestar. Assurez-vous que le télescope est bien centré sur la cible et qu’il prend des expositions de 10 secondes. Ces images seront ensuite empilées pour créer une image finale plus détaillée. Pour ce faire, appuyez longuement sur le bouton du Seestar jusqu’à entendre un bip, puis attendez que le télescope soit prêt à se connecter à l’application Seestar sur votre téléphone intelligent.

    1. Lancement de l’application : Une fois le télescope prêt, lancez l’application Seestar sur votre téléphone inteligent et connectez-vous au télescope.
    2. Activation des paramètres avancés : Dans l’application, activez l’option « Save each frame in enhancing » pour sauvegarder toutes les sous-images individuelles en plus de l’image empilée.
    3. Sélection de la cible : Utilisez l’outil Sky Atlas pour choisir une cible intéressante à photographier. Par exemple, la galaxie M51 (Whirlpool Galaxy ou la Galaxie de la sécheuse ;-)).

    Transfert des images vers le PC

    Une fois que vous avez capturé vos images, il est temps de les transférer sur votre ordinateur. Utilisez un câble USB-C pour connecter le télescope à votre PC. Les fichiers seront stockés dans un dossier appelé « my works » sur le télescope. Vous y trouverez deux dossiers par cible : un contenant l’image empilée et un autre contenant toutes les sous-images individuelles.

    1. Connexion du télescope : Allumez le télescope et connectez-le à votre PC à l’aide d’un câble USB-C.
    2. Transfert des fichiers : Accédez au dossier « my works » et copiez les fichiers sur votre ordinateur.

    Téléchargement des logiciels gratuits

    Pour traiter vos images, vous aurez besoin de plusieurs logiciels gratuits :

    • GraXpert : pour l’extraction de l’arrière-plan et la réduction du bruit.
    • Siril : pour la calibration des couleurs et l’étirement de l’image.
    • Gimp : pour les ajustements finaux comme les courbes et le sharpening.
    1. Téléchargement de GraXpert : Rendez-vous sur GraXpert et téléchargez la version correspondant à votre système d’exploitation.
    2. Téléchargement de Siril : Rendez-vous sur Siril et téléchargez la version correspondant à votre système d’exploitation.
    3. Téléchargement de Gimp : Rendez-vous sur Gimp et téléchargez la version correspondant à votre système d’exploitation.

    Traitement des images empilées

    Étape 1 : GraXpert

    Commencez par charger votre image empilée dans GraXpert. Utilisez l’outil de recadrage pour éliminer les artefacts de bordure. Ensuite, appliquez l’extraction de l’arrière-plan pour supprimer les gradients indésirables et utilisez la réduction du bruit pour nettoyer l’image.

    1. Chargement de l’image : Ouvrez GraXpert et chargez l’image empilée au format FITS.
    2. Recadrage : Utilisez l’outil de recadrage pour sélectionner la zone d’intérêt, en évitant les artefacts de bordure.
    3. Extraction de l’arrière-plan : Appliquez l’extraction de l’arrière-plan en utilisant l’interpolation AI pour supprimer les gradients de lumière.
    4. Réduction du bruit : Utilisez l’outil de réduction du bruit pour nettoyer l’image, en ajustant la force de débruitage selon vos préférences.

    Étape 2 : Siril

    Chargez l’image traitée dans Siril. Utilisez la calibration photométrique des couleurs pour obtenir des couleurs précises. Appliquez ensuite une transformation de l’histogramme pour étirer l’image et révéler les détails cachés.

    1. Chargement de l’image : Ouvrez Siril et chargez l’image traitée par GraXpert.
    2. Calibration des couleurs : Utilisez la calibration photométrique des couleurs pour ajuster les couleurs de l’image en fonction des étoiles de référence.
    3. Transformation de l’histogramme : Appliquez une transformation de l’histogramme pour étirer l’image et révéler les détails cachés.
    4. Saturation des couleurs : Ajustez la saturation des couleurs pour améliorer les détails et les contrastes de l’image.

    Étape 3 : Gimp

    Pour les ajustements finaux, ouvrez l’image dans Gimp. Utilisez les courbes pour ajuster le contraste et appliquez un masque de netteté pour améliorer les détails.

    1. Chargement de l’image : Ouvrez Gimp et chargez l’image traitée par Siril.
    2. Ajustement des courbes : Utilisez l’outil de courbes pour ajuster le contraste de l’image, en augmentant la luminosité des zones claires et en assombrissant les zones sombres.
    3. Masque de netteté : Appliquez un masque de netteté pour améliorer les détails de l’image, en ajustant le rayon et la quantité de netteté selon vos préférences.

    Comparaison des méthodes

    Il existe deux méthodes principales pour traiter vos images :

    • Utiliser l’image empilée par le Seestar : Cette méthode est plus simple et rapide, mais peut présenter des artefacts de pixelisation. Elle consiste à utiliser l’image empilée automatiquement par le télescope et à la traiter avec les logiciels gratuits mentionnés.
    • Empiler les images vous-même : Cette méthode est plus complexe mais offre des résultats de meilleure qualité sans artefacts. Elle consiste à empiler manuellement les sous-images individuelles en utilisant Siril, puis à traiter l’image empilée avec GraXpert et Gimp.

    Conclusion

    En suivant ce tutoriel, vous pouvez transformer vos images du télescope Seestar en véritables œuvres d’art astronomiques. Que vous choisissiez la méthode simple ou la méthode avancée, les logiciels gratuits mentionnés vous aideront à obtenir des résultats impressionnants. N’oubliez pas de partager vos résultats et de continuer à explorer les merveilles du ciel nocturne !

    Médiagraphie

    • Cuiv Lazy Geek. (n.d.). My Patreon. Retrieved from https://www.patreon.com/cuivlazygeek
    • Cuiv Lazy Geek. (n.d.). My Merch Store. Retrieved from https://cuiv.myspreadshop.com/
    • Agena Astro. (n.d.). Seestar S50. Retrieved from https://bit.ly/49mQhLJ
    • ZWO. (n.d.). Seestar S50. Retrieved from https://tinyurl.com/3n62hpzx
    • GraXpert. (2024). Retrieved from https://www.graxpert.com/
    • Siril. (2024). Retrieved from https://siril.org/
    • Gimp. (2024). Retrieved from https://www.gimp.org/
    • Siril. (2024). Siril Seestar Script Tutorial. Retrieved from https://siril.org/tutorials/seestar/
    • Cuiv Lazy Geek. (2023, September 18). Equatorial Mode Video. Retrieved from https://youtu.be/QlLiK-wcLqk
    • Amazon. (n.d.). Amazon affiliate. Retrieved from https://amzn.to/49XTx01
    • Agena Astro. (n.d.). Agena affiliate. Retrieved from https://bit.ly/3Om0hNG
    • High Point Scientific. (n.d.). High Point Scientific affiliate. Retrieved from https://bit.ly/3lReu8R
    • First Light Optics. (n.d.). First Light Optics affiliate. Retrieved from https://tinyurl.com/yxd2jkr2
    • All-Star Telescope. (n.d.). All-Star Telescope affiliate. Retrieved from http://bit.ly/3SCgVbV
    • Astroshop EU. (n.d.). Astroshop EU Affiliate. Retrieved from http://tinyurl.com/2vafkax8
    • Cuiv Lazy Geek. (n.d.). Dwarf III Smart Telescope. Retrieved from https://bit.ly/3SyChXu
    • Agena Astro. (n.d.). ZWO ASI2600MC Duo. Retrieved from https://bit.ly/3M8IkPS
    • High Point Scientific. (n.d.). ZWO ASI2600MC Duo. Retrieved from https://bit.ly/3Jti7KQ
    • Agena Astro. (n.d.). ZWO ASI585 MC Pro Camera. Retrieved from https://bit.ly/3Iwo6y8
    • High Point Scientific. (n.d.). ZWO ASI585 MC Pro Camera. Retrieved from https://bit.ly/4cp1Ofn
    • Touptek. (n.d.). TOUPTEK IMX571 APS