| Conditions | 14 |
| Total Lines | 102 |
| Code Lines | 66 |
| Lines | 0 |
| Ratio | 0 % |
| Changes | 0 | ||
Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.
For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.
Commonly applied refactorings include:
If many parameters/temporary variables are present:
Complex classes like scripts.dawn_runner.run_savu.runSavu() often do a lot of different things. To break such a class down, we need to identify a cohesive component within that class. A common approach to find such a component is to look for fields/methods that share the same prefixes, or suffixes.
Once you have determined the fields that belong together, you can apply the Extract Class refactoring. If the component makes sense as a sub-class, Extract Subclass is also a candidate, and is often faster.
| 1 | ''' |
||
| 37 | def runSavu(path2plugin, params, metaOnly, inputs, persistence): |
||
| 38 | ''' |
||
| 39 | path2plugin - is the path to the user script that should be run |
||
| 40 | params - are the savu parameters |
||
| 41 | metaOnly - a boolean for whether the data is kept in metadata or is passed as data |
||
| 42 | inputs - is a dictionary of input objects |
||
| 43 | ''' |
||
| 44 | t1 = time.time() |
||
| 45 | sys_path_0_lock = persistence['sys_path_0_lock'] |
||
| 46 | sys_path_0_set = persistence['sys_path_0_set'] |
||
| 47 | plugin_object = persistence['plugin_object'] |
||
| 48 | axis_labels = persistence['axis_labels'] |
||
| 49 | axis_values = persistence['axis_values'] |
||
| 50 | string_key = persistence['string_key'] |
||
| 51 | parameters = persistence['parameters'] |
||
| 52 | aux = persistence['aux'] |
||
| 53 | sys_path_0_lock.acquire() |
||
| 54 | try: |
||
| 55 | result = copy(inputs) |
||
| 56 | |||
| 57 | scriptDir = os.path.dirname(path2plugin) |
||
| 58 | sys_path_0 = sys.path[0] |
||
| 59 | if sys_path_0_set and scriptDir != sys_path_0: |
||
| 60 | raise Exception("runSavu attempted to change sys.path[0] in a way that " |
||
| 61 | "could cause a race condition. Current sys.path[0] is {!r}, " |
||
| 62 | "trying to set to {!r}".format(sys_path_0, scriptDir)) |
||
| 63 | else: |
||
| 64 | sys.path[0] = scriptDir |
||
| 65 | sys_path_0_set = True |
||
| 66 | |||
| 67 | if not plugin_object: |
||
| 68 | parameters = {} |
||
| 69 | # slight repack here |
||
| 70 | for key in list(params.keys()): |
||
| 71 | # print "here" |
||
| 72 | val = params[key]["value"] |
||
| 73 | if type(val)==type(''): |
||
| 74 | val = val.replace('\n','').strip() |
||
| 75 | # print val |
||
| 76 | parameters[key] = val |
||
| 77 | print(("val: {}".format(val))) |
||
| 78 | # print "initialising the object" |
||
| 79 | plugin_object = _savu_setup(path2plugin, inputs, parameters) |
||
| 80 | persistence['plugin_object'] = plugin_object |
||
| 81 | axis_labels, axis_values = process_init(plugin_object) |
||
| 82 | # print "I did the initialisation" |
||
| 83 | # print "axis labels",axis_labels |
||
| 84 | # print "axis_values", axis_values |
||
| 85 | # print plugin_object |
||
| 86 | chkstring = [any(isinstance(ix, str) for ix in axis_values[label]) for label in axis_labels] |
||
| 87 | if any(chkstring): # are any axis values strings we instead make this an aux out |
||
| 88 | metaOnly = True |
||
| 89 | # print "AXIS LABELS"+str(axis_values) |
||
| 90 | string_key = axis_labels[chkstring.index(True)] |
||
| 91 | aux = OrderedDict.fromkeys(axis_values[string_key]) |
||
| 92 | # print aux.keys() |
||
| 93 | else: |
||
| 94 | string_key = axis_labels[0]# will it always be the first one? |
||
| 95 | if not metaOnly: |
||
| 96 | if len(axis_labels) == 1: |
||
| 97 | result['xaxis']=axis_values[axis_labels[0]] |
||
| 98 | result['xaxis_title']=axis_labels[0] |
||
| 99 | if len(axis_labels) == 2: |
||
| 100 | # print "set the output axes" |
||
| 101 | x = axis_labels[0] |
||
| 102 | result['xaxis_title']=x |
||
| 103 | y = axis_labels[1] |
||
| 104 | result['yaxis_title']=y |
||
| 105 | result['yaxis']=axis_values[y] |
||
| 106 | result['xaxis']=axis_values[x] |
||
| 107 | else: |
||
| 108 | pass |
||
| 109 | finally: |
||
| 110 | sys_path_0_lock.release() |
||
| 111 | |||
| 112 | if plugin_object.get_max_frames()>1: # we need to get round this since we are frame independant |
||
| 113 | data = np.expand_dims(inputs['data'], 0) |
||
| 114 | else: |
||
| 115 | data = inputs['data'] |
||
| 116 | |||
| 117 | print(("metaOnly: {}".format(metaOnly))) |
||
| 118 | |||
| 119 | if not metaOnly: |
||
| 120 | |||
| 121 | out = plugin_object.process_frames([data]) |
||
| 122 | # print "ran the plugin" |
||
| 123 | |||
| 124 | result['data'] = out |
||
| 125 | elif metaOnly: |
||
| 126 | result['data'] = inputs['data'] |
||
| 127 | # print type(result['data']) |
||
| 128 | out_array = plugin_object.process_frames([inputs['data']]) |
||
| 129 | |||
| 130 | # print aux.keys() |
||
| 131 | |||
| 132 | for k,key in enumerate(aux.keys()): |
||
| 133 | aux[key]=np.array([out_array[k]])# wow really |
||
| 134 | |||
| 135 | result['auxiliary'] = aux |
||
| 136 | t2 = time.time() |
||
| 137 | print("time to runSavu = "+str((t2-t1))) |
||
| 138 | return result |
||
| 139 | |||
| 235 |