IGMSurvey Class


This Class is designed to organize and analyze a survey of absorption systems (defined as AbsSystem objects).

By definition, an IGMSurvey is a unique collection of AbsSystem objects. It is specified by the number of systems and the references.


The AbsSystem Class may be instantiated in a few ways. The default sets the properties listed above:

gensurvey = GenericIGMSurvey()

More commonly, one will instantiate with one or more IGMSystem objects:

coord = SkyCoord(ra=123.1143*u.deg, dec=-12.4321*u.deg)
gensys = IGMSystem('MgII', coord, 1.244, [-300,300.]*u.km/u.s, NHI=16.)
gensys.name = 'Sys1'
coord2 = SkyCoord(ra=223.1143*u.deg, dec=42.4321*u.deg)
gensys2 = IGMSystem('MgII', coord2, 1.744, [-300,300.]*u.km/u.s, NHI=17.)
gensys2.name = 'Sys2'


Variable Type Description
nsys int Number of systems in the survey
ref str References for the survey

Sub Classes


Subclass for an LLS survey. There are many published surveys that can be read in. Several require access to the Internet which will then generate a file on your drive for future use. There is also a method to handle the .dat and .lst files used by JXP. See Examples for LLSSurvey (v1.5) for more.

Here is a Table describing the various samples that may be accessed.

Survey Call Reference(s) Description
SDSS LLSSurvey.load_SDSS_DR7() Prochaska+10 tau>2 survey
z2_HST LLSSurvey.load_HST_ACS() LLSSurvey.load_HST_WFC3() Omeara+11 Omeara+11 tau>2 with HST/ACS tau>1 with HST/WFC3
z3_MagE LLSSurvey.load_mage_z3() Fumagalli+13 tau>2 with Magellan/MagE
HD-LLS LLSSurvey.load_HDLLS() Prochaska+15 Fumagalli+16 Ionic column densities and metallicity PDF
Literature lls_literature.load_lls_lit() See Fumagalli+16 Ionic column densities

Below are additional options for a few of these.


The standard call loads the ionic column densities and metallicity PDFs. One call access the spectra with:

hdlls = LLSSurvey.load_HDLLS(grab_spectra=True)

This will grab 154Mb of data from the internet, and place them within pyigm/data/LLS/HD-LLS.


Subclass for DLASurvey. Presently handles the .dat and .lst files used by JXP. See DLASurvey_examples for more.

Here is a Table describing the various DLA surveys that may be loaded and manipulated.

Survey Call Reference(s) Description
HST16 DLASurvey.load_HST16() Neeleman+16 Blind survey of HST UV spectra
H100 DLASurvey.load_H100() Neeleman+13 100 unbiased HIRES spectra
SDSS_DR5 DLASurvey.load_SDSS_DR5() PW09 DR5
P03 DLASurvey.load_P03() P03 Compilation by Peroux et al.
G09 DLASurvey.load_G09() G09 Compilation by Guimaraes et al.
GGG DLASurvey.load_GGG() GGG Giant Gemini GMOS survey
XQ100 DLASurvey.load_XQ100() XQ100 Survey of XQ-100 spectra

See DLASurvey_examples for usage example.




Provide the sightlines Table is filled and has keys Z_START and Z_END, this method will generate a selection function \(g(z)\) curve:

z3mage = LLSSurvey.load_mage_z3()
zeval, gz = z3mage.calculate_gz()
sdss = DLASurvey.load_SDSS_DR5()
zeval, gz = sdss.calculate_gz()


Calculate the NHI frequency distribituion in bins of NHI and z. e.g.,

fN, fN_lo, fN_hi = sdss_stat.calculate_fn([20.3, 20.5, 21., 21.5, 22.], [2, 2.5], log=True)

Setting log=True returns log10 values for f(N) and its error.


Calculate the incidence per unit dX in binned redshift intervals. Default is over all NHI values. Here is an example:

lX, lX_lo, lX_hi = sdss_stat.calculate_lox([2., 2.5, 3])

This calculates lX and its error in the intervals z=[2,2.5] and z=[2.5,3.].


Similar to the last two methods but now for the HI mass density. Here is an example:

zbins = [2., 2.5, 3.]
NHImnx = (20.3, 23.)
rho, rho_lo, rho_hi = sdss_stat.calculate_rhoHI(zbins, NHImnx)

rho will have units of Solar mass per Mpc^3.