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

1# fmt: off 

2 

3import os 

4import re 

5 

6rst = """\ 

7.. _optimizer_tests: 

8 

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. 

16 

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""" 

22 

23 

24header = 'Optimizer Steps Force evaluations Energy Note \n' 

25bars = '=============== ===== ================= ========== ===============\n' 

26 

27 

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] 

34 

35 with open('testoptimize.rst', 'w') as fd: 

36 fd.write(rst) 

37 

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 ) 

60 

61 

62if __name__ == '__main__': 

63 main()