def test_sheet_germline_inconsistent_pedigree(
    tsv_sheet_germline_inconsistent_pedigree,
    tsv_sheet_germline_trio_plus,
):
    """Tests Germline sheet for sheet with conflict information for joint field and row."""
    # Sanity check
    shortcuts.GermlineCaseSheet(
        sheet=io_tsv.read_germline_tsv_sheet(tsv_sheet_germline_trio_plus),
        join_by_field='familyId')
    # Expect error as each member of the pedigree has its own `familyId` instead of a common one
    with pytest.raises(InconsistentPedigreeException):
        shortcuts.GermlineCaseSheet(sheet=io_tsv.read_germline_tsv_sheet(
            tsv_sheet_germline_inconsistent_pedigree),
                                    join_by_field='familyId')
def test_yield_ngs_library_names():
    """Tests yield_ngs_library_names()"""
    # Define expected
    expected_batch_one = ["P001-N1-DNA1-WGS1"]
    expected_batch_two = ["P004-N1-DNA1-WGS1"]
    expected_batch_three = ["P007-N1-DNA1-WGS1"]
    expected_ped_field_defined = expected_batch_one + expected_batch_two
    expected_ped_field_none = expected_batch_one + expected_batch_two + expected_batch_three

    # Define input
    sheet_path = pathlib.Path(__file__).resolve().parent / "data" / "germline_sheet.tsv"
    with open(sheet_path, "rt") as f_sheet:
        sheet = read_germline_tsv_sheet(f=f_sheet, naming_scheme=NAMING_ONLY_SECONDARY_ID)

    # Test `pedigree_field` = 'familyId'
    actual = yield_ngs_library_names(sheet=sheet, pedigree_field="familyId")
    for name_ in actual:
        assert name_ in expected_ped_field_defined

    # Test `pedigree_field` is None
    actual = yield_ngs_library_names(sheet=sheet, pedigree_field=None)
    for name_ in actual:
        assert name_ in expected_ped_field_none

    # Test `pedigree_field` is None and min batch = 2
    actual = yield_ngs_library_names(sheet=sheet, pedigree_field=None, min_batch=2)
    for name_ in actual:
        expected_list = expected_batch_two + expected_batch_three
        assert name_ in expected_list

    # Test `pedigree_field` is None and min batch = 3
    actual = yield_ngs_library_names(sheet=sheet, pedigree_field=None, min_batch=3)
    for name_ in actual:
        assert name_ in expected_batch_three
示例#3
0
def test_read_germline_sheet_platform_name(tsv_sheet_germline_platform_name):
    sheet = io_tsv.read_germline_tsv_sheet(tsv_sheet_germline_platform_name)
    assert EXPECTED_GERMLINE_SHEET_JSON_PLATFORM_NAME == json.dumps(
        sheet.json_data, indent='    ')
示例#4
0
def test_read_germline_sheet_no_header_hyphened_identifiers(
        tsv_sheet_germline_no_header_hyphened_identifier):
    sheet = io_tsv.read_germline_tsv_sheet(
        tsv_sheet_germline_no_header_hyphened_identifier)
    assert EXPECTED_GERMLINE_SHEET_JSON_NO_HEADER_HYPHEN == json.dumps(
        sheet.json_data, indent='    ')
示例#5
0
def test_read_germline_sheet_no_header(tsv_sheet_germline_no_header):
    sheet = io_tsv.read_germline_tsv_sheet(tsv_sheet_germline_no_header)
    assert EXPECTED_GERMLINE_SHEET_JSON_NO_HEADER == json.dumps(
        sheet.json_data, indent='    ')
def sheet_germline(tsv_sheet_germline):
    """Return ``Sheet`` instance for the germline example"""
    return shortcuts.GermlineCaseSheet(
        io_tsv.read_germline_tsv_sheet(tsv_sheet_germline))
def test_sheet_germline_trio_plus_exception(tsv_sheet_germline_trio_plus):
    """Tests UndefinedFieldException raise while creating GermlineCaseSheet"""
    with pytest.raises(UndefinedFieldException):
        shortcuts.GermlineCaseSheet(
            sheet=io_tsv.read_germline_tsv_sheet(tsv_sheet_germline_trio_plus),
            join_by_field='undefined_field')
def sheet_germline_only_parent_samples(tsv_sheet_germline_only_parent_samples):
    """Return ``Sheet`` instance for the germline example where only parents have samples"""
    return shortcuts.GermlineCaseSheet(
        io_tsv.read_germline_tsv_sheet(
            tsv_sheet_germline_only_parent_samples,
            naming_scheme=naming.NAMING_ONLY_SECONDARY_ID))
def sheet_germline_two_test_samples(tsv_sheet_germline_two_test_samples):
    """Return ``Sheet`` instance for the germline example with two test_samples"""
    return shortcuts.GermlineCaseSheet(
        io_tsv.read_germline_tsv_sheet(
            tsv_sheet_germline_two_test_samples,
            naming_scheme=naming.NAMING_ONLY_SECONDARY_ID))
def sheet_germline_multiple_trio_plus(tsv_sheet_germline_multiple_trio_plus):
    """Return ``Sheet`` instance for the germline multiple trio plus example"""
    return shortcuts.GermlineCaseSheet(sheet=io_tsv.read_germline_tsv_sheet(
        tsv_sheet_germline_multiple_trio_plus),
                                       join_by_field='familyId')
示例#11
0
def test_yield_ngs_library_names(snappy_itransfer_command_base):
    """Tests varfish_upload.yield_ngs_library_names()"""
    # Define expected
    expected_batch_one = [
        "P001-N1-DNA1-WGS1", "P002-N1-DNA1-WGS1", "P003-N1-DNA1-WGS1"
    ]
    expected_batch_two = [
        "P004-N1-DNA1-WGS1", "P005-N1-DNA1-WGS1", "P006-N1-DNA1-WGS1"
    ]
    expected_batch_three = [
        "P007-N1-DNA1-WGS1", "P008-N1-DNA1-WGS1", "P009-N1-DNA1-WGS1"
    ]
    expected_batch_four = [
        "P010-N1-DNA1-WGS1", "P011-N1-DNA1-WGS1", "P012-N1-DNA1-WGS1"
    ]
    expected_batch_five = ["P013-N1-DNA1-WGS1", "P014-N1-DNA1-WGS1"]
    expected_batch_six = ["P015-N1-DNA1-WGS1"]

    # Define input
    sheet_path = pathlib.Path(
        __file__).resolve().parent / "data" / "germline_sheet_multi_batch.tsv"
    with open(sheet_path, "rt") as f_sheet:
        sheet = read_germline_tsv_sheet(f=f_sheet,
                                        naming_scheme=NAMING_ONLY_SECONDARY_ID)

    # Sanity test - no constraints
    actual = snappy_itransfer_command_base.yield_ngs_library_names(
        sheet=sheet, min_batch=None, max_batch=None)
    expected_list = (expected_batch_one + expected_batch_two +
                     expected_batch_three + expected_batch_four +
                     expected_batch_five + expected_batch_six)
    for name_ in actual:
        assert name_ in expected_list

    # Test min batch = 2, max batch = None
    actual = snappy_itransfer_command_base.yield_ngs_library_names(
        sheet=sheet, min_batch=2, max_batch=None)
    expected_list = (expected_batch_two + expected_batch_three +
                     expected_batch_four + expected_batch_five +
                     expected_batch_six)
    for name_ in actual:
        assert name_ in expected_list
    # Test min batch = 2, max batch = 3
    actual = snappy_itransfer_command_base.yield_ngs_library_names(sheet=sheet,
                                                                   min_batch=2,
                                                                   max_batch=3)
    expected_list = expected_batch_two + expected_batch_three
    for name_ in actual:
        assert name_ in expected_list

    # Test min batch = 3, max batch = 5
    actual = snappy_itransfer_command_base.yield_ngs_library_names(sheet=sheet,
                                                                   min_batch=3,
                                                                   max_batch=5)
    expected_list = expected_batch_three + expected_batch_four + expected_batch_five
    for name_ in actual:
        assert name_ in expected_list

    # Test min batch = 5, max batch = 5
    actual = snappy_itransfer_command_base.yield_ngs_library_names(sheet=sheet,
                                                                   min_batch=5,
                                                                   max_batch=5)
    expected_list = expected_batch_five
    for name_ in actual:
        assert name_ in expected_list

    # Test min batch = 6, max batch = 6
    actual = snappy_itransfer_command_base.yield_ngs_library_names(sheet=sheet,
                                                                   min_batch=6,
                                                                   max_batch=6)
    expected_list = expected_batch_six
    for name_ in actual:
        assert name_ in expected_list