[ase-users] castep interface
Max Hoffmann
mjhoffmann at gmail.com
Tue Sep 13 14:52:21 CEST 2011
Hi,
thanks for the feedback (and the fixes)! From a first glance I think
in fact most issues are related to the python version (as you said).
However if these changes do not break "forward compatiblity" I see no
good reason not to take them.
@Glenn Jones: could you post which version of the python interpreter
you are currently using ? (python -V will do). If that number is < 2.6
couldn't hurt to update python.
@Developers: is there any common rule as to how far back python
versions should be supported?
@Jens: I can test these changes and turn them into a *patch (much) later today.
Cheers,
Max.
On Tue, Sep 13, 2011 at 1:17 PM, Glenn Jones <glenn.jones at ucl.ac.uk> wrote:
> Hi,
>
> I have come across a few problems with the Castep interface - I have tried
> to find some solutions and in the end did manage to get the test
> castep_interface.py to run. I have yet to try the interface with a full
> calculation.
>
> Firstly, I tried to run the castep.py module to create castep_keywords.py,
> but came across what are either a couple of bugs or perhaps some
> incompatibility in my version of python and the python syntax used. In
> order to get keywords to be generated I made the following changes - I
> hope the modifications I suggest don't change the intended logic of the
> code:
>
> 1)
>
> from ..io.castep import write_cell
>
> I changed this to:
>
> from io.castep import write_cell
>
> 2)
> File "castep.py", line 736
> constraints = self.atoms.constraints if self.atoms else []
> ^
> SyntaxError: invalid syntax
>
> I changed this to a long winded way, which I think says what is intended
> above:
> if self.atoms:
> constraints = self.atoms.constraints
> else:
> constraints = []
>
> 3)
> File "castep.py", line 1026
> interface_options = self._opt if self._export_settings else None
> ^
> SyntaxError: invalid syntax
>
> likewise, I changed this to:
> if self._export_settings:
> interface_options = self._opt
> else:
> interface_options =None
>
> 4)
> File "castep.py", line 1881
> opt_castep_command = ''.join(args) if args else ''
>
> Which I changed to:
> if args:
> opt_castep_command = ''.join(args)
> else:
> opt_castep_command = ''
> ______________________________________________________
>
> After making the above changes keywords is created with an error, the
> following line also appears to need to be changed:
>
> 5) CASTEP v5.502, fetched 370 keywords
> invalid syntax (castep_keywords.py, line 4)
> Ooops, something went wrong with the CASTEP keywords
>
> class Opt():
> should perhaps be
> class Opt:
>
> by modifying line 1415 to become:
> fh.write('class Opt:\n')
> _______________________________________________
> I then tried to run castep_interface.py in the tests and came across some
> other issues (similar to the above), related to io.castep.py:
> 6)
> File "<stdin>", line 1, in ?
> File "/home/gjones/ase/ase/io/castep.py", line 197
> icomment = min([line.index(c) if c in line else len(line) for
>
> which I have changed to:
> for c in comment_chars:
> if c in line:
> icomment = min(line.index(c))
> else:
> icomment = len(line)
>
> (I don't this is quite the same - but it didn't give an error)
>
> 7)
> File "<stdin>", line 1, in ?
> File "/home/gjones/ase/ase/io/castep.py", line 419
> energy = energy_0K if energy_0K else energy_total
>
> which I have changed to:
> if energy_0K:
> energy = energy_0K
> else:
> energy = energy_total
>
> then castep_interface.py I need to be change:
>
> 8)
> __import__(ase_castep_dir + ".io.castep")
>
> I changed to:
>
> __import__(ase_castep_dir_patched+".io.castep")
>
> 9)
> Traceback (most recent call last):
> File "castep_interface.py", line 60, in ?
> assert False, 'Could not instantiate castep calculator'
> AssertionError: Could not instantiate castep calculator
>
> so before line 60 I added:
>
> from ase.calculators.castep import Castep
>
> Which gave another problem:
>
> 10)
> /usr/lib64/openmpi/1.4-gcc/bin/mpirun
> /home/gjones/bin/castep-5.5.2c-openmpi
> Traceback (most recent call last):
> File "castep_interface.py", line 57, in ?
> c = Castep(directory=tmp_dir, label='test_label')
> File "/home/gjones/ase/ase/calculators/castep.py", line 344, in __init__
> from io.castep import write_cell
> ImportError: No module named io.castep
> No module named io.castep ,
>
> that I resolved by changing line 344 to:
> from ase.io.castep import write_cell
>
>
> ___________________________________________________
>
> With the above changes the test ran. However, with the changes I have made
> I am not totally confident that I haven't broken anything, or
> unnecessarily modified something that could have been done in a more
> simple manner.
>
> I have attached my modified files, if they are of any help.
>
> Best regards,
>
> Glenn
>
>
> _______________________________________________
> ase-users mailing list
> ase-users at listserv.fysik.dtu.dk
> https://listserv.fysik.dtu.dk/mailman/listinfo/ase-users
>
--
Max J. Hoffmann
Tel: +4989 289 13607 (office)
Room CH63107
TU München
Lichtenbergstr. 4
D-85747 Garching
More information about the ase-users
mailing list