Coverage for ase / optimize / test / generate_rst.py: 27.27%
22 statements
« prev ^ index » next coverage.py v7.13.3, created at 2026-02-04 10:20 +0000
« prev ^ index » next coverage.py v7.13.3, created at 2026-02-04 10:20 +0000
1# fmt: off
3import os
4import re
6rst = """\
7.. _optimizer_tests:
9===============
10Optimizer tests
11===============
12This page shows benchmarks of optimizations done with our different optimizers.
13Note that the iteration number (steps) is not the same as the number of force
14evaluations. This is because some of the optimizers uses internal line searches
15or similar.
17The most important performance characteristics of an optimizer is the
18total optimization time.
19Different optimizers may perform the same number of steps, but along a different
20path, so the time spent on calculation of energy/forces will be different.
21"""
24header = 'Optimizer Steps Force evaluations Energy Note \n'
25bars = '=============== ===== ================= ========== ===============\n'
28def main():
29 dirlist = os.listdir('.')
30 name = r'.*\.csv'
31 filterre = re.compile(name)
32 dirlist = list(filter(filterre.search, dirlist))
33 namelist = [d.strip('.csv') for d in dirlist]
35 with open('testoptimize.rst', 'w') as fd:
36 fd.write(rst)
38 for name in namelist:
39 lines = open(name + '.csv').read().split('\n')
40 firstline = lines.pop(0)
41 fd.write(
42 '\n' +
43 name + '\n' +
44 '=' * len(name) + '\n'
45 'Calculator used: %s\n' % firstline.split(',')[-1] +
46 '\n' +
47 bars +
48 header +
49 bars
50 )
51 for line in lines:
52 if len(line):
53 print(line.split(','))
54 fd.write(
55 '%-15s %5s %17s %10s %s\n' % tuple(line.split(','))
56 )
57 fd.write(
58 bars
59 )
62if __name__ == '__main__':
63 main()