本文整理汇总了Python中cc.tools.io.DataIO.checkEntryInfo方法的典型用法代码示例。如果您正苦于以下问题:Python DataIO.checkEntryInfo方法的具体用法?Python DataIO.checkEntryInfo怎么用?Python DataIO.checkEntryInfo使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类cc.tools.io.DataIO
的用法示例。
在下文中一共展示了DataIO.checkEntryInfo方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: addRadioData
# 需要导入模块: from cc.tools.io import DataIO [as 别名]
# 或者: from cc.tools.io.DataIO import checkEntryInfo [as 别名]
def addRadioData(self):
'''
Add radio data to Transition() objects in all Star() objects.
Only done if RADIO_PATH is given and if a file named radio_data.db is
present in the given folder.
If the radio_autosearch flag is on, transitions are automatically
generated based on the available data. Note that in this case, N_QUAD
from Star() is taken.
'''
if self.radio:
#-- Get the transition definitions (are in the correct format
# automatically, due to the methods in Radio.py) and make sure
# they are all unique.
radio_trans = sorted(['%s 100'%tr.replace('TRANSITION=','',1)
for tr in self.radio.keys()])
radio_trans = DataIO.checkEntryInfo(radio_trans,12,'TRANSITION')
for star in self.star_grid:
molecules = [m.molecule for m in star['GAS_LIST']]
if self.radio_autosearch:
n_quad = star['N_QUAD']
add_trans = [tr[:-1] + [n_quad]
for tr in radio_trans
if tr[0] in molecules]
if star.has_key('TRANSITION'):
star['TRANSITION'] = list(star['TRANSITION'])
star['TRANSITION'].extend(add_trans)
else:
star['TRANSITION'] = add_trans
for trans in star['GAS_LINES']:
if trans:
trstr = trans.getInputString(include_nquad=0)
if trstr in self.radio.keys():
trans.addDatafile(self.radio[trstr])
示例2: readInput
# 需要导入模块: from cc.tools.io import DataIO [as 别名]
# 或者: from cc.tools.io.DataIO import checkEntryInfo [as 别名]
def readInput(self):
'''
Read input for ComboCode and return list.
The MOLECULE, TRANSITION and R_POINTS_MASS_LOSS parameter formats are
checked for errors in this method. If erroneous, an IOError is raised.
'''
multi_keys = ['MOLECULE','TRANSITION','R_POINTS_MASS_LOSS']
input_dict = DataIO.readDict(self.inputfilename,convert_floats=1,\
convert_ints=1,multi_keys=multi_keys)
#-- keywords in multi_keys require different method
self.processed_input = dict()
self.multiplicative_grid = dict()
self.additive_grid = dict()
molecules = input_dict.pop('MOLECULE',[])
transitions = input_dict.pop('TRANSITION',[])
r_points_mass_loss = input_dict.pop('R_POINTS_MASS_LOSS',[])
for k,v in input_dict.items():
#-- Fortran input is not case sensitive. Note: use the dict
# value v, not input_dict[k] because of this transformation.
k = k.upper()
#-- Determine delimiter
try:
if v.find('&') != -1: delimiter = '&'
elif v.find(';') != -1: delimiter = ';'
elif v.find(',') != -1: delimiter = ','
elif v.find(':') != -1: delimiter = ':'
#-- * while no ; or , or : means multiple values for ONE model
# Only * star for multiplicative grid makes no sense (just
# give the value without delimiter)
elif v.find('*') != -1: delimiter = '&'
else: delimiter = ' '
except AttributeError:
#-- v is already a float, so can't use .find on it => no grids
#-- no need to check the rest, continue on with the next k/v pair
self.processed_input[k] = v
continue
#-- Expanding '*' entries: Assumes the value is first, the count
# second. Can't be made flexible, because in some cases the value
# cannot be discerned from the count (because both are low-value
# integers)
newv = delimiter.join(\
[len(value.split('*')) > 1
and delimiter.join([value.split('*')[0]]*\
int(value.split('*')[1]))
or value
for value in v.split(delimiter)])
#-- Add entries to processed_input, the multiplicative grid or the
#-- additive grid, depending on the type of delimiter.
if delimiter == ' ':
self.processed_input[k] = v
elif delimiter == ',':
newv = [float(value)
for value in newv.split(',')]
newv = Gridding.makeGrid(*newv)
self.multiplicative_grid[k] = newv
else:
try:
if delimiter == '&':
newv = tuple([float(value.rstrip())
for value in newv.split('&')])
self.processed_input[k] = newv
elif delimiter == ';':
newv = [value.rstrip() == '%' and '%' or float(value.rstrip())
for value in newv.split(';')]
self.multiplicative_grid[k] = newv
elif delimiter == ':':
newv = [value.rstrip() == '%' and '%' or float(value.rstrip())
for value in newv.split(':')]
self.additive_grid[k] = newv
except ValueError:
if delimiter == '&':
newv = tuple([value.rstrip()
for value in newv.split('&')])
self.processed_input[k] = newv
elif delimiter == ';':
newv = [value.rstrip()
for value in newv.split(';')]
self.multiplicative_grid[k] = newv
elif delimiter == ':':
newv = [value.rstrip()
for value in newv.split(':')]
self.additive_grid[k] = newv
#-- Make sure R_POINTS_MASS_LOSS, Molecule and Transition input makes
#-- sense and is correct
if molecules:
molecules = DataIO.checkEntryInfo(molecules,20,'MOLECULE')
if type(molecules) is types.ListType:
self.additive_grid['MOLECULE'] = molecules
else:
self.processed_input['MOLECULE'] = molecules
if r_points_mass_loss:
r_points_mass_loss = DataIO.checkEntryInfo(r_points_mass_loss,4,\
'R_POINTS_MASS_LOSS')
if type(r_points_mass_loss) is types.ListType:
self.additive_grid['R_POINTS_MASS_LOSS'] = r_points_mass_loss
else:
#.........这里部分代码省略.........