--- a/server/web/safe/views.py Tue Nov 18 17:24:22 2014 -0500
+++ b/server/web/safe/views.py Mon Feb 23 12:41:17 2015 -0500
@@ -86,11 +86,7 @@
dp_set = DesignPoint.objects.filter(experiment = exp_id)
out = []
exp_desc_id = Experiment.objects.get(pk = exp_id).exp_description
-<<<<<<< local
- factors = Factor.objects.filter(visible = 1, exp_description=exp_desc_id)
-=======
factors = Factor.objects.filter(visible = 1, exp_description = exp_desc_id)
->>>>>>> other
for dp in dp_set:
data = {'id':dp.id}
@@ -108,11 +104,7 @@
sim_runs = DesignPoint.objects.get(pk = dp_id).simulationrun_set.filter(success = 1)
out = [{"simrun_id":run.id} for run in sim_runs]
-<<<<<<< local
- return HttpResponse(json.dumps(out), content_type="application/json")
-=======
return HttpResponse(json.dumps(out), content_type = "application/json")
->>>>>>> other
def dp_factor_query(request):
""" Gets a list of all designpoints whose factor levels match the given values """
@@ -121,19 +113,11 @@
level_value = request.GET.get('value','')
factor = Experiment.objects.get(pk = exp_id).exp_description.factor_set.get(name = factor_name)
if not factor:
-<<<<<<< local
- return Response("Factor Name DOES NOT EXIST", status=status.HTTP_400_BAD_REQUEST)
-=======
return Response("Factor Name DOES NOT EXIST", status = status.HTTP_400_BAD_REQUEST)
->>>>>>> other
levels = factor.level_set.all()
out = [ {"designpoint_id":level.design_point.id} for level in levels if float(level.getValue()) == float(level_value) ]
-<<<<<<< local
- return HttpResponse(json.dumps(out), content_type="application/json")
-=======
return HttpResponse(json.dumps(out), content_type = "application/json")
->>>>>>> other
def results_query(request, sim_run_id, metric_id):
@@ -144,10 +128,6 @@
result_set = ResultSet.objects.get(simulation_run_id = sim_run_id, metric_id = metric_id)
results = result_set.getResults()
-<<<<<<< local
-=======
-
->>>>>>> other
#convert to analysis-module compatible array
out = {r.time: {'result_id': r.id, 'time': r.time, 'value': r.value} for r in results}
@@ -165,9 +145,6 @@
return HttpResponse(str(e), status = status.HTTP_400_BAD_REQUEST)
out = out.values()
-<<<<<<< local
- return HttpResponse(json.dumps(out), content_type="application/json")
-=======
return HttpResponse(json.dumps(out), content_type = "application/json")
@@ -229,71 +206,6 @@
out.append({'time': r.time, 'value': r.value, 'level': level_value})
return HttpResponse(json.dumps(out), content_type = "application/json")
->>>>>>> other
-
-
-def factor_results(request, exp_id, factor_name, metric_id):
- decoder = json.JSONDecoder()
- data = decoder.decode(request.body)
- factor_names = data['factors']
- factors = Factor.objects.filter(name__in=factor_names)
- dp_ids = set()
- for factor in factors:
- dps = set()
- value = float(data['factors'][factor.name])
- for l in factor.level_set.filter(experiment_id=exp_id):
- if float(l.getValue()) == float(value):
- dps.add(l.design_point.id)
- if len(dp_ids) == 0:
- dp_ids = dps
- else:
- dp_ids = dp_ids & dps
-
- design_points = DesignPoint.objects.filter(pk__in=list(dp_ids))
- for dp in design_points:
- print(dp.id)
- simruns = SimulationRun.objects.filter(design_point__in=design_points)
- print(simruns)
- result_sets = ResultSet.objects.filter(simulation_run__in=simruns, metric_id = metric_id)
- factor = Factor.objects.get(name=factor_name)
- #get results from database
- out = []
-
- analyze = request.GET.get('max_results',False) or request.GET.get('cluster_size',False) or \
- request.GET.get('denoise_window', False) or request.GET.get('filter_step', False) or \
- request.GET.get('filter_outliers', False)
-
- for result_set in result_sets:
- results = result_set.getResults()
- simrun = result_set.simulation_run
- s_id = simrun.id
- level_value = simrun.design_point.level_set.get(factor=factor).getValue()
- if analyze:
- temp = {}
- for r in results:
- temp[r.time] = {'time': r.time, 'value': r.value}
-
- analyzer = Analysis(temp)
- num_outliers = request.GET.get('filter_outliers', None)
- if num_outliers is not None:
- stats = results.aggregate(StdDev('value'), Avg('value') )
- temp = analyzer.filter_outliers(stats['value__avg'], stats['value__stddev'], float(num_outliers))
- analyzer = Analysis(temp)
-
- try:
- temp = analyzer.filter_all(request, {'level':level_value})
- except AnalysisException as e:
- return HttpResponse(str(e), status=status.HTTP_400_BAD_REQUEST)
- out.extend(temp.values())
-
- else:
- for r in results:
- out.append({'time': r.time, 'value': r.value, 'level': level_value})
-
- return HttpResponse(json.dumps(out), content_type="application/json")
-
-
-
def multi_results_query(request, metric_id):
""" retreives a set of all results in JSON format given the metric id in the url
@@ -305,14 +217,10 @@
result_sets = ResultSet.objects.filter(simulation_run_id__in = srun_ids, metric_id = metric_id)
out = []
-<<<<<<< local
- analyze = request.GET.get('max_results',False) or request.GET.get('cluster_size',False)
-=======
analyze = request.GET.get('max_results',False) or request.GET.get('cluster_size',False) or \
request.GET.get('denoise_window', False) or request.GET.get('filter_step', False) or \
request.GET.get('filter_outliers', False)
->>>>>>> other
for result_set in result_sets:
results = result_set.getResults()
simrun = result_set.simulation_run
@@ -333,14 +241,8 @@
try:
temp = analyzer.filter_all(request, {'simrun_id': s_id, 'designpoint_id':d_id})
except AnalysisException as e:
-<<<<<<< local
- return HttpResponse(str(e), status=status.HTTP_400_BAD_REQUEST)
-
- out.append(analyzer.avg_data(cluster_size, ['time','value'], {'simrun_id': s_id, 'designpoint_id':d_id}))
-=======
return HttpResponse(str(e), status = status.HTTP_400_BAD_REQUEST)
out.extend(temp.values())
->>>>>>> other
else:
for r in results:
@@ -352,37 +254,18 @@
def aggregate_query(request, dp_id, metric_id):
""" Aggregates all replications of a single design point
for a single metric, returning the "average" data set """
-<<<<<<< local
- simruns = DesignPoint.objects.get(pk = dp_id).simulationrun_set.filter(isFinished=1)
-=======
simruns = DesignPoint.objects.get(pk = dp_id).simulationrun_set.filter(finished = 1)
->>>>>>> other
#s_ids = [int(s.id) for s in simruns]
result_sets = ResultSet.objects.filter(simulation_run__in = simruns, metric_id = int(metric_id))
if (len(result_sets) < 1):
-<<<<<<< local
- return HttpResponse(json.dumps([]), content_type="application/json")
-
-=======
return HttpResponse(json.dumps([]), content_type = "application/json")
->>>>>>> other
max_avg = 0
avg_size = 0
out = {}
-<<<<<<< local
-
-=======
-
->>>>>>> other
agg_results = None
-<<<<<<< local
- num_outliers = request.GET.get('filter_outliers', None)
-
-=======
num_outliers = request.GET.get('filter_outliers', None)
->>>>>>> other
for result_set in result_sets:
max_time = 0
results = result_set.getResults()
@@ -391,11 +274,6 @@
agg_results = results
else:
agg_results = agg_results | results
-<<<<<<< local
-
-=======
-
->>>>>>> other
avg_size += len(results)
for result in results:
if result.time > max_time:
@@ -405,56 +283,20 @@
avg_size /= len(result_sets)
max_avg /= len(result_sets)
-<<<<<<< local
-
-
-=======
->>>>>>> other
analyzer = Analysis(out)
-<<<<<<< local
-
-
-
-=======
->>>>>>> other
if num_outliers is not None:
stats = agg_results.aggregate(StdDev('value'), Avg('value') )
out = analyzer.filter_outliers(stats['value__avg'], stats['value__stddev'], float(num_outliers))
-<<<<<<< local
- analyzer = Analysis(out)
-
-=======
analyzer = Analysis(out)
-
->>>>>>> other
out = analyzer.avg_data(max_avg / avg_size, ['time','value'])
analyzer = Analysis(out)
try:
out = analyzer.filter_all(request)
except AnalysisException as e:
-<<<<<<< local
- return HttpResponse(str(e), status=status.HTTP_400_BAD_REQUEST)
-
-
- out = out.values()
- return HttpResponse(json.dumps(out), content_type="application/json")
-=======
- return HttpResponse(str(e), status = status.HTTP_400_BAD_REQUEST)
->>>>>>> other
-
+ out = out.values()
+ return HttpResponse(json.dumps(out), content_type = "application/json")
-<<<<<<< local
-=======
- out = out.values()
- return HttpResponse(json.dumps(out), content_type = "application/json")
->>>>>>> other
-
-<<<<<<< local
-=======
-
-
->>>>>>> other
def metrics_query(request, exp_id):
""" returns all of the metrics associated with a given simulation run"""
@@ -484,34 +326,15 @@
points = points.intersection(dps)
if len(points) == 0:
break
-<<<<<<< local
-
- return HttpResponse(json.dumps(list(points)), content_type="application/json")
-=======
->>>>>>> other
-
-<<<<<<< local
-=======
return HttpResponse(json.dumps(list(points)), content_type = "application/json")
->>>>>>> other
-
-<<<<<<< local
-=======
-
->>>>>>> other
def data_query(request, sim_run):
""" Returns a list of all results for the given simulation run in JSON format..
Data points are returned by time, and each point contains the value
for all metrics specified in the query string or all metrics if not specified """
-<<<<<<< local
- result_sets = SimulationRun.objects.get(pk=sim_run).resultset_set
- if request.GET.get('metrics', None) is None :
-=======
result_sets = SimulationRun.objects.get(pk = sim_run).resultset_set
#consider changing this to use the body of the request, rather than a query parameter
if request.GET.get('metrics', None) == None :
->>>>>>> other
result_sets = result_sets.all()
else:
metrics = [int(x) for x in request.GET.get('metrics', None).split(',')]
@@ -531,21 +354,9 @@
if str(request.GET.get('public', '0')) == '1' :
experiments = Experiment.objects.filter(owner_id = user_id) | Experiment.objects.filter(public = 1)
else:
-<<<<<<< local
- experiments = Experiment.objects.filter(owner_id = user_id)
-
+ experiment = Experiment.objects.filter(owner_id = user_id)
out = [{'exp_id':experiment.id} for experiment in experiments]
-=======
- experiment = Experiment.objects.filter(owner_id = user_id)
->>>>>>> other
-
-<<<<<<< local
return HttpResponse(json.dumps(out), content_type='application/json')
-=======
- out = [{'exp_id':experiment.id} for experiment in experiments]
->>>>>>> other
-
-<<<<<<< local
def desc_expdesc(request, user_id):
"""Returns a list of all experiments belonging to the given user in JSON format.
@@ -557,10 +368,7 @@
out = [{'expdesc_id':experiment.id} for experiment in experiments]
- return HttpResponse(json.dumps(out), content_type='application/json')
-=======
return HttpResponse(json.dumps(out), content_type = 'application/json')
->>>>>>> other
@api_view(['GET'])
def desc_current_experiments(request):
@@ -574,11 +382,7 @@
out = [{'exp_id':experiment.id, 'exp_name':experiment.name} for experiment in experiments]
-<<<<<<< local
- return HttpResponse(json.dumps(out), content_type='application/json')
-=======
return HttpResponse(json.dumps(out), content_type = 'application/json')
->>>>>>> other
def exp_status(request, exp_id):
""" Gets the status of the current experiment """
@@ -606,13 +410,8 @@
simruns.extend(dp.simulationrun_set.all())
out = []
for simrun in simruns:
-<<<<<<< local
- out.append({"id":simrun.id, "designpoint_id":simrun.design_point.id})
- return HttpResponse(json.dumps(out), content_type='application/json')
-=======
out.append({"id":simrun.id, "dp_id":simrun.design_point.id})
return HttpResponse(json.dumps(out), content_type = 'application/json')
->>>>>>> other
def exp_levels(request, exp_id):
"""returns a list of all factors and the levels available for each factor in JSON Format """
@@ -624,7 +423,6 @@
data['levels'].add(l.getValue())
data['levels'] = list(data['levels'])
out[f.id] = data
-<<<<<<< local
return HttpResponse(json.dumps(out,sort_keys=True), content_type='application/json')
def get_exp_info(request, exp_id):
@@ -641,8 +439,6 @@
dp_set = DesignPoint.objects.filter(experiment = exp_id)
out['design_points'] = [dp.id for dp in dp_set]
-=======
->>>>>>> other
return HttpResponse(json.dumps(out,sort_keys = True), content_type = 'application/json')
@api_view(['POST'])
@@ -713,14 +509,9 @@
return HttpResponse(json.dumps(fact_list), content_type = 'application/json')
-<<<<<<< local
-=======
-
-
->>>>>>> other
@api_view(['POST'])
@login_required
-#@user_passes_test(lambda u: u.has_perm('add_experiment'))
+@user_passes_test(lambda u: u.has_perm('add_experiment'))
def level_upload(request):
"""
Receives an experiment configuration file via POST, then
@@ -728,10 +519,6 @@
"""
decoder = json.JSONDecoder()
data = decoder.decode(request.body)
-<<<<<<< local
- print(data)
-=======
->>>>>>> other
factor_ids = []
level_sets = []
@@ -775,16 +562,12 @@
g.code = l.id
g.value = d_pt[i]
g.save()
-<<<<<<< local
-
-=======
->>>>>>> other
return Response("OK", status = status.HTTP_201_CREATED)
@api_view(['POST'])
-@user_passes_test(lambda u: u.has_perm('add_user'))
+#@user_passes_test(lambda u: u.has_perm('add_user'))
def create_user(request):
"""
Creates a user given data on each item.