From 0f2ae012984722b080dbd36ab3ab56f3d3135d42 Mon Sep 17 00:00:00 2001
From: James Graham <J.A.Graham@soton.ac.uk>
Date: Fri, 10 Jun 2016 12:12:15 +0100
Subject: [PATCH] Fixed failing import if mdtraj not present

---
 pycgtool/frame.py | 23 +++++++++++++++++------
 1 file changed, 17 insertions(+), 6 deletions(-)

diff --git a/pycgtool/frame.py b/pycgtool/frame.py
index 0edb531..f0fd2a7 100644
--- a/pycgtool/frame.py
+++ b/pycgtool/frame.py
@@ -11,7 +11,11 @@ import numpy as np
 
 from simpletraj import trajectory
 
-from mdtraj.formats import XTCTrajectoryFile
+try:
+    from mdtraj.formats import XTCTrajectoryFile
+except ImportError:
+    pass
+
 
 from .util import backup_file
 from .parsers.cfg import CFG
@@ -162,6 +166,8 @@ class Frame:
                 raise FileNotFoundError(xtc) from e
             e.args = ("Error opening file '{0}'".format(xtc),)
             raise
+        except NameError as e:
+            raise ImportError("No module named 'mdtraj'") from e
         else:
             xyz, time, step, box = self.xtc.read(n_frames=1)
             natoms = len(xyz[0])
@@ -215,6 +221,8 @@ class Frame:
             raise
 
     def _next_frame_mdtraj(self, exclude=None):
+        if XTCTrajectoryFile is None:
+            raise ImportError("No module named 'mdtraj'")
         try:
             # self.xtc.seek(self.number)
             i = 0
@@ -292,13 +300,16 @@ class Frame:
 
     def flush_xtc_buffer(self, filename):
         if self._xtc_buffer is not None:
-            xtc = XTCTrajectoryFile(filename, mode="w")
+            try:
+                xtc = XTCTrajectoryFile(filename, mode="w")
 
-            xyz, step, box = self._xtc_buffer()
-            xtc.write(xyz, step=step, box=box)
-            xtc.close()
+                xyz, step, box = self._xtc_buffer()
+                xtc.write(xyz, step=step, box=box)
+                xtc.close()
 
-            self._xtc_buffer = None
+                self._xtc_buffer = None
+            except NameError as e:
+                raise ImportError("No module named 'mdtraj'") from e
 
     def write_xtc(self, filename):
         if self._xtc_buffer is None:
-- 
GitLab