[0473b3]: / tests / test_gindexer.py

Download this file

130 lines (103 with data), 5.1 kB

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
import os
import matplotlib
import numpy as np
import pkg_resources
import pytest
import pandas as pd
from janggu.data import GenomicIndexer
matplotlib.use('AGG')
def test_gindexer_short_interval():
data_path = pkg_resources.resource_filename('janggu', 'resources/')
gi = GenomicIndexer.create_from_file(os.path.join(data_path,
'sample_equalsize.bed'),
binsize=200, stepsize=200)
assert len(gi) == 4
gi = GenomicIndexer.create_from_file(os.path.join(data_path,
'sample_equalsize.bed'),
binsize=180, stepsize=20)
assert len(gi) == 8
gi = GenomicIndexer.create_from_file(os.path.join(data_path,
'sample_equalsize.bed'),
binsize=210, stepsize=20, zero_padding=False)
assert len(gi) == 0
gi = GenomicIndexer.create_from_file(os.path.join(data_path,
'sample_equalsize.bed'),
binsize=210, stepsize=20, zero_padding=True)
assert len(gi) == 4
def test_gindexer_short_interval_with_dataframe():
data_path = pkg_resources.resource_filename('janggu', 'resources/')
df = pd.read_csv(os.path.join(data_path, 'sample_equalsize.bed'),
sep='\t', header=None, names=['chrom', 'start', 'end'])
gi = GenomicIndexer.create_from_file(df,
binsize=200, stepsize=200)
assert len(gi) == 4
gi = GenomicIndexer.create_from_file(df,
binsize=180, stepsize=20)
assert len(gi) == 8
gi = GenomicIndexer.create_from_file(df,
binsize=210, stepsize=20,
zero_padding=False)
assert len(gi) == 0
gi = GenomicIndexer.create_from_file(df,
binsize=210, stepsize=20,
zero_padding=True)
assert len(gi) == 4
def test_gindexer_errors():
data_path = pkg_resources.resource_filename('janggu', 'resources/')
with pytest.raises(ValueError):
GenomicIndexer.create_from_file(os.path.join(data_path,
'sample.bed'),
binsize=0, stepsize=50)
with pytest.raises(ValueError):
GenomicIndexer.create_from_file(os.path.join(data_path,
'sample.bed'),
binsize=10, stepsize=0)
with pytest.raises(ValueError):
# due to flank < 0
GenomicIndexer.create_from_file(os.path.join(data_path, 'sample.bed'),
binsize=200, stepsize=50, flank=-1)
# due to unequal intervals
gi=GenomicIndexer.create_from_file(os.path.join(data_path, 'scores.bed'),
binsize=None, stepsize=None, flank=0)
#print(len(gi))
#for reg in gi:
# print(reg)
GenomicIndexer.create_from_file(os.path.join(data_path, 'scores.bed'),
binsize=200, stepsize=200, flank=0)
def test_gindexer_merged():
data_path = pkg_resources.resource_filename('janggu', 'resources/')
gi = GenomicIndexer.create_from_file(
os.path.join(data_path, 'sample.bed'), binsize=200, stepsize=200)
np.testing.assert_equal(len(gi), 100)
gi2 = gi.filter_by_region(include='chr1')
gi3 = gi.filter_by_region(include='chr10')
gi4 = gi.filter_by_region(exclude='chr2')
gi5 = gi.filter_by_region(exclude='chr10')
np.testing.assert_equal(len(gi2), 50)
np.testing.assert_equal(len(gi3), 0)
np.testing.assert_equal(len(gi4), 50)
np.testing.assert_equal(len(gi5), 100)
def test_gindexer_merged_variable_length_ranges():
data_path = pkg_resources.resource_filename('janggu', 'resources/')
# with fixed size
gi = GenomicIndexer.create_from_file(
os.path.join(data_path, 'sample.bed'), binsize=3000, stepsize=3000,
zero_padding=False)
np.testing.assert_equal(len(gi), 6)
iv = gi[0]
np.testing.assert_equal((iv.chrom, iv.start, iv.end, iv.strand),
('chr1', 15000, 18000, '+'))
iv = gi[-1]
np.testing.assert_equal((iv.chrom, iv.start, iv.end, iv.strand),
('chr2', 21000, 24000, '-'))
# with variable size regions
gi = GenomicIndexer.create_from_file(
os.path.join(data_path, 'sample.bed'), binsize=3000,
stepsize=3000, zero_padding=True)
np.testing.assert_equal(len(gi), 8)
iv = gi[0]
np.testing.assert_equal((iv.chrom, iv.start, iv.end, iv.strand),
('chr1', 15000, 18000, '+'))
iv = gi[-1]
np.testing.assert_equal((iv.chrom, iv.start, iv.end, iv.strand),
('chr2', 24000, 25000, '-'))