GEOSX XML Tools¶
The geosx_xml_tools python package adds a set of advanced features to the GEOSX xml format: units, parameters, and symbolic expressions. See Python Tools Setup for details on setup instructions, and Advanced XML Features for a detailed description of the input format. The available console scripts for this package and its API are described below.
convert_abaqus¶
Convert an abaqus format mesh file to gmsh or vtk format.
usage: preprocess_xml [-h] [-i INPUT] [-c COMPILED_NAME] [-s SCHEMA]
[-v VERBOSE] [-p PARAMETERS [PARAMETERS ...]]
Named Arguments¶
-i, --input | Input file name (multiple allowed) |
-c, --compiled-name | |
Compiled xml file name (otherwise, it is randomly genrated) Default: “” | |
-s, --schema | GEOSX schema to use for validation Default: “” |
-v, --verbose | Verbosity of outputs Default: 0 |
-p, --parameters | |
Parameter overrides (name value, multiple allowed) Default: [] |
format_xml¶
Formats an xml file.
usage: format_xml [-h] [-i INDENT] [-s STYLE] [-d DEPTH] [-a ALPHEBITIZE]
[-c CLOSE] [-n NAMESPACE]
input
Positional Arguments¶
input | Input file name |
Named Arguments¶
-i, --indent | Indent size Default: 2 |
-s, --style | Indent style Default: 0 |
-d, --depth | Block separation depth Default: 2 |
-a, --alphebitize | |
Alphebetize attributes Default: 0 | |
-c, --close | Close tag style Default: 0 |
-n, --namespace | |
Include namespace Default: 0 |
check_xml_attribute_coverage¶
Checks xml attribute coverage for files in the GEOSX repository.
usage: check_xml_attribute_coverage [-h] [-r ROOT] [-o OUTPUT]
Named Arguments¶
-r, --root | GEOSX root Default: “” |
-o, --output | Output file name Default: “attribute_test.xml” |
check_xml_redundancy¶
Checks for redundant attribute definitions in an xml file, such as those that duplicate the default value.
usage: check_xml_redundancy [-h] [-r ROOT]
Named Arguments¶
-r, --root | GEOSX root Default: “” |
API¶
Command line tools for geosx_xml_tools
-
geosx_xml_tools.main.
check_mpi_rank
() → int¶ Check the MPI rank
Returns: MPI rank Return type: int
-
geosx_xml_tools.main.
format_geosx_arguments
(compiled_name: str, unknown_args: Iterable[str]) → Iterable[str]¶ Format GEOSX arguments
Parameters: - compiled_name (str) – Name of the compiled xml file
- unknown_args (list) – List of unprocessed arguments
Returns: List of arguments to pass to GEOSX
Return type: list
-
geosx_xml_tools.main.
preprocess_parallel
() → Iterable[str]¶ MPI aware xml preprocesing
-
geosx_xml_tools.main.
preprocess_serial
() → None¶ Entry point for the geosx_xml_tools console script
-
geosx_xml_tools.main.
wait_for_file_write_rank_0
(target_file_argument: Union[int, str] = 0, max_wait_time: float = 100, max_startup_delay: float = 1) → Callable[[Callable[[...], Any]], Callable[[...], Any]]¶ Constructor for a function decorator that waits for a target file to be written on rank 0
Parameters: - target_file_argument (int, str) – Index or keyword of the filename argument in the decorated function
- max_wait_time (float) – Maximum amount of time to wait (seconds)
- max_startup_delay (float) – Maximum delay allowed for thread startup (seconds)
Returns: Wrapped function
Tools for processing xml files in GEOSX
-
geosx_xml_tools.xml_processor.
apply_regex_to_node
(node: <sphinx.ext.autodoc.importer._MockObject object at 0x7f399beb6a50>) → None¶ Apply regexes that handle parameters, units, and symbolic math to each xml attribute in the structure.
Parameters: node (lxml.etree.Element) – The target node in the xml structure.
-
geosx_xml_tools.xml_processor.
generate_random_name
(prefix: str = '', suffix: str = '.xml') → str¶ If the target name is not specified, generate a random name for the compiled xml
Parameters: - prefix (str) – The file prefix (default = ‘’).
- suffix (str) – The file suffix (default = ‘.xml’)
Returns: Random file name
Return type: str
-
geosx_xml_tools.xml_processor.
merge_included_xml_files
(root: <sphinx.ext.autodoc.importer._MockObject object at 0x7f399beb6a50>, fname: str, includeCount: int, maxInclude: int = 100) → None¶ Recursively merge included files into the current structure.
Parameters: - root (lxml.etree.Element) – The root node of the base xml structure.
- fname (str) – The name of the target xml file to merge.
- includeCount (int) – The current recursion depth.
- maxInclude (int) – The maximum number of xml files to include (default = 100)
-
geosx_xml_tools.xml_processor.
merge_xml_nodes
(existingNode: <sphinx.ext.autodoc.importer._MockObject object at 0x7f399beb6a50>, targetNode: <sphinx.ext.autodoc.importer._MockObject object at 0x7f399beb6a50>, level: int) → None¶ Merge nodes in an included file into the current structure level by level.
Parameters: - existingNode (lxml.etree.Element) – The current node in the base xml structure.
- targetNode (lxml.etree.Element) – The node to insert.
- level (int) – The xml file depth.
-
geosx_xml_tools.xml_processor.
process
(inputFiles: Iterable[str], outputFile: str = '', schema: str = '', verbose: int = 0, parameter_override: List[Tuple[str, str]] = [], keep_parameters: bool = True, keep_includes: bool = True) → str¶ Process an xml file
Parameters: - inputFiles (list) – Input file names.
- outputFile (str) – Output file name (if not specified, then generate randomly).
- schema (str) – Schema file name to validate the final xml (if not specified, then do not validate).
- verbose (int) – Verbosity level.
- parameter_override (list) – Parameter value overrides
- keep_parameters (bool) – If True, then keep parameters in the compiled file (default = True)
- keep_includes (bool) – If True, then keep includes in the compiled file (default = True)
Returns: Output file name
Return type: str
-
geosx_xml_tools.xml_processor.
validate_xml
(fname: str, schema: str, verbose: int) → None¶ Validate an xml file, and parse the warnings.
Parameters: - fname (str) – Target xml file name.
- schema (str) – Schema file name.
- verbose (int) – Verbosity level.
-
geosx_xml_tools.xml_formatter.
format_attribute
(attribute_indent: str, ka: str, attribute_value: str) → str¶ Format xml attribute strings
Parameters: - attribute_indent (str) – Attribute indent string
- ka (str) – Attribute name
- attribute_value (str) – Attribute value
Returns: Formatted attribute value
Return type: str
-
geosx_xml_tools.xml_formatter.
format_file
(input_fname: str, indent_size: int = 2, indent_style: bool = False, block_separation_max_depth: int = 2, alphebitize_attributes: bool = False, close_style: bool = False, namespace: bool = False) → None¶ Script to format xml files
Parameters: - input_fname (str) – Input file name
- indent_size (int) – Indent size
- indent_style (bool) – Style of indentation (0=fixed, 1=hanging)
- block_separation_max_depth (int) – Max depth to separate xml blocks
- alphebitize_attributes (bool) – Alphebitize attributes
- close_style (bool) – Style of close tag (0=same line, 1=new line)
- namespace (bool) – Insert this namespace in the xml description
-
geosx_xml_tools.xml_formatter.
format_xml_level
(output: TextIO, node: <sphinx.ext.autodoc.importer._MockObject object at 0x7f399bf2a490>, level: int, indent: str = ' ', block_separation_max_depth: int = 2, modify_attribute_indent: bool = False, sort_attributes: bool = False, close_tag_newline: bool = False, include_namespace: bool = False) → None¶ Iteratively format the xml file
Parameters: - output (file) – the output text file handle
- node (lxml.etree.Element) – the current xml element
- level (int) – the xml depth
- indent (str) – the xml indent style
- block_separation_max_depth (int) – the maximum depth to separate adjacent elements
- modify_attribute_indent (bool) – option to have flexible attribute indentation
- sort_attributes (bool) – option to sort attributes alphabetically
- close_tag_newline (bool) – option to place close tag on a separate line
- include_namespace (bool) – option to include the xml namespace in the output
-
geosx_xml_tools.xml_formatter.
main
() → None¶ Script to format xml files
Parameters: - input (str) – Input file name
- -i/--indent (int) – Indent size
- -s/--style (int) – Indent style
- -d/--depth (int) – Block separation depth
- -a/--alphebitize (int) – Alphebitize attributes
- -c/--close (int) – Close tag style
- -n/--namespace (int) – Include namespace
Tools for managing units in GEOSX
-
class
geosx_xml_tools.unit_manager.
UnitManager
¶ This class is used to manage unit definitions.
-
buildUnits
() → None¶ Build the unit definitions.
-
regexHandler
(match: re.Match) → str¶ Split the matched string into a scale and unit definition.
Parameters: match (re.match) – The matching string from the regex. Returns: The string with evaluated unit definitions Return type: str
-
Tools for managing regular expressions in geosx_xml_tools
-
class
geosx_xml_tools.regex_tools.
DictRegexHandler
¶ This class is used to substitute matched values with those stored in a dict.
-
geosx_xml_tools.regex_tools.
SymbolicMathRegexHandler
(match: re.Match) → str¶ Evaluate symbolic expressions that are identified using the regex_tools.patterns[‘symbolic’].
Parameters: match (re.match) – A matching string identified by the regex.
-
geosx_xml_tools.xml_redundancy_check.
check_redundancy_level
(local_schema: Dict[str, Any], node: <sphinx.ext.autodoc.importer._MockObject object at 0x7f3995a7b950>, whitelist: Iterable[str] = ['component']) → int¶ Check xml redundancy at the current level
Parameters: - local_schema (dict) – Schema definitions
- node (lxml.etree.Element) – current xml node
- whitelist (list) – always match nodes containing these attributes
Returns: Number of required attributes in the node and its children
Return type: int
-
geosx_xml_tools.xml_redundancy_check.
check_xml_redundancy
(schema: Dict[str, Any], fname: str) → None¶ Check redundancy in an xml file
Parameters: - schema (dict) – Schema definitions
- fname (str) – Name of the target file
-
geosx_xml_tools.xml_redundancy_check.
main
() → None¶ Entry point for the xml attribute usage test script
Parameters: -r/--root (str) – GEOSX root directory
-
geosx_xml_tools.xml_redundancy_check.
process_xml_files
(geosx_root: str) → None¶ Test for xml redundancy
Parameters: geosx_root (str) – GEOSX root directory
-
geosx_xml_tools.attribute_coverage.
collect_xml_attributes
(xml_types: Dict[str, Dict[str, Any]], fname: str, folder: str) → None¶ Collect xml attribute usage in a file
Parameters: - xml_types (dict) – dictionary containing attribute usage
- fname (str) – name of the target file
- folder (str) – the source folder for the current file
-
geosx_xml_tools.attribute_coverage.
collect_xml_attributes_level
(local_types: Dict[str, Dict[str, Any]], node: <sphinx.ext.autodoc.importer._MockObject object at 0x7f39a178ba10>, folder: str) → None¶ Collect xml attribute usage at the current level
Parameters: - local_types (dict) – dictionary containing attribute usage
- node (lxml.etree.Element) – current xml node
- folder (str) – the source folder for the current file
-
geosx_xml_tools.attribute_coverage.
main
() → None¶ Entry point for the xml attribute usage test script
Parameters: - -r/--root (str) – GEOSX root directory
- -o/--output (str) – output file name
-
geosx_xml_tools.attribute_coverage.
parse_schema
(fname: str) → Dict[str, Dict[str, Any]]¶ Parse the schema file into the xml attribute usage dict
Parameters: fname (str) – schema name Returns: Dictionary of attributes and children for the entire schema Return type: dict
-
geosx_xml_tools.attribute_coverage.
parse_schema_element
(root: <sphinx.ext.autodoc.importer._MockObject object at 0x7f39a178ba10>, node: <sphinx.ext.autodoc.importer._MockObject object at 0x7f39a178ba10>, xsd: str = '{http://www.w3.org/2001/XMLSchema}', recursive_types: Iterable[str] = ['PeriodicEvent', 'SoloEvent', 'HaltEvent'], folders: Iterable[str] = ['src', 'examples']) → Dict[str, Dict[str, Any]]¶ Parse the xml schema at the current level
Parameters: - root (lxml.etree.Element) – the root schema node
- node (lxml.etree.Element) – current schema node
- xsd (str) – the file namespace
- recursive_types (list) – node tags that allow recursive nesting
- folders (list) – folders to sort xml attribute usage into
Returns: Dictionary of attributes and children for the current node
Return type: dict
-
geosx_xml_tools.attribute_coverage.
process_xml_files
(geosx_root: str, output_name: str) → None¶ Test for xml attribute usage
Parameters: - geosx_root (str) – GEOSX root directory
- output_name (str) – output file name
-
geosx_xml_tools.attribute_coverage.
write_attribute_usage_xml
(xml_types: Dict[str, Dict[str, Any]], fname: str) → None¶ Write xml attribute usage file
Parameters: - xml_types (dict) – dictionary containing attribute usage by xml type
- fname (str) – output file name
-
geosx_xml_tools.attribute_coverage.
write_attribute_usage_xml_level
(local_types: Dict[str, Dict[str, Any]], node: <sphinx.ext.autodoc.importer._MockObject object at 0x7f39a178ba10>, folders: Iterable[str] = ['src', 'examples']) → None¶ Write xml attribute usage file at a given level
Parameters: - local_types (dict) – dict containing attribute usage at the current level
- node (lxml.etree.Element) – current xml node
Tools for reading/writing GEOSX ascii tables
-
geosx_xml_tools.table_generator.
read_GEOS_table
(axes_files: Iterable[str], property_files: Iterable[str]) → Tuple[Iterable[numpy.ndarray], Dict[str, numpy.ndarray]]¶ Read an GEOS-compatible ascii table.
Parameters: - axes_files (list) – List of the axes file names in order.
- property_files (list) – List of property file names
Returns: List of axis definitions, dict of property values
Return type: tuple
-
geosx_xml_tools.table_generator.
write_GEOS_table
(axes_values: Iterable[numpy.ndarray], properties: Dict[str, numpy.ndarray], axes_names: Iterable[str] = ['x', 'y', 'z', 't'], string_format: str = '%1.5e') → None¶ Write an GEOS-compatible ascii table.
Parameters: - axes_values (list) – List of arrays containing the coordinates for each axis of the table.
- properties (dict) – Dict of arrays with dimensionality/size defined by the axes_values
- axes_names (list) – Names for each axis (default = [‘x’, ‘y’, ‘z’, ‘t’])
- string_format (str) – Format for output values (default = %1.5e)
-
geosx_xml_tools.table_generator.
write_read_GEOS_table_example
() → None¶ Table read / write example.