comparison tests/test_plot.py @ 0:ca58e9466cbf

First commit
author Vimalkumar Velayudhan <vimal@biotechcoder.com>
date Mon, 29 Jun 2015 16:38:36 +0100
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:ca58e9466cbf
1 import os
2 import logging
3 import unittest
4
5 from riboplot import core, config, plot
6
7 # use testing configuration
8 CONFIG = plot.CONFIG = config.TestingConfig()
9 logging.disable(logging.CRITICAL)
10
11 RIBO_FILE = os.path.join(CONFIG.DATA_DIR, '5hRPFsorted.bam')
12 RNA_FILE = os.path.join(CONFIG.DATA_DIR, '5hmRNAsorted.bam')
13 TRANSCRIPT_NAME = 'gi|148357119|ref|NM_001098396.1|'
14 TRANSCRIPTOME_FASTA = os.path.join(CONFIG.DATA_DIR, 'zebrafish.fna')
15 TRANSCRIPTOME_FASTA_MINUS1 = os.path.join(CONFIG.DATA_DIR, 'zebrafish_minus1.fna')
16
17 class RNACountsTestCase(unittest.TestCase):
18
19 def test_get_rna_counts(self):
20 """Test get RNA counts for transcript from RNA-Seq BAM file"""
21 counts = plot.get_rna_counts(rna_file=RNA_FILE, transcript_name=TRANSCRIPT_NAME)
22 self.assertIsInstance(counts, dict)
23 self.assertTrue(len(counts) > 0)
24
25 def test_missing_rna_file(self):
26 """Exit with error if RNA BAM file does not exist. """
27 self.assertRaises(OSError, plot.get_rna_counts, rna_file='{}.absent'.format(RNA_FILE),
28 transcript_name=TRANSCRIPT_NAME)
29
30 def test_missing_bedtools(self):
31 """Exit with error if bedtools is missing."""
32 # reset env temporarily
33 paths = os.environ['PATH']
34 os.environ['PATH'] = ''
35 self.assertRaises(OSError, plot.get_rna_counts, rna_file=RNA_FILE,
36 transcript_name=TRANSCRIPT_NAME)
37 os.environ['PATH'] = paths
38
39
40 class PlotTestCase(unittest.TestCase):
41
42 def test_get_codon_positions(self):
43 """Test get codon positions. """
44 # input is the sequence obtained from get_transcript so no new lines.
45 fasta = ('AACCGGAGCACCCAGAGAAAACCCACGCAAACGCAGGGAGAATTTGCAAACTCCACACA'
46 'GAAATGCCAGCTGATCCAGCCGAGCCTCGAGTCAGCATCCTTGCTTGTTGGATGCCTGA'
47 'TTGCAGTTCAACTCCAAACTCAGTTGGACCAGCTGATCAGTG')
48 codon_positions = plot.get_start_stops(fasta)
49 expected = {1: {'starts': [], 'stops': []},
50 2: {'starts': [], 'stops': [71, 116, 152]},
51 3: {'starts': [63, 111], 'stops': []}}
52 self.assertEqual(codon_positions, expected)