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
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)
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)
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)
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)
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')
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)
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)
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})
def setUpTestData(cls): cls.d1 = Dataset(name='foo') cls.d1.save()
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)