def load_trajectory_file(self, filename): array_out = [] with open(str(filename)) as f: for line in f: array_out.append(int(line)) array_out = np.array(array_out) self.energy_grid_loaded = -xray.encoder2energy(array_out, 0)
def load(self, encoder_trace, i0trace, iflutrace, irtrace='', trigtrace='', i0offset=0, ifluoffset=0, iroffset=0, angleoffset=0): self.encoder_file = encoder_trace self.i0_file = i0trace self.it_file = iflutrace self.ir_file = irtrace self.trig_file = trigtrace self.encoder = self.loadENCtrace(encoder_trace) self.energy = np.copy(self.encoder) #self.energy[:, 1] = xray.encoder2energy(self.encoder[:, 1], 0.041) self.energy[:, 1] = xray.encoder2energy(self.encoder[:, 1], -angleoffset) self.i0 = self.loadADCtrace(i0trace) self.i0[:, 1] = self.i0[:, 1] - i0offset self.ir = self.loadADCtrace(irtrace) self.ir[:, 1] = self.ir[:, 1] - iroffset self.iflu = self.loadADCtrace(iflutrace) self.iflu[:, 1] = self.iflu[:, 1] - ifluoffset self.trigger = self.loadTRIGtrace(trigtrace) self.it = np.copy(self.iflu)
def load(self, encoder_trace, i0trace, ittrace, irtrace='', i0offset=0, itoffset=0, iroffset=0, angleoffset=0): self.encoder_file = encoder_trace self.i0_file = i0trace self.it_file = ittrace self.ir_file = irtrace self.encoder = self.loadENCtrace(encoder_trace) self.energy = self.encoder #self.energy[:, 1] = xray.encoder2energy(self.encoder[:, 1], 0.041) self.energy[:, 1] = xray.encoder2energy( self.encoder[:, 1], -angleoffset ) #-12400 / (2 * 3.1356 * np.sin((np.pi / 180) * ((self.encoder[:, 1]/360000) + 0))) self.i0 = self.loadADCtrace(i0trace) self.it = self.loadADCtrace(ittrace) self.ir = self.loadADCtrace(irtrace) self.i0[:, 1] = self.i0[:, 1] - i0offset self.it[:, 1] = self.it[:, 1] - itoffset self.ir[:, 1] = self.ir[:, 1] - iroffset
def load(self, uid): #if self.db is None: # raise Exception('The databroker was not passed as argument to the parser. This feature is disabled.') self.arrays = {} self.interp_arrays = {} self.uid = uid has_encoder = False for i in self.db[uid]['descriptors']: if 'filename' in i['data_keys'][i['name']]: name = i['name'] if name == 'pb9_enc1' or name == 'hhm_theta': has_encoder = name if 'devname' in i['data_keys'][i['name']]: name = i['data_keys'][i['name']]['devname'] if name == 'hhm_theta': has_encoder = name if i['data_keys'][i['name']]['source'] == 'pizzabox-di-file': data = self.loadTRIGtrace(i['data_keys'][i['name']]['filename'], '') if i['data_keys'][i['name']]['source'] == 'pizzabox-adc-file': data = self.loadADCtrace(i['data_keys'][i['name']]['filename'], '') if i['name'] + ' offset' in self.db[uid]['start'] and type(data) == pd.core.frame.DataFrame: data.iloc[:, 1] = data.iloc[:, 1] - self.db[uid]['start'][i['name'] + ' offset'] if i['data_keys'][i['name']]['source'] == 'pizzabox-enc-file': data = self.loadENCtrace(i['data_keys'][i['name']]['filename'], '') #if type(data) == np.ndarray: self.arrays[name] = data if has_encoder is not False: energy = self.arrays.get(has_encoder).copy() if 'angle_offset' in self.db[uid]['start']: energy.iloc[:, 1] = xray.encoder2energy(energy.iloc[:, 1], self.pulses_per_deg, -float(self.db[uid]['start']['angle_offset'])) energy.columns = ['timestamp', 'energy'] del self.arrays[has_encoder] self.arrays['energy'] = energy
def load_trajectory_file(self, filename, offset, is_energy): array_out = [] with open(str(filename)) as f: first = f.readline() if first[0] != '#': array_out.append(float(first)) for line in f: array_out.append(float(line)) array_out = np.array(array_out) if is_energy: self.energy_grid_loaded = array_out else: self.energy_grid_loaded = -xray.encoder2energy( array_out, self.hhm.pulses_per_deg, offset)
def loadDB(self, uid): # if self.db is None: # raise Exception('The databroker was not passed as argument to the parser. This feature is disabled.') t1 = time.time() self.arrays = {} self.interp_arrays = {} self.uid = uid has_encoder = False for i in self.db[uid]['descriptors']: stream_name = i['name'] name = i['name'] if name == self.mono_name: has_encoder = name if 'devname' in i['data_keys'][i['name']]: name = i['data_keys'][i['name']]['devname'] if name == self.mono_name: has_encoder = name if i['data_keys'][i['name']]['source'] == 'pizzabox-di-file': print("loading data {}".format(stream_name)) data = self.loadTRIGtraceDB(uid, stream_name) print("done") if i['data_keys'][i['name']]['source'] == 'pizzabox-adc-file': print("loading data {}".format(stream_name)) data = self.loadADCtraceDB(uid, stream_name) print("done") if i['name'] + ' offset' in self.db[uid]['start'] and type( data) == pd.core.frame.DataFrame: print("subtracting offset : {}".format(i['name'])) data.iloc[:, 1] = data.iloc[:, 1] - self.db[uid]['start'][ i['name'] + ' offset'] if i['data_keys'][i['name']]['source'] == 'pizzabox-enc-file': print("loading data {}".format(stream_name)) data = self.loadENCtraceDB(uid, stream_name) print("done") # if type(data) == np.ndarray: print("saving to {}".format(name)) self.arrays[name] = data if has_encoder is not False: energy = self.arrays.get(has_encoder).copy() if 'angle_offset' in self.db[uid]['start']: energy.iloc[:, 1] = xray.encoder2energy( energy.iloc[:, 1], self.pulses_per_deg, -float(self.db[uid]['start']['angle_offset'])) energy.columns = ['timestamp', 'energy'] del self.arrays[has_encoder] self.arrays['energy'] = energy t2 = time.time() print(f"Data read took {t2-t1} sec")
def load(self, uid): if self.db is None: raise Exception( 'The databroker was not passed as argument to the parser') self.arrays = {} self.interp_arrays = {} self.uid = uid has_encoder = False for i in self.db[uid]['descriptors']: if 'filename' in i['data_keys'][i['name']]: name = i['name'] if name == 'pb9_enc1' or name == 'hhm_theta': has_encoder = name if 'devname' in i['data_keys'][i['name']]: name = i['data_keys'][i['name']]['devname'] if name == 'hhm_theta': has_encoder = name if i['data_keys'][i['name']]['source'] == 'pizzabox-di-file': data = self.loadTRIGtrace( i['data_keys'][i['name']]['filename'], '') if i['data_keys'][i['name']]['source'] == 'pizzabox-adc-file': data = self.loadADCtrace( i['data_keys'][i['name']]['filename'], '') if i['name'] + ' offset' in self.db[uid]['start']: data[:, 1] = data[:, 1] - self.db[uid]['start'][i['name'] + ' offset'] if i['data_keys'][i['name']]['source'] == 'pizzabox-enc-file': data = self.loadENCtrace( i['data_keys'][i['name']]['filename'], '') self.arrays[name] = data if has_encoder is not False: energy = np.copy(self.arrays.get(has_encoder)) if 'angle_offset' in self.db[uid]['start']: energy[:, 1] = xray.encoder2energy( energy[:, 1], -float(self.db[uid]['start']['angle_offset'])) del self.arrays[has_encoder] self.arrays['energy'] = energy
def load(self, orig_file_name, new_file_path, is_energy, offset, new_file_name='hhm.txt'): ip = self.hhm.ip orig_file_path = self.hhm.traj_filepath print('[Load Trajectory] Starting...') traj_fn = orig_file_name # Check if new_file_path is between the possible values if int(new_file_path) > 9 or int(new_file_path) < 1: print( "[Load Trajectory] Path '{}' not possible. Please use a value in the range 1 <= new_file_path <= 9." .format(new_file_path)) return False # Get number of lines in file file_size = self.file_len(orig_file_path + orig_file_name) print( '[Load Trajectory] Number of lines in file: {}'.format(file_size)) # Get min and max of trajectory in eV if orig_file_path[-1] != '/': fp += '/' traj = pd.read_table('{}{}'.format(orig_file_path, orig_file_name), header=None, comment='#') name = orig_file_name header = self.read_header('{}{}'.format(orig_file_path, orig_file_name)) if is_energy: min_energy = int(np.round(traj).min()) max_energy = int(np.round(traj).max()) enc = np.int64( np.round( xray.energy2encoder(-traj, self.hhm.pulses_per_deg, -offset))) orig_file_name = '.energy_traj_aux.txt' np.savetxt('{}{}'.format(orig_file_path, orig_file_name), enc, fmt='%d', header=header, comments='') else: min_energy = int( xray.encoder2energy((-traj, self.hhm.pulses_per_deg).min())) max_energy = int( xray.encoder2energy((-traj, self.hhm.pulses_per_deg).max())) print('[Load Trajectory] Min energy: {}'.format(min_energy)) print('[Load Trajectory] Max energy: {}'.format(max_energy)) # Create ftp connection with default credential ftp = FTP(ip) ftp.login() s = pxssh.pxssh() ssh_login = s.login(ip, 'root', 'deltatau') if ssh_login: # Check if the directory exists in /usrflash/lut/. If it does not, create it. if str(new_file_path) != '': ftp.cwd('/usrflash/') dir_list = ftp.nlst() dir_exists = 0 for dir_name in dir_list: if dir_name == 'lut': dir_exists = 1 if not dir_exists: print('[Load Trajectory] mkdir: /usrflash/lut') ftp.mkd('/usrflash/lut') s.sendline('chown ftp:root /var/ftp/usrflash/lut') s.sendline('chmod a+wrx /var/ftp/usrflash/lut') ftp.cwd('/usrflash/lut/') dir_list = ftp.nlst() dir_exists = 0 for dir_name in dir_list: if dir_name == str(new_file_path): dir_exists = 1 if not dir_exists: print('[Load Trajectory] mkdir: /usrflash/lut/{}'.format( new_file_path)) ftp.mkd('/usrflash/lut/{}'.format(new_file_path)) s.sendline( 'chown ftp:root /var/ftp/usrflash/lut/{}'.format( new_file_path)) s.sendline('chmod a+wrx /var/ftp/usrflash/lut/{}'.format( new_file_path)) s.sendline( 'chown ftp:root /var/ftp/usrflash/lut/{}/hhm.txt'.format( new_file_path)) s.sendline('chmod 777 /var/ftp/usrflash/lut/{}/hhm.txt'.format( new_file_path)) ftp_file_path = '/var/ftp/usrflash/lut/{}/{}'.format( new_file_path, new_file_name) # Open file and transfer to the power pmac f = open(orig_file_path + str(orig_file_name), 'rb') if (f.readable()): line = f.readline().decode('utf-8') if line[0] == '#': element = line[line.find('element:') + 9:line.find(',')].lstrip() edge_value = line[line.find('edge:') + 6:line. find(',', line.find('edge:'))].lstrip() e0_value = line[line.find('E0:') + 4:].lstrip() curr_hhm_traj = getattr(self.hhm, 'traj{}'.format(new_file_path)) curr_hhm_traj.filename.put(traj_fn) curr_hhm_traj.elem.put(element) curr_hhm_traj.edge.put(edge_value) curr_hhm_traj.e0.put(e0_value) else: curr_hhm_traj = getattr(self.hhm, 'traj{}'.format(new_file_path)) curr_hhm_traj.filename.put(traj_fn) curr_hhm_traj.elem.put('') curr_hhm_traj.edge.put('') curr_hhm_traj.e0.put('') f.close() f = open(orig_file_path + str(orig_file_name), 'rb') result = ftp.storbinary( 'STOR ' + '/usrflash/lut/' + str(new_file_path) + '/' + new_file_name, f) if (result == '226 File receive OK.'): print('[Load Trajectory] File sent OK') s.sendline( 'chown ftp:root /var/ftp/usrflash/lut/{}/{}'.format( new_file_path, new_file_name)) s.sendline( 'chmod a+wrx /var/ftp/usrflash/lut/{}/{}'.format( new_file_path, new_file_name)) s.sendline( 'echo "{}\n{}\n{}\n{}" > /var/ftp/usrflash/lut/{}/hhm-size.txt' .format(file_size, name, min_energy, max_energy, new_file_path)) ttime.sleep(0.01) ftp.close() print('[Load Trajectory] Permissions OK') f.close() s.logout() s.pid = None print('[Load Trajectory] Completed!') else: print( '[Load Trajectory] Fail! Not able to ssh into the controller...' )
def e2energy(self, offset): self.energy_grid = -xray.encoder2energy( self.encoder_grid, self.hhm.pulses_per_deg, offset)
def load(self, orig_file_name, new_file_path, new_file_name='hhm.txt', orig_file_path='/GPFS/xf08id/trajectory/', ip='10.8.2.86'): print('[Load Trajectory] Starting...') # Check if new_file_path is between the possible values if int(new_file_path) > 9 or int(new_file_path) < 1: print( "[Load Trajectory] Path '{}' not possible. Please use a value in the range 1 <= new_file_path <= 9." .format(new_file_path)) return False # Get number of lines in file file_size = self.file_len(orig_file_path + orig_file_name) print( '[Load Trajectory] Number of lines in file: {}'.format(file_size)) # Get min and max of trajectory in eV if orig_file_path[-1] != '/': fp += '/' traj = pd.read_table('{}{}'.format(orig_file_path, orig_file_name)) min_energy = int(xray.encoder2energy((-traj).min())) max_energy = int(xray.encoder2energy((-traj).max())) print('[Load Trajectory] Min energy: {}'.format(min_energy)) print('[Load Trajectory] Max energy: {}'.format(max_energy)) # Create ftp connection with default credential ftp = FTP(ip) ftp.login() s = pxssh.pxssh() ssh_login = s.login(ip, 'root', 'deltatau') if ssh_login: # Check if the directory exists in /usrflash/lut/. If it does not, create it. if str(new_file_path) != '': ftp.cwd('/usrflash/') dir_list = ftp.nlst() dir_exists = 0 for dir_name in dir_list: if dir_name == 'lut': dir_exists = 1 if not dir_exists: print('[Load Trajectory] mkdir: /usrflash/lut') ftp.mkd('/usrflash/lut') s.sendline('chown ftp:root /var/ftp/usrflash/lut') s.sendline('chmod a+wrx /var/ftp/usrflash/lut') ftp.cwd('/usrflash/lut/') dir_list = ftp.nlst() dir_exists = 0 for dir_name in dir_list: if dir_name == str(new_file_path): dir_exists = 1 if not dir_exists: print('[Load Trajectory] mkdir: /usrflash/lut/{}'.format( new_file_path)) ftp.mkd('/usrflash/lut/{}'.format(new_file_path)) s.sendline( 'chown ftp:root /var/ftp/usrflash/lut/{}'.format( new_file_path)) s.sendline('chmod a+wrx /var/ftp/usrflash/lut/{}'.format( new_file_path)) ftp_file_path = '/var/ftp/usrflash/lut/{}/{}'.format( new_file_path, new_file_name) # Open file and transfer to the power pmac f = open(orig_file_path + str(orig_file_name), 'rb') if (f.readable()): result = ftp.storbinary( 'STOR ' + '/usrflash/lut/' + str(new_file_path) + '/' + new_file_name, f) if (result == '226 File receive OK.'): print('[Load Trajectory] File sent OK') s.sendline( 'chown ftp:root /var/ftp/usrflash/lut/{}/{}'.format( new_file_path, new_file_name)) s.sendline( 'chmod a+wrx /var/ftp/usrflash/lut/{}/{}'.format( new_file_path, new_file_name)) s.sendline( 'echo "{}\n{}\n{}\n{}" > /var/ftp/usrflash/lut/{}/hhm-size.txt' .format(file_size, orig_file_name, min_energy, max_energy, new_file_path)) ttime.sleep(0.01) ftp.close() print('[Load Trajectory] Permissions OK') s.logout() s.pid = None print('[Load Trajectory] Completed!') else: print( '[Load Trajectory] Fail! Not able to ssh into the controller...' )