diff SMART/Java/Python/test/Test_F_ClusterizeByTags.py @ 18:94ab73e8a190

Uploaded
author m-zytnicki
date Mon, 29 Apr 2013 03:20:15 -0400
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/Java/Python/test/Test_F_ClusterizeByTags.py	Mon Apr 29 03:20:15 2013 -0400
@@ -0,0 +1,144 @@
+import unittest, os, os.path
+from SMART.Java.Python.misc import Utils
+from SMART.Java.Python.ClusterizeByTags import ClusterizeByTags
+
+class Test_F_ClusterizeByTags(unittest.TestCase):
+
+    def setUp(self):
+        self._inputFileName     = "inputFileTest.gff3"
+        self._expOutputFileName = "expOutput.gff3"
+        self._outputFileName    = "output.gff3"
+        
+    def tearDown(self):
+        for file in (self._inputFileName, self._expOutputFileName, self._outputFileName):
+            if os.path.exists(file):
+                os.remove(file)
+
+    def test_diff_simple(self):
+        handle = open(self._inputFileName, "w")
+        handle.write("""chr1\tS-MART\ttest1.1\t100\t200\t.\t+\t.\tName=test1.1;score=10;ID=test1.1
+chr1\tS-MART\ttest1.2\t300\t400\t.\t+\t.\tName=test1.2;score=15;ID=test1.2
+chr1\tS-MART\ttest1.3\t500\t600\t.\t+\t.\tName=test1.3;score=15;ID=test1.3
+chr1\tS-MART\ttest1.4\t700\t800\t.\t+\t.\tName=test1.4;score=100;ID=test1.4
+chr1\tS-MART\ttest1.5\t900\t1000\t.\t+\t.\tName=test1.5;score=110;ID=test1.5
+chr1\tS-MART\ttest1.6\t1100\t1200\t.\t+\t.\tName=test1.6;score=105;ID=test1.6
+""")
+        handle.close()
+        handle = open(self._expOutputFileName, "w")
+        handle.write("""chr1	S-MART	test1.1	100	600	40	+	.	nbElements=3.000000;ID=test1.1;Name=test1.1--test1.2--test1.3
+chr1	S-MART	exon	100	200	10	+	.	ID=test1.1-exon1;Name=test1.1--test1.2--test1.3-exon1;Parent=test1.1
+chr1	S-MART	exon	300	400	15	+	.	ID=test1.1-exon2;Name=test1.1--test1.2--test1.3-exon2;Parent=test1.1
+chr1	S-MART	exon	500	600	15	+	.	ID=test1.1-exon3;Name=test1.1--test1.2--test1.3-exon3;Parent=test1.1
+chr1	S-MART	test1.4	700	1200	315	+	.	nbElements=3.000000;ID=test1.4;Name=test1.4--test1.5--test1.6
+chr1	S-MART	exon	700	800	100	+	.	ID=test1.4-exon1;Name=test1.4--test1.5--test1.6-exon1;Parent=test1.4
+chr1	S-MART	exon	900	1000	110	+	.	ID=test1.4-exon2;Name=test1.4--test1.5--test1.6-exon2;Parent=test1.4
+chr1	S-MART	exon	1100	1200	105	+	.	ID=test1.4-exon3;Name=test1.4--test1.5--test1.6-exon3;Parent=test1.4
+""")
+        handle.close()
+        cbt = ClusterizeByTags(0)
+        cbt.setInputFile(self._inputFileName, "gff3")
+        cbt.setOutputFile(self._outputFileName)
+        cbt.setTag("score", None)
+        cbt.setThreshold(20)
+        cbt.setOperation("diff")
+        cbt.setMaxDistance(None)
+        cbt.run()
+        self.assertTrue(Utils.diff(self._outputFileName, self._expOutputFileName))
+
+    def test_diff_two_strands(self):
+        handle = open(self._inputFileName, "w")
+        handle.write("""chr1\tS-MART\ttest1.1\t100\t200\t.\t+\t.\tName=test1.1;score=10;ID=test1.1
+chr1\tS-MART\ttest1.2\t300\t400\t.\t+\t.\tName=test1.2;score=15;ID=test1.2
+chr1\tS-MART\ttest1.3\t500\t600\t.\t+\t.\tName=test1.3;score=15;ID=test1.3
+chr1\tS-MART\ttest1.4\t700\t800\t.\t-\t.\tName=test1.4;score=10;ID=test1.4
+chr1\tS-MART\ttest1.5\t900\t1000\t.\t-\t.\tName=test1.5;score=15;ID=test1.5
+chr1\tS-MART\ttest1.6\t1100\t1200\t.\t-\t.\tName=test1.6;score=15;ID=test1.6
+""")
+        handle.close()
+        handle = open(self._expOutputFileName, "w")
+        handle.write("""chr1	S-MART	test1.4	700	1200	40	-	.	nbElements=3.000000;ID=test1.4;Name=test1.4--test1.5--test1.6
+chr1	S-MART	exon	700	800	10	-	.	ID=test1.4-exon1;Name=test1.4--test1.5--test1.6-exon1;Parent=test1.4
+chr1	S-MART	exon	900	1000	15	-	.	ID=test1.4-exon2;Name=test1.4--test1.5--test1.6-exon2;Parent=test1.4
+chr1	S-MART	exon	1100	1200	15	-	.	ID=test1.4-exon3;Name=test1.4--test1.5--test1.6-exon3;Parent=test1.4
+chr1	S-MART	test1.1	100	600	40	+	.	nbElements=3.000000;ID=test1.1;Name=test1.1--test1.2--test1.3
+chr1	S-MART	exon	100	200	10	+	.	ID=test1.1-exon1;Name=test1.1--test1.2--test1.3-exon1;Parent=test1.1
+chr1	S-MART	exon	300	400	15	+	.	ID=test1.1-exon2;Name=test1.1--test1.2--test1.3-exon2;Parent=test1.1
+chr1	S-MART	exon	500	600	15	+	.	ID=test1.1-exon3;Name=test1.1--test1.2--test1.3-exon3;Parent=test1.1
+""")
+        handle.close()
+        cbt = ClusterizeByTags(0)
+        cbt.setInputFile(self._inputFileName, "gff3")
+        cbt.setOutputFile(self._outputFileName)
+        cbt.setTag("score", None)
+        cbt.setThreshold(20)
+        cbt.setOperation("diff")
+        cbt.setMaxDistance(None)
+        cbt.run()
+        self.assertTrue(Utils.diff(self._outputFileName, self._expOutputFileName))
+    
+    def test_diff_one_strands(self):
+        handle = open(self._inputFileName, "w")
+        handle.write("""chr1\tS-MART\ttest1.1\t100\t200\t.\t+\t.\tName=test1.1;score=10;ID=test1.1
+chr1\tS-MART\ttest1.2\t300\t400\t.\t+\t.\tName=test1.2;score=15;ID=test1.2
+chr1\tS-MART\ttest1.3\t500\t600\t.\t+\t.\tName=test1.3;score=15;ID=test1.3
+chr1\tS-MART\ttest1.4\t700\t800\t.\t-\t.\tName=test1.4;score=10;ID=test1.4
+chr1\tS-MART\ttest1.5\t900\t1000\t.\t-\t.\tName=test1.5;score=15;ID=test1.5
+chr1\tS-MART\ttest1.6\t1100\t1200\t.\t-\t.\tName=test1.6;score=15;ID=test1.6
+""")
+        handle.close()
+        handle = open(self._expOutputFileName, "w")
+        handle.write("""chr1	S-MART	test1.1	100	600	40	+	.	nbElements=3.000000;ID=test1.1;Name=test1.1--test1.2--test1.3
+chr1	S-MART	exon	100	200	10	+	.	ID=test1.1-exon1;Name=test1.1--test1.2--test1.3-exon1;Parent=test1.1
+chr1	S-MART	exon	300	400	15	+	.	ID=test1.1-exon2;Name=test1.1--test1.2--test1.3-exon2;Parent=test1.1
+chr1	S-MART	exon	500	600	15	+	.	ID=test1.1-exon3;Name=test1.1--test1.2--test1.3-exon3;Parent=test1.1
+chr1	S-MART	test1.4	700	1200	40	-	.	nbElements=3.000000;ID=test1.4;Name=test1.4--test1.5--test1.6
+chr1	S-MART	exon	700	800	10	-	.	ID=test1.4-exon1;Name=test1.4--test1.5--test1.6-exon1;Parent=test1.4
+chr1	S-MART	exon	900	1000	15	-	.	ID=test1.4-exon2;Name=test1.4--test1.5--test1.6-exon2;Parent=test1.4
+chr1	S-MART	exon	1100	1200	15	-	.	ID=test1.4-exon3;Name=test1.4--test1.5--test1.6-exon3;Parent=test1.4
+""")
+        handle.close()
+        cbt = ClusterizeByTags(0)
+        cbt.setInputFile(self._inputFileName, "gff3")
+        cbt.setOutputFile(self._outputFileName)
+        cbt.setTag("score", None)
+        cbt.setThreshold(20)
+        cbt.setOperation("diff")
+        cbt.setMaxDistance(None)
+        cbt.setOneStrand(True)
+        cbt.run()
+        self.assertTrue(Utils.diff(self._outputFileName, self._expOutputFileName))
+
+    def test_diff_distance(self):
+        handle = open(self._inputFileName, "w")
+        handle.write("""chr1\tS-MART\ttest1.1\t100\t200\t.\t+\t.\tName=test1.1;score=10;ID=test1.1
+chr1\tS-MART\ttest1.2\t300\t400\t.\t+\t.\tName=test1.2;score=15;ID=test1.2
+chr1\tS-MART\ttest1.3\t500\t600\t.\t+\t.\tName=test1.3;score=15;ID=test1.3
+chr1\tS-MART\ttest1.4\t1000\t1100\t.\t+\t.\tName=test1.4;score=10;ID=test1.4
+chr1\tS-MART\ttest1.5\t1200\t1300\t.\t+\t.\tName=test1.5;score=15;ID=test1.5
+chr1\tS-MART\ttest1.6\t1400\t1500\t.\t+\t.\tName=test1.6;score=15;ID=test1.6
+""")
+        handle.close()
+        handle = open(self._expOutputFileName, "w")
+        handle.write("""chr1	S-MART	test1.1	100	600	40	+	.	nbElements=3.000000;ID=test1.1;Name=test1.1--test1.2--test1.3
+chr1	S-MART	exon	100	200	10	+	.	ID=test1.1-exon1;Name=test1.1--test1.2--test1.3-exon1;Parent=test1.1
+chr1	S-MART	exon	300	400	15	+	.	ID=test1.1-exon2;Name=test1.1--test1.2--test1.3-exon2;Parent=test1.1
+chr1	S-MART	exon	500	600	15	+	.	ID=test1.1-exon3;Name=test1.1--test1.2--test1.3-exon3;Parent=test1.1
+chr1	S-MART	test1.4	1000	1500	40	+	.	nbElements=3.000000;ID=test1.4;Name=test1.4--test1.5--test1.6
+chr1	S-MART	exon	1000	1100	10	+	.	ID=test1.4-exon1;Name=test1.4--test1.5--test1.6-exon1;Parent=test1.4
+chr1	S-MART	exon	1200	1300	15	+	.	ID=test1.4-exon2;Name=test1.4--test1.5--test1.6-exon2;Parent=test1.4
+chr1	S-MART	exon	1400	1500	15	+	.	ID=test1.4-exon3;Name=test1.4--test1.5--test1.6-exon3;Parent=test1.4
+""")
+        handle.close()
+        cbt = ClusterizeByTags(0)
+        cbt.setInputFile(self._inputFileName, "gff3")
+        cbt.setOutputFile(self._outputFileName)
+        cbt.setTag("score", None)
+        cbt.setThreshold(20)
+        cbt.setOperation("diff")
+        cbt.setMaxDistance(200)
+        cbt.run()
+        self.assertTrue(Utils.diff(self._outputFileName, self._expOutputFileName))
+
+
+if __name__ == "__main__":
+    unittest.main()