Exemplo n.º 1
0
 def setUpTestData(cls):
     d1 = Dataset(name='Dataset1')
     d1.save()
     m1 = Molecule(sum_formula='H2O')
     m1.save()
     m2 = Molecule(sum_formula='O2')
     m2.save()
     s1 = Standard(molecule=m1)
     s1.save()
     s2 = Standard(molecule=m1)
     s2.save()
     s3 = Standard(molecule=m2)
     s3.save()
     FragmentationSpectrum.objects.create(precursor_mz='123.456',
                                          spec_num=0,
                                          dataset=d1,
                                          standard=s1)
     FragmentationSpectrum.objects.create(precursor_mz='123.45',
                                          spec_num=0,
                                          dataset=d1,
                                          standard=s2)
     FragmentationSpectrum.objects.create(precursor_mz='123.4',
                                          spec_num=0,
                                          dataset=d1,
                                          standard=s3)
     cls.m_onespectrum = m2
     cls.m_twospectra = m1
Exemplo n.º 2
0
 def test_is_not_empty_if_annotated(self):
     m1 = Molecule(name='test', sum_formula="C1H2O3")
     m1.save()
     s1 = Standard(molecule=m1)
     s1.save()
     d1 = Dataset()
     d1.save()
     fs1 = FragmentationSpectrum(ms1_intensity=42, dataset=d1, standard=s1)
     fs1.save()
     molecule_table, molecules_with_spectra = self.get_table_and_count()
     self.assertEqual(len(molecule_table.rows), 1)
     self.assertEqual(molecules_with_spectra, 1)
Exemplo n.º 3
0
    def test_xic_and_standard_and_adduct(self):
        # create some datasets
        d1 = Dataset(name='Dataset1')
        d1.save()
        a1 = Adduct(nM=1, delta_formula='-H', charge=-1)
        a1.save()
        m1 = Molecule(name='TestMolecule1', sum_formula="C1H2O3")
        m1.save()
        s1 = Standard(molecule=m1, inventory_id="0")
        s1.save()
        # create some xics
        x1 = Xic(mz=60.993, dataset=d1)
        xic = [1.0, 2.0, 3.0, 4.0, 5.0]
        x1.set_xic(xic)
        x1.standard = s1
        x1.adduct = a1
        x1.save()
        self.assertEqual(Xic.objects.all().count(), 1)
        self.assertEqual(Dataset.objects.all().count(), 1)
        self.assertEqual(Standard.objects.all().count(), 1)
        # mass check
        with self.assertRaises(ValueError):
            x1.mz = 123.993
            x1.save()
            x1.check_mass()

        def test_xic_mass_filter(self):
            d1 = Dataset(name='dataset')
            d1.save()
            mz = 60.993
            # three larger
            Xic(mz=mz + 5., dataset=d1).save()
            Xic(mz=mz + 10., dataset=d1).save()
            Xic(mz=mz + 15., dataset=d1).save()
            # three approx equal
            Xic(mz=mz + 0.005, dataset=d1).save()
            Xic(mz=mz + 0.0, dataset=d1).save()
            Xic(mz=mz - 0.0015, dataset=d1).save()
            # three smaller
            Xic(mz=mz - 5., dataset=d1).save()
            Xic(mz=mz - 10., dataset=d1).save()
            Xic(mz=mz - 15., dataset=d1).save()
            # three approx equal from another dataset
            d2 = Dataset(name='dataset2')
            d2.save()
            Xic(mz=mz + 0.005, dataset=d2).save()
            Xic(mz=mz + 0.0, dataset=d2).save()
            Xic(mz=mz - 0.0015, dataset=d2).save()
            self.assertEqual(Xic.objects.all().count(), 12)
            xics = Xic.objects.all().filter(dataset=d1).filter(
                mz__gte=mz + 0.01).filter(mz__lte=mz - 0.01)
            self.assertEqual(xics.objects.all().count(), 3)
Exemplo n.º 4
0
 def test_make_FragmentationSpectrum_with_centroids(self):
     d1 = Dataset(name='Dataset1')
     d1.save()
     f1 = FragmentationSpectrum(precursor_mz='123.456',
                                spec_num=0,
                                dataset=d1)
     mzs = [10., 20, 50]
     ints = [1., 1., 1.]
     f1.set_centroid_mzs(mzs)
     f1.set_centroid_ints(ints)
     f1.save()
     np.testing.assert_array_almost_equal(mzs, f1.centroid_mzs)
     np.testing.assert_array_almost_equal(ints, f1.centroid_ints)
Exemplo n.º 5
0
 def test_xic_mass_filter(self):
     d1 = Dataset(name='dataset')
     d1.save()
     mz = 60.993
     # three larger
     Xic(mz=mz + 5., dataset=d1).save()
     Xic(mz=mz + 10., dataset=d1).save()
     Xic(mz=mz + 15., dataset=d1).save()
     # three approx equal
     Xic(mz=mz + 0.005, dataset=d1).save()
     Xic(mz=mz + 0.0, dataset=d1).save()
     Xic(mz=mz - 0.0015, dataset=d1).save()
     # three smaller
     Xic(mz=mz - 5., dataset=d1).save()
     Xic(mz=mz - 10., dataset=d1).save()
     Xic(mz=mz - 15., dataset=d1).save()
     # three approx equal from another dataset
     d2 = Dataset(name='dataset2')
     d2.save()
     Xic(mz=mz + 0.005, dataset=d2).save()
     Xic(mz=mz + 0.0, dataset=d2).save()
     Xic(mz=mz - 0.0015, dataset=d2).save()
     self.assertEqual(Xic.objects.all().count(), 12)
     xics = Xic.objects.all().filter(dataset=d1).filter(
         mz__gte=mz + 0.01).filter(mz__lte=mz - 0.01)
     self.assertEqual(xics.objects.all().count(), 3)
Exemplo n.º 6
0
 def setUpTestData(cls):
     csv_filepath = join(settings.MEDIA_ROOT, "Standard_Library_MCF_Inhouse_metabolites.csv")
     add_batch_standard({}, csv_filepath)
     Adduct.objects.create(nM=1, delta_formula='-H', charge=-1)
     cls.mzml_filepath = join(settings.MEDIA_ROOT, "sample.mzML")
     cls.d1 = Dataset(name='foo')
     cls.d1.save()
     cls.lc1 = LcInfo.objects.create(content='LC1')
Exemplo n.º 7
0
 def test_add_xic(self):
     m1 = Molecule(name='TestMolecule1', sum_formula="C1H2O3")
     m1.save()
     s1 = Standard(molecule=m1, inventory_id="0")
     s1.save()
     a1 = Adduct(nM=1, delta_formula='+H+K', charge=-2)
     a1.save()
     d1 = Dataset(name='Dataset1')
     d1.save()
     d1.standards_present.add(s1)
     d1.adducts_present.add(a1)
     x1 = Xic(mz='0.0', dataset=d1)
     xic = [1.0, 2.0, 3.0, 4.0, 5.0]
     x1.set_xic(xic)
     x1.save()
     self.assertEqual(Xic.objects.all().count(), 1)
     np.testing.assert_array_almost_equal(xic, x1.xic)
Exemplo n.º 8
0
 def test_add_dataset(self):
     # create standards
     m1 = Molecule(name='TestMolecule1', sum_formula="C1H2O3")
     m1.save()
     m2 = Molecule(name='TestMolecule1', sum_formula="C2H2O3")
     m2.save()
     s1 = Standard(molecule=m1, inventory_id="0")
     s1.save()
     s2 = Standard(molecule=m2, inventory_id="1")
     s2.save()
     # create adduct
     a1 = Adduct(nM=1, delta_formula='+H+K', charge=-2)
     a1.save()
     # create a dataset
     d1 = Dataset(name='Dataset1')
     d1.save()
     d1.standards_present.add(s1)
     d1.standards_present.add(s2)
     d1.adducts_present.add(a1)
     self.assertEqual(Dataset.objects.all().count(), 1)
     self.assertEqual(Dataset.objects.all()[0].standards_present.count(), 2)
Exemplo n.º 9
0
def dataset_upload(request):
    if request.method == 'POST':
        form = UploadFileForm(request.POST, request.FILES)
        if form.is_valid():
            post_dict = dict(request.POST)
            files_dict = dict(request.FILES)
            logging.debug(files_dict)
            logging.debug(post_dict)
            data = {"adducts": post_dict['adducts'],
                    "standards": post_dict['standards'],
                    "mass_accuracy_ppm": post_dict['mass_accuracy_ppm'][0],
                    "quad_window_mz": post_dict['quad_window_mz'][0],
                    "lc_info": post_dict['lc_info'][0],
                    "ms_info": post_dict['ms_info'][0],
                    "ionization_method": post_dict['ionization_method'][0],
                    "ion_analyzer": post_dict['ion_analyzer'][0]}
            uploaded_file = request.FILES['mzml_file']
            base_name, extension = os.path.splitext(uploaded_file.name)
            d = Dataset(name=uploaded_file.name, processing_finished=False)
            d.save()
            mzml_filename = "{}-{}{}".format(base_name, d.id, extension)
            mzml_filepath = os.path.join(settings.MEDIA_ROOT, mzml_filename)
            logging.debug("mzML filepath: " + mzml_filepath)
            logging.debug("original mzML filename: " + uploaded_file.name)
            with open(mzml_filepath, 'wb') as destination:
                for chunk in uploaded_file.chunks():
                    destination.write(chunk)
            d.path = mzml_filepath
            d.save()
            tasks.handle_uploaded_files.delay(data, mzml_filepath, d)
            return redirect('dataset-list')
    else:
        form = UploadFileForm(initial={"mass_accuracy_ppm": 10.0, 'quad_window_mz': 1.0, 'ion_analyzer': 'QFT',
                                       'ionization_method': 'ESI'})
    autocomplete = {
        'lc_info': [str(info.content) for info in LcInfo.objects.all()],
        'ms_info': [str(info.content) for info in MsInfo.objects.all()],
        'ionization_method': json.dumps(
            list(set(Dataset.objects.values_list('ionization_method', flat=True).distinct()).union(
                ['APCI', 'APPI', 'EI', 'ESI', 'FAB', 'MALDI']))),
        'ion_analyzer': json.dumps(list(set(Dataset.objects.values_list('ion_analyzer', flat=True).distinct()).union(
            tools.sum_of_2_perms(['B', 'E', 'FT', 'IT', 'Q', 'TOF']))))
    }
    return render(request, 'mcf_standards_browse/dataset_upload.html', {'form': form, 'autocomplete': autocomplete})
Exemplo n.º 10
0
 def setUpTestData(cls):
     cls.d1 = Dataset(name='foo')
     cls.d1.save()
Exemplo n.º 11
0
 def test_make_FragmentationSpectrum(self):
     d1 = Dataset(name='Dataset1')
     d1.save()
     FragmentationSpectrum(precursor_mz='123.456', spec_num=0,
                           dataset=d1).save()
     self.assertEqual(FragmentationSpectrum.objects.all().count(), 1)