2 - PRISM et les requêtes Python sur l'observatoire Virtuel

Le fil de ce forum est dédié aux fonctions d'observatoire virtuel comme Colibri, ou SAMP.
On trouvera ici des tutos.
Répondre
Wivona team
Messages : 11
Enregistré le : 15 août 2024, 17:37

2 - PRISM et les requêtes Python sur l'observatoire Virtuel

Message par Wivona team »

2.1 - L'Observatoire Virtuel
  • WikiPedia : https://fr.wikipedia.org/wiki/Observatoire_virtuel
    Un observatoire virtuel (OV) est une collection d’archives de données interactives et d’outils logiciels qui utilisent l’Internet pour bâtir un environnement de recherche scientifique dans lequel les programmes de recherche en astronomie pourront être conduits.
[ A compléter]

2.2 - Mise en Oeuvre de Python avec PRISM

PRISM dispose d'un répertoire de requêtes Python préenregistrées. Il n'est pas utile de savoir coder en Python pour les utiliser.
Python est un logiciel gratuit, facilement accessible, qui a rapidement supplante (Fortran), JAVA dans le milieu scientifique.

Python n'est pas installé avec PRISM. Il vous appartient de procéder vous-même à cette installation ainsi qu' à celle des modules complémentaires (Bibliothèques) pour l'astronomie ( NumPy, AstroPy, PyVo, Astroquery, Urllib, ...).

Voici quelques exigences Fortes imposées par l'interface Python-PRISM:
  • - Seules les versions 3 de Python sont admises.
  • - Vous devez installer une version 32 bits de Python si vous utilisez la version 32 bits de PRISM.
    - Vous devez installer une version 64 bits de Python si vous utilisez la version 64 bits de PRISM.
  • - L'installation de la dernière version de Python pourrait être conflictuelle avec des bibliothèques non encore mises à jour.
Votre Anti-Virus peut se montrer tracassé par certains modules non signés... Il vérifiera!. SI votre source est officielle, ca devrait bien se terminer.
  • Installez Python de préférence pour tous les utilisateurs (il est plus facile à retrouver ensuite).
    Installez Python en respectant la procédure du site ( https://www.python.org/ ).
installation Python
installation Python

  • Installez les bibliothèques via une invite de commande :
    • Ouvrez une invite de commande sur le répertoire Python
    • Lancez Python
    • " .\python -m pip install numpy astropy pyvo astroquery urllib "
Installpackage.png
  • Localisez le fichier dll correspondant à votre installation (par exemple V3.13.0) et notez son chemin complet
    (ex: C:\Users\toto\AppData\Local\Programs\Python\Python313-32)
  • Vous reporterez dans PRISM le chemin de la librairie Python et le numéro de version (ex: 3.12) sans la sous-version
    << Configuration/configuration générale de PRISM/Observatoire virtuel/Python/choix librairie Python >>
Configuration générale
Configuration générale
  • Validez votre installation en allant dans le menu << outils/scripts Vo(Python) >> et tapez en minuscules "print(2+2)" dans la boite de dialogue du bas.
    Puis exécutez votre premier script en appuyant sur le bouton "executer script".
    Fenêtre Python
    Fenêtre Python
    Si le résultat est satisfaisant, découvrez comment vous pouvez reparamétrer ce script.
2.3 - Formation aux requêtes Python sur l' OV
  • PRISM dispose d'un répertoire de requêtes Python préenregistrées. Il n'est pas utile de savoir coder en Python pour les utiliser.
  • La communauté des utilisateurs PRISM peut vous aider à enrichir cette bibliothèque en proposant des scripts en reponse à ce fil.
    Comme Python est un (Puissant et rapide) langage interprété, vous pouvez lire la requête et voir si vous pouvez y changer des paramètres...
    C'est un début.
Autres liens pour pratiquer avec les modules complémentaires:
C_Help_Learn_Astropy-1__='https://learn.astropy.org/';
C_Help_Learn_Astropy-2__='https://learn.astropy.org/tutorials/';
C_Help_Learn_PyVo______='https://pyvo.readthedocs.io/en/latest/';
C_Help_Learn_AstroQuery_='https://astroquery.readthedocs.io/en/latest/';


[ A compléter]


2.4 - Utilisation des données locales dans les requêtes

PRISM transmet au moteur Python quelques données propres à l'installation locale. Ceci doit vous permettre d'écrire des scripts réutilisables par d'autres.
  • PrismPath.value : Fournit au script la racine du chemin d'accès vers les répertoires Prism utilisateur
  • Cdc_Ra.value : Fournit au script l'ascension droite du centre de la carte du ciel affichée dans PRISM en degrés décimaux
  • Cdc_Dec.value : Fournit au script la déclinaison du centre de la carte du ciel affichée dans PRISM en degrés décimaux
  • Signalez vos besoins sur ce fil...
[ A compléter]

2.5 - Utilisation des résultats des requêtes
  • Des exemples s(er)ont fournis pour montrer comment Python peut restituer à PRISM des résultats sous forme de:
    • Tables (Fichiers CSV, Fichier HTML, Tables FITS, VOTABLE)
    • Images FITS
    • Spectres
    • [ A compléter]
2.6 - A Noter
  • - Vous pouvez installer une version 64 bits de Python à coté d'une version 32 bits de Python. :geek:
    Mais PRISM32 et PRISM64 ne connaitront que le même chemin de DLL Python.
  • - Les versions de Python installées avec Conda ou MiniConda ne sont pas interdites, seulement non documentées :ugeek: .
    - Votre expertise et le résultat de vos tests nous intéressent sous forme de réponse à ce fil.
Rédigé par Jean-Paul GODARD (PI)
Modifié en dernier par Wivona team le 21 oct. 2024, 11:25, modifié 16 fois.
Wivona team
Messages : 11
Enregistré le : 15 août 2024, 17:37

2.7.1 Exemple de Requête Python Pour le catalogue des Nébuleuses Planétaires

Message par Wivona team »

# Requête Python pour le catalogue des Nébuleuses Planétaires confirmées
# Renaud SAVALLE (Obspm)
#
#Modules utilisés
from astroquery.vizier import Vizier
from astropy.io.votable import from_table

# pas de limites sur le nombre lignes
Vizier.ROW_LIMIT = -1

# V/84:Strasbourg-ESO Catalogue of Galactic Planetary Nebulae (Acker+, 1992)
#
catalogs = Vizier.get_catalogs('V/84') #Import des catalogues disponibles par astroquery.vizier
print(catalogs) # catalogues

# Dans le Print précédent: '13:V/84/pospn' with 9 column(s) and 347 row(s)
pospn=catalogs[13] #Selection du catalogue des NP(pn)

print(pospn.colnames) # Liste des colonnes disponibles

#Choix de colonnes
pospn.keep_columns(['Name','RAJ2000', 'DEJ2000']) # garde seulement ces 3 cols

# sauvegarde en VOT
file=str(PrismPath.value)+'pospn.vot' #Chemin complet vers la tête des répertoires utilisateurs dans PRISM
vot_pospn = from_table(pospn) #Extraction par astropy.io.votable
vot_pospn.to_xml(file) #Fichier écrit en Xml (Format Votable)

# Vous pouvez sauvegarder dans un autre format (Html, csv, ascii) en modifiant les 2 dernières lignes ou utiliser TopCat pour le faire.
#
#Edité par Jean-Paul GODARD (PI)
Modifié en dernier par Wivona team le 01 oct. 2024, 13:59, modifié 3 fois.
Wivona team
Messages : 11
Enregistré le : 15 août 2024, 17:37

2.7.2 Exemple de Requête Python pour obtenir une image

Message par Wivona team »

# Requête Python pour obtenir une image appartenant à une collection publiée via le protocole SIA
# Renaud SAVALLE (Obspm)
#
#Modules utilisés
import pycurl
import pyvo
from io import BytesIO

#Requête SIA pour obtenir la collection des images du serveur aux coordonnées indiquées
SIA_ACCESS_URL = "http://hla.stsci.edu/cgi-bin/hlaSIAP.cg ... tary=false&"
coords_deg=(83.82083333333331, -5.39)

sia_svc = pyvo.sia.SIAService(SIA_ACCESS_URL)
sia_results = sia_svc.search(coords_deg, (0.5, 0.5))

#l'Url de l'image est renvoyée
fits_file_url = sia_results[5].acref # URL de la 5ème (arbitraire) image
buffer = BytesIO()

#le fichier FITS retenu est transféré par 'CURL'
# Initialising the curl object
curl = pycurl.Curl()

# Setting the request URL, the user agent, and the buffer for the response
curl.setopt(pycurl.URL,fits_file_url)
curl.setopt(pycurl.WRITEDATA, buffer)
curl.setopt(pycurl.FOLLOWLOCATION, True)


curl.perform() # ne fonctionne pas dans collab
curl.close()

# Writing the buffer to the file
prism_path=PrismPath.value
fits_filename=f'{prism_path}..\Fits\image.fits' #Path Complet vers le reprtoire utilisateur contenant les Fits
with open(fits_filename, "wb") as f:
[tab]f.write(buffer.getbuffer())

#Les astronomes travaillent avec fits, mais PRISM sait convertir en JPG
#Edité par Jean-Paul GODARD (PI)
Modifié en dernier par Wivona team le 17 oct. 2024, 16:20, modifié 4 fois.
Wivona team
Messages : 11
Enregistré le : 15 août 2024, 17:37

2.7.3 Exemple de Requête Python Pour voir les intialisations PRISM

Message par Wivona team »

#Requête Python pour voir les initialisations faites par PRISM
# JP GODARD (Wivona)
#
# Test des variables issues de Prism
print( '*** Test des variables issues de Prism')
print('' )
print(PrismPath.value )
print( )
print( 'Ra =',Cdc_Ra.value)
print( 'Dec =',Cdc_Dec.value)
print( '***')
Modifié en dernier par Wivona team le 26 oct. 2024, 09:48, modifié 1 fois.
Wivona team
Messages : 11
Enregistré le : 15 août 2024, 17:37

2.8 - Editeur Syntaxique pour les Requêtes Python

Message par Wivona team »

2.8 - Editeur Syntaxique pour les modules Python

Notepad++ (Npp) est un éditeur de texte doté d'intéressantes capacités pour l'édition des requêtes Python.
  • Mise en évidence de la syntaxe par la coloration
  • Edition en parallèle de deux ou plusieurs fichiers
  • Synchronisation du déroulement des fenêtres
  • Définition de l'espace de travail (répertoire des fichiers requêtes par ex.)
  • Mémorisation du contexte de travail en cas de suspension de le session

2.8.1 Installation de Notepad++ (Npp)
  • Installer Npp dans le répertoire proposé (ou un répertoire choisi)
2.8.2 Ajout d'une extension de fichier à la détection de la syntaxe Python

Vous pouvez rajouter une extension de fichiers à la liste des fichiers à afficher avec la coloration syntaxique "Python".
PRISM vous propose d'utiliser l'extension "*.pys" pour les fichiers de requête Python.
(L'extension "*.py" étant affectée à l'appel du compilateur Python).

  • Ouvrir le répertoire d'installation de Npp avec le gestionnaire de fichier Windows
  • Ouvrir le fichier langs.model.xml avec votre éditeur de texte favori (Npp?)
  • Localiser la ligne correspondant à la définition de Python.
  • Rajouter "pys" dans la liste des extensions associées à Python.
  • Enregistrer la modification et vérifier son fonctionnement
Modif NPP
Modif NPP


2.8.3 Edition de 2 fichiers en parallèle
  • Quand vous avez deux onglets dans la fenêtre principale, vous pouvez partager celle-ci
    avec les commandes du menu contextuel d'un des onglets
    Clic droit sur l'onglet / déplacer le document / déplacer vers l'autre vue
Ouverture_2eme_Fenetre
Ouverture_2eme_Fenetre
  • Pour revenir à la disposition antérieure, utiliser les mêmes commandes
Avec_2eme_Fenetre
Avec_2eme_Fenetre

2.8.4 Synchronisation du déroulement des fenêtres
  • Utiliser la commandeAffichage / Défilement vertical synchrone


Synchronisation défilement
Synchronisation défilement

2.8.5 Définition de l'espace de travail (répertoire des fichiers requêtes par ex.)
  • Depuis Npp ou depuis l'explorateur de fichiers, ouvrez un fichier à éditer.
  • Avec la commande Fichier / Ouvrir le répertoire en tant qu'espace de travail
    Pour que toutes les ouvertures de fichiers depuis Npp se fassent à partir de ce répertoire
2.8.6 Mémorisation du contexte de travail en cas de suspension de la session
  • La commande Fichier / Sauvegarder la session sauvegarde le contexte de votre travail
  • La commande Fichier / Charger la session vous permet de retrouver votre contexte de travail
2.8.7 Exécution du script après édition.

Vous pouvez tester la syntaxe de votre édition en lançant le script dans Python depuis Npp,
Vous n'avez pas d'accès aux variables d'exécution initialisées par Prism.
Répondre