From 2cb47edc13807225098fa448493ef17907fe9c64 Mon Sep 17 00:00:00 2001
From: Gabriel Studer <gabriel.studer@unibas.ch>
Date: Wed, 20 Nov 2019 17:01:49 +0100
Subject: [PATCH] basic unit tests for ialign

---
 modules/bindings/tests/CMakeLists.txt |  1 +
 modules/bindings/tests/test_ialign.py | 37 +++++++++++++++++++++++++++
 2 files changed, 38 insertions(+)
 create mode 100644 modules/bindings/tests/test_ialign.py

diff --git a/modules/bindings/tests/CMakeLists.txt b/modules/bindings/tests/CMakeLists.txt
index 089f1ae9b..3d3efc3ab 100644
--- a/modules/bindings/tests/CMakeLists.txt
+++ b/modules/bindings/tests/CMakeLists.txt
@@ -7,6 +7,7 @@ set(OST_BINDINGS_UNIT_TESTS
   test_naccess.py
   test_cadscore.py
   test_tmtools.py
+  test_ialign.py
 )
 
 ost_unittest(MODULE bindings 
diff --git a/modules/bindings/tests/test_ialign.py b/modules/bindings/tests/test_ialign.py
new file mode 100644
index 000000000..33b6f610d
--- /dev/null
+++ b/modules/bindings/tests/test_ialign.py
@@ -0,0 +1,37 @@
+import unittest
+from ost import *
+from ost import settings
+from ost import testutils
+from ost.seq.alg import SequenceIdentity
+from ost.bindings import ialign
+
+class TestIAlign(unittest.TestCase):
+  
+  def setUp(self):
+    self.protein = io.LoadEntity("testfiles/testprotein.pdb")
+
+
+  def testIAlign(self):
+
+    try:
+      ialign_exec = settings.Locate('ialign.pl')  
+    except:
+      print("Could not find ialign master perl script: ignoring unit tests")
+      return
+
+    ialign_result = ialign.iAlign(self.protein, self.protein)
+
+    # model and reference are the same, we expect pretty good results
+    self.assertEqual(ialign_result.rmsd, 0.0)
+    self.assertEqual(ialign_result.is_score, 1.0)
+    self.assertEqual(SequenceIdentity(ialign_result.alignment), 100.0)
+    self.assertEqual(ialign_result.aligned_residues, 78)
+    self.assertEqual(ialign_result.aligned_contacts, 91)
+
+    # transformation should be identity matrix (no transformation at all...)
+    identity = geom.Mat4(1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1)
+    self.assertEqual(ialign_result.transform, identity)
+
+
+if __name__ == "__main__":
+  testutils.RunTests()
-- 
GitLab