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