changed to decimated integrals

Signed-off-by: Bernardo Carvalho <bernardo.carvalho@tecnico.ulisboa.pt>
This commit is contained in:
2024-05-09 12:21:08 +00:00
parent 01d94b88a5
commit 6be45640c5
2 changed files with 50 additions and 38 deletions

View File

@@ -1,7 +1,7 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
""" """
This script plots the MARTe2 ATCAIop samples stored in MDSplus This script plots the MARTe2 ATCAIop samples stored in MDSplus
All of the plots may be panned/scaled by dragging with All of the plots may be panned/scaled by dragging with
the left/right mouse buttons. Right click on any plot to show a context menu. the left/right mouse buttons. Right click on any plot to show a context menu.
""" """
import numpy as np import numpy as np
@@ -9,16 +9,17 @@ import numpy as np
from MDSplus import Tree from MDSplus import Tree
import argparse import argparse
ADC_CHANNELS = 14 # channels stored in ISTTOK ADC_CHANNELS = 14 # channels stored in ISTTOK
DECIM_RATE = 200 DECIM_RATE = 200
MDSTREENAME = 'rtappisttok' MDSTREENAME = 'rtappisttok'
def main(args): def main(args):
mdsPulseNumber = args.shot mdsPulseNumber = args.shot
try: try:
if(mdsPulseNumber > 0): if (mdsPulseNumber > 0):
tree = Tree(MDSTREENAME, mdsPulseNumber) tree = Tree(MDSTREENAME, mdsPulseNumber)
else: else:
tree = Tree(MDSTREENAME) tree = Tree(MDSTREENAME)
@@ -26,52 +27,58 @@ def main(args):
tree.close() tree.close()
tree = Tree(MDSTREENAME, mdsPulseNumber) tree = Tree(MDSTREENAME, mdsPulseNumber)
except: except Exception:
print(f'Failed opening {MDSTREENAME} for pulse number {mdsPulseNumber:d}') print(f'Failed opening {MDSTREENAME} for pulse number ' +
f'{mdsPulseNumber:d}')
exit() exit()
print(f'Openpening {MDSTREENAME} for pulse number {mdsPulseNumber:d}') print(f'Opening {MDSTREENAME} for pulse number {mdsPulseNumber:d}')
# add plt.addLegend() BEFORE you create the curves. # add plt.addLegend() BEFORE you create the curves.
#mdsNode = tree.getNode("ATCAIOP1.ADC0RAW") # mdsNode = tree.getNode("ATCAIOP1.ADC0RAW")
#dataAdc = mdsNode.getData().data() # dataAdc = mdsNode.getData().data()
#timeData = mdsNode.getDimensionAt(0).data() # timeData = mdsNode.getDimensionAt(0).data()
start = args.crange[0] -1; stop = args.crange[1] # start = args.crange[0] - 1
#for i in range(args.crange[0], args.crange[1]): # top = args.crange[1]
# for i in range(args.crange[0], args.crange[1]):
meanD = np.zeros(ADC_CHANNELS, dtype=int) meanD = np.zeros(ADC_CHANNELS, dtype=int)
driftW = np.zeros(ADC_CHANNELS) driftW = np.zeros(ADC_CHANNELS)
total_samples = 0 total_samples = 0
for i in range(ADC_CHANNELS): for i in range(ADC_CHANNELS):
mdsNode = tree.getNode(f"ATCAIOP1.ADC{i}RAW") mdsNode = tree.getNode(f"ATCAIOP1.ADC{i}RAW")
dataAdc = mdsNode.getData().data() dataAdc = mdsNode.getData().data()
meanD[i] = np.mean(dataAdc[:,0]).astype(int) meanD[i] = np.mean(dataAdc[:, 0]).astype(int)
mdsNode = tree.getNode(f"ATCAIOP1.ADC{i}INT") mdsNode = tree.getNode(f"ATCAIOP1.ADC{i}INT")
dataAdcInt = mdsNode.getData().data() dataAdcInt = mdsNode.getData().data()
total_samples = DECIM_RATE * len(dataAdcInt[:, 0]) total_samples = DECIM_RATE * len(dataAdcInt[:, 0])
driftW[i] = (dataAdcInt[-1, 0] - dataAdcInt[0, 0]) /total_samples driftW[i] = (dataAdcInt[-1, 0] - dataAdcInt[0, 0]) / total_samples
# if(args.averages): # if(args.averages):
print(f"EO: {ADC_CHANNELS} ", end='') print(f"EO: {ADC_CHANNELS} ", end='')
for i in range(ADC_CHANNELS): for i in range(ADC_CHANNELS):
print(f"{meanD[i]:d} ", end='') print(f"{meanD[i]:d} ", end='')
print(" ") print(" ")
print(f"WO: {ADC_CHANNELS} ", end='') print(f"WO: {ADC_CHANNELS} ", end='')
for i in range(ADC_CHANNELS): for i in range(ADC_CHANNELS):
print(f"{driftW[i]:0.3f} ", end='') print(f"{driftW[i]:0.3f} ", end='')
print(" ") print(" ")
print(f"Samples {total_samples}, time {total_samples/2e3:.2f} ms") print(f"Samples {total_samples}, time {total_samples/2e3:.2f} ms")
if __name__ == '__main__': if __name__ == '__main__':
parser = argparse.ArgumentParser(description = 'Script to support the QA activities') parser = argparse.ArgumentParser(
description='Script to support the QA activities')
#parser.add_argument('-l','--list', nargs='+', help='<Required> Set flag', required=True) # parser.add_argument('-l','--list', nargs='+', help='<Required> Set flag', required=True)
#parser.add_argument('-l','--list', nargs='+') # parser.add_argument('-l','--list', nargs='+')
parser.add_argument('-c', '--crange', nargs='+',type=int, help='Channel plots (1 12)',default=[1, 12]) parser.add_argument('-c', '--crange', nargs='+',
parser.add_argument('-i', '--irange', nargs='+',type=int,default=[1, 12]) type=int, help='Channel plots (1 12)', default=[1, 12])
parser.add_argument('-s', '--shot', type=int, help='Mds+ pulse Number ([1, ...])', default=0) parser.add_argument('-i', '--irange', nargs='+',
#parser.add_argument('-e', '--averages', action='store_true', help='Calc averages') type=int, default=[1, 12])
#parser.add_argument('-w', '--drift', action='store_true', help='Calc drifts') parser.add_argument('-s', '--shot',
#, default='') type=int, help='Mds+ pulse Number ([1, ...])',
default=0)
# parser.add_argument('-e', '--averages', action='store_true', help='Calc averages')
# parser.add_argument('-w', '--drift', action='store_true', help='Calc drifts')
args = parser.parse_args() args = parser.parse_args()
main(args) main(args)

View File

@@ -1,7 +1,7 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
""" """
This script plots the MARTe2 ATCAIop samples stored in MDSplus This script plots the MARTe2 ATCAIop samples stored in MDSplus
All of the plots may be panned/scaled by dragging with All of the plots may be panned/scaled by dragging with
the left/right mouse buttons. Right click on any plot to show a context menu. the left/right mouse buttons. Right click on any plot to show a context menu.
""" """
import numpy as np import numpy as np
@@ -22,14 +22,17 @@ DECIM_RATE = 200
parser = argparse.ArgumentParser( parser = argparse.ArgumentParser(
description='Script to support the QA activities') description='Script to support the QA activities')
# parser.add_argument('-l','--list', nargs='+', help='<Required> Set flag', required=True) # parser.add_argument('-l','--list', nargs='+',
# help='<Required> Set flag', required=True)
# parser.add_argument('-l','--list', nargs='+') # parser.add_argument('-l','--list', nargs='+')
parser.add_argument('-c', '--crange', nargs='+', type=int, parser.add_argument('-c', '--crange', nargs='+', type=int,
help='Channel plots (1 12)', default=[1, 12]) help='Channel plots (1 12)', default=[1, 12])
parser.add_argument('-i', '--irange', nargs='+', type=int, default=[1, 12]) parser.add_argument('-i', '--irange', nargs='+', type=int, default=[1, 12])
# arser.add_argument('pulse','-', nargs='+', help='<Required> Set flag', required=True) # arser.add_argument('pulse','-', nargs='+', help='<Required> Set flag', required=True)
parser.add_argument('-s', '--shot', type=int, help='Mds+ pulse Number ([1, ...])', default=100) parser.add_argument('-s', '--shot', type=int,
parser.add_argument('-m', '--maxpoints', type=int, help='Max points to plot', default=50000) help='Mds+ pulse Number ([1, ...])', default=100)
parser.add_argument('-m', '--maxpoints', type=int,
help='Max points to plot', default=50000)
parser.add_argument('-e', '--averages', action='store_true', parser.add_argument('-e', '--averages', action='store_true',
help='Calc averages') help='Calc averages')
# parser.add_argument('-w', '--drift', action='store_true', help='Calc drifts') # parser.add_argument('-w', '--drift', action='store_true', help='Calc drifts')
@@ -60,7 +63,8 @@ p1 = win.addPlot(title="ATCA-IOP ADC raw decimated")
# dataAdc = mdsNode.getData().data() # dataAdc = mdsNode.getData().data()
# timeData = mdsNode.getDimensionAt(0).data() # timeData = mdsNode.getDimensionAt(0).data()
p1.addLegend() p1.addLegend()
start = args.crange[0] -1; stop = args.crange[1] start = args.crange[0] - 1
stop = args.crange[1]
# for i in range(args.crange[0], args.crange[1]): # for i in range(args.crange[0], args.crange[1]):
meanD = np.zeros(ADC_CHANNELS, dtype=int) meanD = np.zeros(ADC_CHANNELS, dtype=int)
driftW = np.zeros(ADC_CHANNELS) driftW = np.zeros(ADC_CHANNELS)
@@ -68,7 +72,7 @@ total_samples = 0
for i in range(ADC_CHANNELS): for i in range(ADC_CHANNELS):
mdsNode = tree.getNode(f"ATCAIOP1.ADC{i}RAW") mdsNode = tree.getNode(f"ATCAIOP1.ADC{i}RAW")
dataAdc = mdsNode.getData().data() dataAdc = mdsNode.getData().data()
meanD[i] = np.mean(dataAdc[:,0]).astype(int) meanD[i] = np.mean(dataAdc[:, 0]).astype(int)
mdsNode = tree.getNode(f"ATCAIOP1.ADC{i}INT") mdsNode = tree.getNode(f"ATCAIOP1.ADC{i}INT")
dataAdcInt = mdsNode.getData().data() dataAdcInt = mdsNode.getData().data()
total_samples = DECIM_RATE * len(dataAdcInt[:, 0]) total_samples = DECIM_RATE * len(dataAdcInt[:, 0])
@@ -90,7 +94,7 @@ for i in range(start, stop):
mdsNode = tree.getNode(f"ATCAIOP1.ADC{i}RAW") mdsNode = tree.getNode(f"ATCAIOP1.ADC{i}RAW")
dataAdc = mdsNode.getData().data() dataAdc = mdsNode.getData().data()
timeData = mdsNode.getDimensionAt(0).data() timeData = mdsNode.getDimensionAt(0).data()
y = dataAdc[ :args.maxpoints, 0] y = dataAdc[:args.maxpoints, 0]
x = DECIM_RATE * np.arange(len(y)) / 2.0e6 x = DECIM_RATE * np.arange(len(y)) / 2.0e6
p1.plot(x, y, pen=pg.mkPen(i, width=2), name=f"Ch {i+1}") p1.plot(x, y, pen=pg.mkPen(i, width=2), name=f"Ch {i+1}")
# p1.setLabel('bottom', "Y Axis", units='s') # p1.setLabel('bottom', "Y Axis", units='s')
@@ -99,7 +103,8 @@ win.nextRow()
p4 = win.addPlot(title="Channel Integrals") p4 = win.addPlot(title="Channel Integrals")
p4.addLegend() p4.addLegend()
# for i in range(8,12): # for i in range(8,12):
start = args.irange[0] -1; stop = args.irange[1] start = args.irange[0] - 1
stop = args.irange[1]
# print("WO: ", end='') # print("WO: ", end='')
for i in range(start, stop): for i in range(start, stop):
# mdsNode = tree.getNode(f"ATCAIOP1.ADC8INT") # mdsNode = tree.getNode(f"ATCAIOP1.ADC8INT")
@@ -108,15 +113,15 @@ for i in range(start, stop):
dataAdcInt = mdsNode.getData().data() dataAdcInt = mdsNode.getData().data()
timeData = mdsNode.getDimensionAt(0).data() timeData = mdsNode.getDimensionAt(0).data()
total_samples = DECIM_RATE * len(dataAdcInt[:, 0]) total_samples = DECIM_RATE * len(dataAdcInt[:, 0])
y = dataAdcInt[ :args.maxpoints, 0] / 2.0e6 # LSB * sec y = dataAdcInt[:args.maxpoints, 0] / 2.0e6 # LSB * sec
if (args.zero): if (args.zero):
y = y - dataAdcInt[0, 0] / 2.0e6 # LSB * sec y = y - dataAdcInt[0, 0] / 2.0e6 # LSB * sec
# wo = (dataAdcInt[-1, 0] - dataAdcInt[0, 0]) /total_samples # wo = (dataAdcInt[-1, 0] - dataAdcInt[0, 0]) /total_samples
# print(f"{wo:0.4f} ", end='') # print(f"{wo:0.4f} ", end='')
x = DECIM_RATE * np.arange(len(y)) / 2.0e6 # in sec x = DECIM_RATE * np.arange(len(y)) / 2.0e6 # in sec
p4.plot(x,y, pen=pg.mkPen(i, width=2), name=f"Ch {i+1}") p4.plot(x, y, pen=pg.mkPen(i, width=2), name=f"Ch {i+1}")
except: except Exception:
print(f"No data ATCAIOP1.ADC{i:d}INT") print(f"No data ATCAIOP1.ADC{i:d}INTD")
print(" ") print(" ")