-
Notifications
You must be signed in to change notification settings - Fork 0
/
DA_Unique_Structures.py
62 lines (41 loc) · 1.57 KB
/
DA_Unique_Structures.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
"""
Finds unique structures by examining the working directory (recursively) and reading in systems with the predefined extension. Then examines them using the hashkey and creates a directory with all the unique systems and a statistics file.
@author Tomas Lazauskas, 2017
@web www.lazauskas.net
@email tomas.lazauskas[a]gmail.com
"""
from optparse import OptionParser
import sys
# Analysis toolkit modules
import source.IO as IO
import source.Utilities as Utilities
# constants
_uniqueDir = "unique"
def cmd_line_args():
"""
Handles command line arguments and options.
"""
usage = "usage: %prog extension"
parser = OptionParser(usage=usage)
parser.disable_interspersed_args()
(options, args) = parser.parse_args()
if (len(args) != 1):
parser.error("incorrect number of arguments")
return options, args
if __name__ == "__main__":
# reading in input arguments
options, args = cmd_line_args()
# finding the structures (paths)
systems_files_list = IO.get_file_list_recursive_simple(extension=args[0])
# reading in the systems
systems = IO.read_in_systems(systems_files_list)
# getting the hashkeys and finding the unique ones
# 2.98
# GaAs - 2.899
unique_systems = IO.get_unique_systems_hashkeys(systems, 3.34)
# sorting the systems
Utilities.sort_systems(unique_systems)
# generating the combined unique top structures and saves them in the unique directory
IO.checkDirectory(_uniqueDir, True)
IO.save_systems_to_xyz(unique_systems, _uniqueDir)
Utilities.systems_statistics(unique_systems, _uniqueDir)