Exemple #1
0
    def post(self):
        plates_info = self.get_argument('plates_info')
        volume = self.get_argument('volume')
        preparation_date = self.get_argument('preparation_date')

        month, day, year = map(int, preparation_date.split('/'))
        preparation_date = date(year, month, day)

        processes = [
            LibraryPrep16SProcess.create(
                self.current_user,
                Plate(pid),
                Plate(pp),
                pn,
                Equipment(ep),
                Equipment(ep300),
                Equipment(ep50),
                ReagentComposition.from_external_id(mm),
                ReagentComposition.from_external_id(w),
                volume,
                preparation_date=preparation_date).id
            for pid, pn, pp, ep, ep300, ep50, mm, w in json_decode(plates_info)
        ]

        self.write({'processes': processes})
Exemple #2
0
def create_shotgun_process(user, norm_plate):
    kapa = ReagentComposition(4)
    stub = ReagentComposition(5)
    primer_a, primer_b = get_primer_plate(is_96=False)
    shotgun_process = LibraryPrepShotgunProcess.create(
        user, norm_plate, 'Test Shotgun Library %s' % datetime.now(), kapa,
        stub, 4000, primer_a, primer_b)
    shotgun_plate = shotgun_process.plates[0]
    return shotgun_process, shotgun_plate
Exemple #3
0
def create_normalization_process(user, quant_process):
    water = ReagentComposition(3)
    norm_process = NormalizationProcess.create(
        user, quant_process, water,
        'Normalized test plate %s' % datetime.now())
    norm_plate = norm_process.plates[0]
    return norm_process, norm_plate
    def get(self):
        reagent_type = self.get_argument('reagent_type', None)
        term = self.get_argument('term', None)

        self.write(
            json_encode(
                ReagentComposition.list_reagents(reagent_type=reagent_type,
                                                 term=term)))
Exemple #5
0
    def post(self):
        user = self.current_user
        plates_info = self.get_argument('plates_info')
        volume = self.get_argument('volume')
        kapa_hyperplus_kit = self.get_argument('kapa_hyperplus_kit')
        stub_lot = self.get_argument('stub_lot')

        processes = [[
            pid,
            LibraryPrepShotgunProcess.create(
                user, Plate(pid), plate_name,
                ReagentComposition.from_external_id(kapa_hyperplus_kit),
                ReagentComposition.from_external_id(stub_lot), volume,
                Plate(i5p), Plate(i7p)).id
        ] for pid, plate_name, i5p, i7p in json_decode(plates_info)]

        self.write({'processes': processes})
 def test_reagent_composition_attributes(self):
     obs = ReagentComposition(2)
     self.assertEqual(obs.upstream_process, ReagentCreationProcess(6))
     self.assertEqual(obs.container, Tube(2))
     self.assertEqual(obs.total_volume, 10)
     self.assertIsNone(obs.notes)
     self.assertEqual(obs.composition_id, 3074)
     self.assertEqual(obs.external_lot_id, '157022406')
     self.assertEqual(obs.reagent_type, 'extraction kit')
     self.assertIsNone(obs.study)
Exemple #7
0
def create_gdna_extraction_process(user, plate):
    kingfisher = Equipment(11)
    epmotion = Equipment(6)
    epmotion_tool = Equipment(15)
    extraction_kit = ReagentComposition(1)
    ext_process = GDNAExtractionProcess.create(
        user, plate, kingfisher, epmotion, epmotion_tool, extraction_kit, 100,
        'GDNA test plate %s' % datetime.now())
    gdna_plate = ext_process.plates[0]
    return ext_process, gdna_plate
Exemple #8
0
def create_amplicon_prep(user, plate):
    primer_plate, _ = get_primer_plate(is_96=True)
    epmotion = Equipment(6)
    master_mix = ReagentComposition(2)
    water_lot = ReagentComposition(3)
    epmotion_tool_tm300 = Equipment(16)
    epmotion_tool_tm50 = Equipment(17)
    amplicon_process = LibraryPrep16SProcess.create(
        user,
        plate,
        primer_plate,
        'Amplicon test plate %s' % datetime.now(),
        epmotion,
        epmotion_tool_tm300,
        epmotion_tool_tm50,
        master_mix,
        water_lot,
        75,
    )
    amplicon_plate = amplicon_process.plates[0]
    return amplicon_process, amplicon_plate
    def test_reagent_composition_list_reagents(self):
        obs = ReagentComposition.list_reagents()
        exp = [
            '157022406', '443912', 'KHP1', 'Not applicable', 'RNBF7110',
            'STUBS1'
        ]
        self.assertEqual(obs, exp)

        obs = ReagentComposition.list_reagents(term='39')
        exp = ['443912']
        self.assertEqual(obs, exp)

        obs = ReagentComposition.list_reagents(reagent_type='extraction kit')
        exp = ['157022406', 'Not applicable']
        self.assertEqual(obs, exp)

        obs = ReagentComposition.list_reagents(reagent_type='water', term='BF')
        exp = ['RNBF7110']
        self.assertEqual(obs, exp)

        obs = ReagentComposition.list_reagents(reagent_type='water', term='22')
        exp = []
        self.assertEqual(obs, exp)
    def post(self):
        plates_info = self.get_argument('plates_info')
        extraction_date = self.get_argument('extraction_date')
        volume = self.get_argument('volume')

        month, day, year = map(int, extraction_date.split('/'))
        extraction_date = date(year, month, day)

        # We create one process per plate
        processes = []
        for pid, ee, kf, ep, ept, kit, p_name, nt in json_decode(plates_info):
            # Check whether plate was externally extracted
            if ee is True:
                # find the id of null things
                eq_no = \
                  Equipment.list_equipment('Not applicable')[0]['equipment_id']
                ep = ept = kf = Equipment(eq_no)
                kit = ReagentComposition.from_external_id('Not applicable')
            else:
                kf = Equipment(kf)
                ep = Equipment(ep)
                ept = Equipment(ept)
                kit = ReagentComposition.from_external_id(kit)
            processes.append(
                GDNAExtractionProcess.create(self.current_user,
                                             Plate(pid),
                                             kf,
                                             ep,
                                             ept,
                                             kit,
                                             volume,
                                             p_name,
                                             externally_extracted=ee,
                                             extraction_date=extraction_date,
                                             notes=nt).id)

        self.write({'processes': processes})
 def test_composition_factory(self):
     self.assertEqual(Composition.factory(3074), ReagentComposition(2))
     self.assertEqual(Composition.factory(1538), PrimerComposition(1))
     self.assertEqual(Composition.factory(1), PrimerSetComposition(1))
     self.assertEqual(Composition.factory(3082), SampleComposition(1))
     self.assertEqual(Composition.factory(3083), GDNAComposition(1))
     self.assertEqual(Composition.factory(3084),
                      LibraryPrep16SComposition(1))
     self.assertEqual(Composition.factory(3085),
                      CompressedGDNAComposition(1))
     self.assertEqual(Composition.factory(3086),
                      NormalizedGDNAComposition(1))
     self.assertEqual(Composition.factory(3087),
                      LibraryPrepShotgunComposition(1))
     self.assertEqual(Composition.factory(3079), PoolComposition(1))
    def post(self):
        user = self.current_user
        plates_info = self.get_argument('plates_info')
        water = self.get_argument('water')
        total_vol = self.get_argument('total_vol')
        ng = self.get_argument('ng')
        min_vol = self.get_argument('min_vol')
        max_vol = self.get_argument('max_vol')
        resolution = self.get_argument('resolution')
        reformat = self.get_argument('reformat')
        # NB: JavaScript uses true and false, posting converts them to strings
        reformat = reformat == 'true'

        processes = [
            [plate_id, NormalizationProcess.create(
                user, QuantificationProcess(quantification_process_id),
                ReagentComposition.from_external_id(water),
                plate_name, total_vol=float(total_vol), ng=float(ng),
                min_vol=float(min_vol), max_vol=float(max_vol),
                resolution=float(resolution), reformat=reformat).id]
            for plate_id, plate_name, quantification_process_id in
            json_decode(plates_info)]

        self.write({'processes': processes})
 def test_reagent_composition_get_composition_type_description(self):
     obs = ReagentComposition(2)
     self.assertEqual(obs.get_composition_type_description(), "reagent")
 def test_reagent_composition_from_external_id(self):
     self.assertEqual(ReagentComposition.from_external_id('157022406'),
                      ReagentComposition(2))
     with self.assertRaises(LabControlUnknownIdError):
         ReagentComposition.from_external_id('Does not exist')