augur.utils moduleο
- exception augur.utils.InvalidTreeErrorο
Bases:
ExceptionRepresents an error loading a phylogenetic tree from a filename.
- augur.utils.annotate_parents_for_tree(tree)ο
Annotate each node in the given tree with its parent.
Examples
>>> import io >>> tree = Bio.Phylo.read(io.StringIO("(A, (B, C))"), "newick") >>> not any([hasattr(node, "parent") for node in tree.find_clades()]) True >>> tree = annotate_parents_for_tree(tree) >>> tree.root.parent is None True >>> all([hasattr(node, "parent") for node in tree.find_clades()]) True
- augur.utils.augur(shell=True)ο
Locate how to re-invoke ourselves (_this_ specific Augur).
This function returns the appropriate command to re-invoke the current Augur installation, useful for subprocess calls that need to launch Augur commands. The format of the returned command depends on the shell parameter, which mirrors the identically named parameter to subprocess.run.
- augur.utils.available_cpu_cores(fallback=1)ο
Returns the number (an int) of CPU cores available to this process, if determinable, otherwise the number of CPU cores available to the computer, if determinable, otherwise the fallback number (which defaults to 1).
- Return type:
- augur.utils.first_line(text)ο
Returns the first line of the given text, ignoring leading and trailing whitespace.
- augur.utils.genome_features_to_auspice_annotation(features, ref_seq_name=None, assert_nuc=False)ο
- Parameters:
- Returns:
annotations β See schema-annotations.json for the schema this conforms to
- Return type:
- augur.utils.get_augur_version()ο
Returns a string of the current augur version.
- augur.utils.get_json_name(args, default=None)ο
- augur.utils.get_parent_name_by_child_name_for_tree(tree)ο
Return dictionary mapping child node names to parent node names
- augur.utils.json_to_tree(json_dict, root=True, parent_cumulative_branch_length=None)ο
Returns a Bio.Phylo tree corresponding to the given JSON dictionary exported by tree_to_json.
Assigns links back to parent nodes for the root of the tree.
Examples
Test opening a JSON from augur export v1.
>>> import json >>> json_fh = open("tests/data/json_tree_to_nexus/flu_h3n2_ha_3y_tree.json", "r") >>> json_dict = json.load(json_fh) >>> tree = json_to_tree(json_dict) >>> tree.name 'NODE_0002020' >>> len(tree.clades) 2 >>> tree.clades[0].name 'NODE_0001489' >>> hasattr(tree, "attr") True >>> "dTiter" in tree.attr True >>> tree.clades[0].parent.name 'NODE_0002020' >>> tree.clades[0].branch_length > 0 True
Test opening a JSON from augur export v2.
>>> json_fh = open("tests/data/zika.json", "r") >>> json_dict = json.load(json_fh) >>> tree = json_to_tree(json_dict) >>> hasattr(tree, "name") True >>> len(tree.clades) > 0 True >>> tree.clades[0].branch_length > 0 True
Branch lengths should be the length of the branch to each node and not the length from the root. The cumulative branch length from the root gets its own attribute.
>>> tip = [tip for tip in tree.find_clades(terminal=True) if tip.name == "USA/2016/FLWB042"][0] >>> round(tip.cumulative_branch_length, 6) 0.004747 >>> round(tip.branch_length, 6) 0.000186
- augur.utils.load_features(*args, **kwargs)ο
- augur.utils.load_mask_sites(mask_file)ο
Load masking sites from either a BED file or a masking file.
- augur.utils.nthreads_value(value)ο
Argument value validation and casting function for βnthreads.
- augur.utils.parse_genes_argument(input)ο
- augur.utils.read_bed_file(bed_file)ο
Read a BED file and return a list of excluded sites.
This function attempts to parse the given file as a BED file, based on the specification at <https://genome.ucsc.edu/FAQ/FAQformat.html#format1>, using the following rules:
BED files may start with one or more optional header lines
Header lines must begin with one of βbrowserβ, βchromβ, βtrackβ β this comparison is done case-insensitively. Note that βchromβ is not recognized by the above standard or bedtools but is included because it has historically been supported and is frequently used in the wild
Any line starting with β#β is treated as a comment line, and skipped completely
Once data (non-header) lines appear in the file, header lines are no longer allowed
Data lines have a number of fields, but we are only interested in the first three, which are mandatory in BED files: chrom, chromStart, and chromEnd. All fields beyond these first three are ignored
The values of the chromStart and chromEnd field must be integer strings
The value in the chrom field must match for all data lines β this is an augur-specific requirement, not something that arises out of the format spec
Any failure to conform to the above rules will raise an error.
- augur.utils.read_colors(overrides=None, use_defaults=True)ο
- augur.utils.read_entries(*files, comment_char='#')ο
Reads entries (one per line) from one or more plain text files.
Entries can be commented with full-line or inline comments. For example, the following is a valid file:
# this is a comment at the top of the file strain1 # exclude strain1 because it isn't sequenced properly strain2 # this is an empty line that will be ignored.
- augur.utils.read_lat_longs(overrides=None, use_defaults=True)ο
- augur.utils.read_mask_file(mask_file)ο
Read a masking file and return a list of excluded sites.
Masking files have a single masking site per line, either alone or as the second column of a tab-separated file. These sites are assumed to be one-indexed, NOT zero-indexed. Incorrectly formatted lines will be skipped.
- augur.utils.read_node_data(fnames, tree=None, validation_mode=ValidationMode.ERROR)ο
- augur.utils.read_tree(fname, min_terminals=3)ο
Safely load a tree from a given filename or raise an error if the file does not contain a valid tree.
- Parameters:
- Raises:
InvalidTreeError β If the given file exists but does not seem to contain a valid tree format.
- Returns:
BioPython tree instance
- Return type:
- augur.utils.write_augur_json(data, file)ο
Write
dataas JSON to the givenfilewith Augur version info.This is a simplified wrapper around
write_json()that adds the Augur version as a top-level key βgenerated_byβ.Unlike
write_json(), output is not minified by default to preserve backwards-compatible behavior for commands that produce node data JSONs. Minification can be forced via theAUGUR_MINIFY_JSONenvironment variable.
- augur.utils.write_json(*args, **kwargs)ο