sunpy.instr.goes.calculate_temperature_em(goeslc, abundances='coronal', download=False, download_dir=None)[source] [edit on github]

Calculates temperature and emission measure from a GOESLightCurve.

This function calculates the isothermal temperature and corresponding volume emission measure of the solar soft X-ray emitting plasma observed by the GOES/XRS. This is done using the observed flux ratio of the short (0.5-4 angstrom) to long (1-8 angstrom) channels. The results are returned in a new LightCurve object which contains metadata and flux data of the input LightCurve object in addition to the newly found temperature and emission measure values.

  • goeslc (LightCurve) – LightCurve object containing GOES flux data which MUST be in units of W/m^2.
  • abundances ((optional) string equalling 'coronal' or 'photospheric') – States whether photospheric or coronal abundances should be assumed. Default=’coronal’
  • download ((optional) bool) – If True, the GOES temperature and emission measure data files are downloaded. It is important to do this if a new version of the files has been generated due to a new CHIANTI version being released or the launch of new GOES satellites since these files were last downloaded. Default=False
  • download_dir ((optional) string) – The directory to download the GOES temperature and emission measure data files to. Default=SunPy default download directory

lc_new (LightCurve) – Contains same metadata and data as input GOESLightCurve with the following two additional data columns: - Array of temperatures [MK] - Array of volume emission measures [cm**-3]


The temperature and volume emission measure are calculated here using the methods of White et al. (2005) who used the CHIANTI atomic physics database to model the response of the ratio of the short (0.5-4 angstrom) to long (1-8 angstrom) channels of the XRSs onboard various GOES satellites. This method assumes an isothermal plasma, the ionisation equilibria of [2], and a constant density of 10**10 cm**-3. (See [1] for justification of this last assumption.) This function is based on in SolarSoftWare written in IDL by Stephen White.

Recent fluxes released to the public are scaled to be consistent with GOES-7. In fact these recent fluxes are correct and so this correction must be removed before proceeding to use transfer functions. Email Rodney Viereck (NOAA) for more information.

Measurements of short channel flux of less than 1e-10 W/m**2 or long channel flux less than 3e-8 W/m**2 are not considered good. Ratio values corresponding to such fluxes are set to 0.003.


[1]White, S. M., Thomas, R. J., & Schwartz, R. A. 2005, Sol. Phys., 227, 231, DOI: 10.1007/s11207-005-2445-z
[2]Mazzotta, P., Mazzitelli, G., Colafrancesco, S., & Vittorio, N. 1998, A&AS, 133, 339, DOI: 10.1051/aas:1998330


>>> from sunpy.instr.goes import calculate_temperature_em
>>> import sunpy.lightcurve as lc
>>> time1 = "2014-01-01 00:00:00"
>>> time2 = "2014-01-01 00:00:08"
>>> goeslc = lc.GOESLightCurve.create(time1, time2)  # doctest: +REMOTE_DATA
>>>  # doctest: +REMOTE_DATA +FLOAT_CMP
                                    xrsa      xrsb
2014-01-01 00:00:00.421999  9.187300e-08  0.000004
2014-01-01 00:00:02.468999  9.187300e-08  0.000004
2014-01-01 00:00:04.518999  9.187300e-08  0.000004
2014-01-01 00:00:06.564999  9.298800e-08  0.000004
>>> goeslc_new = calculate_temperature_em(goeslc)  # doctest: +REMOTE_DATA
>>>  # doctest: +REMOTE_DATA +FLOAT_CMP
                                    xrsa      xrsb  temperature            em
2014-01-01 00:00:00.421999  9.187300e-08  0.000004     6.270239  6.440648e+48
2014-01-01 00:00:02.468999  9.187300e-08  0.000004     6.270239  6.440648e+48
2014-01-01 00:00:04.518999  9.187300e-08  0.000004     6.273917  6.422208e+48
2014-01-01 00:00:06.564999  9.298800e-08  0.000004     6.304001  6.350370e+48