Exemple #1
0
def create_sample_delta(delta_id, group_id, source_sample_id, reference_sample_id):
    '''
    Compare the data between two samples
    Return a SampleDelta object with what needs to be added to the source sample to get the reference sample
    '''
    diff_data = []
    source_sample = Sample.objects.get(id=source_sample_id)
    reference_sample = Sample.objects.get(id=reference_sample_id)
    reference_sample_array = reference_sample.data.split(',')
    source_sample_array = source_sample.data.split(',')

    for (index, source_val) in enumerate(source_sample_array):
        diff_data.append(int(reference_sample_array[index]) - int(source_val))

    diff_data_csv_string = int_list_to_csv_string(diff_data)
    sample_delta = SampleDelta(id=delta_id,
                               group_id=group_id,
                               source_sample=source_sample,
                               reference_sample=reference_sample,
                               data=diff_data_csv_string)
    sample_delta.save()
    return sample_delta
Exemple #2
0
def take_spectrometer_sample(sample_id=uuid.uuid4(),
                             group_id=None,
                             reading_type=Sample.SPECTROMETER,
                             subject=None,
                             description=''):
    '''
    Call the Spectrometer class to gather a sample from the hardware
    Returns a Sample object
    '''
    spectrometer = Spectrometer()
    if reading_type == Sample.SPECTROMETER:
        sample_data = spectrometer.take_spectrometer_reading()
    if reading_type == Sample.COLOR:
        sample_data = spectrometer.take_color_reading()
    if reading_type == Sample.FLUORESCENCE:
        sample_data = spectrometer.take_fluorescence_reading()
    else:
        pass  # TODO throw some kind of error?  at least verify everything downstream is sample_data=None-tolerant

    sample_data_csv_string = int_list_to_csv_string(sample_data)
    average_value = get_average_sample_value(sample_data)

    the_subject = subject
    if group_id:
        group = Group.objects.get(id=group_id)
        if group and group.subject:  # TODO add logic that tests this condition
            the_subject = group.subject

    sample = Sample(id=sample_id,
                    group_id=group_id,
                    reading_type=reading_type,
                    record_type=Sample.PHYSICAL,
                    description=description,
                    subject=the_subject,
                    data=sample_data_csv_string,
                    average_magnitude=average_value)
    sample.save()
    return sample
Exemple #3
0
def take_spectrometer_sample(sample_id=uuid.uuid4(),
                             group_id=None,
                             reading_type=Sample.SPECTROMETER,
                             subject=None,
                             description=''):
    '''
    Call the Spectrometer class to gather a sample from the hardware
    Returns a Sample object
    '''
    spectrometer = Spectrometer()
    if reading_type == Sample.SPECTROMETER:
        sample_data = spectrometer.take_spectrometer_reading()
    if reading_type == Sample.COLOR:
        sample_data = spectrometer.take_color_reading()
    if reading_type == Sample.FLUORESCENCE:
        sample_data = spectrometer.take_fluorescence_reading()
    else:
        pass  # TODO throw some kind of error?  at least verify everything downstream is sample_data=None-tolerant

    sample_data_csv_string = int_list_to_csv_string(sample_data)
    average_value = get_average_sample_value(sample_data)

    the_subject = subject
    if group_id:
        group = Group.objects.get(id=group_id)
        if group and group.subject:  # TODO add logic that tests this condition
            the_subject = group.subject

    sample = Sample(id=sample_id,
                    group_id=group_id,
                    reading_type=reading_type,
                    record_type=Sample.PHYSICAL,
                    description=description,
                    subject=the_subject,
                    data=sample_data_csv_string,
                    average_magnitude=average_value)
    sample.save()
    return sample
Exemple #4
0
def create_sample_delta(delta_id, group_id, source_sample_id,
                        reference_sample_id):
    '''
    Compare the data between two samples
    Return a SampleDelta object with what needs to be added to the source sample to get the reference sample
    '''
    diff_data = []
    source_sample = Sample.objects.get(id=source_sample_id)
    reference_sample = Sample.objects.get(id=reference_sample_id)
    reference_sample_array = reference_sample.data.split(',')
    source_sample_array = source_sample.data.split(',')

    for (index, source_val) in enumerate(source_sample_array):
        diff_data.append(int(reference_sample_array[index]) - int(source_val))

    diff_data_csv_string = int_list_to_csv_string(diff_data)
    sample_delta = SampleDelta(id=delta_id,
                               group_id=group_id,
                               source_sample=source_sample,
                               reference_sample=reference_sample,
                               data=diff_data_csv_string)
    sample_delta.save()
    return sample_delta