Source code for SEEL.digital_channel

from __future__ import print_function
import numpy as np

digital_channel_names=['ID1','ID2','ID3','ID4','SEN','EXT','CNTR']

[docs]class digital_channel: EVERY_SIXTEENTH_RISING_EDGE = 5 EVERY_FOURTH_RISING_EDGE = 4 EVERY_RISING_EDGE = 3 EVERY_FALLING_EDGE = 2 EVERY_EDGE = 1 DISABLED = 0 def __init__(self,a): self.gain=0 self.channel_number=a self.digital_channel_names=digital_channel_names self.name=self.digital_channel_names[a] self.xaxis=np.zeros(20000) self.yaxis=np.zeros(20000) self.timestamps=np.zeros(10000) self.length=100 self.initial_state=0 self.prescaler = 0 self.datatype='int' self.trigger=0 self.dlength=0 self.plot_length = 0 self.maximum_time =0 self.maxT = 0 self.initial_state_override = False self.mode=self.EVERY_EDGE
[docs] def set_params(self,**keys): self.channel_number = keys.get('channel_number',self.channel_number) self.name = keys.get('name','ErrOr')
[docs] def load_data(self,initial_state,timestamps): if self.initial_state_override: self.initial_state = (self.initial_state_override-1)==1 self.initial_state_override = False else: self.initial_state = initial_state[self.name] self.timestamps=timestamps self.dlength = len(self.timestamps) #print('dchan.py',self.channel_number,self.name,initial_state,self.initial_state) self.timestamps = np.array(self.timestamps)*[1./64,1./8,1.,4.][self.prescaler] if self.dlength:self.maxT=self.timestamps[-1] else: self.maxT=0
[docs] def generate_axes(self): HIGH = 1#(4-self.channel_number)*(3) LOW = 0#HIGH - 2.5 state = HIGH if self.initial_state else LOW if self.mode==self.DISABLED: self.xaxis[0]=0; self.yaxis[0]=state n=1 self.plot_length = n elif self.mode==self.EVERY_EDGE: self.xaxis[0]=0; self.yaxis[0]=state n=1 for a in range(self.dlength): self.xaxis[n] = self.timestamps[a] self.yaxis[n] = state state = LOW if state==HIGH else HIGH n+=1 self.xaxis[n] = self.timestamps[a] self.yaxis[n] = state n+=1 self.plot_length = n elif self.mode==self.EVERY_FALLING_EDGE: self.xaxis[0]=0; self.yaxis[0]=HIGH n=1 for a in range(self.dlength): self.xaxis[n] = self.timestamps[a] self.yaxis[n] = HIGH n+=1 self.xaxis[n] = self.timestamps[a] self.yaxis[n] = LOW n+=1 self.xaxis[n] = self.timestamps[a] self.yaxis[n] = HIGH n+=1 state=HIGH self.plot_length = n elif self.mode==self.EVERY_RISING_EDGE or self.mode==self.EVERY_FOURTH_RISING_EDGE or self.mode==self.EVERY_SIXTEENTH_RISING_EDGE: self.xaxis[0]=0; self.yaxis[0]=LOW n=1 for a in range(self.dlength): self.xaxis[n] = self.timestamps[a] self.yaxis[n] = LOW n+=1 self.xaxis[n] = self.timestamps[a] self.yaxis[n] = HIGH n+=1 self.xaxis[n] = self.timestamps[a] self.yaxis[n] = LOW n+=1 state = LOW self.plot_length = n
#print(self.channel_number,self.dlength,self.mode,len(self.yaxis),self.plot_length)
[docs] def get_xaxis(self): return self.xaxis[:self.plot_length]
[docs] def get_yaxis(self): return self.yaxis[:self.plot_length]