Intro for CHIANTI IDL Users¶
ChiantiPy was not developed to be a clone of the CHIANTI IDL code. The IDL code largely consists of functions that can be used to calculate or plot a variety of properties. Structures are often used to carry the results of one function to be used by another.
ChiantiPy is object oriented. For example, the building block of ChiantiPy is the ion class. It carries with it all the methods that are needed as well as various calculated properties that are kept as attributes. By following the Quick Start guide, you will become familiar with how ChiantiPy works. Because one can always inquire, for example with dir, as to the methods and attributes of a an object, such as an ion, it is easy to remember what you might want to calculate next. For example, you have created an object myion. It is possible to then invoke
to plot the level populations of myion. If you have not already calculated the levels populations, the ion class knows to calculate the level populations (myion.populate()) and save them for later use as the dictionary attribute myion.Population and then plot the specified level populations. The level populations are then available as a 2 dimensional numpy array
Python and IPython provide many tools for examining any give object (everything in Python is an object of some sort)
mg4 = ch.ion('mg_4',setup=0)
By setting the keyword setup to 0 or False the complete setup of the ion is not performed, but a certain amount of information is retrieved. Since neither a temperature or electron density were specified, none of these attributes know anything related to these two quantitities. The default value for setup is True so that the setup is performed with the specified temperatures and electron densities. In general, this is the way you want to construct the mg_4 ion.
for attr in vars(mg4): print(attr) IonStr FIP Z AbundanceName Ip Ion IoneqAll PDensity Abundance RadTemperature FileName RStar ProtonDensityRatio Dielectronic Defaults IoneqName Spectroscopic
The Python function vars retrieves the attributes of the mg4 object.
print('%s'%(mg4.IoneqName)) chianti print('the abundance file name is %s'%(mg4.AbundanceName)) the abundance file name is sun_coronal_1992_feldman_ext print('the abundance of %s is %10.2e'%(mg4.Spectroscopic,mg4.Abundance)) the abundance of Mg IV is 1.41e-04
One can get a more complete description of the various attributes and methods of the mg4 object
for one in dir(mg4): print(one) Abundance AbundanceName Defaults Dielectronic FIP FileName Ion IonStr IoneqAll IoneqName Ip PDensity ProtonDensityRatio RStar RadTemperature Spectroscopic Z __class__ __delattr__ __dict__ __dir__ __doc__ __eq__ __format__ __ge__ __getattribute__ __gt__ __hash__ __init__ __le__ __lt__ __module__ __ne__ __new__ __reduce__ __reduce_ex__ __repr__ __setattr__ __sizeof__ __str__ __subclasshook__ __weakref__ boundBoundLoss cireclvlDescale convolve diCross diRate drRate drRateLvl eaCross eaDescale eaRate emiss emissList emissPlot emissRatio gofnt intensity intensityList intensityPlot intensityRatio intensityRatioInterpolate intensityRatioSave ionGate ioneqOne ionizCross ionizRate lineSpectrumPlot p2eRatio popPlot populate recombRate rrRate setup setupIonrec spectrum spectrumPlot twoPhoton twoPhotonEmiss twoPhotonLoss upsilonDescale upsilonDescaleSplups
First, at the top of the list are the attributes that were listed by the vars function. Then come a number of methods starting with ‘__’. These are generally not used and called private methods although nothing in Python is really private. In IDL, just about everything is private. After the private methods is a list of the methods provided by the mg4 ion class object. These all start with a lower case letter to separate them from the attributes that start with an upper case letter (this is a ChiantiPy convention).
In the IPython and jupyter-qtconsole, typing
and then hitting the tab key will bring up the doc-string for the diCross method, also found in the API reference in the documentation. And then
calculates the direct ionization cross section of Mg IV for a set of energies above the ionization potential Ip. The direct ionization cross sections are then provided in the mg4.DiCross dictionary.
Experience using the CHIANTI IDL package will provide the user with a background with what ChiantiPy can do. However, the way to accomplish them are much easier but must be learned. The best way to start is with the Quick Start guide and a book about Python. Book suggestions are Learning Python by Mark Lutz and the handy Python Pocket Reference, also by Mark Lutz. The first one is alway in reach and copies of the latter is on all of my computer desks.