コード例 #1
0
def test_statistics_samples_datasetsnotexists(testdir, mock_testclass):
    samples = Path(__file__).parent.joinpath('samples.txt')
    datasets = 'dataset.txt'
    s.compute_statistics = MagicMock()
    s.statistics_samples(samples, datasets)
    s.compute_statistics.assert_called_once_with(
        ['POLR2A', 'ASDURF', 'POLR1C'], [], 'statistics.txt')
コード例 #2
0
def test_statistics_samples_parameters(testdir, mock_testclass):
    samples = Path(__file__).parent.joinpath('samples.txt')
    sample_pandas = ['samples-pandas']
    datasets = Path(__file__).parent.joinpath('dataset.txt')
    datasets_pandas = ['datasets-pandas']
    output = 'out.txt'
    s.compute_statistics = MagicMock()
    s.statistics_samples(samples, datasets, output)
    s.compute_statistics.assert_called_once_with(
        ['POLR2A', 'ASDURF', 'POLR1C'], ['POLR2A', 'ASDURF', 'POLR1C'], output)
コード例 #3
0
def test_headers_missmatch(testdir, mock_testclass):
    samples = ['POLR2A', 'ASDURF']
    datasets = ['POLR1C']
    sample1_headers = [
        samples[0] + '-100-110', samples[0] + '-110-120',
        samples[0] + '-130-140'
    ]
    sample2_headers = [
        samples[1] + '-100-110', samples[1] + '-110-120',
        samples[1] + '-130-140'
    ]
    dataset1_headers = [
        datasets[0] + '-100-110', datasets[0] + '-120-130',
        datasets[0] + '-140-150'
    ]
    Split.splits = MagicMock(
        side_effect=[sample1_headers, sample2_headers, dataset1_headers])
    headers, splits_headers = s.headers(samples, datasets)
    assert headers[0] == 'Sample'
    assert headers[1] == 'Total reads'
    assert headers[2] == 'Mapped reads'
    assert headers[3] == 'Deduplicated reads'
    assert headers[4] == '100-110'
    assert headers[5] == '110-120'
    assert headers[6] == '120-130'
    assert headers[7] == '130-140'
    assert headers[8] == '140-150'
    assert len(headers) == 9
    assert splits_headers[0] == '100-110'
    assert splits_headers[1] == '110-120'
    assert splits_headers[2] == '120-130'
    assert splits_headers[3] == '130-140'
    assert splits_headers[4] == '140-150'
    assert len(splits_headers) == 5
コード例 #4
0
def test_flagstat_total_2(testdir, mock_testclass):
    bam = 'POLR2A.bam'
    output = MagicMock()
    output.stdout = MagicMock()
    output.stdout.decode = MagicMock(return_value='200')
    subprocess.run = MagicMock(return_value=output)
    total = s.flagstat_total(bam)
    subprocess.run.assert_any_call(['samtools', 'flagstat', bam],
                                   capture_output=True,
                                   check=True)
    assert total == '200'
コード例 #5
0
def test_sample_statistics_notexists(testdir, mock_testclass):
    sample = 'POLR2A'
    splits = ['100-110', '120-130']
    s.flagstat_total = MagicMock(side_effect=[300, 200])
    Bed.count_bed = MagicMock(side_effect=[150, 50, 40])
    stats = s.sample_statistics(sample, splits)
    assert stats[0] == sample
    assert stats[1] == ''
    assert stats[2] == ''
    assert stats[3] == ''
    assert stats[4] == ''
    assert stats[5] == ''
    assert len(stats) == 6
    s.flagstat_total.assert_not_called()
    Bed.count_bed.assert_not_called()
コード例 #6
0
def test_compute_statistics(testdir, mock_testclass):
    samples = ['POLR2A', 'ASDURF']
    datasets = ['POLR1C']
    output = 'out.txt'
    splits = ['100-110', '120-130']
    s.headers = MagicMock(return_value=([
        'Sample', 'Total reads', 'Mapped reads', 'Deduplicated reads',
        '100-110', '120-130'
    ], splits))
    s.sample_statistics = MagicMock(side_effect=[[
        'POLR2A', 500, 400, 300, 60, 40
    ], ['ASDURF', 550, 450, 350, 70, 50], ['POLR1C', '', '', 250, 50, 30]])
    s.compute_statistics(samples, datasets, output)
    s.headers.assert_called_once_with(samples, datasets)
    s.sample_statistics.assert_any_call(samples[0], splits)
    s.sample_statistics.assert_any_call(samples[1], splits)
    s.sample_statistics.assert_any_call(datasets[0], splits)
    with open(output, 'r') as infile:
        assert infile.readline(
        ) == 'Sample\tTotal reads\tMapped reads\tDeduplicated reads\t100-110\t120-130\n'
        assert infile.readline() == 'POLR2A\t500\t400\t300\t60\t40\n'
        assert infile.readline() == 'ASDURF\t550\t450\t350\t70\t50\n'
        assert infile.readline() == 'POLR1C\t\t\t250\t50\t30\n'
        assert infile.readline() == ''
コード例 #7
0
def test_headers(testdir, mock_testclass):
    samples = ['POLR2A', 'ASDURF']
    datasets = ['POLR1C']
    Split.splits = MagicMock(side_effect=splits)
    headers, splits_headers = s.headers(samples, datasets)
    assert headers[0] == 'Sample'
    assert headers[1] == 'Total reads'
    assert headers[2] == 'Mapped reads'
    assert headers[3] == 'Deduplicated reads'
    assert headers[4] == '100-110'
    assert headers[5] == '110-120'
    assert headers[6] == '120-140'
    assert len(headers) == 7
    assert splits_headers[0] == '100-110'
    assert splits_headers[1] == '110-120'
    assert splits_headers[2] == '120-140'
    assert len(splits_headers) == 3
コード例 #8
0
def test_sample_statistics(testdir, mock_testclass):
    sample = 'POLR2A'
    Path(sample + '.bam').touch()
    Path(sample + '-filtered.bam').touch()
    Path(sample + '.bed').touch()
    splits = ['100-110', '120-130']
    for split in splits:
        Path(sample + '-' + split + '.bed').touch()
    s.flagstat_total = MagicMock(side_effect=[300, 200])
    Bed.count_bed = MagicMock(side_effect=[150, 50, 40])
    stats = s.sample_statistics(sample, splits)
    assert stats[0] == sample
    assert stats[1] == 300
    assert stats[2] == 200
    assert stats[3] == 150 * 2
    assert stats[4] == 50
    assert stats[5] == 40
    assert len(stats) == 6
    s.flagstat_total.assert_any_call(sample + '.bam')
    s.flagstat_total.assert_any_call(sample + '-filtered.bam')
    Bed.count_bed.assert_any_call(sample + '.bed')
    Bed.count_bed.assert_any_call(sample + '-100-110.bed')
    Bed.count_bed.assert_any_call(sample + '-120-130.bed')