trident.absorption_spectrum.absorption_spectrum_fit.generate_total_fit

trident.absorption_spectrum.absorption_spectrum_fit.generate_total_fit(x, fluxData, orderFits, speciesDicts, minError=0.0001, complexLim=0.995, fitLim=0.97, minLength=3, maxLength=1000, splitLim=0.99, maxNumComps=8, output_file=None)[source]

Fit an absorption-line spectrum into line profiles.

Fits the spectrum into absorption complexes and iteratively adds and optimizes voigt profiles for each complex.

Parameters

X
  1. ndarray

1d array of wavelengths

FluxData
  1. ndarray

array of flux corresponding to the wavelengths given in x. (needs to be the same size as x)

OrderFits

list

list of the names of the species in the order that they should be fit. Names should correspond to the names of the species given in speciesDicts. (ex: [‘lya’,’OVI’])

SpeciesDicts

dictionary

Dictionary of dictionaries (I’m addicted to dictionaries, I confess). Top level keys should be the names of all the species given in orderFits. The entries should be dictionaries containing all relevant parameters needed to create an absorption line of a given species (f,Gamma,lambda0) as well as max and min values for parameters to be fit

ComplexLim

float, optional

Maximum flux to start the edge of an absorption complex. Different from fitLim because it decides extent of a complex rather than whether or not a complex is accepted.

FitLim

float,optional

Maximum flux where the level of absorption will trigger identification of the region as an absorption complex. Default = .98. (ex: for a minSize=.98, a region where all the flux is between 1.0 and .99 will not be separated out to be fit as an absorbing complex, but a region that contains a point where the flux is .97 will be fit as an absorbing complex.)

MinLength

int, optional

number of cells required for a complex to be included. default is 3 cells.

MaxLength

int, optional

number of cells required for a complex to be split up. Default is 1000 cells.

SplitLim

float, optional

if attempting to split a region for being larger than maxlength the point of the split must have a flux greater than splitLim (ie: absorption greater than splitLim). Default= .99.

MaxNumComps

int, optional

maximum number of voigt profiles to fit at once. Default is 8 total components.

Output_file

string, optional

location to save the results of the fit.

Returns

AllSpeciesLines

dictionary

Dictionary of dictionaries representing the fit lines. Top level keys are the species given in orderFits and the corresponding entries are dictionaries with the keys ‘N’,’b’,’z’, and ‘group#’. Each of these corresponds to a list of the parameters for every accepted fitted line. (ie: N[0],b[0],z[0] will create a line that fits some part of the absorption spectrum). ‘group#’ is a similar list but identifies which absorbing complex each line belongs to. Lines with the same group# were fit at the same time. group#’s do not correlate between species (ie: an lya line with group number 1 and an OVI line with group number 1 were not fit together and do not necessarily correspond to the same region)

YFit
  1. ndarray

array of flux corresponding to the combination of all fitted absorption profiles. Same size as x.