Manejo de archivos de apertura de instrumentos científicos (SIAF) para telescopios espaciales. Los archivos SIAF contienen descripciones y relaciones detalladas del plano focal geométrico para los instrumentos científicos. Se mantienen en el JWST/HST PRD (base de datos de referencia del proyecto).
Pysiaf es un paquete de Python para acceder, interpretar, mantener y generar SIAF, en particular para JWST. Se proporcionan herramientas para aplicar las transformaciones de cuadros, trazado, comparación y validación.
Compruebe qué versión de PRD está en uso:
print(pysiaf.JWST_PRD_VERSION)
Transformaciones de cuadros ( det , sci , idl , tel son marcos compatibles):
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)
Trazado (solo se ilustra un pequeño subconjunto de opciones):



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 referencia principal para una descripción de JWST SIAF es Cox & Lallo, 2017, JWST-Stsci-001550: Descripción y uso del archivo de apertura de instrumentos de ciencia JWST , disponible en https://jwst.stsci.edu/Documentation/technical-documents .
Pysiaf está documentado en https://pysiaf.readthedocs.io/
Si encuentra útil este paquete, considere citar el registro de Zenodo usando la insignia DOI anterior. Encuentre instrucciones de cita adicionales en cita.
Todos los valores de parámetros en Pysiaf están sujetos a cambios. Los valores de JWST son preliminares hasta que la puesta en marcha del Observatorio JWST ha concluido.
La distorsión y otras transformaciones en Pysiaf tienen una precisión suficiente para las operaciones, pero no necesariamente tienen calidad de grado científico. Por ejemplo, generalmente solo se transporta una solución de filtro por apertura. Para las transformaciones de grado científico, consulte las tuberías científicas y sus archivos de referencia (consulte https://jwst-docs.stsci.edu/jwst-data-reduction-pipeline)
Para la planificación de la observación científica, la geometría del plano focal implementada en el último APT (http://www.stsci.edu/hst/proposing/apt) tiene prioridad.
La sucursal de los telescopios STSCI proporciona un soporte completo de Pysiaf solo para sistemas operativos S&OC.
Abra un nuevo problema o una nueva solicitud de extracción de errores, comentarios o nuevas funciones que le gustaría ver. Si hay un problema en el que le gustaría trabajar, deje un comentario y estaremos encantados de ayudarlo. ¡Nuevas contribuciones y contribuyentes son muy bienvenidos!
¿Tiene comentarios y solicitudes de funciones? ¿Hay algo que falta a que le gustaría ver? Abra un problema o envíe un correo electrónico a los mantenedores. Este paquete sigue el código de conducta del telescopio espacial se esfuerza por proporcionar una comunidad acogedora a todos nuestros usuarios y contribuyentes.
A continuación se describe el flujo de trabajo típico para contribuir al Proyecto Pysiaf (adaptado de JWQL): 0. No comete ninguna información confidencial (por ejemplo, estructuras de ruta interna, nombres de máquinas, nombres de usuarios, contraseñas, etc.) a este repositorio público . La historia de Git no se puede borrar.
spacetelescope pysiaf en su espacio personal de GitHub.upstream a https://github.com/spacetelescope/pysiafspacetelescope pysiaf que describe la necesidad y la naturaleza de los cambios que planea hacer. Esto no es necesario para cambios y soluciones menores.origin .spacetelescope pysiaf , cree una solicitud de extracción que fusione la rama en spacetelescope:master .Este paquete es compatible con Python 3.10+
pip install pysiaf
Clon el repositorio:
git clone https://github.com/spacetelescope/pysiaf
Instalar pysiaf:
cd pysiaf
pip install .
Instale en modo de desarrollo pip install -e .
Si recibe un error sobre
import pysiaf
que se remonta a
import lxml.etree as ET
y estados
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 ,
Esto probablemente se puede solucionar degradando la versión de LXML, por ejemplo,
pip uninstall lxml
pip install lxml==3.6.4
Problemas de instalación de PYQT5: si usa MacOS Mojave, hace que Matplotlib falle sin PYQT5. Tome las medidas apropiadas para asegurarse de que PYQT5 esté instalado para