Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
A
AMPS
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Grant David Meadors
AMPS
Commits
76b5f5e0
Commit
76b5f5e0
authored
12 years ago
by
Grant David Meadors
Browse files
Options
Downloads
Patches
Plain Diff
Writing a python script to derive statistics in post-processing
parent
ca7187c1
No related branches found
No related tags found
No related merge requests found
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
measureComb.py
+239
-0
239 additions, 0 deletions
measureComb.py
with
239 additions
and
0 deletions
measureComb.py
0 → 100755
+
239
−
0
View file @
76b5f5e0
#!/usr/bin/python
import
math
,
os
,
re
import
matplotlib
as
matplotlib
matplotlib
.
use
(
'
Agg
'
)
import
matplotlib.pyplot
as
plt
import
matplotlib.cm
as
cm
import
numpy
as
np
def
combSpectrum
(
targetDirectory
,
flag
):
# Grant David Meadors
# g m e a d o r s @ u m i c h . e d u
# 02012-11-28 (JD 2456260)
# combSpectrum
#
# Scan output log files for parts of the spectrum where feedforward is
# adversely affecting Hoft.
#
# Input argument: targetDirectory
# Choose a directory, e.g. "/home/pulsar/public_html/feedforward/diagnostics/LHO/H-H1_AMPS_C02_L2-9531",
# into which comb files have been written.
# Input argument: flag
# Flag whether the directory itself contains comb files ('one') o
# is a directory of directories containing comb files ('all')
# The results of the frequency comb ratio test are stored in files of the form
# EleutheriaComb-startGPS-stopGPS.txt
# and thus can be found be searching for (substitute LLO if appropriate)
# /home/pulsar/public_html/feedforward/diagnostics/LHO/*/*Comb*
# In each file, the comb frequencies are listed as the values of the columns in
# row 5 (using Python indexing, starting from 0), and the ratios as the values
# in row 6; the differences are in row 7.
if
flag
==
'
all
'
:
# The comb files are in the directories listed under the target directory.
highDirectoryList
=
os
.
listdir
(
targetDirectory
)
highDirectoryListDirOnly
=
sorted
([
x
for
x
in
highDirectoryList
if
x
.
find
(
'
.
'
)
==
-
1
])
# Because the GPS time 953100000 is used so often for testing,
# it is temporarily excluded:
highDirectoryListDirOnly
=
sorted
([
x
for
x
in
highDirectoryListDirOnly
if
x
.
find
(
'
9531
'
)
==
-
1
])
combFiles
=
[]
for
x
in
highDirectoryListDirOnly
:
targetDirectoryFiles
=
os
.
listdir
(
targetDirectory
+
x
)
for
file
in
targetDirectoryFiles
:
if
file
.
find
(
'
EleutheriaComb
'
)
>
-
1
:
combFiles
.
append
(
x
+
'
/
'
+
file
)
combFiles
=
sorted
(
combFiles
)
if
flag
==
'
one
'
:
# The comb files are in the target directory.
# Pull a list of all the comb files.
targetDirectoryFiles
=
sorted
(
os
.
listdir
(
targetDirectory
))
combFiles
=
[]
for
file
in
targetDirectoryFiles
:
if
file
.
find
(
'
EleutheriaComb
'
)
>
-
1
:
combFiles
.
append
(
file
)
combFiles
=
sorted
(
combFiles
)
# Now write a function that can read an individual file into memory.
def
combReader
(
targetDirectory
,
eachCombFile
):
combFileName
=
targetDirectory
+
eachCombFile
try
:
combObject
=
open
(
combFileName
)
combLines
=
combObject
.
readlines
()
combObject
.
close
()
except
IOError
:
print
'
File not found or accessible; skipping
'
+
\
combFileName
return
combLines
[
5
:
8
]
+
combLines
[
11
:
13
]
# Apply the function to all the comb files in the directory.
for
k
,
eachCombFile
in
enumerate
(
combFiles
):
# Each file will have four properties:
# (using zero-indexed terminology)
# start time, read in the GPS time of the file name
# frequency bins, read from the fifth row of the file (0th of combRaw),
# ratios, read from the sixth (1st of combRaw),
# and difference, read from the seventh (2nd of combRaw).
# Then, after some comment lines,
# before feedforward in the eleventh line (3rd of combRaw)
# and after feedforward in the twelfth line (4th of combRaw)
if
k
==
0
:
times
=
re
.
search
(
'
-(?P<GPS>\d+)-(\d+)\.
'
,
eachCombFile
)
timeArray
=
np
.
asarray
(
times
.
group
(
1
),
dtype
=
np
.
int32
)
combRaw
=
combReader
(
targetDirectory
,
eachCombFile
)
frequencyArray
=
np
.
asarray
(
str
(
combRaw
[
0
]).
split
(),
dtype
=
np
.
float32
)
frequencyArray
=
frequencyArray
.
astype
(
int
)
ratioArray
=
np
.
asarray
(
str
(
combRaw
[
1
]).
split
(),
dtype
=
np
.
float32
)
differenceArray
=
np
.
asarray
(
str
(
combRaw
[
2
]).
split
(),
dtype
=
np
.
float32
)
beforeArray
=
np
.
asarray
(
str
(
combRaw
[
3
]).
split
(),
dtype
=
np
.
float32
)
afterArray
=
np
.
asarray
(
str
(
combRaw
[
4
]).
split
(),
dtype
=
np
.
float32
)
if
k
>
0
:
times
=
re
.
search
(
'
-(?P<GPS>\d+)-(\d+)\.
'
,
eachCombFile
)
timeArray
=
np
.
vstack
([
timeArray
,
np
.
asarray
(
times
.
group
(
1
),
dtype
=
np
.
int32
)])
combRaw
=
combReader
(
targetDirectory
,
eachCombFile
)
frequencyArray
=
np
.
vstack
([
frequencyArray
,
np
.
asarray
(
str
(
combRaw
[
0
]).
split
(),
dtype
=
np
.
float32
)])
ratioArray
=
np
.
vstack
([
ratioArray
,
np
.
asarray
(
str
(
combRaw
[
1
]).
split
(),
dtype
=
np
.
float32
)])
differenceArray
=
np
.
vstack
([
differenceArray
,
np
.
asarray
(
str
(
combRaw
[
2
]).
split
(),
dtype
=
np
.
float32
)])
beforeArray
=
np
.
vstack
([
beforeArray
,
np
.
asarray
(
str
(
combRaw
[
3
]).
split
(),
dtype
=
np
.
float32
)])
afterArray
=
np
.
vstack
([
afterArray
,
np
.
asarray
(
str
(
combRaw
[
4
]).
split
(),
dtype
=
np
.
float32
)])
# Now we are going to plot these arrays.
# First, set a directory for the output. At least for the time being,
# that can be the same directory as the target directory.
# Note the inelegant way from extracting the start time as a label.
graphTitleRatio
=
targetDirectory
+
"
EleutheriaPostPlotCombRatio
"
+
\
'
-
'
+
str
(
timeArray
[
0
]).
strip
(
"
[
"
).
strip
(
"
]
"
).
strip
(
"'"
)
graphTitleDiff
=
targetDirectory
+
"
EleutheriaPostPlotCombDiff
"
+
\
'
-
'
+
str
(
timeArray
[
0
]).
strip
(
"
[
"
).
strip
(
"
]
"
).
strip
(
"'"
)
graphTitleBeforeAfter
=
targetDirectory
+
"
EleutheriaPostPlotCombBeforeAfter
"
+
\
'
-
'
+
str
(
timeArray
[
0
]).
strip
(
"
[
"
).
strip
(
"
]
"
).
strip
(
"'"
)
graphWholeRun
=
"
EleutheriaWholeRun
"
x
,
y
=
np
.
meshgrid
(
timeArray
,
frequencyArray
[
0
])
extensions
=
[
x
[
0
,
0
],
x
[
-
1
,
-
1
],
y
[
0
,
0
],
y
[
-
1
,
-
1
]]
# Define a helpfully broken color-scheme as found on the
# SciPy Matplotlib Cookbook,
# http://www.scipy.org/Cookbook/Matplotlib/Show_colormaps
#cdict = {'red': ((0.0, 0.0, 0.0),\
#(0.5, 1.0, 0.7),\
#(1.0, 1.0, 1.0)),\
#'green': ((0.0, 0.0, 0.0),\
#(0.5, 1.0, 0.0),\
#(1.0, 1.0, 1.0)),\
#'blue': ((0.0, 0.0, 0.0),\
#(0.5, 1.0, 0.0),\
#(1.0, 0.5, 1.0))}
#my_cmap = matplotlib.colors.LinearSegmentedColormap('my_colormap', cdict, 256)
#plt.figure()
#CSratio = plt.contourf(x.T, y.T, ratioArray, \
#np.asarray([0.8, 0.85, 0.9, 0.95, \
#1, 1.05, 1.1, 1.15, 1.2]), cmap=my_cmap)
#plt.colorbar(CSratio, shrink=0.8, extend='both')
#plt.xlabel('GPS time (s)')
#plt.ylabel('Frequency (Hz)')
#plt.title('Post/pre-filtering Hoft ratio (lower is better)')
#plt.savefig(graphTitleRatio + 'Contour.png')
#plt.savefig(graphTitleRatio + 'Contour.pdf')
#plt.close()
#plt.clf()
#fig = plt.figure()
#ax = fig.add_subplot(111)
#CSratioIm = ax.imshow(ratioArray.T, origin='lower', \
#interpolation = 'nearest', extent=extensions, vmin=0.8, vmax=1.2,\
#cmap=my_cmap)
#CSratioIm = fig.colorbar(CSratioIm, shrink = 0.8, extend = 'both')
#ax.set_aspect('auto')
#ax.set_xlabel('GPS time (s)')
#ax.set_ylabel('Frequency (Hz)')
#ax.set_title('Post/pre-filtering Hoft ratio (lower is better)')
#fig.savefig(graphTitleRatio + '.png')
#fig.savefig(graphTitleRatio + '.pdf')
#plt.clf()
#fig = plt.figure()
#ax = fig.add_subplot(111)
#CSdiffIm = ax.imshow(-differenceArray.T, origin='lower', \
#interpolation = 'nearest' , extent=extensions, vmin=-2e-24, vmax=2e-24, \
#cmap=my_cmap)
#plt.show()
#CSdiffIm = fig.colorbar(CSdiffIm, shrink = 0.8, extend = 'both')
#ax.set_aspect('auto')
#ax.set_xlabel('GPS time (s)')
#ax.set_ylabel('Frequency (Hz)')
#ax.set_title('Post - pre Hoft difference (lower is better)')
#fig.savefig(graphTitleDiff + '.png')
#fig.savefig(graphTitleDiff + '.pdf')
#plt.clf()
#plt.figure()
#CSdiff = plt.contourf(x.T, y.T, -differenceArray, \
#np.asarray([-2e-24, -1.5e-24, -1e-24, -5e-25,\
#0, 5e-25, 1e-24, 1.5e-24, 2e-24]), cmap=my_cmap)
#plt.colorbar(CSdiff, shrink=0.8, extend='both')
#plt.xlabel('GPS time (s)')
#plt.ylabel('Frequency (Hz)')
#plt.title('Post - pre Hoft difference (lower is better)')
#plt.savefig(graphTitleDiff + 'Contour.png')
#plt.savefig(graphTitleDiff + 'Contour.pdf')
#plt.close()
#plt.figure()
#freqList = [25, 27, 29]
#p0 = plt.scatter(timeArray, -differenceArray[:, 25], color='b')
#mean0 = np.mean(-differenceArray[:, 25])
#p1 = plt.scatter(timeArray, -differenceArray[:, 27], color='r')
#mean1 = np.mean(-differenceArray[:, 27])
#p2 = plt.scatter(timeArray, -differenceArray[:, 29], color='k')
#mean2 = np.mean(-differenceArray[:, 29])
#plt.grid(True)
#plt.xlabel('GPS time (s)')
#plt.ylabel('Post - pre Hoft difference (lower is better)')
#plt.title('Difference vs time by frequency')
#plt.legend([p0, p1, p2], \
#[str(frequencyArray[0, freqList[0]]) + ' Hz, mean: ' + str(mean0),\
#str(frequencyArray[0, freqList[1]]) + ' Hz, mean: ' + str(mean1),\
#str(frequencyArray[0, freqList[2]]) + ' Hz, mean: ' + str(mean2)])
#plt.savefig(graphTitleDiff + 'Freq.png')
#plt.savefig(graphTitleDiff + 'Freq.pdf')
#plt.close()
#plt.figure()
#p0 = plt.scatter(timeArray, beforeArray[:, 27], color='b')
#mean0 = np.mean(beforeArray[:, 27])
#numberofthings = np.shape(beforeArray[:,27])[0]
#mean0array = mean0 * np.ones((np.shape(beforeArray[:, 27])[0], 1))
#p1 = plt.scatter(timeArray, afterArray[:, 27], color='r')
#mean1 = np.mean(afterArray[:, 27])
#mean1array = mean1 * np.ones((np.shape(afterArray[:, 27])[0], 1))
#p2 = plt.plot(timeArray, mean0array, 'b^')
#p3 = plt.plot(timeArray, mean1array, 'r+')
#plt.grid(True)
#plt.xlabel('GPS time (s)')
#plt.ylabel('Hoft')
#plt.title('Before and after feedforward')
#plt.legend([p0, p1, p2, p3], \
#[str(frequencyArray[0, freqList[1]]) + ' Hz before, scatterplot', \
#str(frequencyArray[0, freqList[1]]) + ' Hz before, mean: ' + str(mean0), \
#str(frequencyArray[0, freqList[1]]) + ' Hz after, scatterplot', \
#str(frequencyArray[0, freqList[1]]) + ' Hz after, mean: ' + str(mean1), \
#])
#plt.savefig(graphTitleBeforeAfter + '.png')
#plt.savefig(graphTitleBeforeAfter + '.pdf')
#plt.legend
#plt.close()
plt
.
figure
()
p0
=
plt
.
scatter
(
timeArray
,
beforeArray
[:,
27
],
color
=
'
b
'
)
plt
.
grid
(
True
)
plt
.
savefig
(
graphWholeRun
+
'
.png
'
)
plt
.
savefig
(
graphWholeRun
+
'
.pdf
'
)
plt
.
close
()
# Uncomment below to test on one directory only:
combSpectrum
(
'
/home/pulsar/public_html/feedforward/diagnostics/LHO/H-H1_AMPS_C02_L2-9326/
'
,
'
one
'
)
#combSpectrum('/home/pulsar/feedforward/2012/10/25/AMPS/files_for_comb/', 'one')
# Uncomment below to test all directories and produce a whole-run overview.
#grandTarget = '/home/pulsar/public_html/feedforward/diagnostics/LHO/'
#combSpectrum(grandTarget, 'all')
# Uncomment below to test each directory, making plots one-by-one.
#grandTarget = '/home/pulsar/public_html/feedforward/diagnostics/LHO'
#highDirectoryList = os.listdir(grandTarget)
#highDirectoryListDirOnly = [x for x in highDirectoryList if x.find('.') == -1]
#for x in highDirectoryListDirOnly:
# combSpectrum(grandTarget + '/' + x + '/', 'one')
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment