-
Notifications
You must be signed in to change notification settings - Fork 0
/
Main.py
124 lines (110 loc) · 3.06 KB
/
Main.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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
#!/usr/bin/python
from ResultReader import getAllLineProfile, parseChannels, parseFreq, parsePeakIntensity, parseCompound, parseName
from InputIngestor import getExpectedLineNum, getExpectedLines
from TaskRunner import runAllProjects
from ResultAnalyzer import compare
from NewParamBuilder import findAllCombinations
from LatexGenerator import generate
#configs
numsigmaRange = [8.0, 9.0]
minchanRange = [5, 6]
maxchanRange = [24, 25]
fileName = "../data/spw1.dirt.fits"
inputFile = "input.txt"
def generateAllParams():
"""
Caller function of findAllCombinations in NewParamBuilder
Args:
(G) numsigmaRange, minchanRange, maxchanRange
Returns:
A list of all possible parameter combinations (list of triple tuples)
"""
return findAllCombinations(numsigmaRange, minchanRange, maxchanRange)
#this step produces all results...MIGHT TAKE SOMETIME
def runAllTasks():
"""
Caller function of runAllProjects in TaskRunner
Args:
(G) fileName
Returns:
NONE
"""
allParams = generateAllParams()
runAllProjects(allParams, fileName)
def getAllResult():
"""
Args:
(G) fileNmae
Returns:
a list of All identified molecular lines frequency range in all ADMIT result BDPS (nested list)
"""
result = []
folders = makeResultFolderNames()
for folder in folders:
lines = parseFreq(getAllLineProfile(folder, 'lltable.4.json'))
result.append(lines)
return result
def getExpectedMolecularLines():
"""
Args:
(G) inputFile
Returns:
frequency ranges of all expected molecular lines (nested list)
"""
return getExpectedLines(inputFile)
def getAllDiff():
"""
Args:
NONE
Returns:
over diff result! this is what we WANT!
"""
result = []
allBDPResults = getAllResult()
for BDPResult in allBDPResults:
result.append(compare(getExpectedMolecularLines(), BDPResult))
return result #this is what we want! (index based)
#what algorithm to use???
def checkResults():
"""
Args:
NONE
Returns:
index of best-fit parameter set in allParams
"""
overallDiff = getAllDiff()
minIndex = -1
min = 9223372036854775807
for diff in overallDiff:
temp = -1
for i in diff:
temp += i
if(temp < min):
minIndex = overallDiff.index(diff)
min = temp
return minIndex #here it goes!!!
def printResult():
"""
Prints out best fit parameter combination
"""
bestFitIndex = checkResults()
print(generateAllParams()[bestFitIndex])
def makeResultFolderNames():
"""
Args:
NONE
Returns:
A list of all ADMIT task BDP folder names (custom naming fashion in TaskRunner)
"""
result = []
for i in range(0, len(generateAllParams())):
folderName = 'molecular-line.admit' + '_' + str(i) + '/'
result.append(folderName)
return result
def run():
"""
Master function, calls every functions to complete workflow
"""
printResult()
runAllTasks()
run()