Mercurial > repos > biotechcoder > riboseqr_wrapper
comparison tests/test_riboseqr.py @ 0:e01de823e919 draft default tip
Uploaded
author | biotechcoder |
---|---|
date | Fri, 01 May 2015 05:41:51 -0400 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:e01de823e919 |
---|---|
1 """riboSeqR Galaxy unit tests""" | |
2 import sys | |
3 import unittest | |
4 import rpy2.robjects as robjects | |
5 from riboseqr import prepare, triplet, metagene, ribosome_profile, utils | |
6 | |
7 | |
8 R = robjects.r | |
9 DATA_DIR = 'test-data' | |
10 RIBO_FILES = ', '.join( | |
11 '{0}/{1}'.format(DATA_DIR, item) for item in | |
12 ['chlamy236_plus_deNovo_plusOnly_Index17', | |
13 'chlamy236_plus_deNovo_plusOnly_Index3', | |
14 'chlamy236_plus_deNovo_plusOnly_Index5', | |
15 'chlamy236_plus_deNovo_plusOnly_Index7']) | |
16 | |
17 RNA_FILES = ', '.join( | |
18 '{0}/{1}'.format(DATA_DIR, item) for item in | |
19 ['chlamy236_plus_deNovo_plusOnly_Index10', | |
20 'chlamy236_plus_deNovo_plusOnly_Index12', | |
21 'chlamy236_plus_deNovo_plusOnly_Index14', | |
22 'chlamy236_plus_deNovo_plusOnly_Index16']) | |
23 | |
24 FASTA_FILE = '{0}/{1}'.format(DATA_DIR, 'rsem_chlamy236_deNovo.transcripts.fa') | |
25 | |
26 | |
27 class PrepareTestCase(unittest.TestCase): | |
28 | |
29 def test_process_riboseqr_input(self): | |
30 """Given riboSeqR format input files (bowtie output), save ribodata to \ | |
31 an R data file. | |
32 | |
33 """ | |
34 do_prepare() | |
35 R('load("{}/Robjects.rda")'.format(DATA_DIR)) | |
36 ribodat, ribodat_ref = R['riboDat'], R['riboDat_REF'] | |
37 | |
38 self.assertEqual( | |
39 '{}'.format(ribodat), '{}'.format(ribodat_ref), | |
40 'Generated RiboDat object must be equal to the reference') | |
41 | |
42 def test_process_args(self): | |
43 """Test processing arguments. """ | |
44 # "ATG" -> c("ATG") | |
45 rs = utils.process_args('ATG', ret_mode='charvector') | |
46 self.assertEqual(rs, 'c("ATG")','Return string as a character vector.') | |
47 | |
48 # stop codons "TAG,TAA,TGA" -> c("TAG", "TAA", "TGA"). Also | |
49 # replicate names, seqnames. | |
50 rs = utils.process_args('TAG,TAA,TGA', ret_mode='charvector') | |
51 self.assertEqual( | |
52 rs, "c('TAG', 'TAA', 'TGA')", | |
53 'Return comma separated strings as a character vector.') | |
54 | |
55 # "" -> None | |
56 rs = utils.process_args('') | |
57 self.assertIsNone(rs, 'Return empty string as None.') | |
58 | |
59 # "27,28" -> c(27, 28) | |
60 rs = utils.process_args("27,28", ret_type='int', ret_mode='charvector') | |
61 self.assertEqual( | |
62 rs, "c(27, 28)", 'Return number strings as a character vector.') | |
63 | |
64 # "27,28" -> [27, 28] | |
65 rs = utils.process_args("27,28", ret_type='int', ret_mode='list') | |
66 self.assertEqual(rs, [27, 28], 'Return number strings as a list.') | |
67 | |
68 # "0,2" -> list(0,2) | |
69 rs = utils.process_args("0,2", ret_type='int', ret_mode='listvector') | |
70 self.assertEqual( | |
71 rs, "list(0, 2)", 'Return number strings as a list vector.') | |
72 | |
73 # "50" -> 50 | |
74 rs = utils.process_args("50", ret_type='int') | |
75 self.assertEqual(rs, 50, 'Return number string as a number.') | |
76 | |
77 # "-200" -> -200 | |
78 rs = utils.process_args("-200", ret_type='int') | |
79 self.assertEqual(rs, -200, 'Return number string as a number.') | |
80 | |
81 # "TRUE" -> TRUE | |
82 rs = utils.process_args("TRUE", ret_type='bool') | |
83 self.assertEqual(rs, 'TRUE', 'Return bool string as bool.') | |
84 | |
85 # 'chlamy17,chlamy3' -> 'chlamy17,chlamy3' for ribo and rna names | |
86 rs = utils.process_args('chlamy17,chlamy3') | |
87 self.assertEqual(rs, 'chlamy17,chlamy3', 'Return csv string as string.') | |
88 | |
89 # 'chlamy17.idx, chlamy3.idx' -> ['chlamy17.idx', 'chlamy3.idx'] | |
90 rs = utils.process_args('chlamy17.idx, chlamy3.idx', ret_mode='list') | |
91 self.assertEqual(rs, ['chlamy17.idx', 'chlamy3.idx'], | |
92 'Return files as a list.') | |
93 | |
94 | |
95 class TripletTestCase(unittest.TestCase): | |
96 | |
97 def test_find_periodicity(self): | |
98 """Test triplet periodicity. """ | |
99 do_prepare() | |
100 do_periodicity() | |
101 fcs, fs, fasta_cds = R['fCs'], R['fS'], R['fastaCDS'] | |
102 | |
103 R('load("{}/Robjects.rda")'.format(DATA_DIR)) | |
104 fcs_ref, fs_ref, fasta_cds_ref = ( | |
105 R['fCs_REF'], R['fS_REF'], R['fastaCDS_REF']) | |
106 | |
107 self.assertEqual( | |
108 (str(fcs), str(fs), str(fasta_cds)), | |
109 (str(fcs_ref), str(fs_ref), str(fasta_cds_ref)), | |
110 msg='Generated fCs, fS and fastaCDS objects must be equal ' | |
111 'to reference') | |
112 | |
113 | |
114 class MetageneTestCase(unittest.TestCase): | |
115 | |
116 def test_do_analysis(self): | |
117 """Test metagene analysis. """ | |
118 R('load("{}/Robjects.rda")'.format(DATA_DIR)) | |
119 do_prepare() | |
120 do_periodicity() | |
121 do_metagene() | |
122 | |
123 self.assertEqual(str(R['ffCs']), | |
124 str(R['ffCs_REF']), 'ffCs must be equal to reference') | |
125 | |
126 | |
127 def do_prepare(): | |
128 """Run the prepare step to generate riboDat from input files.""" | |
129 prepare.generate_ribodata( | |
130 ribo_files=RIBO_FILES, rna_files=RNA_FILES, replicate_names='WT,WT,M,M', | |
131 rdata_save='/tmp/Prepare.rda', sam_format=False, output_path="/tmp", | |
132 html_file='/tmp/Prepare-report.html') | |
133 | |
134 | |
135 def do_periodicity(): | |
136 """Run the periodicity step""" | |
137 triplet.find_periodicity( | |
138 rdata_load='/tmp/Prepare.rda', start_codons='ATG', | |
139 stop_codons='TAG,TAA,TGA', fasta_file=FASTA_FILE, | |
140 include_lengths='25:30', analyze_plot_lengths='26:30', | |
141 rdata_save='/tmp/Periodicity.rda', output_path="/tmp", | |
142 html_file='/tmp/Periodicity-report.html') | |
143 | |
144 | |
145 def do_metagene(): | |
146 """Run the metagene step""" | |
147 metagene.do_analysis( | |
148 rdata_load='/tmp/Periodicity.rda', selected_lengths='27,28', | |
149 selected_frames='1,0', hit_mean='50', unique_hit_mean='10', | |
150 ratio_check='TRUE', min5p='-20', max5p='200', min3p='-200', max3p='20', | |
151 cap='200', plot_title='Metagene analysis', plot_lengths='27', | |
152 rdata_save='/tmp/Metagene.rda', output_path="/tmp", | |
153 html_file='/tmp/Metagene-report.html') |