Skip to content
Will Barnes edited this page Aug 18, 2017 · 3 revisions

fiasco Development Notes

This is a place for putting development notes related to the fiasco package, a Python interface to the CHIANTI atomic database.

Database

One of the most difficult parts of the package to navigate will be the interaction with the CHIANTI atomic database itself. Below is a rough sketch of how I envision the database-codebase interaction will proceed.

  • Set of functions to parse raw ASCII into pandas dataframes
    • One for each type of file in the database
    • Set of dataframes for each ion in the database
    • How to handle properties on the element level? e.g. abundance, ionization potential, etc.
  • Build single HDF5 out of the dataframes
    • Easily stream data in and out of the file
    • How to structure the data? Preserve the CHIANTI filetypes?
    • Nested
  • Base class instantiated with a particular ion
    • Properties for each of the distinct filetypes
    • Base class for all other objects in fiasco
    • Allow other applications to build capabilities on top of CHIANTI data without baggage of the full Ion object
  • Set database location with a property in the rc file
    • Other properties (e.g. specific datasets) set here as well
    • Build HDF5 file the first time the package is imported, store in ~/.fiasco/ by default
    • SHA-1 hashes for each file in the database, store these in the ~/.fiasco/ directory
    • At each import, check the hashes to see if the HDF5 database needs to be updated

Infrastructure

  • Package template from SunPy or Astropy and helpers package from Astropy
  • Hosted documentation with Sphinx and Read the Docs
  • Testing infrastructure with pytest
  • Automatic builds, tests, and docs tests on Travis CI

Downloading the Data

  • Biggest problem: how to download the data? how should it be distributed?
  • Always allow for a local copy that is already there through rc setting
  • Download automatically at import if it can't be found
  • Updating??? Store file hashes, check at each import, update HDF5 as needed (or optionally do not)