[ase-users] Modification in optimizer.py
Offermans Willem
willem.offermans at vito.be
Sat Jan 16 15:33:59 CET 2021
Hi Gaël and ASE friends,
You misunderstood my request. Probably I was not clear enough about what I want to achieve.
My changes to the ASE code will only be minor and very personally. At the moment I don’t have
anything meaningful to contribute.
I’m not completely happy with the logging info. Next to time, I want to have info about the day.
Probably, I will be the only one in the whole ASE community to value this.
To not to disturb the ASE release code, I want to overwrite some methods from some classes in
my python calculation script. An example was given in my previous mail. The question is simple:
How to this in a way that it works? The example I gave did not work.
Met vriendelijke groeten,
Mit freundlichen Grüßen,
With kind regards,
Willem Offermans
Researcher Electrocatalysis SCT
VITO NV | Boeretang 200 | 2400 Mol
Phone:+32(0)14335263 Mobile:+32(0)492182073
Willem.Offermans at Vito.be
> On 15 Jan 2021, at 18:30, Gaël Donval via ase-users <ase-users at listserv.fysik.dtu.dk> wrote:
>
> Hi Willem,
>
> Answer below.
>
>
>>
>> Dear ASE friends,
>>
>> I would like to make a small change in the logging of the optimize.py
>> procedure.
>>
>> It is the following file in my case:
>>
>> ~/.conda/envs/ase/lib/python3.9/site-packages/ase/optimize/optimize.py
>>
>> Under the ``class Optimizer(Dynamics):``, there is a method called log:
>>
>> <snip>
>> def log(self, forces=None):
>> if forces is None:
>> forces = self.atoms.get_forces()
>> fmax = sqrt((forces ** 2).sum(axis=1).max())
>> e = self.atoms.get_potential_energy(
>> force_consistent=self.force_consistent
>> )
>> T = time.localtime()
>> if self.logfile is not None:
>> name = self.__class__.__name__
>> if self.nsteps == 0:
>> args = (" " * len(name), "Step", "Time", "Energy", "fmax")
>> msg = "%s %4s %8s %15s %12s\n" % args
>> self.logfile.write(msg)
>>
>> if self.force_consistent:
>> msg = "*Force-consistent energies used in optimization.\n"
>> self.logfile.write(msg)
>>
>> ast = {1: "*", 0: ""}[self.force_consistent]
>> # args = (name, self.nsteps, T[3], T[4], T[5], e, ast, fmax)
>> args = (name, self.nsteps, T[2], T[3], T[4], T[5], e, ast, fmax)
>> print('This is Optimizer.log and T[2] = ' + str(T[2]))
>> # msg = "%s: %3d %02d:%02d:%02d %15.6f%1s %12.4f\n" % args
>> msg = "%s: %3d %02d-%02d:%02d:%02d %15.6f%1s %12.4f\n" % args
>> self.logfile.write(msg)
>>
>> self.logfile.flush()
>> </snip>
>>
>> I already commented the original code lines and added the updated lines.
>>
>> I do realise that it is not handy to do this change in the original code.
>>
>> I would like to rewrite the code in my personal python calc script, by
>> defining a new
>> method that will overwrite the corresponding method. So I added the following
>> code
>> in my python calc script:
>>
>>
>> <snip>
>> def MyLog(self, forces=None):
>> print('This is MyLog')
>> if forces is None:
>> forces = self.atoms.get_forces()
>> fmax = sqrt((forces ** 2).sum(axis=1).max())
>> e = self.atoms.get_potential_energy(
>> force_consistent=self.force_consistent
>> )
>> T = time.localtime()
>> if self.logfile is not None:
>> name = self.__class__.__name__
>> if self.nsteps == 0:
>> args = (" " * len(name), "Step", "Time", "Energy", "fmax")
>> msg = "%s %4s %8s %15s %12s\n" % args
>> self.logfile.write(msg)
>>
>> if self.force_consistent:
>> msg = "*Force-consistent energies used in optimization.\n"
>> self.logfile.write(msg)
>>
>> ast = {1: "*", 0: ""}[self.force_consistent]
>> args = (name, self.nsteps, T[2], T[3], T[4], T[5], e, ast, fmax)
>> msg = "%s: %3d %02d-%02d:%02d:%02d %15.6f%1s %12.4f\n" % args
>> self.logfile.write(msg)
>>
>> self.logfile.flush()
>>
>>
>> Optimizer(Dynamics).log = MyLog
>>
>> </snip>
>>
>> The changes are trivial, but important to me. Furthermore, I would like to
>> make some other small changes as well, but this is for later.
>>
>> However, the applied correction doesn’t seem to work and I’m puzzled on the
>> why.
>>
>> Can someone help me out?
>>
>>
>> Met vriendelijke groeten,
>> Mit freundlichen Grüßen,
>> With kind regards,
>>
>>
>> Willem Offermans
>> Researcher Electrocatalysis SCT
>> VITO NV | Boeretang 200 | 2400 Mol
>> Phone:+32(0)14335263 Mobile:+32(0)492182073
>>
>> Willem.Offermans at Vito.be
>>
>>
>
>
> The ASE source code is available (for download AND contributions) on gitlab.com <http://gitlab.com/>:
>
> https://gitlab.com/ase/ase <https://gitlab.com/ase/ase>
>
> All the information necessary to contribute code is given there:
>
> https://wiki.fysik.dtu.dk/ase/development/contribute.html <https://wiki.fysik.dtu.dk/ase/development/contribute.html>
>
> That being said, the way the information is laid out is a bit dry...
>
>
> The gist of it is that you need to open a gitlab account. It is free.
>
> Once there you can use git directly as it is customary with gitlab. Assuming you
> are familiar with git, the only important bit is to remember to create a new
> branch before changing anything. If you are familiar with github or other
> platforms, you'll have to submit your changes as a pull/merge request. The link
> I provided is much more thorough.
>
> ALTERNATIVELY, if you are not so familiar with git, and for smaller changes like
> this, open a gitlab account. Go to https://gitlab.com/ase/ase <https://gitlab.com/ase/ase> and find the file
> you want to edit. At the top right corner of the source code, there is a Web IDE
> button. Click on that and edit what you need. Once happy with the result, on the
> bottom left of the page there will be a "commit" button. Click on that. Provide
> a good description of the change (and why), select "create a new branch", give a
> meaningful name to the branch and commit. This will automatically open a merge
> request that we can more easily review.
>
> Regards,
> Gaël
>
> _______________________________________________
> ase-users mailing list
> ase-users at listserv.fysik.dtu.dk <mailto:ase-users at listserv.fysik.dtu.dk>
> https://listserv.fysik.dtu.dk/mailman/listinfo/ase-users <https://listserv.fysik.dtu.dk/mailman/listinfo/ase-users>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listserv.fysik.dtu.dk/pipermail/ase-users/attachments/20210116/897a9c7f/attachment-0001.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: vito.jpg
Type: image/jpeg
Size: 15232 bytes
Desc: not available
URL: <http://listserv.fysik.dtu.dk/pipermail/ase-users/attachments/20210116/897a9c7f/attachment-0001.jpg>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 3953 bytes
Desc: not available
URL: <http://listserv.fysik.dtu.dk/pipermail/ase-users/attachments/20210116/897a9c7f/attachment-0001.p7s>
More information about the ase-users
mailing list