Source code for pyfusion.devices.H1.H1_scan_list

from __future__ import print_function
import numpy as np
import os
from matplotlib.cbook import flatten
THIS_FILE = os.path.abspath( __file__ )

[docs]def get_scan_keys(filename=THIS_FILE): """ """ with open(filename,'r') as sfile: slines = sfile.readlines() keys = [] for line in slines: if ("keyname"+"==") in line: keys.append(line.split("'")[1]) return keys
[docs]def database_of_scans(keyname): def fromto(from_, to_, step_=1): return list(range(from_, to_ + 1)) shot_list = None start_time = None end_time = None if keyname=='Feb': start_shot=70050 end_shot=70145 shot_list=fromto(start_shot,end_shot) start_time = 0.; end_time = 0.08 elif keyname=='May5': start_shot=70664 end_shot=70765 shot_list=fromto(start_shot,end_shot) bad_shots=[70689,70690,70691,70698,70699,70700] for bad_shot_placeholder in bad_shots: shot_list.remove(bad_shot_placeholder) start_time = 0.; end_time = 0.08 elif keyname=='May12': start_shot=71010 end_shot=71058 shot_list=fromto(start_shot,end_shot) start_time = 0.; end_time = 0.08 elif keyname=='Dave': start_shot=58043 end_shot=58153 shot_list=fromto(start_shot,end_shot) shot_list.remove(58109) start_time = 0.; end_time = 0.08 elif keyname=='May19': shot_list=fromto(71535, 71639)# - 1st half of the scan for remove_shot in range(71584,71592+1): shot_list.remove(remove_shot) shot_list.remove(71619) start_time = 0.; end_time = 0.08 elif keyname=='24July2012': start_shot = 73758;end_shot = 73839 shot_list=fromto(start_shot,end_shot) start_time = 0.; end_time = 0.08 elif keyname=='SeptRuns': start_shot = 75415;end_shot = 75513 shot_list=fromto(start_shot,end_shot) remove_list =fromto(75454, 75461) for i in remove_list: shot_list.remove(i) start_shot2 = 75707 end_shot2 = 75789 shot_list.extend(fromto(start_shot2,end_shot2)) start_time = 0.; end_time = 0.09 elif keyname=='16Aug2012FreqScan': #Aug16 #frequency scaning #I_ring = 7424, 6940, 6490 #I_ring = 6492, 4720, 5091, 5493, 5991 tmp_list = [fromto(74845, 74865), fromto(74813, 74835), fromto(74772, 74798), fromto(74757, 74763), fromto(74720, 74741), fromto(74678, 74704), fromto(74644, 74671),fromto(74622, 74633)] remove_list=[74791, 74690, 74689, 74688, 74687, 74724] shot_list = [] for i in tmp_list: for j in i: shot_list.append(j) for i in remove_list: shot_list.remove(i) start_time = 0.; end_time = 0.045 elif keyname=='All_Shots': start_shot=70050; end_shot=70145 shot_number_list1=fromto(start_shot,end_shot) start_shot=70664; end_shot=70765 shot_number_list2=fromto(start_shot,end_shot) bad_shots=[70689,70690,70691,70698,70699,70700] for bad_shot_placeholder in bad_shots: shot_number_list2.remove(bad_shot_placeholder) start_shot=71010; end_shot=71058 shot_number_list3=fromto(start_shot,end_shot) shot_number_list4=fromto(71535, 71639)# - 1st half of the scan for remove_shot in range(71584,71592+1): shot_number_list4.remove(remove_shot) shot_number_list4.remove(71619) shot_list = [] for tmp_shot_list in [shot_number_list1,shot_number_list2,shot_number_list3,shot_number_list4]: for tmp_shot in tmp_shot_list: shot_list.append(tmp_shot) start_time = 0.; end_time = 0.08 elif keyname=='May19Extra': #shot_number_list=range(71431,71448) #shot_number_list=range(71448,71465) #shot_number_list=range(71518,7153) #shot_number_list.remove(71516) #shot_number_list=range(71616,71631) shot_list=fromto(71535, 71639)# - 1st half of the scan for remove_shot in range(71584,71586+1): shot_list.remove(remove_shot) print(shot_list) start_time = 0.; end_time = 0.08 elif keyname=='Test': shot_list=fromto(71728,71730) start_time = 0.; end_time = 0.08 ########################################### ######## 5MHz scan Nov 16 2012 ########### elif keyname=='scan_5MHz': shot_list = fromto(76774,76806); #16 Nov 5MHz second higher power attempt shot_list2 = fromto(76810, 76816); for i in shot_list2: shot_list.append(i) shot_list3 = fromto(76843,76869); for i in shot_list3: shot_list.append(i) remove_list = [76795, 76813, 76861] for i in remove_list: shot_list.remove(i) start_time = 0.004 end_time = 0.040 ########################################### ######## 5MHz scan Nov 16 2012, selected shots to get kappa<0.4 ########### elif keyname=='low_kh_5MHz': shot_list = fromto(76774,76779); #16 Nov 5MHz second higher power attemp shot_list.extend([76810, 76811, 76812, 76814, 76868]) start_time = 0.004 end_time = 0.040 ########################################### ######## 7MHz scan Nov 15/16 2012, short version for debug ########### elif keyname=='short_scan_7MHz': shot_list = fromto(76616,76625) #15 Nov 7MHz start_time = 0.004 end_time = 0.040 #start_time, end_time = 0.01, 0.02 ########################################### ########################################### ######## 7MHz scan Nov 15/16 2012, very short version for debug ########### elif keyname=='very_short_scan_7MHz': shot_list = fromto(76616,76625,1) #15 Nov 7MHz start_time = 0.004 end_time = 0.020 ########################################### ######## 7MHz scan Nov 15/16 2012 ########### elif keyname=='scan_7MHz': shot_list = fromto(76616,76661) #15 Nov 7MHz shot_list2 = fromto(76870, 76890); for i in shot_list2: shot_list.append(i) #shot_list3 = range(76843,76870); #for i in shot_list3: shot_list.append(i) #remove_list = [76795, 76813, 76861] #for i in remove_list: shot_list.remove(i) start_time = 0.004 end_time = 0.040 ############################################### ######## High power 7MHz scan Sept 14 2012 #### #This scan seems to be of dubious quality....? #Some interesting stuff, but lots of strange data from the instability in the transmitters elif keyname=='scan_7MHz_high': start_shot = 75415;end_shot = 75513 shot_list=fromto(start_shot,end_shot,1) remove_list =fromto(75454, 75461); remove_list.append(75498) for i in remove_list: try: shot_list.remove(i) except ValueError: print('removal item not in list') #time_bounds = [0, 0.09] start_time = 0.004 end_time = 0.090 ###################################################### ######## High power 5MHz scan Sept 19 2012 ########### ####### This has good results - hints of whale tails, but mainly higher frequency activity elif keyname=='scan_5MHz_high': start_shot = 75707 end_shot = 75789 shot_list=fromto(start_shot,end_shot) start_time = 0.004 time_bounds = [0, 0.09] end_time = time_bounds[1] elif keyname=='scan_4.5MHz_16Oct': start_shot = 80689 #end_shot = 80791 end_shot = 80724 shot_list=fromto(start_shot,end_shot) shot_list2 = fromto(80761, 80795) for i in shot_list2:shot_list.append(i) #shot_list=range(start_shot,end_shot+0) remove_list = [80695] for i in remove_list:shot_list.remove(i) start_time = 0.004 end_time = 0.079 time_bounds = [0, 0.079] elif keyname=='scan_7MHz_16Oct_MP': start_shot = 80843 end_shot = 80877 shot_list=fromto(start_shot,end_shot) #hot_list2 = range(80761, 80795+1) #for i in shot_list2:shot_list.append(i) #shot_list=range(start_shot,end_shot+0) remove_list = [80847] for i in remove_list:shot_list.remove(i) start_time = 0.004 end_time = 0.079 time_bounds = [0, 0.079] ########################################### ######## 5MHz and 7MHz scans Nov 15/16 2012 ########### elif keyname=='scan_5MHz_7MHz': shot_list = fromto(76774,76806); #16 Nov 5MHz second higher power attempt shot_list2 = fromto(76810, 76816); for i in shot_list2: shot_list.append(i) shot_list3 = fromto(76843,76869); for i in shot_list3: shot_list.append(i) remove_list = [76795, 76813, 76861] for i in remove_list: shot_list.remove(i) shot_list2 = fromto(76616,76661) #15 Nov 7MHz for i in shot_list2: shot_list.append(i) shot_list2 = fromto(76870, 76890); for i in shot_list2: shot_list.append(i) start_time = 0.004 end_time = 0.040 elif keyname=='June16_2014_21inter': shot_list = fromto(83130,83212); #shot_list2 = range(76810, 76817); #for i in shot_list2: shot_list.append(i) remove_list = [83166,83172] for i in remove_list: shot_list.remove(i) start_time = 0.004 end_time = 0.080 end_time = 0.040 elif keyname=='aug_2013_antenna_phasing': pass elif keyname=='low_power_4MHz_3_4_Dec_2014': shot_list = fromto(85124,85181) remove_list = fromto(85139,85145) remove_list.extend([85126, 85127, 85150]) for s in remove_list: shot_list.remove(s) start_time = 0.004 end_time = 0.080 elif keyname=='4MHz_full_6_Aug_2015': shot_list = fromto(87511,87576) remove_list = [] remove_list.extend([]) for s in remove_list: shot_list.remove(s) start_time = 0.00 end_time = 0.060 elif keyname=='4MHz_43_fine_15kW_6_Aug_2015': shot_list = fromto(87487,87497) remove_list = [] remove_list.extend([]) for s in remove_list: shot_list.remove(s) start_time = 0.00 end_time = 0.060 elif keyname=='8MHz_11_Aug_2015': shot_list = fromto(87686,87698) remove_list = [87692] remove_list.extend([]) for s in remove_list: shot_list.remove(s) start_time = 0.00 end_time = 0.060 elif keyname=='8MHz_54_43_20kw_11_Aug_2015': shot_list = fromto(87668,87679) #range(87511,87577) remove_list = [] remove_list.extend([]) for s in remove_list: shot_list.remove(s) start_time = 0.00 end_time = 0.060 elif keyname=='8MHz_43_20kw_26_Aug_2015': shot_list = fromto(88236,88255) remove_list = [] remove_list.extend([]) for s in remove_list: shot_list.remove(s) start_time = 0.00 end_time = 0.060 elif keyname=='4MHz_D2_54_27kw_20_Aug_2015': shot_list = fromto(87993,87999) remove_list = [] remove_list.extend([]) for s in remove_list: shot_list.remove(s) start_time = 0.00 end_time = 0.060 elif keyname=='4MHz_D2_54_left_55kw_20_Aug_2015': shot_list = fromto(88034,88039) remove_list = [] remove_list.extend([]) for s in remove_list: shot_list.remove(s) start_time = 0.00 end_time = 0.060 elif keyname=='4MHz_D2_54_28kw_20_Aug_2015': shot_list = fromto(88047,88053) remove_list = [] remove_list.extend([]) for s in remove_list: shot_list.remove(s) start_time = 0.00 end_time = 0.060 elif keyname=='7MHz_H/He_Hill_54_43_10kw_8_Sep_2015': shot_list = fromto(88680,88702) remove_list = [88694] #88694? remove_list.extend([]) for s in remove_list: shot_list.remove(s) start_time = 0.00 end_time = 0.060 else: raise ValueError('SCAN NOT AVAILABLE!!!!!') return shot_list, start_time, end_time
[docs]def return_scan_details(keynames): '''keynames is a list of keynames for the various scans that have been done documentation must be populated by hand (get_scan_keys helps) options include: Feb May5 May12 Dave May19 24July2012 SeptRuns 16Aug2012FreqScan All_Shots May19Extra Test scan_5MHz low_kh_5MHz short_scan_7MHz very_short_scan_7MHz scan_7MHz scan_7MHz_high scan_5MHz_high scan_4.5MHz_16Oct scan_7MHz_16Oct_MP scan_5MHz_7MHz June16_2014_21inter aug_2013_antenna_phasing low_power_4MHz_3_4_Dec_2014 4MHz_6_Aug_2015 4MHz_6_Aug_2015 8MHz_11_Aug_2015 8MHz_54_43_20kw_11_Aug_2015 8MHz_43_20kw_26_Aug_2015 4MHz_D2_54_27kw_20_Aug_2015 4MHz_D2_54_left_55kw_20_Aug_2015 4MHz_D2_54_28kw_20_Aug_2015 ''' shot_list_overall = []; start_time_overall = []; end_time_overall = [] # variables for making summary: names = [] ; min_shot = []; max_shot = []; st_time = []; en_time = [] if keynames.__class__==str: keynames = [keynames] for keyname in keynames: print(keyname, end=' ') shot_list, start_time, end_time = database_of_scans(keyname) if shot_list is None: shot_list = [] else: print(min(shot_list), '..', max(shot_list), start_time, end_time) names.append(keyname) min_shot.append(min(shot_list)) max_shot.append(max(shot_list)) st_time.append(start_time) en_time.append(end_time) start_time_overall.extend([start_time] * len(shot_list)) end_time_overall.extend([end_time] * len(shot_list)) shot_list_overall.extend(shot_list) shot_order = np.argsort(min_shot) print('================================================================') for so in shot_order: print(('{name}: {min_shot}..{max_shot} {st_time} {en_time}' .format(name = names[so], min_shot=min_shot[so], max_shot=max_shot[so], st_time = st_time[so], en_time = en_time[so]))) return shot_list_overall, start_time_overall, end_time_overall
[docs]def get_all_shots(): keys = get_scan_keys() all_shots = [] for key in keys: shot_list, start_time, end_time = database_of_scans(key) if shot_list is None: print('Empty shot list for ' +key) else: b4 = len(np.unique(all_shots)) all_shots.extend(shot_list) aft = len(np.unique(all_shots)) delt = aft-b4 if delt>0: print(key, ' added ', delt, 'shots') return np.unique(all_shots)
[docs]def find_missing_shots(shot_list): import MDSplus as MDS missing = [] for shot in shot_list: try: tr = MDS.Tree('h1data',shot) except: missing.append(shot) return missing
[docs]def make_rsync_list(shot_list,glob_expand=False): """ make a list for rsync -az --files-from=list.txt dest: The glob option is usually not useful, unless both filesystems are accessible with low latency: The following will exand the wildcards $ for x in `cat shot_list`; do ls $x;done > expanded_list """ if glob_expand: from glob import glob with open('shot_list','w') as slist: for (i,shot) in enumerate(shot_list): sortdir = '{h:04d}'.format(h=shot/100) wild = '/data/h1/sorted/'+sortdir+'/*_{s:5d}.*'.format(s=shot) if i<10: print(wild) if glob_expand: wild=glob(wild) else: wild = [wild] slist.write('\n'.join(wild)+'\n')