Skip to main content

EIS pointing

Tools to correct the pointing of Hinode/EIS.

This Python package implements the method described in the paper Pelouze et al. 2019, Sol Phys 294:59.

Usage

From the command line

This tool can be run from the command line by calling compute_eis_pointing:

usage: compute_eis_pointing [-h] [-s STEPS_FILE] [--io IO] [-c CORES]
                            [--cache-aia-data]
                            filename [filename ...]

Determine the pointing of Hinode/EIS.

positional arguments:
  filename              The names of the level 0 EIS files, eg.
                        'eis_l0_20100815_192002'.

optional arguments:
  -h, --help            show this help message and exit
  -s STEPS_FILE, --steps-file STEPS_FILE
                        Path to a yaml file containing the registration steps.
  --io IO               Directory where output files are written,
                        default: ./io.
  -c CORES, --cores CORES
                        Maximum number of cores used for parallelisation,
                        default: 4.
  --cache-aia-data      Cache the AIA data to a file. This uses a lot of
                        storage, but speeds things up when the same raster is
                        aligned for the second time.

Examples (command line):

compute_eis_pointing -c16 eis_l0_20140810_042212
compute_eis_pointing --steps-file steps/shift_only.yml eis_l0_20140810_042212

As a Python module

The tool can also be used from within a Python script, using eis_pointing.compute().

compute(*filename, steps_file=None, io='io', cores=4, cache_aia_data=False)
    Perform all computation steps to determine the optimal EIS pointing.

    Parameters
    ==========
    filename : list
        The names of the level 0 EIS files, eg. 'eis_l0_20100815_192002'.
    steps_file : str or None (default: None)
        Path to a yaml file containing the registration steps.
    io : str (default: 'io')
        Directory where output files are written.
    cores : int (default: 4)
        Maximum number of cores used for parallelisation.
    cache_aia_data : bool (default: False)
        Cache the AIA data to a file. This uses a lot of storage, but speeds
        things up when the same raster is aligned for the second time.

Examples (Python):

import eis_pointing
eis_pointing.compute('eis_l0_20140810_042212', cores=16)
eis_pointing.compute('eis_l0_20140810_042212', steps_file='steps/shift_only.yml')

Installation

Install the latest release by running: pip install eis_pointing.

Alternatively, the latest version can be installed from GitHub by cloning this repository with git clone https://github.com/gpelouze/eis_pointing, then running cd eis_pointing, and pip install ..

Optional: install SolarSoft

Before computing the optimal pointing, this tool can download, prepare, and export the EIS data by calling external IDL routines from SolarSoft. For these features to be available, a functioning installation of SolarSoft containing the EIS instrument is required. Install SolarSoft, and set the environment variable $SSW to your installation path (by default, SolarSoft is assumed to be installed installed into /usr/local/ssw).

It is perfectly fine not to install or configure SolarSoft to run with this tool. In this case, you will need to manually download the EIS level0 FITS, prepare them into level1 FITS, and save a windata structure containing the Fe XII 195.119 Å line to a .sav file placed in <io directory>/windata/eis_windata_<date>.sav. See pipeline for details on how to do this.

Customisation

The registration steps used to find the optimal pointing can be customised in a YAML file, and passed to eis_pointing using the --steps-file parameter (see examples above). The file should have a top-level key named steps that contains a list of registration steps. Each step must specify at least a type, chosen between shift, rotshift, and slitshift.

By default, EIS data are coaligned with synthetic AIA raster. To coalign with a single AIA image, add the top-level key single_aia_frame: True. In this case, the reference AIA image chosen at the middle of the EIS raster.

See files in steps/ for examples.

When no file is specified, the default behaviour is the same as using steps/full_registration.yml.

Code structure

Pipeline

All the steps required to determine the optimal pointing data from EIS level 0 files are defined in driver.py. The appropriate functions are called by the executable compute_eis_pointing when using the tool from the CLI, or by eis_pointing.compute() when using it as a Python module.

  1. Download data Download the required EIS level 0 FITS, and place them in the EIS data files and directory structure described in EIS Software Note #18 (eg. $HINODE_DATA/eis/level0/2014/08/10/eis_l0_20140810_042212.fits).

  2. Prepare data Generate EIS level 1 FITS from level 0, and save it to the EIS data files and directory structure (eg. $HINODE_DATA/eis/level1/2014/08/10/eis_l1_20140810_042212.fits). Performed by eis_pointing/prep.pro, which calls the SolarSoft routine eis_prep.pro.

  3. Export windata Save a windata structure containing the Fe XII 195.119 Å line, obtained using the SolarSoft function eis_getwindata (see EIS Software Note #21). The structure is saved to <io>/windata/eis_windata_<date>.sav (eg. ./io/windata/windata_20140810_042212.sav). Performed by eis_pointing/export_windata.pro.


Alternative to steps 1-3 without SolarSoft If SolarSoft is not installed or configured, you will need to separately generate a windata structure containing the Fe XII 195.119 Å line, and save it to <io>/windata/eis_windata_<date>.sav.

Example (SSW):

wd = eis_getwindata('eis_l1_20140810_042212.fits', 195.119, /refill)
save, wd, filename='./io/windata/windata_20140810_042212.sav'

Once this is done, run the tool normally, either from the command line, or as a Python module. It will detect the existing .sav file, and skip steps 1-3.


  1. Compute the EIS emission Generate an intensity map of the Fe XII 195.119 Å line by summing the spectra between 194.969 and 195.269 Å. Data are saved to <io>/eis_aia_emission/eis_aia_emission_<date>.fits (eg. ./io/eis_aia_emission/eis_aia_emission_20140810_042212.fits). Performed by eis_pointing.eis_aia_emission.compute().

  2. Determine the optimal pointing Determine the optimal pointing for EIS using the intensity map generated at the previous step, and AIA 193 data retrieved from Medoc as a reference. (The AIA FITS are downloaded to ./sdo/aia, or to $SDO_DATA/aia/ if the environment variable $SDO_DATA is set set.) Results from the alignment (ie. new EIS coordinates) are saved to <io>/pointing/eis_pointing_<date>.fits. Diagnostics plots, correlation cubes, as well as a YAML file containing the results from the coregistration are also saved to <io>/pointing_verification/<date>/. Performed by eis_pointing.eis_aia_registration.optimal_pointing().

Coregistration functions: eis_pointing.coregister

  • images contains functions to register images in translation, relatively to another image.
  • rasters contains functions to register images in translation and rotation, relatively to a synthetic raster.
  • slits functions to register slit positions (ie. vertical columns in an image) separately, relatively to a synthetic raster.
  • tools functions shared among the previous submodules.

Functions shared by different components eis_pointing.utils

  • aia_raster: defines AIARasterGenerator that builds synthetic rasters from AIA data. Also contains SimpleCache and FileCache.
  • cli: argument parsing and output display.
  • eis, aia.py: functions to handle native EIS and AIA data, filenames, and data queries. This does not take care of transformed data such as AIARasterGenerator.
  • files: manage local filenames (ie. those in io/); canonical EIS or AIA filenames are handled in eis.py or aia.py.
  • idl: run IDL or SSW code from Python, load and format data returned by IDL. Contains IDLFunction, SSWFunction and IDLStructure.
  • num: tools that extend numpy or scipy.
  • plots: help generate plots at step 4.
  • sun: generic solar computations.

Reference / License

If you use this package for a publication, please acknowledge the following paper: Pelouze et al. 2019, Sol Phys 294:59.

This package is released under a MIT open source licence. See LICENSE.txt.

Metadata

Release files for eis-pointing 2025.4.25

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for eis-pointing 2025.4.25
File Size Uploaded Provenance Actions
eis_pointing-2025.4.25.tar.gz 46.7 kB With provenance Details for eis_pointing-2025.4.25.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for eis-pointing 2025.4.25
File Interpreter ABI Platform Actions
eis_pointing-2025.4.25-py3-none-any.whl Python 3 none any Details for eis_pointing-2025.4.25-py3-none-any.whl

Total release size: 99.2 kB

Release files / eis_pointing-2025.4.25.tar.gz

Download URL eis_pointing-2025.4.25.tar.gz
Size 46.7 kB
Tags Source
SHA-256 checksum
How to use checksums
be5102867b4994a675c8b636a48e833bc0fcd43fc792947492395b989d7b5d5f
BLAKE2b-256 checksum
How to use checksums
63f6596d2f92b8468c10020193227bfa90374241244b1c5dd170ae2910868301
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 24, 2025.

Transparency log

Release files / eis_pointing-2025.4.25-py3-none-any.whl

Download URL eis_pointing-2025.4.25-py3-none-any.whl
Size 52.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
11cf2d6f2d946d1ea21f2ec0c8fb45ec3aa525761474b584b66388d17780f449
BLAKE2b-256 checksum
How to use checksums
76eb2271a7f605bf93a68f14ee31a32e47fd6d3802743a4e2ddc6c760993a31b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 24, 2025.

Transparency log

Security for eis-pointing 2025.4.25

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for eis_pointing-2025.4.25.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 24, 2025.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page