-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathGaussFit3.py
executable file
·81 lines (71 loc) · 2.45 KB
/
GaussFit3.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
#!/usr/bin/env python3
'''
Version: 1.0
Copyright (C) 2022 Ryan Chiechi <[email protected]>
Description:
This program parses raw current-voltage data obtained from
molecular tunneling junctions. It is specifically designed
with EGaIn in mind, but may be applicable to other systems.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
'''
import cProfile
import warnings
from gaussfit import Parse
from gaussfit.args import Opts
from gaussfit.output import Writer, Plotter
from gaussfit import colors
from gaussfit.output.libwriter import doOutput
try:
import matplotlib.pyplot as plt
CAN_PLOT = True
except ImportError as msg:
print("Cannot import matplotlib! %s", str(msg), exc_info=False)
CAN_PLOT = False
def do_cprofile(func):
'''
Needed for profiling GaussFit performance
'''
def profiled_func(*args, **kwargs):
profile = cProfile.Profile()
try:
profile.enable()
result = func(*args, **kwargs)
profile.disable()
return result
finally:
profile.print_stats()
return profiled_func
# @do_cprofile
def do_gaussfit():
'''
Call this function to execute the parsing engine
i.e., as main()
'''
parser = Parse(Opts)
parser.readfiles(Opts.in_files)
if Opts.write and not parser.error:
writer = Writer(parser)
doOutput(writer)
if Opts.plot and not parser.error:
if CAN_PLOT:
plotter = Plotter(parser, plt)
plotter.DoPlots()
plt.show()
else:
print(colors.RED+"Unable to show plots without matplotlib."+colors.RS)
if __name__ == "__main__":
warnings.filterwarnings('ignore', '.*invalid escape sequence.*', SyntaxWarning)
if Opts.gui:
from gui import filebrowser
gui = filebrowser.ChooseFiles()
else:
do_gaussfit()