beatlas: module of BeAtlas tools
PyHdust beatlas module: BeAtlas specific variables and functions.
Module contains: - BAstar class - BAmod class
- co-author:
Rodrigo Vieira
- license:
GNU GPL v3.0 https://github.com/danmoser/pyhdust/blob/master/LICENSE
- class pyhdust.beatlas.BAmod(f0)[source]
BeAtlas disk model filename structure.
It could be f0.split(‘_’), but the f0.find(‘_X’) way was chosen.
See that the parameters sequence is not important for this reading (this may not be the case of other routines). And, by definition, the source star has a specific name added at the end of disk model name, starting with ‘Be_’.
- class pyhdust.beatlas.BAmodnew(fname)[source]
fullsed_mod01_PL_n3.3_Rd10.0_n01.00e+14_h60.0_Be_M13.20_ob1.32.sed2
Do not include “mod” in _params!
- class pyhdust.beatlas.BAstar(f0)[source]
BeAtlas source star filename structure.
The filename must follow this structure (the sequence in filename is not important): - keys: [‘M’, ‘ob’, ‘H’, ‘Z’, ‘b’] - last-key (no identifier): ‘Ell’
See BAmod, phc.keys_values.
- pyhdust.beatlas.check_xdr_limits(xdrminfo, todel=[])[source]
Check if the XDR file contains models for all parameters within their maximum interval.
todel: list for dimensions to be skipped in the test. -1 is usually the cossine of the observer’s inclination angle. If dim=-1 has values from 0 to 1, it is automatically skipped.
- pyhdust.beatlas.createBAsed(fsedlist, xdrpath, lbdarr, param=True, savetxt=False, ignorelum=False, pol=False, saveextra=None)[source]
Create the BeAtlas SED XDR release.
WARNING: The file names must be in this format: mod01_PLn3.5_sig0.00_h072_Rd000.0_Be_M14.60_ob1.45_H0.77_Z0.014_bE_Ell
The file structure:
-n_quantities, n_lbd, n_models, -n_qt_vals1, n_qt_vals2, .. n_qt_valsn -quantities values = M, ob(W), Z, H, sig, Rd, h, n, cos(i). -(Unique) lbd array -Loop: model values -Loop: model SED
Definitions:
photospheric models: sig0 = 0.00
Parametric disk model default (param == True)
VDD-ST models: n excluded (alpha and R0 fixed. Confirm?)
The flux will be given in ergs/s/um2/um. If ignorelum==True, the usual F_lbda/F_bol unit will be given.
Since the grid is not symmetric, there is no index to jump directly to the desired model. So the suggestion is to use the index matrix, or read the file line by line until find the model (if exists).
- Example:
>>> def genxdr(xdrname='PL.xdr', param=True, pol=False): >>> fs2l = glob('fullsed/*.sed2') >>> print('# Using {0} as reference!'.format(fs2l[0])) >>> lbdarr = hdt.readfullsed2(fs2l[0]) >>> lbdarr = lbdarr[0, :, 2] >>> nm, listpar = bat.fsedList(fs2l) >>> bat.createBAsed(fs2l, xdrname, lbdarr, param=param, savetxt=False, >>> pol=pol, saveextra=xdrname.replace('xdr', 'txt')) >>> return >>> >>> genxdr(xdrname='Yudin_PL.xdr')
- pyhdust.beatlas.createXDRmap(maplist, xdrpath, refclass, lbdlim=None, npix=128)[source]
Is this possible?
lbdlim
: discard images that are out of this limits (None
keeps all; units of microns).Criteria: - all the images are converted the same size in pixels (
npix
). - only images with zoom = renv are used (checked by *.log file) - the pixel values are converted to flux units (erg/s/Ang) - the pixel scale is converted to length unit (at d = 10 pc)Example: maspp = maspp * 10/5 # transform the pixel scale for d = 5 pc
- pyhdust.beatlas.createXDRsed(fsedlist, xdrpath, refclass, lbdarr, ignorelum=False, pol=False)[source]
Create the generic SED XDR release.
nob = (individual) number of observers listpar = parameters of each model nq = number of parameters nmod = number of models
output units: 10**-4 erg/s/Ang/cm2
- pyhdust.beatlas.create_custom_sed(xdrpath, listpar, lbdarr, minfo, models)[source]
Create the generic SED XDR release.
nob = (individual) number of observers listpar = parameters of each model nq = number of parameters nmod = number of models
output units: 10**-4 erg/s/Ang/cm2
- pyhdust.beatlas.densBAnorm(r01, M, issig0=True)[source]
Converts density in normalized range [0-1], and vice-versa for the BeAtlas.
If
issig0
, treatsr01
as \(\Sigma_0\); otherwise, use it as [0-1] value.
- pyhdust.beatlas.fsedList(fsedlist, param=True)[source]
Return the total of models and the parameters values in the fullsed list.
The len of fsedlist is 9 (param=True) for the parametric case and 8 to the VDD-ST one.
The sequence is: M, ob(W), Z, H, sig, Rd, h, n, cos(i).
It is assumed that all models have the same observers configuration.
- pyhdust.beatlas.griddataBA(minfo, models, params, isig, silent=True)[source]
Interpolates model grid
Usage: model_interp = griddata(minfo, models, params, isig, silent=True)
where minfo = grid of parameters models = grid of models params = parameters, isig = (normalized) sigma0 index
Ex: # read grid xdrpath = ‘beatlas/disk_flx.xdr’ listpar, lbdarr, minfo, models = bat.readBAsed(xdrpath, quiet=True) # find isig dims = [‘M’, ‘ob’, ‘sig0’, ‘nr’, ‘cosi’] dims = dict(zip(dims, range(len(dims)))) isig = dims[“sig0”] # interpolation params = [12.4, 1.44, 0.9, 4.4, 0.1] model_interp = np.exp(griddataBA(minfo, np.log(models), params, isig))
If photospheric models are interpolated, let isig=None. For spectra, it is recommended to enter the log of the grid of spectra as input, as shown in the example above.
- pyhdust.beatlas.hfrac2tms(Hfrac, inverse=False)[source]
Converts nuclear hydrogen fraction into fractional time in the main-sequence, (and vice-versa) based on the polynomial fit of the average of this relation for all B spectral types and rotational velocities.
Usage: t = hfrac2tms(Hfrac, inverse=False) or Hfrac = hfrac2tms(t, inverse=True)
- pyhdust.beatlas.interpolBA(params, ctrlarr, lparams, minfo, models, param=True)[source]
Interpola os modelos para os parametros params
-params = from emcee minimization-ctrlarr = the fixed value of M, ob(W), Z, H, sig, Rd, h, n, cos(i).If it is not fixed, use np.NaN.-Parametric disk model default (param == True).This function always returns a valid result (i.e., extrapolations from the nearest values are always on).
If it is a ‘Non-squared grid’ (asymmetric), it will return a zero array if a given model is not found.
- pyhdust.beatlas.parnorm(dvals, vmax, vmin_non0, issig0=True, s_non0=0)[source]
Converts density in normalized range [0-1], and vice-versa.
If
issig0
, treatsr01
as \(\Sigma_0\); otherwise, use it as [0-1] value.s_non0
forcesvmin_non0
to be lower limit of the density scale interval. Example:s_non0 = 0.25
forces the density scale to be between [0.25-1.00].
- pyhdust.beatlas.readBAsed(xdrpath, quiet=False)[source]
Read only the BeAtlas SED release.
Definitions:-photospheric models: sig0 (and other quantities) == 0.00-Parametric disk model default (param == True)-VDD-ST models: n excluded (alpha and R0 fixed. Confirm?)-The models flux are given in ergs/s/cm2/um. If ignorelum==True in theXDR creation, F_lbda/F_bol unit will be given.INPUT: xdrpath
OUTPUT: listpar, lbdarr, minfo, models(list of mods parameters, lambda array (um), mods index, mods flux)
- pyhdust.beatlas.readXDRsed(xdrpath, quiet=False)[source]
Read a XDR with a set of models.
The models’ parameters (as well as their units) are defined at XDR creation.
INPUT: xdrpath
OUTPUT: ninfo, intervals, lbdarr, minfo, models
(xdr dimensions, params limits, lambda array (um), mods params, mods flux)
- pyhdust.beatlas.rmMods(modn, Ms, clusters=['job'])[source]
Remove the *.inp models of models modn according to the list structure below.
WARNING: This funcion was not updated to M=20.0Msun…
Masses list ans sig0 POSITION do be excludedMs = [[‘14.6’, [0]],[‘12.5’, [0,-1]],[‘10.8’, [0,-1]],[‘09.6’, [0,-2,-1]],[‘08.6’, [0,-2,-1]],[‘07.7’, [0,-2,-1]],[‘06.4’, [0,-3,-2,-1]],[‘05.5’, [0,-3,-2,-1]],[‘04.8’, [-4,-3,-2,-1]],[‘04.2’, [-4,-3,-2,-1]],[‘03.8’, [-4,-3,-2,-1]],[‘03.4’, [-4,-3,-2,-1]],]INPUT: string, structured list
OUTPUT: (files removed)