[med-svn] [Git][med-team/augur][master] 5 commits: New upstream version 18.0.0
Andreas Tille (@tille)
gitlab at salsa.debian.org
Tue Oct 11 20:23:48 BST 2022
Andreas Tille pushed to branch master at Debian Med / augur
Commits:
80d6fd48 by Andreas Tille at 2022-10-11T20:45:37+02:00
New upstream version 18.0.0
- - - - -
c0e2b3a9 by Andreas Tille at 2022-10-11T20:45:37+02:00
routine-update: New upstream version
- - - - -
213f7d7d by Andreas Tille at 2022-10-11T20:46:22+02:00
Update upstream source from tag 'upstream/18.0.0'
Update to upstream version '18.0.0'
with Debian dir 8b33f227ff8565034a667099ac2f8a10d556eaa7
- - - - -
62b396c5 by Andreas Tille at 2022-10-11T21:21:02+02:00
Versioned (Build-)Depends: python3-treetime (>= 0.9.4)
- - - - -
2cd12759 by Andreas Tille at 2022-10-11T21:22:38+02:00
Upload to unstable
- - - - -
28 changed files:
- CHANGES.md
- README.md
- augur/__init__.py
- augur/__version__.py
- augur/argparse_.py
- augur/export_v1.py
- augur/export_v2.py
- augur/filter.py
- augur/refine.py
- augur/tree.py
- debian/changelog
- debian/control
- docs/api/augur.import.rst
- − docs/api/augur.import_beast.rst
- docs/api/augur.rst
- − docs/api/augur.util_support.metadata_file.rst
- docs/api/augur.util_support.rst
- − docs/api/augur.util_support.shell_command_runner.rst
- docs/contribute/DEV_DOCS.md
- docs/index.rst
- docs/installation/installation.md
- docs/usage/cli/cli.rst
- + docs/usage/cli/measurements.rst
- setup.py
- tests/builds/add_to_alignment/Snakefile
- tests/builds/runner.sh
- tests/functional/export_v2.t
- tests/functional/tree.t
Changes:
=====================================
CHANGES.md
=====================================
@@ -3,11 +3,35 @@
## __NEXT__
+## 18.0.0 (21 September 2022)
+
+### Major Changes
+
+* export: The `--node-data` option may now be given multiple times to provide additional `.json` files. Previously, subsequent occurrences of the option overrode prior occurrences. This is a **breaking change**, although we expect few usages to be impacted. Each occurrence of the option may still specify multiple files at a time. [#1010][] (@tsibley)
+
+### Bug Fixes
+
+
+* refine: 17.1.0 updated TreeTime to version 0.9.2 and introduced the `refine` flag `--use-fft`. This makes previously costly marginal date inference cheaper. This update adjusts when `refine` runs marginal date inference during its iterative optimization. Without the `use-fft` flag, it will now behave as it did before 17.1.0 (marginal inference only during final iterations). With the `--use-fft` flag, marginal date inference will be used at every step during the iteration if refine is run with `--date-inference marginal` [#1034][]. (@rneher)
+* tree: When using IQtree as tre builder, `--nthreads` now sets the maximum number of threads (IQtree argument `-ntmax`). The actual number of threads to use can be specified by the user through the tree-builder-arg `-nt` which defaults to `-nt AUTO`, causing IQtree to automatically chose the best number of threads to use [#1042][] (@corneliusroemer)
+* Make cvxopt as a required dependency, since it is required for titer models to work [#1035][]. (@victorlin)
+* filter: Fix compatibility with Pandas 1.5.0 which could cause an unexpected `AttributeError` with an invalid `--query` given to `augur filter`. [#1050][] (@tsibley)
+* refine: Add `--verbosity` argument that is passed down to TreeTime to facilitate monitoring and debugging. [#1033][] (@anna-parker)
+* Improve handling of errors from TreeTime. [#1033][] (@anna-parker)
+
+[#1010]: https://github.com/nextstrain/augur/pull/1010
+[#1033]: https://github.com/nextstrain/augur/pull/1033
+[#1034]: https://github.com/nextstrain/augur/pull/1034
+[#1035]: https://github.com/nextstrain/augur/pull/1035
+[#1042]: https://github.com/nextstrain/augur/pull/1042
+[#1050]: https://github.com/nextstrain/augur/pull/1050
+
+
## 17.1.0 (19 August 2022)
### Features
-* refine: Upgrade TreeTime from 0.8.6 to >= 0.9.2 which enables a speedup of timetree inference in marginal mode due to the use of Fast Fourier Transforms [#1018][]. (@rneher and @anna-parker)
+* refine: Upgrade TreeTime from 0.8.6 to >= 0.9.2 which enables a speedup of timetree inference in marginal mode due to the use of Fast Fourier Transforms [#1018][]. (@rneher and @anna-parker). Use the `refine` flag `--use-fft` to use this feature.
### Bug Fixes
=====================================
README.md
=====================================
@@ -29,11 +29,10 @@ Try out an analysis of real virus data by [completing the Zika tutorial](https:/
## Documentation
-* [Overview of how Augur fits together with other Nextstrain tools](https://nextstrain.org/docs/getting-started/introduction#open-source-tools-for-the-community)
-* [Overview of Augur usage](https://nextstrain.org/docs/bioinformatics/introduction-to-augur)
+* [Overview of how Augur fits together with other Nextstrain tools](https://docs.nextstrain.org/en/latest/learn/parts.html)
+* [Overview of Augur usage](https://docs.nextstrain.org/projects/augur/en/stable/usage/usage.html)
* [Technical documentation for Augur](https://docs.nextstrain.org/projects/augur/en/stable/installation/installation.html)
* [Contributor guide](https://github.com/nextstrain/.github/blob/master/CONTRIBUTING.md)
-* [Project board with available issues](https://github.com/orgs/nextstrain/projects/6)
* [Developer docs for Augur](./docs/contribute/DEV_DOCS.md)
* [Changelog](./CHANGES.md)
=====================================
augur/__init__.py
=====================================
@@ -9,6 +9,7 @@ import importlib
import traceback
from textwrap import dedent
from types import SimpleNamespace
+from treetime import TreeTimeError, TreeTimeUnknownError
from .errors import AugurError
from .io import print_err
@@ -72,6 +73,20 @@ def run(argv):
except FileNotFoundError as e:
print_err(f"ERROR: {e.strerror}: '{e.filename}'")
sys.exit(2)
+ except TreeTimeUnknownError as e:
+ print_err(dedent("""\
+ ERROR from TreeTime: An error occurred in TreeTime (see above). This may be due to an issue with TreeTime or Augur.
+ Please report you are calling TreeTime via Augur.
+ """))
+ sys.exit(2)
+ except TreeTimeError as e:
+ print_err(f"ERROR: {e}")
+ print_err("\n")
+ print_err(dedent("""\
+ ERROR from TreeTime: This error is most likely due to a problem with your input data.
+ Please check your input data and try again. If you continue to have problems, please open a new issue including
+ the original command and the error above: <https://github.com/nextstrain/augur/issues/new/choose>
+ """))
except Exception:
traceback.print_exc(file=sys.stderr)
print_err("\n")
=====================================
augur/__version__.py
=====================================
@@ -1,4 +1,4 @@
-__version__ = '17.1.0'
+__version__ = '18.0.0'
def is_augur_version_compatible(version):
=====================================
augur/argparse_.py
=====================================
@@ -57,3 +57,22 @@ class HideAsFalseAction(Action):
"""
def __call__(self, parser, namespace, values, option_string=None):
setattr(namespace, self.dest, option_string[2:6] != 'hide')
+
+
+# XXX TODO: Drop this when we drop support for 3.7 and use builtin "extend"
+# action.
+class ExtendAction(Action):
+ """
+ Loosely backported version of builtin "extend" action
+ (argparse._ExtendAction) in CPython v3.10.5-172-gf118661a18. Some of the
+ ceremony we don't need has been ditched.
+
+ >>> import argparse
+ >>> p = argparse.ArgumentParser()
+ >>> a = p.add_argument("-x", action=ExtendAction, nargs="+")
+ >>> p.parse_args(["-x", "a", "b", "-x", "c", "-x", "d"]).x
+ ['a', 'b', 'c', 'd']
+ """
+ def __call__(self, parser, namespace, values, option_string=None):
+ current = getattr(namespace, self.dest, None) or []
+ setattr(namespace, self.dest, [*current, *values])
=====================================
augur/export_v1.py
=====================================
@@ -9,6 +9,7 @@ import numpy as np
from Bio import Phylo
from argparse import SUPPRESS
from collections import defaultdict
+from .argparse_ import ExtendAction
from .io import read_metadata
from .utils import read_node_data, write_json, read_config, read_lat_longs, read_colors
@@ -311,7 +312,7 @@ def add_core_args(parser):
core = parser.add_argument_group("REQUIRED")
core.add_argument('--tree','-t', required=True, help="tree to perform trait reconstruction on")
core.add_argument('--metadata', required=True, metavar="FILE", help="sequence metadata, as CSV or TSV")
- core.add_argument('--node-data', required=True, nargs='+', help="JSON files with meta data for each node")
+ core.add_argument('--node-data', required=True, nargs='+', action=ExtendAction, help="JSON files with meta data for each node")
core.add_argument('--output-tree', help="JSON file name that is passed on to auspice (e.g., zika_tree.json).")
core.add_argument('--output-meta', help="JSON file name that is passed on to auspice (e.g., zika_meta.json).")
core.add_argument('--auspice-config', help="file with auspice configuration")
=====================================
augur/export_v2.py
=====================================
@@ -10,6 +10,7 @@ import numbers
import re
from Bio import Phylo
+from .argparse_ import ExtendAction
from .io import read_metadata
from .utils import read_node_data, write_json, read_config, read_lat_longs, read_colors
from .validate import export_v2 as validate_v2, auspice_config_v2 as validate_auspice_config_v2, ValidateError
@@ -826,7 +827,7 @@ def register_parser(parent_subparsers):
title="REQUIRED"
)
required.add_argument('--tree','-t', metavar="newick", required=True, help="Phylogenetic tree, usually output from `augur refine`")
- required.add_argument('--node-data', metavar="JSON", required=True, nargs='+', help="JSON files containing metadata for nodes in the tree")
+ required.add_argument('--node-data', metavar="JSON", required=True, nargs='+', action=ExtendAction, help="JSON files containing metadata for nodes in the tree")
required.add_argument('--output', metavar="JSON", required=True, help="Ouput file (typically for visualisation in auspice)")
config = parser.add_argument_group(
=====================================
augur/filter.py
=====================================
@@ -863,7 +863,12 @@ def apply_filters(metadata, exclude_by, include_by):
)
except Exception as e:
if filter_function.__name__ == 'filter_by_query':
- if isinstance(e, pd.core.computation.ops.UndefinedVariableError):
+ try:
+ # pandas ≥1.5.0 only
+ UndefinedVariableError = pd.errors.UndefinedVariableError
+ except AttributeError:
+ UndefinedVariableError = pd.core.computation.ops.UndefinedVariableError
+ if isinstance(e, UndefinedVariableError):
raise AugurError(f"Query contains a column that does not exist in metadata.") from e
raise AugurError(f"Error when applying query. Ensure the syntax is valid per <https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#indexing-query>.") from e
else:
=====================================
augur/refine.py
=====================================
@@ -8,7 +8,7 @@ from .dates import get_numerical_dates
from .io import read_metadata
from .utils import read_tree, write_json, InvalidTreeError
from .errors import AugurError
-from treetime.vcf_utils import read_vcf, write_vcf
+from treetime.vcf_utils import read_vcf
from treetime.seq_utils import profile_maps
def refine(tree=None, aln=None, ref=None, dates=None, branch_length_inference='auto',
@@ -55,9 +55,9 @@ def refine(tree=None, aln=None, ref=None, dates=None, branch_length_inference='a
if confidence and use_marginal:
# estimate confidence intervals via marginal ML and assign
# marginal ML times to nodes
- marginal = 'assign'
+ marginal = 'always' if use_fft else 'assign'
else:
- marginal = confidence
+ marginal = 'only-final' if confidence else False
# uncertainty of the the clock rate is relevant if confidence intervals are estimated
if confidence and clock_std:
@@ -70,7 +70,7 @@ def refine(tree=None, aln=None, ref=None, dates=None, branch_length_inference='a
tt.run(infer_gtr=infer_gtr, root=reroot, Tc=Tc, time_marginal=marginal,
branch_length_mode=branch_length_inference, resolve_polytomies=resolve_polytomies,
max_iter=max_iter, fixed_pi=fixed_pi, fixed_clock_rate=clock_rate,
- vary_rate=vary_rate, use_covariation=covariance, **kwarks)
+ vary_rate=vary_rate, use_covariation=covariance, raise_uncaught_exceptions=True, **kwarks)
if confidence:
for n in tt.tree.find_clades():
@@ -130,6 +130,7 @@ def register_parser(parent_subparsers):
parser.add_argument('--divergence-units', type=str, choices=['mutations', 'mutations-per-site'],
default='mutations-per-site', help='Units in which sequence divergences is exported.')
parser.add_argument('--seed', type=int, help='seed for random number generation')
+ parser.add_argument('--verbosity', type=int, default=1, help='treetime verbosity, between 0 and 6 (higher values more output)')
parser.set_defaults(covariance=True)
return parser
@@ -217,18 +218,17 @@ def run(args):
time_inference_mode = 'always' if args.date_inference=='marginal' else 'only-final'
else:
time_inference_mode = 'always' if args.date_inference=='marginal' else 'never'
- try:
- tt = refine(tree=T, aln=aln, ref=ref, dates=dates, confidence=args.date_confidence,
- reroot=args.root, # or 'best', # We now have a default in param spec - this just adds confusion.
- Tc=0.01 if args.coalescent is None else args.coalescent, #use 0.01 as default coalescent time scale
- use_marginal = time_inference_mode, use_fft=args.use_fft,
- branch_length_inference = args.branch_length_inference or 'auto',
- precision = 'auto' if args.precision is None else args.precision,
- clock_rate=args.clock_rate, clock_std=args.clock_std_dev,
- clock_filter_iqd=args.clock_filter_iqd,
- covariance=args.covariance, resolve_polytomies=(not args.keep_polytomies))
- except BaseException as err:
- raise AugurError(f"Was unable to refine time trees:\n\n{err}")
+
+ tt = refine(tree=T, aln=aln, ref=ref, dates=dates, confidence=args.date_confidence,
+ reroot=args.root, # or 'best', # We now have a default in param spec - this just adds confusion.
+ Tc=0.01 if args.coalescent is None else args.coalescent, #use 0.01 as default coalescent time scale
+ use_marginal = time_inference_mode, use_fft=args.use_fft,
+ branch_length_inference = args.branch_length_inference or 'auto',
+ precision = 'auto' if args.precision is None else args.precision,
+ clock_rate=args.clock_rate, clock_std=args.clock_std_dev,
+ clock_filter_iqd=args.clock_filter_iqd,
+ covariance=args.covariance, resolve_polytomies=(not args.keep_polytomies),
+ verbosity=args.verbosity)
node_data['clock'] = {'rate': tt.date2dist.clock_rate,
'intercept': tt.date2dist.intercept,
@@ -264,7 +264,7 @@ def run(args):
except ValueError as err:
raise ValueError(f"HINT: This error may be because your specified root with name '{args.root}' was not found in your alignment file") from err
- tt = TreeAnc(tree=T, aln=aln, ref=ref, gtr='JC69', verbose=1)
+ tt = TreeAnc(tree=T, aln=aln, ref=ref, gtr='JC69', verbose=args.verbosity)
node_data['nodes'] = collect_node_data(T, attributes)
if args.divergence_units=='mutations-per-site': #default
=====================================
augur/tree.py
=====================================
@@ -32,7 +32,10 @@ DEFAULT_ARGS = {
# with -fast, although there's probably no particular reason we have to.
# Refer to the handling of -fast in utils/tools.cpp:
# https://github.com/Cibiv/IQ-TREE/blob/44753aba/utils/tools.cpp#L2926-L2936
- "iqtree": "-ninit 2 -n 2 -me 0.05",
+ # Increasing threads (nt) can cause IQtree to run longer, hence use AUTO by default
+ # Auto makes IQtree chose the optimal number of threads
+ # Redo prevents IQtree errors when a run was aborted and restarted
+ "iqtree": "-ninit 2 -n 2 -me 0.05 -nt AUTO -redo",
}
class ConflictingArgumentsException(Exception):
@@ -60,12 +63,12 @@ def check_conflicting_args(tree_builder_args, defaults):
When any user-provided arguments match those in the defaults.
- >>> defaults = ("-nt", "-m", "-s")
+ >>> defaults = ("-ntmax", "-m", "-s")
>>> check_conflicting_args("-czb -n 2", defaults)
- >>> check_conflicting_args("-czb -nt 2", defaults)
+ >>> check_conflicting_args("-czb -ntmax 2", defaults)
Traceback (most recent call last):
...
- augur.tree.ConflictingArgumentsException: The following tree builder arguments conflict with hardcoded defaults. Remove these arguments and try again: -nt
+ augur.tree.ConflictingArgumentsException: The following tree builder arguments conflict with hardcoded defaults. Remove these arguments and try again: -ntmax
"""
# Parse tree builder argument string into a list of shell arguments. This
@@ -235,26 +238,13 @@ def build_iqtree(aln_file, out_file, substitution_model="GTR", clean_up=True, nt
ofile.write(tmp_line)
# Check tree builder arguments for conflicts with hardcoded defaults..
- check_conflicting_args(tree_builder_args, ("-nt", "-s", "-m"))
-
- # Use IQ-TREE's auto-scaling of threads when the user has requested more
- # threads than there are sequences. This approach avoids an error from
- # IQ-TREE when num_seq < nthreads (as when users request `-nthreads auto` on
- # a machine with many cores and fewer input sequences) and also avoids
- # requesting as many threads as there are sequences when there may be fewer
- # available threads on the current machine.
- if num_seqs < nthreads:
- nthreads = "AUTO"
- print(
- "WARNING: more threads requested than there are sequences; falling back to IQ-TREE's `-nt AUTO` mode.",
- file=sys.stderr
- )
+ check_conflicting_args(tree_builder_args, ("-ntmax", "-s", "-m"))
if substitution_model.lower() != "auto":
- call = [iqtree, "-nt", str(nthreads), "-s", shquote(tmp_aln_file),
+ call = [iqtree, "-ntmax", str(nthreads), "-s", shquote(tmp_aln_file),
"-m", substitution_model, tree_builder_args, ">", log_file]
else:
- call = [iqtree, "-nt", str(nthreads), "-s", shquote(tmp_aln_file), tree_builder_args, ">", shquote(log_file)]
+ call = [iqtree, "-ntmax", str(nthreads), "-s", shquote(tmp_aln_file), tree_builder_args, ">", shquote(log_file)]
cmd = " ".join(call)
@@ -407,7 +397,7 @@ def register_parser(parent_subparsers):
parser.add_argument('--substitution-model', default="GTR",
help='substitution model to use. Specify \'auto\' to run ModelTest. Currently, only available for IQTREE.')
parser.add_argument('--nthreads', type=nthreads_value, default=1,
- help="number of threads to use; specifying the value 'auto' will cause the number of available CPU cores on your system, if determinable, to be used")
+ help="maximum number of threads to use; specifying the value 'auto' will cause the number of available CPU cores on your system, if determinable, to be used")
parser.add_argument('--vcf-reference', type=str, help='fasta file of the sequence the VCF was mapped to')
parser.add_argument('--exclude-sites', type=str, help='file name of one-based sites to exclude for raw tree building (BED format in .bed files, second column in tab-delimited files, or one position per line)')
parser.add_argument('--tree-builder-args', type=str, help=f"""arguments to pass to the tree builder either augmenting or overriding the default arguments (except for input alignment path, number of threads, and substitution model).
=====================================
debian/changelog
=====================================
@@ -1,3 +1,10 @@
+augur (18.0.0-1) unstable; urgency=medium
+
+ * New upstream version
+ * Versioned (Build-)Depends: python3-treetime (>= 0.9.4)
+
+ -- Andreas Tille <tille at debian.org> Tue, 11 Oct 2022 21:21:12 +0200
+
augur (17.1.0-2) unstable; urgency=medium
[ Nilesh Patra ]
=====================================
debian/control
=====================================
@@ -16,7 +16,7 @@ Build-Depends: debhelper-compat (= 13),
python3-networkx <!nocheck>,
python3-packaging <!nocheck>,
python3-pandas <!nocheck>,
- python3-treetime <!nocheck>,
+ python3-treetime (>= 0.9.4) <!nocheck>,
python3-freezegun <!nocheck>,
python3-isodate <!nocheck>,
vcftools <!nocheck>,
@@ -41,7 +41,7 @@ Depends: ${python3:Depends},
python3-pandas,
python3-schedule,
python3-seaborn,
- python3-treetime,
+ python3-treetime (>= 0.9.4),
seqmagick,
python3-ipdb,
python3-bcbio-gff,
=====================================
docs/api/augur.import.rst
=====================================
@@ -1,7 +1,7 @@
augur.import module
===================
-.. automodule:: augur.import
+.. automodule:: augur.import_
:members:
:undoc-members:
:show-inheritance:
=====================================
docs/api/augur.import_beast.rst deleted
=====================================
@@ -1,7 +0,0 @@
-augur.import\_beast module
-==========================
-
-.. automodule:: augur.import_beast
- :members:
- :undoc-members:
- :show-inheritance:
=====================================
docs/api/augur.rst
=====================================
@@ -30,7 +30,6 @@ Submodules
augur.frequencies
augur.frequency_estimators
augur.import
- augur.import_beast
augur.index
augur.io
augur.lbi
=====================================
docs/api/augur.util_support.metadata_file.rst deleted
=====================================
@@ -1,7 +0,0 @@
-augur.util\_support.metadata\_file module
-=========================================
-
-.. automodule:: augur.util_support.metadata_file
- :members:
- :undoc-members:
- :show-inheritance:
=====================================
docs/api/augur.util_support.rst
=====================================
@@ -14,8 +14,6 @@ Submodules
augur.util_support.color_parser
augur.util_support.color_parser_line
augur.util_support.date_disambiguator
- augur.util_support.metadata_file
augur.util_support.node_data
augur.util_support.node_data_file
augur.util_support.node_data_reader
- augur.util_support.shell_command_runner
=====================================
docs/api/augur.util_support.shell_command_runner.rst deleted
=====================================
@@ -1,7 +0,0 @@
-augur.util\_support.shell\_command\_runner module
-=================================================
-
-.. automodule:: augur.util_support.shell_command_runner
- :members:
- :undoc-members:
- :show-inheritance:
=====================================
docs/contribute/DEV_DOCS.md
=====================================
@@ -190,6 +190,8 @@ Versions for this project, Augur, from 3.0.0 onwards aim to follow the
##### 4. Update on Bioconda
+First, check if the dependency list in [setup.py](https://github.com/nextstrain/augur/blob/HEAD/setup.py) had any changes since the previous version.
+
For versions without dependency changes:
1. Wait for an auto-bump PR in [bioconda-recipes][].
=====================================
docs/index.rst
=====================================
@@ -9,8 +9,8 @@ Augur: A bioinformatics toolkit for phylogenetic analysis
The documentation you are viewing is Augur's reference guide, which means it is information-oriented and targeted at users who just need info about how Augur works.
* If you have a question about how to achieve a specific goal with Augur, check out our :doc:`Augur-focused How-to Guides section <docs.nextstrain.org:guides/bioinformatics/index>` in the main Nextstrain documentation.
- * If you want to learn the basics of how to use Augur from scratch, check out our :doc:`Zika tutorial <docs.nextstrain.org:tutorials/zika>` in the main Nextstrain documentation.
- * If you want to understand how Augur fits together with Auspice to visualize results, check out our :doc:`Data Formats section <docs.nextstrain.org:reference/formats/data-formats>` in the main Nextstrain documentation.
+ * If you want to learn the basics of how to use Augur from scratch, check out :doc:`docs.nextstrain.org:tutorials/creating-a-workflow` in the main Nextstrain documentation.
+ * If you want to understand how Augur fits together with Auspice to visualize results, check out our :doc:`Data Formats section <docs.nextstrain.org:reference/data-formats>` in the main Nextstrain documentation.
=====================================
docs/installation/installation.md
=====================================
@@ -80,12 +80,6 @@ python3 -m pip install .
```
This install depends on a fairly minimal set of external Python libraries.
-There are some functions in augur that require a larger set of dependencies.
-These can be installed via:
-
-```bash
-python3 -m pip install '.[full]'
-```
If you wish to also install the development dependencies, and install augur in an "editable" mode whereby changes to the source code are reflected in your version of `augur` then run:
=====================================
docs/usage/cli/cli.rst
=====================================
@@ -30,3 +30,4 @@ We're in the process of adding examples and more extensive documentation for eac
validate
version
import
+ measurements
=====================================
docs/usage/cli/measurements.rst
=====================================
@@ -0,0 +1,9 @@
+==================
+augur measurements
+==================
+
+.. argparse::
+ :module: augur
+ :func: make_parser
+ :prog: augur
+ :path: measurements
=====================================
setup.py
=====================================
@@ -53,20 +53,16 @@ setuptools.setup(
install_requires = [
"bcbio-gff >=0.6.0, ==0.6.*",
"biopython >=1.67, !=1.77, !=1.78",
+ "cvxopt >=1.1.9, ==1.*",
"isodate ==0.6.*",
"jsonschema >=3.0.0, ==3.*",
"networkx >= 2.5, ==2.*",
"packaging >=19.2",
"pandas >=1.0.0, ==1.*",
- "phylo-treetime >=0.9.2, ==0.9.*",
+ "phylo-treetime >=0.9.3, ==0.9.*",
"xopen >=1.0.1, ==1.*"
],
extras_require = {
- 'full': [
- "cvxopt >=1.1.9, ==1.*",
- "matplotlib >=2.0, ==2.*",
- "seaborn >=0.9.0, ==0.9.*"
- ],
'dev': [
"cram >=0.7",
"deepdiff >=4.3.2",
=====================================
tests/builds/add_to_alignment/Snakefile
=====================================
@@ -134,7 +134,7 @@ rule export:
auspice = rules.all.input.auspice
shell:
"""
- snakemake --cores 1 check
+ snakemake --cores all check
augur export v2 \
--tree {input.tree} \
--metadata {input.metadata} \
=====================================
tests/builds/runner.sh
=====================================
@@ -1,4 +1,3 @@
-
function errorFound {
echo -e "\nTest Script Failed at Line $1"
exit 2
@@ -11,20 +10,18 @@ echo -e "Running all tests\n-----------------\n\n"
cd $(dirname "$BASH_SOURCE")
if [ -d ./auspice ]; then
- rm -rf auspice
+ rm -rf auspice
fi
mkdir auspice
-
for snakefile in ./*/Snakefile; do
- echo -e "\nRunning ${snakefile} (quietly)\n"
- pushd $(dirname "${snakefile}") >/dev/null
- snakemake --cores 1 clean --quiet 1>/dev/null
- snakemake --cores 1 --quiet 1>/dev/null
- cp auspice/*.json ../auspice
- popd >/dev/null
+ echo -e "\nRunning ${snakefile} (quietly)\n"
+ pushd $(dirname "${snakefile}") >/dev/null
+ snakemake --cores all clean --quiet 1>/dev/null
+ snakemake --cores all --quiet 1>/dev/null
+ cp auspice/*.json ../auspice
+ popd >/dev/null
done
echo -e "\nAll tests passed. You can view the results by running"
echo -e "auspice view --datasetDir $(pwd)/auspice"
-
=====================================
tests/functional/export_v2.t
=====================================
@@ -33,6 +33,19 @@ Export with auspice config JSON which defines scale & legend settings
{}
+...same but with repeated --node-data options instead of a single multi-valued option
+ $ ${AUGUR} export v2 \
+ > --tree export_v2/tree.nwk \
+ > --node-data export_v2/div_node-data.json \
+ > --node-data export_v2/location_node-data.json \
+ > --auspice-config export_v2/auspice_config1.json \
+ > --output "$TMP/dataset1.json" &>/dev/null
+
+ $ python3 "$TESTDIR/../../scripts/diff_jsons.py" export_v2/dataset1.json "$TMP/dataset1.json" \
+ > --exclude-paths "root['meta']['updated']"
+ {}
+
+
Export with auspice config JSON with an extensions block
$ ${AUGUR} export v2 \
> --tree export_v2/tree.nwk \
=====================================
tests/functional/tree.t
=====================================
@@ -18,7 +18,6 @@ Try building a tree with IQ-TREE with more threads (4) than there are input sequ
> --method iqtree \
> --output "$TMP/tree_raw.nwk" \
> --nthreads 4 > /dev/null
- WARNING: more threads requested than there are sequences; falling back to IQ-TREE's `-nt AUTO` mode.
Try building a tree with IQ-TREE using its ModelTest functionality, by supplying a substitution model of "auto".
View it on GitLab: https://salsa.debian.org/med-team/augur/-/compare/80cd21c7903cbdb0afa908701f742465410436b5...2cd127596ed35723c2dc28adaa548f20d33b4d13
--
View it on GitLab: https://salsa.debian.org/med-team/augur/-/compare/80cd21c7903cbdb0afa908701f742465410436b5...2cd127596ed35723c2dc28adaa548f20d33b4d13
You're receiving this email because of your account on salsa.debian.org.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/debian-med-commit/attachments/20221011/df490d0c/attachment-0001.htm>
More information about the debian-med-commit
mailing list