本文整理汇总了Python中cc.tools.io.DataIO.joinPdf方法的典型用法代码示例。如果您正苦于以下问题:Python DataIO.joinPdf方法的具体用法?Python DataIO.joinPdf怎么用?Python DataIO.joinPdf使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类cc.tools.io.DataIO
的用法示例。
在下文中一共展示了DataIO.joinPdf方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: plotRatioWav
# 需要导入模块: from cc.tools.io import DataIO [as 别名]
# 或者: from cc.tools.io.DataIO import joinPdf [as 别名]
#.........这里部分代码省略.........
this_ratio_lower = self.getRatios(return_negative=1,\
this_id=this_id)
this_ratio_lower = [abs(r) for r in this_ratio_lower]
if list(this_wav_lower):
waves.append(this_wav_lower)
ratios.append(this_ratio_lower)
ratios_err.append(None)
lp.append('dg')
if inst.linefit <> None:
#-- If integrated intensities are available for the instrument, get
# the integrated intensity ratios
this_wav_int = self.getRatios(sel_type='int_ratios',\
data_type='central_wav',\
this_id=this_id)
this_ratio_int = self.getRatios(sel_type='int_ratios',\
data_type='int_ratios',\
this_id=this_id)
this_ratio_int_err = self.getRatios(sel_type='int_ratios',\
data_type='int_ratios_err',\
this_id=this_id)
if list(this_wav_int):
waves.append(this_wav_int)
ratios.append(this_ratio_int)
ratios_err.append(this_ratio_int_err)
lp.append('or')
#-- Get the ratios that are lower limits due to line blends.
# Line blends detected due to fitted FHWM/PACS FHWM > 120%
# ie model int can only be larger than or equal to used value
this_wav_lowerint = self.getRatios(sel_type='int_ratios',\
data_type='central_wav',\
this_id=this_id,\
return_negative=1)
this_ratio_lowerint = self.getRatios(sel_type='int_ratios',\
data_type='int_ratios',\
this_id=this_id,\
return_negative=1)
this_ratio_lowerint_err = self.getRatios(sel_type='int_ratios',\
data_type='int_ratios_err',\
this_id=this_id,\
return_negative=1)
this_ratio_lowerint = [abs(r) for r in this_ratio_lowerint]
if list(this_wav_lowerint):
waves.append(this_wav_lowerint)
ratios.append(this_ratio_lowerint)
ratios_err.append(this_ratio_lowerint_err)
lp.append('dm')
#- prepping input for the plot command
xmin = min([min(x) for x in waves])
xmax = max([max(x) for x in waves])
waves.extend([[0.5*xmin,1.5*xmax]]*3)
ratios.extend([[1,1],\
[1-inst.absflux_err,\
1-inst.absflux_err],\
[1+inst.absflux_err,\
1+inst.absflux_err]])
ratios_err.extend([None,None,None])
lp.extend(['-k','--k','--k'])
plot_filename = os.path.join(getattr(cc.path,self.code.lower()),\
self.path_code,'stars',\
self.star_name,\
'%s_results_'%inst.instrument+\
'ratio_wav_%s'%str(this_id))
labels = [('Mdot = %.2e Msolar/yr'%star['MDOT_GAS'],0.05,0.05),\
('Teff = %.1f K'%star['T_STAR'],0.05,0.1),\
('$\psi$ = %0.2e'%star['DUST_TO_GAS_CHANGE_ML_SP'],0.05,\
0.15),\
('A$_{H_2O}$/A$_{H_2}$ = %0.2e'%star['F_H2O'],0.05,0.2),\
('R$_(o,H_2O)$ = %i'%int(star['R_OUTER_H2O']),0.05,0.25)]
if star.getMolecule('1H1H16O') \
and star.getMolecule('1H1H16O').set_keyword_change_abundance:
labels.append(('$H_2O$ profile = %s'\
%os.path.split(star.getMolecule('1H1H16O')\
.change_fraction_filename\
.replace('_','\_'))[1],\
0.05,0.30))
plot_title = '%s: $\chi^2_\mathrm{con}$ %.4f'\
%(str(this_id).replace('_','\_'),\
self.chi2_con[this_id])
if self.chi2_inttot[this_id]:
plot_title += ', $\chi^2_\mathrm{int}$ %.4f'\
%(self.chi2_inttot[this_id])
plot_filenames.append(Plotting2.plotCols(\
filename=plot_filename,x=waves,y=ratios,yerr=ratios_err,\
yaxis=r'$F_{\nu,p,m}/F_{\nu,p,d}$',\
plot_title=plot_title,labels=labels,extension='pdf',\
xlogscale=0,ylogscale=1,line_types=lp,xmin=xmin*0.9,\
xmax=xmax*1.03,figsize=(10.*scipy.sqrt(2.), 10.),\
linewidth=2,fontsize_title=20,fontsize_label=16))
inputf_short = os.path.splitext(os.path.split(inputfilename)[1])[0]
new_filename = os.path.join(getattr(cc.path,self.code.lower()),\
self.path_code,'stars',self.star_name,\
'%s_results_'%inst.instrument+\
'ratio_wav_%s.pdf'%inputf_short)
DataIO.joinPdf(old=plot_filenames,new=new_filename)
print '** Stat plots can be found at:'
print new_filename
print '***********************************'
示例2: plotOpacities
# 需要导入模块: from cc.tools.io import DataIO [as 别名]
# 或者: from cc.tools.io.DataIO import joinPdf [as 别名]
#.........这里部分代码省略.........
Args and kwargs can be given straight to the plot command.
@keyword star_grid: The input Star() models. If default, the MCMax
input opacities are plotted.
(default: [])
@type star_grid: list(Star())
@keyword scaling: allow species abundance scaling of opacities
(default: 1)
@type scaling: bool
@keyword species: If no star_grid or model list are given, this gives
the species requested to be plotted from Dust.dat
(default: ['AMC'])
@type species: list(string)
@keyword cfg: path to the Plotting2.plotCols config file. If default,
the hard-coded default plotting options are used.
(default: '')
@type cfg: string
@keyword index: The index of the kappas in the .opacity/.particle file.
0: extinction, 1: absorption, 2: scattering
(default: 0)
@type index: int
"""
print '***********************************'
print '** Starting to plot dust opacities.'
#-- Set the filename
cfg_dict = Plotting2.readCfg(cfg)
ppars = dict()
if cfg_dict.has_key('filename'):
fn_plt = cfg_dict['filename']
del cfg_dict['filename']
elif kwargs.has_key('filename'):
fn_plt = kwargs['filename']
del kwargs['filename']
elif not star_grid:
fn_plt = os.path.join(cc.path.mopac,\
'dust_opacities_%s'%'_'.join(species))
else:
fn_plt = os.path.join(self.pplot,'opacities_species')
#-- Set some plot parameters
ppars['xaxis'] = '$\lambda$ ($\mu \mathrm{m}$)'
ppars['yaxis'] = '$\kappa_\lambda$ ($\mathrm{cm}^2\mathrm{/g}$)'
ppars['fontsize_key'] = 20
ppars['xlogscale'] = 1
ppars['ylogscale'] = 1
ppars['key_location'] = (0.05,0.05)
ppars.update(kwargs)
ppars.update(cfg_dict)
#-- Check if raw opacities or modeling results are requested
if not star_grid:
kr = KappaReader.KappaReader()
wl_list = [kr.getKappas(sp)[0] for sp in species]
q_list = [kr.getKappas(sp)[1] for sp in species]
fn_plt = Plotting2.plotCols(x=wl_list,y=q_list,filename=fn_plt,\
plot_title = 'Dust Opacities',\
keytags=species,*args,**ppars)
print '** Your plot can be found at:'
print fn_plt
else:
fns = []
for star in star_grid:
try:
wave,opacities = star.readKappas()
except IOError:
continue
opacities = [(opacities[i]+opacities[i+len(star.getDustList())])
for i,species in enumerate(star.getDustList())]
if scaling:
opacities = [opa*star['A_%s'%sp]
for opa,sp in zip(opacities,species)]
fn_mplt = '_'.join(fn_plt,star['LAST_MCMAX_MODEL'])
title = 'Dust Opacities in %s (%s)' \
%(self.star_name_plots,\
star['LAST_MCMAX_MODEL'].replace('_','\_'))
keys = ['%s with $A$ = %s and $T_{des} = %i$ K'\
%(sp,str(star['A_%s'%sp]),int(star['T_DES_%s'%sp]))
for sp in star.getDustList()]
fns.append(Plotting2.plotCols(x=wave,y=opacities,keytags=keys,\
plot_title=title,\
filename=fn_mplt,*args,**ppars))
if len(fns) != len(star_grid):
print 'At least one of the models requested does not yet ' + \
'have a MCMax model.'
print '** Your plots can be found at:'
if fns[-1][-4] == '.pdf':
fn_plt = fn_plt+'.pdf'
DataIO.joinPdf(old=fns,new=fn_plt)
print fn_plt
else:
print '\n'.join(fns)
print '***********************************'
示例3: plotAbundanceProfiles
# 需要导入模块: from cc.tools.io import DataIO [as 别名]
# 或者: from cc.tools.io.DataIO import joinPdf [as 别名]
#.........这里部分代码省略.........
star_grid = self.makeStars(models=models)
elif (not models and not star_grid) or (models and star_grid):
print '** Input is undefined or doubly defined. Aborting.'
return
pfns = []
cfg_dict = Plotting2.readCfg(cfg)
if cfg_dict.has_key('filename'):
fn_plt = cfg_dict.pop('filename')
if cfg_dict.has_key('molecules'):
molecules = cfg_dict.pop('molecules')
if cfg_dict.has_key('per_molecule'):
per_molecule = cfg_dict['per_molecule']
if cfg_dict.has_key('per_model'):
per_model = cfg_dict['per_model']
#-- Some general plot settings
extra_pars = dict()
extra_pars['ymin'] = 1e-9
extra_pars['ymax'] = 1e-3
extra_pars['ylogscale'] = 1
extra_pars['xlogscale'] = 1
extra_pars['figsize'] = (12.5,8.5)
extra_pars['xaxis'] = 'cm'
#-- Dict to keep track of all data
ddata = dict()
for istar,star in enumerate(star_grid):
if not star['LAST_CHEMISTRY_MODEL']: continue
ddata[istar] = dict()
folder = os.path.join(cc.path.cout,'models',\
star['LAST_CHEMISTRY_MODEL'])+'/'
ddata[istar]['rad'] = CodeIO.getChemistryPhysPar(folder+\
'csphyspar.out', 'RADIUS')
ddata[istar]['id'] = star['LAST_CHEMISTRY_MODEL']
if frac:
species = CodeIO.getChemistryAbundances(folder+'csfrac.out')
else:
species = CodeIO.getChemistryAbundances(folder+'csnum.out')
for molec in molecules:
ddata[istar][molec] = species[molec]
if not per_molecule:
#-- Collect all data
radii = [ddata[istar]['rad']]*len(molecules)
abuns = [ddata[istar][molec] for molec in molecules]
keytags = molecules
#ids = star['LAST_CHEMISTRY_MODEL']
ids = ddata[istar]['id']
#-- Set the yaxis tag
yaxis = '$n_\mathrm{molec}/n_{\mathrm{H}_2}$'
#-- Set filename
pfn = fn_plt if fn_plt else 'abundance_profiles'
suff = '_'.join(list(set(ids)))
pfn = self.setFnPlt(pfn,fn_suffix=suff)
pfns.append(Plotting2.plotCols(x=radii,y=abuns,cfg=cfg_dict,\
filename=pfn,keytags=keytags,\
plot_title=ids.replace('_','\_'),\
yaxis=yaxis,**extra_pars))
if per_molecule:
#-- Collect all data
#molecs = list(set([molec for istar in ddata.keys()
#for molec in ddata[istar].keys()]))
for molec in molecules:
#-- Collect data
radii = [dstar['rad']
for istar,dstar in ddata.items()]
abuns = [dstar[molec]
for istar,dstar in ddata.items()]
keytags = [dstar['id'].replace('_','\_')
for istar,dstar in ddata.items()]
#-- Set the y axis tag
#strmolec = ddata[0][molec]['key']
yaxis = '$n_\mathrm{%s}/n_{\mathrm{H}_2}$'%str(molec)
#-- Make filename
pfn = fn_plt if fn_plt else 'abundance_profiles'
pfn = self.setFnPlt(pfn,fn_suffix=molec)
pfns.append(Plotting2.plotCols(x=radii,y=abuns,yaxis=yaxis,\
filename=pfn,keytags=keytags,\
cfg=cfg_dict,**extra_pars))
if not per_molecule and pfns and pfns[0][-4:] == '.pdf':
pfn = fn_plt if fn_plt else 'abundance_profiles'
pfn = self.setFnPlt(pfn) + '.pdf'
DataIO.joinPdf(old=pfns,new=pfn)
print '** Plots can be found at:'
print pfn
print '***********************************'
else:
print '** Plots can be found at:'
print '\n'.join(pfns)
print '***********************************'
示例4: plotTempSpecies
# 需要导入模块: from cc.tools.io import DataIO [as 别名]
# 或者: from cc.tools.io.DataIO import joinPdf [as 别名]
#.........这里部分代码省略.........
law is included. Power law parameters are taken from
star_grid[0].
See Thesis p32, where power is s in
T(r) = T_eff*(2*r/R_STAR)**(-2/(4+s)).
(default: [1])
@type power: list
@keyword fn_plt: A plot filename for the tiled plot.
(default: '')
@type fn_plt: string
@keyword cfg: path to the Plotting2.plotCols config file. If default,
the hard-coded default plotting options are used.
(default: '')
@type cfg: string
"""
print '***********************************'
print '** Starting to plot dust temperature for separate species.'
if not star_grid and not models:
print 'Input is undefined. Aborting.'
return
elif not star_grid and models:
star_grid = self.makeMCMaxStars(models=models,id_type='MCMax')
raise IOError('Reading dust species temperatures from a model id'+\
' list only, not yet implemented.')
#- Requires star.dust_list and T_CONTACT to be taken from the log file.
#- It's possible, but needs some programming
cfg_dict = Plotting2.readCfg(cfg)
if cfg_dict.has_key('power'):
power = cfg_dict['power']
if cfg_dict.has_key('filename'):
fn_plt = cfg_dict['filename']
del cfg_dict['filename']
else:
fn_plt = os.path.join(self.pplot,'Td_species')
plot_filenames = []
for star in star_grid:
if not int(star['T_CONTACT']):
rads = [star.getDustRad(species=species)
for species in star.getDustList()]
temps = [star.getDustTemperature(species=species)
for species in star.getDustList()]
rads = [r[t<=star['T_DES_%s'%sp]]
for r,t,sp in zip(rads,temps,star.getDustList())]
temps = [t[t<=star['T_DES_%s'%sp]]
for t,sp in zip(temps,star.getDustList())]
keytags = list(star.getDustList())
else:
include_total = 1
print 'Thermal contact is on. All dust species share the ' + \
'same temperature profile. Vertical lines indicate ' + \
'inner radii of dust species.'
rads, temps, keytags = [], [], []
if include_total:
rad = star.getDustRad()
temp, key = star.getDustTemperature(add_key=1)
rads.append(rad[rad>star['R_INNER_DUST']\
*star.Rsun*star['R_STAR']])
temps.append(temp[rad>star['R_INNER_DUST']\
*star.Rsun*star['R_STAR']])
keytags.append(key)
#-- Add power laws if requested
for s in power:
rad = star_grid[0].getDustRad(unit='rstar')
tstar = star_grid[0]['T_STAR']
temp,key = Profiler.dustTemperaturePowerLaw(rad=rad,add_key=1,\
tstar=tstar,s=s)
rads.append(rad)
temps.append(temp)
keytags.append(key)
filename = '_'.join([fn_plt,star['LAST_MCMAX_MODEL']])
plot_filenames.append(Plotting2.plotCols(x=rads,y=temps,\
cfg=cfg_dict,filename=filename,xaxis='$r$ (cm)',\
yaxis='$T_\mathrm{d}$ (K)',keytags=keytags,\
xmax=star['R_OUTER_DUST']*star.Rsun*star['R_STAR'],\
xmin=star['R_STAR']*star.Rsun,fontsize_axis=26,\
xlogscale=1,ylogscale=1,fontsize_key=16,\
figsize=(12.5,8),transparent=0,linewidth=3,\
fontsize_ticklabels=26,\
vert_lines=[star['R_INNER_DUST']\
*star.Rsun*star['R_STAR']]))
if len(plot_filenames) != len(star_grid):
print 'At least one of the models does not yet have a MCMax model.'
if plot_filenames[0][-4:] == '.pdf':
new_filename = fn_plt + '.pdf'
DataIO.joinPdf(old=plot_filenames,new=new_filename)
print '** Your plots can be found at:'
print new_filename
print '***********************************'
else:
print '** Plots can be found at:'
print '\n'.join(plot_filenames)
print '***********************************'