Ejemplo n.º 1
0
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
Ejemplo n.º 2
0
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
Ejemplo n.º 3
0
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)
Ejemplo n.º 4
0
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
Ejemplo n.º 5
0
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