bio-ensembl-rest 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,45 @@
1
+ require_relative 'helper'
2
+
3
+ class TestLookup < Test::Unit::TestCase
4
+
5
+ context 'lookup_id' do
6
+
7
+ setup do
8
+ EnsemblRest.connect_db
9
+ end
10
+
11
+ should 'support a basic call and return the correct data' do
12
+ look = Lookup.lookup_id 'ENSG00000157764'
13
+ assert look.index 'Gene' # we asked for a gene
14
+ assert look.index 'core' # db_type should be this
15
+ assert look.index 'homo_sapiens' # we used a human stable ID
16
+ assert look.index 'ENSG00000157764' # exactly this one
17
+ end
18
+
19
+ should 'support the full parameter' do
20
+ look_plain = Lookup.lookup_id 'ENSG00000157764'
21
+ look_full = Lookup.lookup_id 'ENSG00000157764', format: 'full'
22
+ assert look_full.size > look_plain.size
23
+ end
24
+
25
+ sleep(1)
26
+
27
+ should 'return the right object' do
28
+ look = JSON.parse Lookup.lookup_id 'ENSG00000157764', format: 'full'
29
+ assert look['object_type'].casecmp 'gene'
30
+ assert look['species'].casecmp 'homo_sapiens'
31
+ assert look['start'] = 140424943
32
+ assert look['end'] = 140624564
33
+ end
34
+
35
+ should 'support db_type parameter' do
36
+ look = JSON.parse Lookup.lookup_id 'ENSG00000157764', db_type: 'core'
37
+ assert look['db_type'] = 'core'
38
+ end
39
+
40
+ sleep(1)
41
+
42
+ end
43
+
44
+
45
+ end
@@ -0,0 +1,105 @@
1
+ require_relative 'helper'
2
+
3
+ class TestMapping < Test::Unit::TestCase
4
+
5
+ context 'test map' do
6
+
7
+ setup do
8
+ EnsemblRest.connect_db
9
+ end
10
+
11
+ should 'support a basic call and return the correct data' do
12
+ map = Mapping.map 'NCBI36', 'GRCh37', 'human', 'X:1000000..1000100:1'
13
+ assert map.index 'NCBI36' # we asked a map from this
14
+ assert map.index 'GRCh37' # to this
15
+ assert map.index 'X' # of a sequence on the X chromosome
16
+ end
17
+
18
+ should 'return work with response: ruby' do
19
+ map = Mapping.map 'NCBI36', 'GRCh37', 'human', 'X:1000000..1000100:1',
20
+ response: 'ruby'
21
+ from = map['mappings'][0]['original'] # from here
22
+ to = map['mappings'][0]['mapped'] # to here
23
+
24
+ assert from['assembly'] = 'NCBI36' # from has to be NCBI36
25
+ assert from['start'] = 1000000 # its region start here
26
+ assert from['end'] = 1000100 # and ends here
27
+ assert to['assembly'] = 'GRCh37' # to has to be GRCh37
28
+ assert to['start'] = 1080000 # its region starts here
29
+ assert to['end'] = 1080100 # and ends here
30
+ end
31
+
32
+ sleep(1)
33
+
34
+ end
35
+
36
+
37
+ context 'test map_from_cdna' do
38
+
39
+ setup do
40
+ EnsemblRest.connect_db
41
+ end
42
+
43
+ should 'support a basic call and return the correct data' do
44
+ map = Mapping.map_from_cdna 'ENST00000288602', '100..300'
45
+ assert map.index 'chromosome' # we asked a map on chromosome
46
+ assert map.index '7' # chromosome 7, in fact
47
+ assert map.index '-1' # strand -1
48
+ end
49
+
50
+ should 'return the right mapping' do
51
+ map = Mapping.map_from_cdna 'ENST00000288602', '100..300',
52
+ response: 'ruby'
53
+ from = map['mappings'][0]
54
+ to = map['mappings'][1]
55
+ from['seq_region_name'] = '7'
56
+ from['start'] = 140624366
57
+ to['end'] = 140624465
58
+ from['seq_region_name'] = '7'
59
+ from['start'] = 140549912
60
+ to['end'] = 140550012
61
+ end
62
+
63
+ sleep(1)
64
+
65
+ end
66
+
67
+ context 'test map_from_cds' do
68
+
69
+ setup do
70
+ EnsemblRest.connect_db
71
+ end
72
+
73
+ should 'support a basic call and return the correct data' do
74
+ map = Mapping.map_from_cds 'ENST00000288602', '1..1000'
75
+ assert map.index '7' # we asked for stuff on chromosome 7
76
+ assert map.index '-1' # strand -1
77
+ assert map.index '140624366' # one of the mapping starts here
78
+ assert map.index '140624503' # and ends here
79
+ end
80
+
81
+ sleep(1)
82
+
83
+ end
84
+
85
+
86
+ context 'test map_from_translation' do
87
+
88
+ setup do
89
+ EnsemblRest.connect_db
90
+ end
91
+
92
+ should 'support a basic call and return the correct data' do
93
+ map = Mapping.map_from_translation 'ENSP00000288602', '100..300'
94
+ assert map.index '7' # we asked for stuff on chromosome 7
95
+ assert map.index '-1' # strand -1
96
+ assert map.index '140534409' # one of the mapping starts here
97
+ assert map.index '140534615' # and ends here
98
+ end
99
+
100
+ sleep(1)
101
+
102
+ end
103
+
104
+
105
+ end
@@ -0,0 +1,116 @@
1
+ require_relative 'helper'
2
+
3
+ class TestOntologies < Test::Unit::TestCase
4
+
5
+ context 'test ontology_ancestor' do
6
+
7
+ setup do
8
+ EnsemblRest.connect_db
9
+ end
10
+
11
+ should 'support a basic call and return the correct data' do
12
+ ont = Ontologies.ontology_ancestor 'GO:0005667'
13
+ assert ont.index 'GO:0000120' # GO:000566 should have this ancestor
14
+ assert ont.index 'GO:0000126' # and this
15
+ assert ont.index 'GO:0000127' # and this
16
+ assert ont.index 'GO:0097221' # and this one, too
17
+ end
18
+
19
+ should 'work both with GO and EFO IDs' do
20
+ assert_nothing_raised do
21
+ Ontologies.ontology_ancestor 'GO:0005667'
22
+ Ontologies.ontology_ancestor 'EFO:0000493'
23
+ end
24
+ end
25
+
26
+ sleep(1)
27
+
28
+ end
29
+
30
+
31
+ context 'test ontology_ancestor_chart' do
32
+
33
+ setup do
34
+ EnsemblRest.connect_db
35
+ end
36
+
37
+ should 'support a basic call and return the correct data' do
38
+ ont = Ontologies.ontology_ancestor_chart 'GO:0005667'
39
+ assert ont.index 'GO:0005575' # GO:0005667 should have this ancestor
40
+ assert ont.index 'GO:0005622' # and this
41
+ assert ont.index 'GO:0005623' # and this
42
+ assert ont.index 'GO:0005654' # and this one, too
43
+ end
44
+
45
+ sleep(1)
46
+
47
+ end
48
+
49
+
50
+ context 'test ontology_descendants' do
51
+
52
+ setup do
53
+ EnsemblRest.connect_db
54
+ end
55
+
56
+ should 'support a basic call and return the correct data' do
57
+ ont = Ontologies.ontology_descendents 'GO:0005667'
58
+ assert ont.index 'GO:0043234' # GO:0005667 should have this descendent
59
+ assert ont.index 'GO:0044451' # and this
60
+ assert ont.index 'GO:0005654' # and this
61
+ assert ont.index 'GO:0043231' # and this one, too
62
+ end
63
+
64
+ should 'support the subset parameter' do
65
+ ont1 = Ontologies.ontology_descendents 'GO:0005667', subset: 'goslim_generic'
66
+ ont2 = Ontologies.ontology_descendents 'GO:0005667'
67
+ assert ont1.size < ont2.size
68
+ end
69
+
70
+ sleep(1)
71
+
72
+ end
73
+
74
+
75
+ context 'test ontology_id' do
76
+
77
+ setup do
78
+ EnsemblRest.connect_db
79
+ end
80
+
81
+ should 'support a basic call and return the correct data' do
82
+ ont = Ontologies.ontology_id 'GO:0005667'
83
+ assert ont.index 'transcription factor complex' # what GO:0005667 is
84
+ assert ont.index 'GO:0000120' # a son of him
85
+ assert ont.index 'GO:0044451' # his parent
86
+ end
87
+
88
+ should 'return a ruby object' do
89
+ ont = Ontologies.ontology_id 'GO:0005667', response: 'ruby'
90
+ assert_instance_of Hash, ont
91
+ end
92
+
93
+ sleep(1)
94
+
95
+ end
96
+
97
+
98
+ context 'test ontology_name' do
99
+
100
+ setup do
101
+ EnsemblRest.connect_db
102
+ end
103
+
104
+ should 'support a basic call and return the correct data' do
105
+ ont = Ontologies.ontology_name 'transcription factor complex'
106
+ assert ont.index 'GO:0005667' # ID of transcription factor complex
107
+ assert ont.index 'GO:0000120' # a son of him
108
+ assert ont.index 'GO:0044451' # his parent
109
+ end
110
+
111
+ sleep(1)
112
+
113
+ end
114
+
115
+
116
+ end
@@ -0,0 +1,110 @@
1
+ require_relative 'helper'
2
+
3
+ class TestSequence < Test::Unit::TestCase
4
+
5
+ context 'sequence_id' do
6
+
7
+ setup do
8
+ EnsemblRest.connect_db
9
+ end
10
+
11
+ should 'support a basic call and return the correct data' do
12
+ seq = Sequence.sequence_id 'ENSG00000236597'
13
+ seq2 = Sequence.sequence_id 'ENSG00000228131'
14
+ assert_equal seq, 'CTAACTGGGGA'
15
+ assert_equal seq2.size, 18
16
+ end
17
+
18
+ should 'expand the sequence 10 pairs upstream' do
19
+ seq1 = Sequence.sequence_id 'ENSE00001154485',
20
+ response: 'text',
21
+ type: 'genomic'
22
+ seq2 = Sequence.sequence_id 'ENSE00001154485',
23
+ response: 'text',
24
+ type: 'genomic',
25
+ expand_5prime: 10
26
+ assert_equal 10 + seq1.size, seq2.size
27
+ assert_equal seq1, seq2[10..-1]
28
+ end
29
+
30
+ sleep(1)
31
+
32
+ should 'return a Bio::Sequence object' do
33
+ seq = Sequence.sequence_id 'ENSVPAG00000001567',
34
+ response: 'ruby'
35
+ assert_instance_of Bio::Sequence, seq
36
+ end
37
+
38
+ should 'raise an error: ID not found' do
39
+ assert_raises RuntimeError do
40
+ Sequence.sequence_id 'CCDS5863.1',
41
+ response: 'fasta',
42
+ object_type: 'transcript',
43
+ db_type: 'otherfeatures',
44
+ type: 'cds',
45
+ species: 'human'
46
+ end
47
+ end
48
+
49
+ should 'return multiple sequences' do
50
+ response = Sequence.sequence_id 'ENSG00000157764',
51
+ response: 'fasta',
52
+ multiple_sequences: true,
53
+ type: 'protein'
54
+ assert response.scan(/>\w{15,18}\n/).size > 1
55
+ end
56
+
57
+ sleep(1)
58
+
59
+ should 'return masked sequences' do
60
+ seq1 = Sequence.sequence_id 'ENST00000288602',
61
+ mask: 'hard'
62
+ seq2 = Sequence.sequence_id 'ENST00000288602',
63
+ mask: 'soft'
64
+ assert_equal 'N'*10, seq1[0..9]
65
+ assert_equal seq2[0..9].downcase, seq2[0..9]
66
+ end
67
+
68
+ end
69
+
70
+
71
+ context 'sequence_region' do
72
+
73
+ setup do
74
+ EnsemblRest.connect_db
75
+ end
76
+
77
+ should 'support a basic call and return the correct data' do
78
+ seq = Sequence.sequence_region 'human', 'X:1000000..1000100:1'
79
+ assert_equal 'GAAACAGCTACTTGG', seq[0..14]
80
+ assert_equal seq.size, 101
81
+ end
82
+
83
+ should 'expand the sequence upstream and downstream' do
84
+ seq = Sequence.sequence_region 'human',
85
+ 'X:1000000..1000100:1',
86
+ expand_3prime: 50,
87
+ expand_5prime: 50
88
+ assert_equal 201, seq.size
89
+ end
90
+
91
+ sleep(1)
92
+
93
+ should 'support json response' do
94
+ seq = Sequence.sequence_region 'human',
95
+ 'X:1000000..1000100:1',
96
+ response: 'json'
97
+ assert_nothing_raised { JSON.parse seq }
98
+ end
99
+
100
+ should 'return a Bio::Sequence object' do
101
+ seq = Sequence.sequence_region 'human',
102
+ 'X:1000000..1000100:1',
103
+ response: 'ruby'
104
+ assert_instance_of Bio::Sequence, seq
105
+ assert_equal 101, seq.to_s.size
106
+ end
107
+
108
+ end
109
+
110
+ end
@@ -0,0 +1,58 @@
1
+ require_relative 'helper'
2
+
3
+ class TestTaxonomy < Test::Unit::TestCase
4
+
5
+ context 'test taxonomy_id' do
6
+
7
+ setup do
8
+ EnsemblRest.connect_db
9
+ end
10
+
11
+ should 'support a basic call and return the correct data' do
12
+ tax = Taxonomy.taxonomy_id '9606'
13
+ assert tax.index 'Homo sapiens' # the species with ID 9606
14
+ assert tax.index 'Neandertal' # one if his sons
15
+ assert tax.index '63221' # neandertal has this ID
16
+ end
17
+
18
+ should 'work both with name and NBCI taxon id' do
19
+ assert_nothing_raised do
20
+ Taxonomy.taxonomy_id 'Homo sapiens'
21
+ Taxonomy.taxonomy_id '9606'
22
+ end
23
+ end
24
+
25
+ sleep(1)
26
+
27
+ end
28
+
29
+
30
+ context 'test taxonomy_classification' do
31
+
32
+ setup do
33
+ EnsemblRest.connect_db
34
+ end
35
+
36
+ should 'support a basic call and return the correct data' do
37
+ tax = Taxonomy.taxonomy_classification 'Homo'
38
+ assert tax.index '9605' # the ID of Homo
39
+ assert tax.index 'Homo sapiens' # one of his children
40
+ assert tax.index '9606' # has this ID
41
+ assert tax.index 'man' # and this common name
42
+ end
43
+
44
+ should 'work both with name and NBCI taxon id' do
45
+ assert_nothing_raised do
46
+ Taxonomy.taxonomy_classification 'Homo sapiens'
47
+ Taxonomy.taxonomy_classification '9606'
48
+ end
49
+ end
50
+
51
+ sleep(1)
52
+
53
+ end
54
+
55
+
56
+
57
+
58
+ end
@@ -0,0 +1,62 @@
1
+ require_relative 'helper'
2
+
3
+ class TestVariation < Test::Unit::TestCase
4
+
5
+ context 'test vep_id' do
6
+
7
+ setup do
8
+ EnsemblRest.connect_db
9
+ end
10
+
11
+ should 'support a basic call and return the correct data' do
12
+ var = Variation.vep_id 'COSM476', 'human'
13
+ assert var.index '7' # variation we asked for is on chromosome 7
14
+ assert var.index '140453136' # and starts here
15
+ end
16
+
17
+ should 'return the correct data' do
18
+ data = JSON.parse Variation.vep_id 'COSM476', 'human'
19
+ var = data['data'].first
20
+ assert var['name'] == 'COSM476'
21
+ assert var['is_somatic'] == 1
22
+ assert var['location']['start'] = 140453136
23
+ assert var['location']['end'] = 140453136
24
+ end
25
+
26
+ should 'support rs ID' do
27
+ var = Variation.vep_id 'rs116035550', 'human'
28
+ assert var.index '11' # variation we asked for is on chromosome 11
29
+ assert var.index '212464' # and starts here
30
+ end
31
+
32
+ sleep(1)
33
+
34
+ end
35
+
36
+
37
+ context 'test vep_region' do
38
+
39
+ setup do
40
+ EnsemblRest.connect_db
41
+ require 'rexml/document'
42
+ end
43
+
44
+ should 'support a basic call and return the correct data' do
45
+ var = Variation.vep_region 'C', '9:22125503-22125502:1', 'human'
46
+ assert var.index '9' # variation we asked for is on chromosome 7
47
+ assert var.index '2125503' # starts here
48
+ assert var.index '22125502' # and ends here
49
+ end
50
+
51
+ should 'return an xml object' do
52
+ var = Variation.vep_region 'C', '9:22125503-22125502:1', 'human',
53
+ response: 'xml'
54
+ assert_nothing_raised { REXML::Document.new var }
55
+ end
56
+
57
+ sleep(1)
58
+
59
+ end
60
+
61
+
62
+ end