cape.attdb.ftypes.basefile: Common ATTDB file type attributes¶
This module provides the class BaseFile as a subclass of
dict that contains methods common to each of the other
data-like file readers and writers. It defines common attributes that
each other such data-file class will have and provides several other
common methods.
For example, it defines a __repr__() method that updates with the
name of any other classes subclassed to this one.
Finally, having this common template class provides a single point of
entry for testing if an object is based on a product of the
cape.attdb.ftypes module. The following Python sample tests if
any Python object db is an instance of any class from this data-file
collection.
isinstance(db, cape.attdb.ftypes.BaseFile)
- class cape.attdb.ftypes.basefile.BaseFile(**kw)¶
Generic class for storing data from a data-style file
This class has no initialization method, and as such it is unlikely that there will be instances of this class in use. It provides methods and structure to other classes.
This class inherits from
dictand can be used in that matter in the unlikely event that it’s useful.- Outputs:
- db:
cape.attdb.ftypes.csv.CSVFile CSV file interface
- db.cols:
list[str] List of columns read
- db.opts:
dict Options for this instance
- db.defns:
dict Definitions for each column/coefficient
- db[col]:
np.ndarray|list Numeric array or list of strings for each column
- db:
- See also:
cape.attdb.ftypes.csv.CSVFilecape.attdb.ftypes.csv.CSVSimple
- Versions:
2019-11-26
@ddalle: First version
- append_colval(col, v)¶
Save the next value to a column’s array or list
This will update counts and allocate a new chunk if necessary.
- Call:
>>> db.init_col(col)
- Inputs:
- db:
cape.attdb.ftypes.basefile.BaseFile Data file interface
- col:
str Name of column to which to save value
- v:
db.get_col_type(col) Value to save to array/list
- db:
- Effects:
- db[col]:
np.ndarray|list Column’s array with extra new entry
- db._n[col]:
int Updated length of array/list
- db[col]:
- Versions:
2019-11-25
@ddalle: First version
- init_col(col)¶
Initialize column
- Call:
>>> db.init_col(col)
- Inputs:
- db:
cape.attdb.ftypes.basefile.BaseFile Data file interface
- col:
str Name of column to initialize
- db:
- Effects:
- db[col]:
np.ndarray|list Initialized array with appropriate type
- db._n[col]:
0 Number of entries saved to db[col]
- db._nmax[col]:
None|int Number of entries allocated, if appropriate
- db[col]:
- Versions:
2019-11-23
@ddalle: First version2019-12-03
@ddalle: Addedinit_col_class()
- init_col_class(col)¶
Initialize a class-specific column
This is used for special classes and should be overwritten in specific classes if that class has its own
"Type"definitions that are not generic.- Call:
>>> db.init_col_class(col)
- Inputs:
- db:
cape.attdb.ftypes.basefile.BaseFile Data file interface
- col:
str Name of column to initialize
- db:
- Versions:
2019-12-03
@ddalle: First version
- init_cols(cols)¶
Initialize list of columns
- Call:
>>> db.init_cols(cols)
- Inputs:
- db:
cape.attdb.ftypes.basefile.BaseFile Data file interface
- col:
str Name of column to initialize
- db:
- See Also:
- Versions:
2019-11-25
@ddalle: First version
- register_attribute(col)¶
Register a data field as an attribute
For example, if col is
"mach", this will create db.mach, which will be a reference todb["mach"].- Call:
>>> db.register_attribute(col)
- Inputs:
- db:
cape.attdb.ftypes.basefile.BaseFile Data file interface
- col:
str Name of existing column
- db:
- Versions:
2019-11-10
@ddalle: First version
- translate_colnames(cols)¶
Translate column names
This method utilizes the options Translators, Prefix, and Suffix from the db.opts dictionary. The Translators are applied before Prefix and Suffix.
- Call:
>>> dbcols = db.translate_colnames(cols)
- Inputs:
- db:
cape.attdb.ftypes.basefile.BaseFile Data file interface
- cols:
list[str] List of “original” column names, e.g. from file
- db:
- Outputs:
- dbcols:
list[str] List of column names as stored in db
- dbcols:
- Versions:
2019-12-04
@ddalle: First version
- translate_colnames_reverse(dbcols)¶
Reverse translation of column names
This method utilizes the options Translators, Prefix, and Suffix from the db.opts dictionary.*Prefix* and Suffix removed before reverse translation.
- Call:
>>> cols = db.translate_colnames_reverse(dbcols)
- Inputs:
- db:
cape.attdb.ftypes.basefile.BaseFile Data file interface
- dbcols:
list[str] List of raw column names as stored in db
- db:
- Outputs:
- cols:
list[str] List of “original” column names, e.g. from file
- cols:
- Versions:
2019-12-04
@ddalle: First version2019-12-11
@jmeeroff: Fromtranslate_colnames()
- trim_colarray(col)¶
Trim extra entries from data rows
- Call:
>>> db.trim_colarray(col)
- Inputs:
- db:
cape.attdb.ftypes.basefile.BaseFile Data file interface
- col:
str Name of column to which to save value
- db:
- Effects:
- db[col]:
np.ndarray|list Trimmed to length db._n[col] if an array
- db[col]:
- Versions:
2019-11-25
@ddalle: First version
- class cape.attdb.ftypes.basefile.BaseFileDefn(_optsdict=None, _warnmode=1, **kw)¶
- class cape.attdb.ftypes.basefile.BaseFileOpts(_optsdict=None, _warnmode=1, **kw)¶
- class cape.attdb.ftypes.basefile.TextInterpreter¶
Class to contain methods for interpreting text
The class is kept separate from
BaseFilebecause not all file-type interfaces need sophisticated rules for converting text to numeric or other values.This class provides several methods for inheritance, but the intent is that instances of this class are not useful and should not be used.
- Versions:
2019-11-26
@ddalle: First version2019-12-02
@ddalle: Changed fromTextFile
- fromtext_base(txt, clsname)¶
Convert a string to appropriate numeric/string type
- Call:
>>> v = db.fromtext_num(txt, clsname)
- Inputs:
- db:
cape.attdb.ftypes.basefile.BaseFile Data file interface
- txt:
str Text to be converted to
float- clsname: {
"float64"} |"int32"|str Valid data type name
- db:
- Outputs:
- v:
clsname Text translated to requested type
- v:
- Versions:
2019-11-25
@ddalle: First version
- fromtext_complex(txt, clsname=None)¶
Convert a string to complex float
This conversion allows for the format
"2.40D+00 + 1.2I"whereI,i, andJare converted toj; andDanddare converted toEif necessary.Special processing of specific
complexsubtypes is handled if the clsname keyword is specified. Specific types are handled by valid NumPy classes.- Call:
>>> v = db.fromtext_complex(txt) >>> v = db.fromtext_complex(txt, clsname="complex128")
- Inputs:
- db:
cape.attdb.ftypes.basefile.BaseFile Data file interface
- txt:
str Text to be converted to
float- clsname: {
"complex128"} |"complex64" Specific data type
- db:
- Outputs:
- v:
float Converted value
- v:
- Versions:
2019-11-25
@ddalle: First version
- fromtext_float(txt, clsname=None)¶
Convert a string to float
This conversion allows for the format
"2.40D+00"if the built-infloat()converter fails. Python expects the exponent character to beEore, butDanddare allowed here. Other exceptions are not handled.Special processing of specific
floatsubtypes is handled if the clsname keyword is specified. Specific types are handled by valid NumPy classes.- Call:
>>> v = db.fromtext_float(txt) >>> v = db.fromtext_float(txt, clsname="float64")
- Inputs:
- db:
cape.attdb.ftypes.basefile.BaseFile Data file interface
- txt:
str Text to be converted to
float- clsname: {
"float64"} |"float32"|"float128" Specific data type
- db:
- Outputs:
- v:
float Converted value
- v:
- Versions:
2019-11-25
@ddalle: First version
- fromtext_int(txt, clsname=None)¶
Convert a string to integer
Special processing of specific
intanduintsubtypes is handled if the clsname keyword is specified. Specific types are handled by valid NumPy classes.- Call:
>>> v = db.fromtext_float(txt) >>> v = db.fromtext_float(txt, clsname="int32")
- Inputs:
- db:
cape.attdb.ftypes.basefile.BaseFile Data file interface
- txt:
str Text to be converted to
float- clsname: {
"int32"} |"int64"|"uint64" Specific data type
- db:
- Outputs:
- v:
float Converted value
- v:
- Versions:
2019-11-25
@ddalle: First version
- fromtext_val(txt, clsname)¶
Convert a string to appropriate type
- Call:
>>> v = db.fromtext_val(txt, clsname)
- Inputs:
- db:
cape.attdb.ftypes.basefile.BaseFile Data file interface
- txt:
str Text to be converted to
float- clsname: {
"float64"} |"int32"|str Valid data type name
- db:
- Outputs:
- v:
clsname Text translated to requested type
- v:
- Versions:
2019-11-25
@ddalle: First version