Gestion des fichiers d'ouverture de l'instrument scientifique (SIAF) pour les télescopes spatiaux. Les fichiers SIAF contiennent des descriptions et des relations de plan focaux géométriques détaillées pour les instruments scientifiques. Ils sont maintenus dans la base de données JWST / HST (base de données de référence du projet).
Pysiaf est un package Python pour accéder, interpréter, maintenir et générer SIAF, en particulier pour JWST. Des outils pour appliquer les transformations de trame, le traçage, la comparaison et la validation sont fournis.
Vérifiez quelle version PRD est utilisée:
print(pysiaf.JWST_PRD_VERSION)
Transformations de cadre ( det , sci , idl , tel sont des cadres pris en charge):
import pysiaf
instrument = 'NIRISS'
# read SIAFXML
siaf = pysiaf.Siaf(instrument)
# select single aperture by name
nis_cen = siaf['NIS_CEN']
# access SIAF parameters
print('{} V2Ref = {}'.format(nis_cen.AperName, nis_cen.V2Ref))
print('{} V3Ref = {}'.format(nis_cen.AperName, nis_cen.V3Ref))
for attribute in ['InstrName', 'AperShape']:
print('{} {} = {}'.format(nis_cen.AperName, attribute, getattr(nis_cen, attribute)))
# coordinates in Science frame
sci_x = np.array([0, 2047, 2047, 0])
sci_y = np.array([0, 0, 2047, 2047])
# transform from Science frame to Ideal frame
idl_x, idl_y = nis_cen.sci_to_idl(sci_x, sci_y)
Tracé (seul un petit sous-ensemble d'options est illustré):



import matplotlib.pyplot as plt
plt.figure(figsize=(4, 4), facecolor='w', edgecolor='k'); plt.clf()
# plot single aperture
nis_cen.plot()
# plot all apertures in SIAF
for aperture_name, aperture in siaf.apertures.items():
aperture.plot()
plt.show()
# plot 'master' apertures
from pysiaf.siaf import plot_master_apertures
plt.figure(figsize=(8, 8), facecolor='w', edgecolor='k'); plt.clf()
plot_master_apertures(mark_ref=True)
plt.show()
# plot HST apertures
siaf = pysiaf.Siaf('HST')
aperture_names = ['FGS1', 'FGS2', 'FGS3', 'IUVIS1FIX', 'IUVIS2FIX', 'JWFC1FIX', 'JWFC2FIX']
plt.figure(figsize=(4, 4), facecolor='w', edgecolor='k')
for aperture_name in aperture_names:
siaf[aperture_name].plot(color='r', fill_color='darksalmon', mark_ref=True)
ax = plt.gca()
ax.set_aspect('equal')
ax.invert_yaxis()
plt.show()
La principale référence pour une description de JWST SIAF est Cox & Lallo, 2017, JWST-SSCI-001550: Description et utilisation du fichier d'ouverture de l'instrument scientifique JWST , disponible sur https://jwst.stsci.edu/documentation/technical-ocuments .
Pysiaf est documenté sur https://pysiaf.readthedocs.io/
Si vous trouvez ce package utile, veuillez envisager de citer l'enregistrement Zenodo en utilisant le badge DOI ci-dessus. Veuillez trouver des instructions de citation supplémentaires dans la citation.
Toutes les valeurs de paramètres dans Pysiaf sont sujettes à changement. Les valeurs JWST sont préliminaires jusqu'à la fin de la mise en service de l'observatoire JWST.
La distorsion et d'autres transformations de Pysiaf sont d'une précision suffisante pour les opérations, mais n'ont pas nécessairement une qualité de qualité scientifique. Par exemple, généralement une seule solution de filtre est transportée par ouverture. Pour les transformations de qualité scientifique, veuillez consulter les pipelines scientifiques et leurs fichiers de référence (voir https://jwst-docs.stsci.edu/jwst-data-reduction-ppeline)
Pour la planification de l'observation scientifique, la géométrie du plan focal implémenté dans le dernier APT (http://www.stsci.edu/hst/proping/apt) a priorité.
La branche des télescopes STSCI fournit un soutien complet à Pysiaf pour les systèmes opérationnels S & OC uniquement.
Veuillez ouvrir un nouveau problème ou une nouvelle demande de traction pour les bogues, les commentaires ou les nouvelles fonctionnalités que vous souhaitez voir. S'il y a un problème sur lequel vous souhaitez travailler, veuillez laisser un commentaire et nous serons heureux d'aider. Les nouvelles contributions et contributeurs sont les bienvenus!
Avez-vous des commentaires et des demandes de fonctionnalités? Y a-t-il quelque chose qui manque que vous aimeriez voir? Veuillez ouvrir un problème ou envoyer un e-mail aux responsables. Ce package suit le code de conduite du télescope spatial s'efforce de fournir une communauté accueillante à tous nos utilisateurs et contributeurs.
Ce qui suit décrit le flux de travail typique pour contribuer au projet Pysiaf (adapté de JWQL): 0. Ne commettez aucune information sensible (par exemple, les structures de chemin internes STSCI, les noms de machines, les noms d'utilisateurs, les mots de passe, etc.) à ce référentiel public . L'histoire de Git ne peut pas être effacée.
pysiaf spacetelescope sur votre espace GitHub personnel.upstream vers https://github.com/spacetelescope/pysiafspacetelescope pysiaf qui décrit le besoin et la nature des changements que vous prévoyez d'apporter. Ce n'est pas nécessaire pour les modifications et correctifs mineurs.origin .pysiaf spacetelescope , créez une demande de traction qui fusionne la branche dans spacetelescope:master .Ce package est pris en charge dans Python 3.10+
pip install pysiaf
Clone le référentiel:
git clone https://github.com/spacetelescope/pysiaf
Installer Pysiaf:
cd pysiaf
pip install .
Installer en mode de développement pip install -e .
Si vous obtenez une erreur
import pysiaf
qui revient à
import lxml.etree as ET
et les États
ImportError [...] Library not loaded: libxml2.2.dylib Reason: Incompatible library version: etree.[...] requires version 12.0.0 or later, but libxml2.2.dylib provides version 10.0.0 ,
Cela peut probablement être corrigé en rétrograçant la version de LXML, par exemple
pip uninstall lxml
pip install lxml==3.6.4
Problèmes d'installation de PYQT5: Si vous utilisez MacOS Mojave, il fait échouer Matplotlib sans PYQT5. Veuillez prendre les mesures appropriées pour vous assurer que PYQT5 est installé pour