pnnl/isicle

XTBWrapper does not have attribute .xyz

jessbade opened this issue · 2 comments

In the case of running isicle.md.XTBWrapper() to optimize structures then passing this geom to isicle.mdXTBWrapper() to generate conformers, an uncaught error occurs.

  • isicle.md.XTBWrapper.set_geometry() sets an isicle.md.XTBWrapper to self.geom
  • then isicle.md.XTBWrapper.save_geometry() is executed inside set_geometry()
  • save_geometry() calls isicle.io.save(<filename.xyz>,<isicle.md.XTBWrapper>), which calls isicle.io.save_xyz() since filetype is .xyz
  • isicle.io.save_xyz checks: if not isinstance(geom, (isicle.geometry.Geometry, isicle.geometry.XYZGeometry)) then raise TypeError
  • isicle.md.XTBWrapper is sub-class of isicle.geometry.XYZGeometry and therefore passes check
  • error at isicle.io.save_xyz, line 508 since isicle.md.XTBWrapper object does not have .xyz attribute

min. ex:
geom=isicle.load('CCO')
geom = geom.initial_optimize(embed=True, forcefield="UFF", ff_iter=200)
opts=geom.md(task='optimize')
confs=opts.md(task='conformers')

XTBWrapper should not inherit XYZGeometry or Geometry.

NWChemWrapper also does this, and should not.