Mercurial > repos > chrisb > gap_all_glycan_tools
diff extract_display_features/rings_fingerprinter/test_fingerprinter.py @ 0:89592faa2875 draft
Uploaded
author | chrisb |
---|---|
date | Wed, 23 Mar 2016 14:35:56 -0400 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/extract_display_features/rings_fingerprinter/test_fingerprinter.py Wed Mar 23 14:35:56 2016 -0400 @@ -0,0 +1,190 @@ +__license__ = "MIT" + +import unittest +import post_fingerprinter as fp + + +class SimpleUnitTest(unittest.TestCase): + def setUp(self): + import os + + self.kcinput = {"rings": """ENTRY G00015 Glycan +NODE 8 + 1 Asn 20 0 + 2 GlcNAc 12 0 + 3 GlcNAc 3 0 + 4 Man -5 0 + 5 Man -12 5 + 6 Man -12 -5 + 7 GlcNAc -20 5 + 8 GlcNAc -20 -5 +EDGE 7 + 1 2:b1 1 + 2 3:b1 2:4 + 3 4:b1 3:4 + 4 5:a1 4:6 + 5 6:a1 4:3 + 6 7:b1 5:2 + 7 8:b1 6:2 +/// +ENTRY G00016 Glycan +NODE 9 + 1 Asn 20 3 + 2 GlcNAc 12 3 + 3 LFuc 4 8 + 4 GlcNAc 3 -2 + 5 Man -5 -2 + 6 Man -12 3 + 7 Man -12 -7 + 8 GlcNAc -20 3 + 9 GlcNAc -20 -7 +EDGE 8 + 1 2:b1 1 + 2 3:a1 2:6 + 3 4:b1 2:4 + 4 5:b1 4:4 + 5 6:a1 5:6 + 6 7:a1 5:3 + 7 8:b1 6:2 + 8 9:b1 7:2 +/// +ENTRY G00017 Glycan +NODE 11 + 1 Asn 24 3 + 2 GlcNAc 14 3 + 3 LFuc 7 8 + 4 GlcNAc 6 -2 + 5 Man -2 -2 + 6 Man -8 3 + 7 Man -8 -7 + 8 GlcNAc -16 3 + 9 GlcNAc -16 -7 + 10 Gal -24 3 + 11 Gal -24 -7 +EDGE 10 + 1 2:b1 1 + 2 3:a1 2:6 + 3 4:b1 2:4 + 4 5:b1 4:4 + 5 6:a1 5:6 + 6 7:a1 5:3 + 7 8:b1 6:2 + 8 9:b1 7:2 + 9 10:b1 8:4 + 10 11:b1 9:4 +/// +ENTRY G00018 Glycan +NODE 13 + 1 Asn 28 3 + 2 GlcNAc 18 3 + 3 LFuc 10 8 + 4 GlcNAc 9 -2 + 5 Man 1 -2 + 6 Man -5 4 + 7 Man -5 -8 + 8 GlcNAc -13 4 + 9 GlcNAc -13 -8 + 10 Gal -21 4 + 11 Gal -21 -8 + 12 Neu5Ac -29 4 + 13 Neu5Ac -29 -8 +EDGE 12 + 1 2:b1 1 + 2 3:a1 2:6 + 3 4:b1 2:4 + 4 5:b1 4:4 + 5 6:a1 5:6 + 6 7:a1 5:3 + 7 8:b1 6:2 + 8 9:b1 7:2 + 9 10:b1 8:4 + 10 11:b1 9:4 + 11 12:a2 10:6 + 12 13:a2 11:6 +/// +ENTRY G00019 Glycan +NODE 9 + 1 Asn 20 0 + 2 GlcNAc 12 0 + 3 GlcNAc 3 0 + 4 Man -5 0 + 5 Man -12 5 + 6 Man -12 -5 + 7 GlcNAc -15 0 + 8 GlcNAc -20 5 + 9 GlcNAc -20 -5 +EDGE 8 + 1 2:b1 1 + 2 3:b1 2:4 + 3 4:b1 3:4 + 4 5:a1 4:6 + 5 6:a1 4:3 + 6 7:b1 4:4 + 7 8:b1 5:2 + 8 9:b1 6:2 +/// +ENTRY G00020 Glycan +NODE 9 + 1 Asn 20 3 + 2 GlcNAc 11 3 + 3 GlcNAc 2 3 + 4 Man -6 3 + 5 Man -13 9 + 6 Man -13 -3 + 7 GlcNAc -21 9 + 8 GlcNAc -21 2 + 9 GlcNAc -21 -8 +EDGE 8 + 1 2:b1 1 + 2 3:b1 2:4 + 3 4:b1 3:4 + 4 5:a1 4:6 + 5 6:a1 4:3 + 6 7:b1 5:2 + 7 8:b1 6:4 + 8 9:b1 6:2 +/// +""" + } + self.similaritymatrix = { + "rings": """G00015\t 1.000000\t 0.777778\t 0.460526\t 0.304348\t 0.564516\t 0.636364\t \nG00016\t 0.777778\t 1.000000\t 0.592105\t 0.391304\t 0.486111\t 0.538462\t \nG00017\t 0.460526\t 0.592105\t 1.000000\t 0.660870\t 0.339806\t 0.378947\t \nG00018\t 0.304348\t 0.391304\t 0.660870\t 1.000000\t 0.255319\t 0.268657\t \nG00019\t 0.564516\t 0.486111\t 0.339806\t 0.255319\t 1.000000\t 0.444444\t \nG00020\t 0.636364\t 0.538462\t 0.378947\t 0.268657\t 0.444444\t 1.000000\t """ + } + os.environ["http_proxy"] = "" # work around for IOError: [Errno url error] invalid proxy for http: + pass + + def tearDown(self): + pass + + def test_kcf_input(self): + import StringIO + + kchandle = StringIO.StringIO(''.join(self.kcinput["rings"])) + h = fp.post_rings_fingerprinter(kchandle) + # print h + d = fp.extract_dendro_from_fingerprinter_output(h) + # print d + self.assertIn(self.similaritymatrix["rings"], h) + self.assertIn("|||G00015_G00016|_|G00019_G00020||_|G00017_G00018||", h) + self.assertIn("|||G00015_G00016|_|G00019_G00020||_|G00017_G00018||", d) + + def test_empty_stream(self): + with self.assertRaises(IOError): + fp.post_rings_fingerprinter(None) + with self.assertRaises(IOError): + fp.post_rings_fingerprinter([]) + with self.assertRaises(IOError): + fp.post_rings_fingerprinter("") + with self.assertRaises(IOError): + fp.extract_dendro_from_fingerprinter_output(None) + with self.assertRaises(IOError): + fp.extract_dendro_from_fingerprinter_output([]) + with self.assertRaises(IOError): + fp.extract_dendro_from_fingerprinter_output("") + + +def run_tests(): + unittest.main() + + +if __name__ == '__main__': + run_tests()