def process_iqxy_output(request, remote_job, trans_id, filename): """ @param request: request object @param remote_job: RemoteJob object @param filename: data file containing plot data """ template_values = {} # Do we read this data already? plot_object2d = remote_job.get_plot_2d(filename=filename, owner=request.user) if plot_object2d is None: # If we don't have data stored, read it from file logger.warning("Retrieving %s from compute resource" % filename) file_content = remote_view_util.download_file(request, trans_id, filename) if file_content is not None: try: data_str_2d, x_str, y_str, z_min, z_max = process_Iqxy_data(file_content) plot_object2d = Plot2D.objects.create_plot(user=request.user, data=data_str_2d, x_axis=x_str, y_axis=y_str, z_min=z_min, z_max=z_max, filename=filename, x_label='Qx [1/Å]', y_label='Qy [1/Å]',) remote_job.plots2d.add(plot_object2d) except: logger.error("Could not process nexus file: %s" % sys.exc_value) template_values['plot_2d'] = plot_object2d return template_values
def process_iq_output(request, remote_job, trans_id, filename): """ @param request: request object @param remote_job: RemoteJob object @param filename: data file containing plot data """ template_values = {} # Do we read this data already? plot_object = remote_job.get_first_plot(filename=filename, owner=request.user) if plot_object is not None and plot_object.first_data_layout() is not None: data_str = plot_object.first_data_layout().dataset.data else: # If we don't have data stored, read it from file logger.warning("Retrieving %s from compute resource" % filename) file_content = remote_view_util.download_file(request, trans_id, filename) if file_content is not None: try: data_str = process_Iq_data(file_content) plot_object = Plot1D.objects.create_plot(request.user, data=data_str, filename=filename) remote_job.plots.add(plot_object) except: logger.error("Could not process I(q) file: %s" % sys.exc_value) template_values['plot_1d'] = data_str template_values['plot_object'] = plot_object template_values['plot_1d_id'] = plot_object.id if plot_object is not None else None return template_values
def process_sqw_2d_output(request, remote_job, trans_id, filename): """ @param request: request object @param remote_job: RemoteJob object @param filename: data file containing plot data """ plot_parameters = {} # Have we read these data before? plot_object2d = remote_job.get_plot_2d(filename=filename, owner=request.user) if plot_object2d is None: # If we don't have data stored, read it from file logger.warning("Retrieving %s from compute resource" % filename) file_content = remote_view_util.download_file(request, trans_id, filename) if file_content is not None: try: data_str_2d, x_str, y_str, z_min, z_max = process_sqw_2d_data(file_content) plot_object2d = Plot2D.objects.create_plot(user=request.user, data=data_str_2d, x_axis=x_str, y_axis=y_str, z_min=z_min, z_max=z_max, filename=filename, x_label='|Q| [1/Å]', y_label='E [meV]') remote_job.plots2d.add(plot_object2d) except Exception, e: logger.error("Could not process 2D file (%s): %s" % (filename,sys.exc_value)) logger.exception(e)
def process_sqw_1d_output(request, remote_job, trans_id, filename): """ @param request: request object @param remote_job: RemoteJob object @param filename: data file containing plot data """ plot_parameters = {} # Have we read these data before? plot_object = None#remote_job.get_first_plot(filename=filename, owner=request.user) if plot_object is not None and plot_object.first_data_layout() is not None: data_str = plot_object.first_data_layout().dataset.data else: # If we don't have data stored, read it from file logger.warning("Retrieving %s from compute resource" % filename) file_content = remote_view_util.download_file(request, trans_id, filename) if file_content is not None: try: data_str = process_sqw_1d_data(file_content) if data_str is not None and len(data_str) > 3: plot_object = Plot1D.objects.create_plot(request.user, data=data_str, filename=filename, x_label = "Delta E", is_y_log = True) remote_job.plots.add(plot_object) else: data_str = None except: logger.error("Could not process DeltaE(i) file: %s" % sys.exc_value) plot_parameters['plot_1d_name'] = filename plot_parameters['plot_1d'] = data_str plot_parameters['plot_object'] = plot_object plot_parameters['plot_1d_id'] = plot_object.id if plot_object is not None else None return plot_parameters
def download_file(request, trans_id, filename, delete=False): """ Get a file from the compute node. The transaction name corresponds to the name it is given by the remote submission service. @param request: request object @param trans_id: remote name of the transaction @param filename: name of the file to download @param delete: if True, the transaction will be deleted """ file_content = remote_view_util.download_file(request, trans_id, filename) if delete is True: remote_view_util.stop_transaction(request, trans_id) response = HttpResponse(file_content) response['Content-Disposition'] = 'attachment; filename="%s"' % filename response["Content-Description"] = "File Transfer"; response["Content-type"] = "application/octet-stream"; response["Content-Transfer-Encoding"] = "binary"; return response