1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92
|
#!/usr/bin/env python
from os import remove
from cogent.util.unit_test import TestCase, main
from cogent.app.carnac import Carnac
__author__ = "Shandy Wikman"
__copyright__ = "Copyright 2007-2012, The Cogent Project"
__contributors__ = ["Shandy Wikman"]
__license__ = "GPL"
__version__ = "1.5.3"
__maintainer__ = "Shandy Wikman"
__email__ = "ens01svn@cs.umu.se"
__status__ = "Development"
class CarnacTest(TestCase):
"""Tests for Carnac application controller"""
def setUp(self):
self.input = carnac_input
def test_stdout_input_as_lines(self):
"""Test carnac stdout input as lines
If error check computation time in carnac_stdout!!
Usually 00:00:00 but on slower systems may be different"""
c = Carnac(InputHandler='_input_as_lines')
exp = '%s\n' % '\n'.join([str(i).strip('\n') for i in carnac_stdout])
res = c(self.input)
obs = res['StdOut'].read()
self.assertEqual(obs,exp)
res.cleanUp()
def test_stdout_input_as_string(self):
"""Test carnac stdout input as string
If error check computation time in carnac_stdout!!
Usually 00:00:00 but on slower systems may be different"""
c = Carnac()
exp = '%s\n' % '\n'.join([str(i).strip('\n') for i in carnac_stdout])
f = open('/tmp/input.fasta','w')
txt = '\n'.join([str(i).strip('\n') for i in self.input])
f.write(txt)
f.close()
res = c('/tmp/input.fasta')
obs = res['StdOut'].read()
self.assertEqual(obs,exp)
res.cleanUp()
remove('/tmp/input.fasta')
def test_get_result_path(self):
"""Tests carnac result path"""
c = Carnac(InputHandler='_input_as_lines')
res = c(self.input)
self.assertEqualItems(res.keys(),['StdOut','StdErr','ExitStatus',\
'ct1','eq1','ct2','eq2','out_seq1','out_seq2','graph','align'])
self.assertEqual(res['ExitStatus'],0)
assert res['ct1'] is not None
assert res['eq1'] is not None
assert res['out_seq1'] is not None
res.cleanUp()
carnac_input = ['>seq1\n',
'GGCCACGTAGCTCAGTCGGTAGAGCAAAGGACTGAAAATCCTTGTGTCGTTGGTTCAATTCCAACCGTGGCCACCA\n', '>seq2\n',
'GCCAGATAGCTCAGTCGGTAGAGCGTTCGCCTGAAAAGTGAAAGGTCGCCGGTTCGATCCCGGCTCTGGCCACCA\n']
carnac_stdout = [' Sequences \n', '\n',
' sequence 1 (length 76, gc 52): seq1\n',
' sequence 2 (length 75, gc 60): seq2\n', '\n',
' Finding all potential stems \n', '\n',
' sequence 1 : 12 potential stems\n',
' sequence 2 : 18 potential stems\n', '\n', ' Pairwise foldings \n', '\n',
' seq 1 / seq 2: 3 vs 3 stems\n', '\n',
' Combination of pairwise foldings: 6 classes of stems in 3 connex components\n', '\n',
' sequence 1: 1 cofoldings with 12 stems -> 3 selected stems + 2 remaining stems \n',
' sequence 2: 1 cofoldings with 18 stems -> 3 selected stems + 1 remaining stems \n', '\n', ' Overall computation time : 00:00:00\n', '\n',
' Parameter values :\n', '\n', ' AP_THD 8\n',
' SUB -5\n', ' SIZE_HAIRPIN 3\n', ' CORRECT_THD 1\n',
' INI_THD -500\n', ' DIST_1 50\n', ' DIST_2 300\n',
' Energy tresholds : -800 - -1300\n',
' Allowing single hairpins : no\n', ' SIZE_MAX_HP 8\n',
' THD_HP -1500\n', ' FLT 1\n']
if __name__ == '__main__':
main()
|