annotate tests/test_riboplot.py @ 8:844eb8c36f32

Add help section in xml and update usage documentation
author Vimalkumar Velayudhan <vimal@biotechcoder.com>
date Mon, 17 Aug 2015 10:27:58 +0100
parents 096c6bbf4a04
children 61c47a1d6a7a
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
1 import os
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
2 import shutil
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
3 import logging
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
4 import unittest
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
5 import tempfile
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
6
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
7 from riboplot import ribocore, riboplot
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
8
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
9 # use testing configuration
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
10 CONFIG = riboplot.CONFIG = riboplot.config.TestingConfig()
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
11 logging.disable(logging.CRITICAL)
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
12
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
13 RIBO_FILE = os.path.join(CONFIG.DATA_DIR, '5hRPFsorted.bam')
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
14 RNA_FILE = os.path.join(CONFIG.DATA_DIR, '5hmRNAsorted.bam')
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
15 TRANSCRIPT_NAME = 'gi|148357119|ref|NM_001098396.1|'
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
16 TRANSCRIPTOME_FASTA = os.path.join(CONFIG.DATA_DIR, 'zebrafish.fna')
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
17 TRANSCRIPTOME_FASTA_MINUS1 = os.path.join(CONFIG.DATA_DIR, 'zebrafish_minus1.fna')
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
18
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
19
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
20 class CheckArgumentsTestCase(unittest.TestCase):
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
21 """Check if all arguments sent on the command line are valid."""
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
22 parser = riboplot.create_parser()
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
23
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
24 def test_bedtools_missing(self):
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
25 """If bedtools is not in PATH, raise an error."""
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
26 args = self.parser.parse_args(
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
27 ['-b', RIBO_FILE, '-f', TRANSCRIPTOME_FASTA, '-t', TRANSCRIPT_NAME, '-n', RNA_FILE])
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
28 save_path = os.environ['PATH']
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
29 os.environ['PATH'] = ''
7
096c6bbf4a04 Bugfix: (ribocounts) Read length was sent as rnafile argument in check_optional_arguments
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents: 6
diff changeset
30 self.assertRaises(OSError, ribocore.check_optional_arguments, ribo_file=args.ribo_file, rna_file=args.rna_file)
3
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
31 os.environ['PATH'] = save_path
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
32
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
33 def test_is_bam_valid(self):
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
34 """Test if BAM file is valid."""
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
35 valid = ribocore.is_bam_valid(RIBO_FILE)
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
36 self.assertTrue(valid)
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
37
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
38 # test with a FASTA file (which is not BAM)
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
39 self.assertRaises(ValueError, ribocore.is_bam_valid, TRANSCRIPTOME_FASTA)
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
40
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
41 def test_bam_has_index(self):
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
42 """Check if BAM file has an index."""
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
43 # RPF file has an index
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
44 has_index = ribocore.bam_has_index(RIBO_FILE)
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
45 self.assertTrue(has_index)
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
46
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
47 # RNA file doesn't have an index
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
48 has_index = ribocore.bam_has_index(RNA_FILE)
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
49 self.assertFalse(has_index)
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
50
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
51 def test_create_bam_index(self):
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
52 """Index a BAM file."""
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
53 ribocore.create_bam_index(RNA_FILE)
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
54
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
55 # check if index exists
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
56 has_index = ribocore.bam_has_index(RNA_FILE)
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
57 self.assertTrue(has_index)
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
58
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
59 # remove index
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
60 os.remove('{}.bai'.format(RNA_FILE))
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
61
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
62 def test_valid_read_length(self):
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
63 """Read length should be a valid integer."""
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
64 args = self.parser.parse_args(['-b', RIBO_FILE, '-f', TRANSCRIPTOME_FASTA,
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
65 '-t', TRANSCRIPT_NAME, '-l', '28'])
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
66 ribocore.check_optional_arguments(ribo_file=args.ribo_file, read_length=args.read_length)
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
67
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
68 def test_invalid_read_length(self):
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
69 """An error is raised if an invalid read length is used."""
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
70 args = self.parser.parse_args(['-b', RIBO_FILE, '-f', TRANSCRIPTOME_FASTA, '-t', TRANSCRIPT_NAME,
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
71 '-l', '-1']) # invalid read length -1
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
72 self.assertRaises(ribocore.ArgumentError, ribocore.check_optional_arguments,
7
096c6bbf4a04 Bugfix: (ribocounts) Read length was sent as rnafile argument in check_optional_arguments
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents: 6
diff changeset
73 ribo_file=args.ribo_file, read_length=args.read_length)
3
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
74
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
75 args = self.parser.parse_args(['-b', RIBO_FILE, '-f', TRANSCRIPTOME_FASTA, '-t', TRANSCRIPT_NAME,
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
76 '-l', '100']) # invalid read length 100
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
77 self.assertRaises(ribocore.ArgumentError, ribocore.check_optional_arguments,
7
096c6bbf4a04 Bugfix: (ribocounts) Read length was sent as rnafile argument in check_optional_arguments
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents: 6
diff changeset
78 ribo_file=args.ribo_file, read_length=args.read_length)
3
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
79
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
80 def test_valid_read_offset(self):
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
81 """Read offset should be positive."""
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
82 args = self.parser.parse_args(['-b', RIBO_FILE, '-f', TRANSCRIPTOME_FASTA, '-t', TRANSCRIPT_NAME,
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
83 '-s', '-1']) # invalid read offset -1
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
84 self.assertRaises(ribocore.ArgumentError, ribocore.check_optional_arguments,
7
096c6bbf4a04 Bugfix: (ribocounts) Read length was sent as rnafile argument in check_optional_arguments
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents: 6
diff changeset
85 ribo_file=args.ribo_file, read_offset=args.read_offset)
3
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
86
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
87 def test_is_fasta_valid(self):
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
88 """A valid FASTA file can be opened with pysam.FastaFile."""
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
89 self.assertTrue(ribocore.is_fasta_valid(TRANSCRIPTOME_FASTA))
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
90
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
91 def test_missing_transcript_in_fasta(self):
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
92 """If a transcript is missing in FASTA, an error is raised."""
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
93 args = self.parser.parse_args(['-b', RIBO_FILE, '-f', TRANSCRIPTOME_FASTA, '-t', TRANSCRIPT_NAME]) # invalid read offset -1
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
94 self.assertRaises(ribocore.ArgumentError, ribocore.check_required_arguments,
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
95 args.ribo_file, args.transcriptome_fasta, 'hello')
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
96
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
97 def test_missing_transcript_in_bam(self):
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
98 """If a transcript is missing in BAM, an error is raised."""
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
99 # testing with an unrelated BAM file
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
100 args = self.parser.parse_args(['-b', '/home/vimal/tmp/empty_tp/RiboSeq.bam', '-f', TRANSCRIPTOME_FASTA,
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
101 '-t', TRANSCRIPT_NAME])
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
102 self.assertRaises(ribocore.ArgumentError, ribocore.check_required_arguments, args.ribo_file,
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
103 args.transcriptome_fasta, args.transcript_name)
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
104
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
105
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
106 class RNACountsTestCase(unittest.TestCase):
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
107
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
108 def test_get_rna_counts(self):
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
109 """Test get RNA counts for transcript from RNA-Seq BAM file. Assumes bedtools is installed."""
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
110 counts = riboplot.get_rna_counts(RNA_FILE, TRANSCRIPT_NAME)
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
111 self.assertIsInstance(counts, dict)
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
112 self.assertTrue(len(counts) > 0)
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
113
6
2ffa8172dce1 Tests for valid RNA Seq bam and warnings when there are no RNA counts
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents: 3
diff changeset
114 def test_invalid_rna_file(self):
2ffa8172dce1 Tests for valid RNA Seq bam and warnings when there are no RNA counts
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents: 3
diff changeset
115 """If an invalid RNA file is provided, generate an error message"""
2ffa8172dce1 Tests for valid RNA Seq bam and warnings when there are no RNA counts
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents: 3
diff changeset
116 # using transcriptome FASTA file as the invalid RNA file for test
2ffa8172dce1 Tests for valid RNA Seq bam and warnings when there are no RNA counts
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents: 3
diff changeset
117 parser = riboplot.create_parser()
2ffa8172dce1 Tests for valid RNA Seq bam and warnings when there are no RNA counts
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents: 3
diff changeset
118 args = parser.parse_args(['-b', RIBO_FILE, '-f', TRANSCRIPTOME_FASTA, '-t', TRANSCRIPT_NAME, '-n', TRANSCRIPTOME_FASTA])
7
096c6bbf4a04 Bugfix: (ribocounts) Read length was sent as rnafile argument in check_optional_arguments
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents: 6
diff changeset
119 self.assertRaises(ValueError, ribocore.check_optional_arguments, ribo_file=args.ribo_file, rna_file=args.rna_file)
3
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
120
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
121 class RiboPlotTestCase(unittest.TestCase):
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
122
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
123 def test_get_codon_positions(self):
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
124 """Get codon positions in all frames given a sequence."""
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
125 # the positions on this sequence were calculated manually.
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
126 fasta = ('AACCGGAGCACCCAGAGAAAACCCACGCAAACGCAGGGAGAATTTGCAAACTCCACACA'
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
127 'GAAATGCCAGCTGATCCAGCCGAGCCTCGAGTCAGCATCCTTGCTTGTTGGATGCCTGA'
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
128 'TTGCAGTTCAACTCCAAACTCAGTTGGACCAGCTGATCAGTG')
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
129 codon_positions = riboplot.get_start_stops(fasta)
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
130 expected = {1: {'starts': [], 'stops': []},
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
131 2: {'starts': [], 'stops': [71, 116, 152]},
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
132 3: {'starts': [63, 111], 'stops': []}}
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
133 self.assertEqual(codon_positions, expected)
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
134
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
135 def test_valid_riboplot_run(self):
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
136 """A good riboplot run"""
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
137 output_dir = tempfile.mkdtemp()
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
138 print 'Output path is {}'.format(output_dir)
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
139 parser = riboplot.create_parser()
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
140 args = parser.parse_args(['-b', RIBO_FILE, '-f', TRANSCRIPTOME_FASTA, '-t', TRANSCRIPT_NAME,
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
141 '-o', output_dir])
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
142 riboplot.main(args)
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
143 for fname in ('riboplot.png', 'riboplot.svg', 'RiboCounts.csv'):
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
144 self.assertTrue(os.path.exists(os.path.join(output_dir, fname)))
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
145 shutil.rmtree(output_dir)
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
146
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
147 def test_transcript_with_no_counts(self):
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
148 """If the transcript has no ribocounts, no plot should be produced."""
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
149 transcript = 'gi|62955616|ref|NM_001017822.1|' # has no reads
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
150 output_dir = tempfile.mkdtemp()
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
151 parser = riboplot.create_parser()
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
152 args = parser.parse_args(['-b', RIBO_FILE, '-f', TRANSCRIPTOME_FASTA, '-t', transcript, '-o', output_dir])
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
153 self.assertRaises(ribocore.RiboPlotError, riboplot.main, args)
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
154 for fname in ('riboplot.png', 'riboplot.svg', 'RiboCounts.csv'):
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
155 self.assertFalse(os.path.exists(os.path.join(output_dir, fname)))
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
156 shutil.rmtree(output_dir)
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
157
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
158 @unittest.skip('todo')
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
159 def test_get_ribo_counts(self):
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
160 """Get RiboSeq read counts"""
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
161 pass
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
162
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
163 @unittest.skip('todo')
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
164 def test_write_ribo_counts(self):
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
165 """Write RiboSeq read counts as CSV."""
8e1efafa6277 Updated version
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff changeset
166 pass