示例#1
0
def test_or__str__two_items__second_is_operator():
    obj_1 = versions.GE(1, 2)
    obj_2 = versions.And(versions.GE(2, 0), versions.LT(3, 4))
    obj = versions.Or(obj_1, obj_2)

    assert_equal(str(obj),
                 "at least v1.2.x or (at least v2.0.x and prior to v3.4.x)")
示例#2
0
def test_or__check_version__insufficient_number_of_values():
    def _do_or_check_num_values(obj_1, obj_2):
        obj = versions.Or(obj_1, obj_2)
        assert_raises(ValueError, obj, (1, 3))

    yield _do_or_check_num_values, versions.GE(1, 2, 2), versions.LT(2, 0)
    yield _do_or_check_num_values, versions.GE(1, 2, 2), versions.LT(2, 0, 1)
示例#3
0
def test_or__check_version__truncated():
    def _do_or_check_truncated(obj_1, obj_2):
        obj = versions.Or(obj_1, obj_2)
        assert obj((1, 3, 3))

    yield _do_or_check_truncated, versions.GE(1, 2), versions.LT(2, 0)
    yield _do_or_check_truncated, versions.GE(1, 2, 2), versions.LT(2, 0)
    yield _do_or_check_truncated, versions.GE(1, 2), versions.LT(2, 0, 1)
示例#4
0
def test_check__can_pickle():
    def _do_test_can_pickle(obj):
        pickle.dumps(obj)

    yield _do_test_can_pickle, versions.EQ(1, 2, 3)
    yield _do_test_can_pickle, versions.GE(1, 2, 3)
    yield _do_test_can_pickle, versions.LT(1, 2, 3)
    yield _do_test_can_pickle, versions.Any()
    yield _do_test_can_pickle, versions.And(versions.EQ(1, 2, 3))
    yield _do_test_can_pickle, versions.Or(versions.GE(1, 2, 3))
示例#5
0
def test_requirement__same_obj_if_name_differ():
    obj1 = versions.Requirement("echo", "", versions.GE(1))
    assert_equal(obj1.name, "echo")
    obj2 = versions.Requirement("echo", "", versions.GE(1), name="foo")
    assert_equal(obj2.name, "foo")
    assert_is(obj1, obj2)

    obj3 = versions.Requirement("echo", "", versions.GE(1), name="bar")
    assert_equal(obj3.name, "bar")
    assert_is(obj2, obj3)

    obj4 = versions.Requirement("echo", "", versions.GE(1))
    assert_equal(obj3.name, "bar")
    assert_is(obj3, obj4)
示例#6
0
def picard_command(config, command):
    """Returns basic AtomicJavaCmdBuilder for Picard tools commands."""
    jar_path = os.path.join(config.jar_root, _PICARD_JAR)

    if jar_path not in _PICARD_VERSION_CACHE:
        params = AtomicJavaCmdBuilder(jar_path,
                                      temp_root=config.temp_root,
                                      jre_options=config.jre_options)

        # Arbitrary command, since just '--version' does not work
        params.set_option("MarkDuplicates")
        params.set_option("--version")

        requirement = versions.Requirement(call=params.finalized_call,
                                           name="Picard tools",
                                           search=r"^(\d+)\.(\d+)",
                                           checks=versions.GE(1, 124))
        _PICARD_VERSION_CACHE[jar_path] = requirement

    version = _PICARD_VERSION_CACHE[jar_path]
    params = AtomicJavaCmdBuilder(jar_path,
                                  temp_root=config.temp_root,
                                  jre_options=config.jre_options,
                                  CHECK_JAR=version)
    params.set_option(command)

    return params
示例#7
0
def test_or__str__two_items__first_is_operator():
    obj_1 = versions.Or(versions.GE(1, 2), versions.LT(2, 0))
    obj_2 = versions.LT(3, 4)
    obj = versions.Or(obj_1, obj_2)

    assert_equal(str(obj),
                 "(at least v1.2.x or prior to v2.0.x) or prior to v3.4.x")
示例#8
0
def _picard_version(jar_file):
    if jar_file not in _PICARD_VERSION_CACHE:
        requirement = versions.Requirement(call=("java", "-client", "-jar",
                                                 jar_file, "--version"),
                                           search=r"^(\d+)\.(\d+)",
                                           checks=versions.GE(1, 82))
        _PICARD_VERSION_CACHE[jar_file] = requirement
    return _PICARD_VERSION_CACHE[jar_file]
示例#9
0
    def _get_java_version(cls, version):
        version = tuple(map(int, version))
        if version not in JAVA_VERSIONS:
            regexp = r"[\._]".join(r"(\d+)" for _ in version)
            regexp = r'java version "%s' % (regexp, )
            jre_call = ["java", "-Djava.awt.headless=true", "-version"]

            JAVA_VERSIONS[version] \
                = versions.Requirement(call=jre_call,
                                       name="JAVA Runtime Environment",
                                       search=regexp,
                                       checks=versions.GE(*version),
                                       priority=10)
        return JAVA_VERSIONS[version]
示例#10
0
def _picard_version(config, jar_file):
    if jar_file not in _PICARD_VERSION_CACHE:
        params = AtomicJavaCmdBuilder(jar_file,
                                      temp_root=config.temp_root,
                                      jre_options=config.jre_options)
        params.add_value("--version")

        name = "Picard " + os.path.basename(jar_file)
        requirement = versions.Requirement(call=params.finalized_call,
                                           name=name,
                                           search=r"^(\d+)\.(\d+)",
                                           checks=versions.GE(1, 82))
        _PICARD_VERSION_CACHE[jar_file] = requirement
    return _PICARD_VERSION_CACHE[jar_file]
示例#11
0
def test_requirementobj__call__check_fails__function():
    expected = \
        "Version requirements not met for test#1; please refer\n" \
        "to the PALEOMIX documentation for more information.\n" \
        "\n" \
        "    Version:       v1.0.x\n" \
        "    Required:      at least v1.1.x"

    obj = versions.RequirementObj(call=lambda: "v1.0.3",
                                  search=r"(\d)\.(\d)",
                                  checks=versions.GE(1, 1),
                                  name="test#1")
    try:
        obj()
        assert False  # pragma: no coverage
    except versions.VersionRequirementError, error:
        assert_equal(str(error), expected)
示例#12
0
def test_requirementobj__call__check_fails():
    expected = \
        "Version requirements not met for test#1; please refer\n" \
        "to the PALEOMIX documentation for more information.\n" \
        "\n" \
        "    Executable:    /usr/bin/python\n" \
        "    Call:          /usr/bin/python -c import sys; " \
        "sys.stdout.write('v1.0.2'); sys.exit(0);\n" \
        "    Version:       v1.0.x\n" \
        "    Required:      at least v1.1.x"

    obj = versions.RequirementObj(call=_echo_version("v1.0.2"),
                                  search=r"(\d)\.(\d)",
                                  checks=versions.GE(1, 1),
                                  name="test#1")
    try:
        obj()
        assert False  # pragma: no coverage
    except versions.VersionRequirementError, error:
        assert_equal(str(error), expected)
示例#13
0
def test_requirementobj__call__check_fails__jre_outdated():
    expected = \
        "Version could not be determined for test#1:\n" \
        "\n" \
        "    Executable:    /usr/bin/python\n" \
        "    Call:          /usr/bin/python -c import sys; " \
        "sys.stdout.write('UnsupportedClassVersionError'); sys.exit(0);\n" \
        "\n" \
        "The version of the Java Runtime Environment on this\n" \
        "system is too old; please check the the requirement\n" \
        "for the program and upgrade your version of Java.\n" \
        "\n" \
        "See the documentation for more information."

    value = "UnsupportedClassVersionError"
    obj = versions.RequirementObj(call=_echo_version(value),
                                  search=r"(\d)\.(\d)",
                                  checks=versions.GE(1, 1),
                                  name="test#1")
    try:
        obj()
        assert False  # pragma: no coverage
    except versions.VersionRequirementError, error:
        assert_equal(str(error), expected)
示例#14
0
def test_ge__str__one_value():
    obj = versions.GE(1)
    assert_equal(str(obj), "at least v1.x")
示例#15
0
def test_or__check_version__insufficient_number_of_values__is_lazy():
    obj_1 = versions.GE(1, 2)
    obj_2 = versions.LT(2, 0, 1)
    obj = versions.Or(obj_1, obj_2)
    assert obj((1, 3))
示例#16
0
    check_fastq_files

import pypeline.common.utilities as utilities
import pypeline.common.fileutils as fileutils
import pypeline.common.versions as versions
import pypeline.tools.factory as factory

VERSION_14 = "1.4"
_VERSION_14_CHECK = versions.Requirement(call=("AdapterRemoval", "--version"),
                                         search=r"ver. (\d+)\.(\d+)",
                                         checks=versions.EQ(1, 4))

VERSION_15 = "1.5+"
_VERSION_15_CHECK = versions.Requirement(call=("AdapterRemoval", "--version"),
                                         search=r"ver. (\d+)\.(\d+)\.(\d+)",
                                         checks=versions.GE(1, 5, 0))


class SE_AdapterRemovalNode(CommandNode):
    @create_customizable_cli_parameters
    def customize(cls,
                  input_files,
                  output_prefix,
                  output_format="bz2",
                  quality_offset=33,
                  version=VERSION_15,
                  dependencies=()):
        # See below for parameters in common between SE/PE
        cmd = _get_common_parameters(version)

        # Uncompressed reads (piped from 'paleomix cat')
示例#17
0
def test_and__check_version__first_true():
    obj_1 = versions.And(versions.GE(1, 2), versions.LT(2, 0))
    obj_2 = versions.And(versions.GE(2, 3), versions.LT(3, 0))
    obj = versions.And(obj_1, obj_2)
    assert not obj((1, 3))
示例#18
0
def test_or__check_version__second_true():
    obj_1 = versions.And(versions.GE(1, 2), versions.LT(2, 0))
    obj_2 = versions.And(versions.GE(2, 3), versions.LT(3, 0))
    obj = versions.Or(obj_1, obj_2)
    assert obj((2, 3))
示例#19
0
def test_or__check_version__neither_true():
    obj_1 = versions.And(versions.GE(1, 2), versions.LT(2, 0))
    obj_2 = versions.And(versions.GE(2, 3), versions.LT(3, 0))
    obj = versions.Or(obj_1, obj_2)
    assert not obj((2, 2))
示例#20
0
def test_ge__check_values__not_greater_than_or_equal():
    obj = versions.GE(2, 3)
    assert not obj((1, 3))
    assert not obj((2, 2))
示例#21
0
def test_or__check_version__both_true():
    obj_1 = versions.GE(1, 2)
    obj_2 = versions.LT(2, 0)
    obj = versions.Or(obj_1, obj_2)
    assert obj((1, 3))
示例#22
0
def test_ge__check_values__greater_than_or_equal_truncated():
    obj = versions.GE(2, 3)
    assert obj((2, 3, 1))
    assert obj((2, 4, 2))
示例#23
0
def test_or__str__two_items():
    obj_ge = versions.GE(1, 2)
    obj_lt = versions.LT(3, 4)
    obj = versions.Or(obj_ge, obj_lt)

    assert_equal(str(obj), "at least v1.2.x or prior to v3.4.x")
示例#24
0
def test_or__str__single_item():
    obj = versions.Or(versions.GE(1))
    assert_equal(str(obj), "at least v1.x")
示例#25
0
def test_requirement__new_obj_if_checks_differ():
    obj1 = versions.Requirement("echo", "", versions.GE(1))
    obj2 = versions.Requirement("echo", "", versions.LT(1))
    assert_is_not(obj1, obj2)
示例#26
0
def test_ge__check_values__greater_than_or_equal():
    obj = versions.GE(2, 3)
    assert obj((2, 3))
    assert obj((2, 4))
    assert obj((3, 0))
示例#27
0
from pypeline.atomiccmd.builder import AtomicJavaCmdBuilder,AtomicJava7CmdBuilder
from pypeline.atomiccmd.sets import ParallelCmds
from pypeline.atomiccmd.builder import \
     AtomicCmdBuilder, \
     use_customizable_cli_parameters, \
     create_customizable_cli_parameters

from pypeline.nodes.samtools import GenotypeNode, TabixIndexNode, FastaIndexNode, MPileupNode

import pypeline.common.versions as versions
from pypeline.common.utilities import safe_coerce_to_tuple

SAMTOOLS_VERSION = versions.Requirement(
    call   = ("samtools",),
    search = b"Version: (\d+)\.(\d+)\.(\d+)",
    checks = versions.GE(0, 1, 18)
)

class SnpListNode(CommandNode):
    @create_customizable_cli_parameters
    def customize(cls, groups, prefix, options, dependencies = ()):
        # Merge the VCF files
        merge_vcf = AtomicCmdBuilder(['vcf_merge'], OUT_VCF = "merged.vcf")
        for group in groups:
            vcf_file = os.path.join(options.makefile['RecalDir'],
                'gatk.{}.{}.raw.recal_final.vcf'.format(group,prefix)
            )
            merge_vcf.add_option("-i",vcf_file)
        merge_vcf.add_option("-o", '%(OUT_VCF)s')
    
示例#28
0
def test_ge__str__two_values():
    obj = versions.GE(2, 1)
    assert_equal(str(obj), "at least v2.1.x")
示例#29
0
from pypeline.atomiccmd.sets import ParallelCmds, SequentialCmds
from pypeline.atomiccmd.builder import AtomicJavaCmdBuilder

from pypeline.nodes.picard import ValidateBAMNode, concatenate_input_bams
from pypeline.nodes.samtools import BAMIndexNode
from pypeline.common.fileutils import describe_files

import pypeline.common.versions as versions

# Number of reads to sample when running mapDamage
_MAPDAMAGE_MAX_READS = 100000

MAPDAMAGE_VERSION = versions.Requirement(call=("mapDamage", "--version"),
                                         search=r"(\d+)\.(\d+)[\.-](\d+)",
                                         pprint="{0}.{1}.{2}",
                                         checks=versions.GE(2, 0, 45))


class MapDamageNode(CommandNode):
    def __init__(self, config, reference, input_files, output_directory,
                 dependencies):
        cat_cmds, cat_obj = concatenate_input_bams(config, input_files)

        cmd_map = AtomicCmd(
            [
                "mapDamage", "--no-stats", "-n", _MAPDAMAGE_MAX_READS, "-i",
                "-", "-d", "%(TEMP_DIR)s", "-r", reference
            ],
            IN_STDIN=cat_obj,
            OUT_FREQ_3p=os.path.join(output_directory, "3pGtoA_freq.txt"),
            OUT_FREQ_5p=os.path.join(output_directory, "5pCtoT_freq.txt"),
示例#30
0
def test_ge__check_values__not_equal_too_few_values():
    obj = versions.GE(2, 3)
    assert_raises(ValueError, obj, (1,))