예제 #1
0
    def test_sample_composition_attributes(self):
        # Test a sample
        obs = SampleComposition(1)
        self.assertEqual(obs.sample_composition_type, 'experimental sample')
        self.assertEqual(obs.sample_id, '1.SKB1.640202')
        self.assertEqual(obs.content, '1.SKB1.640202')
        self.assertEqual(obs.upstream_process, SamplePlatingProcess(10))
        self.assertEqual(obs.container, Well(3073))
        self.assertEqual(obs.total_volume, 10)
        self.assertIsNone(obs.notes)
        obs.notes = 'New Notes'
        self.assertEqual(obs.notes, 'New Notes')
        obs.notes = None
        self.assertIsNone(obs.notes)
        self.assertEqual(obs.composition_id, 3081)
        self.assertEqual(obs.study, Study(1))

        # Test a control sample
        obs = SampleComposition(85)
        self.assertEqual(obs.sample_composition_type, 'blank')
        self.assertIsNone(obs.sample_id)
        self.assertEqual(obs.content, 'blank.21.H1')
        self.assertEqual(obs.upstream_process, SamplePlatingProcess(10))
        self.assertEqual(obs.container, Well(4333))
        self.assertEqual(obs.total_volume, 10)
        self.assertIsNone(obs.notes)
        self.assertEqual(obs.composition_id, 4341)
        self.assertIsNone(obs.study)
예제 #2
0
 def test_get_well(self):
     # Plate 21 - Defined in the test DB
     tester = Plate(21)
     self.assertEqual(tester.get_well(1, 1), Well(3073))
     self.assertEqual(tester.get_well(1, 2), Well(3088))
     self.assertEqual(tester.get_well(7, 2), Well(4168))
     self.assertEqual(tester.get_well(8, 12), Well(4498))
     with self.assertRaises(LabmanError):
         tester.get_well(8, 13)
     with self.assertRaises(LabmanError):
         tester.get_well(9, 12)
예제 #3
0
 def test_primer_set_composition_attributes(self):
     obs = PrimerSetComposition(1)
     self.assertEqual(obs.container, Well(1))
     self.assertEqual(obs.total_volume, 0)
     self.assertIsNone(obs.notes)
     self.assertEqual(obs.composition_id, 1)
     self.assertEqual(obs.barcode, 'TCCCTTGTCTCC')
예제 #4
0
 def test_primer_composition_attributes(self):
     obs = PrimerComposition(1)
     self.assertEqual(obs.container, Well(1537))
     self.assertEqual(obs.total_volume, 10)
     self.assertIsNone(obs.notes)
     self.assertEqual(obs.composition_id, 1537)
     self.assertEqual(obs.primer_set_composition, PrimerSetComposition(1))
예제 #5
0
 def test_library_prep_16S_composition_attributes(self):
     obs = LibraryPrep16SComposition(1)
     self.assertEqual(obs.container, Well(3075))
     self.assertEqual(obs.total_volume, 10)
     self.assertIsNone(obs.notes)
     self.assertEqual(obs.gdna_composition, GDNAComposition(1))
     self.assertEqual(obs.primer_composition, PrimerComposition(1))
     self.assertEqual(obs.composition_id, 3083)
예제 #6
0
 def test_gDNA_composition_attributes(self):
     obs = GDNAComposition(1)
     self.assertEqual(obs.sample_composition, SampleComposition(1))
     self.assertEqual(obs.upstream_process, GDNAExtractionProcess(1))
     self.assertEqual(obs.container, Well(3074))
     self.assertEqual(obs.total_volume, 10)
     self.assertIsNone(obs.notes)
     self.assertEqual(obs.composition_id, 3082)
예제 #7
0
 def test_normalized_gDNA_composition_attributes(self):
     obs = NormalizedGDNAComposition(1)
     self.assertEqual(obs.container, Well(3077))
     self.assertEqual(obs.total_volume, 3500)
     self.assertIsNone(obs.notes)
     self.assertEqual(obs.gdna_composition, GDNAComposition(2))
     self.assertEqual(obs.dna_volume, 415)
     self.assertEqual(obs.water_volume, 3085)
     self.assertEqual(obs.composition_id, 3085)
예제 #8
0
 def test_properties(self):
     tester = Well(3073)
     self.assertEqual(tester.plate, Plate(21))
     self.assertEqual(tester.row, 1)
     self.assertEqual(tester.column, 1)
     self.assertEqual(tester.remaining_volume, 10)
     self.assertIsNone(tester.notes)
     self.assertEqual(tester.latest_process, SamplePlatingProcess(11))
     self.assertEqual(tester.container_id, 3082)
     self.assertEqual(tester.composition, SampleComposition(1))
예제 #9
0
 def test_library_prep_shotgun_composition_attributes(self):
     obs = LibraryPrepShotgunComposition(1)
     self.assertEqual(obs.container, Well(3078))
     self._baseAssertEqual(obs.total_volume, 4000)
     self.assertIsNone(obs.notes)
     self.assertEqual(obs.normalized_gdna_composition,
                      NormalizedGDNAComposition(1))
     self.assertEqual(obs.i5_composition, PrimerComposition(769))
     self.assertEqual(obs.i7_composition, PrimerComposition(770))
     self.assertEqual(obs.composition_id, 3086)
예제 #10
0
 def test_well_id(self):
     self.assertEqual(Well(1).well_id, 'A1')
     self.assertEqual(Well(2).well_id, 'A2')
     self.assertEqual(Well(3).well_id, 'A3')
     self.assertEqual(Well(13).well_id, 'B1')
     self.assertEqual(Well(54).well_id, 'E6')
     self.assertEqual(Well(96).well_id, 'H12')
예제 #11
0
 def test_primer_composition_attributes(self):
     obs = PrimerComposition(1)
     self.assertEqual(obs.container, Well(1537))
     self.assertEqual(obs.total_volume, 10)
     self.assertIsNone(obs.notes)
     # NB: the fact that the composition id is 1538 and the well id is 1537
     # is not a mistake.  There is a placeholder composition (for "Not
     # Applicable", supporting externally extracted DNA) added in
     # db_patch_manual.sql, before populate_test_db.sql is run to create the
     # records being tested here--but that composition is "stored" in a
     # placeholder TUBE rather than a placeholder WELL, so there is no
     # analogous extra well record.
     self.assertEqual(obs.composition_id, 1538)
     self.assertEqual(obs.primer_set_composition, PrimerSetComposition(1))
     self.assertIsNone(obs.study)
예제 #12
0
 def test_get_wells_by_sample(self):
     tester = Plate(21)
     exp = [
         Well(3073),
         Well(3253),
         Well(3433),
         Well(3613),
         Well(3793),
         Well(3973)
     ]
     self.assertEqual(tester.get_wells_by_sample('1.SKB1.640202'), exp)
     self.assertEqual(tester.get_wells_by_sample('1.SKM1.640183'), [])
예제 #13
0
    def test_get_previously_plated_wells(self):
        tester = Plate(21)
        self.assertEqual(tester.get_previously_plated_wells(), {})

        # Create another plate and plate some samples in it
        spp = SamplePlatingProcess.create(
            User('*****@*****.**'), PlateConfiguration(1), 'New Plate For Prev')
        spp.update_well(1, 1, '1.SKD1.640179')
        exp = {}
        plate = spp.plate
        exp[Well(3208)] = [plate]
        exp[Well(3388)] = [plate]
        exp[Well(3568)] = [plate]
        exp[Well(3748)] = [plate]
        exp[Well(3928)] = [plate]
        exp[Well(4108)] = [plate]
        obs = tester.get_previously_plated_wells()
        self.assertEqual(obs, exp)
예제 #14
0
    def test_properties(self):
        # Plate 21 - Defined in the test DB
        tester = Plate(21)
        self.assertEqual(tester.external_id, 'Test plate 1')
        self.assertEqual(tester.plate_configuration, PlateConfiguration(1))
        self.assertFalse(tester.discarded)
        tester.discarded = True
        self.assertTrue(tester.discarded)
        self.assertIsNone(tester.notes)
        obs_layout = tester.layout
        self.assertEqual(len(obs_layout), 8)
        for row in obs_layout:
            self.assertEqual(len(row), 12)
        self.assertEqual(tester.studies, {Study(1)})
        self.assertListEqual(tester.quantification_processes, [])
        self.assertEqual(tester.process, SamplePlatingProcess(10))

        # Test changing the name of the plate
        tester.external_id = 'Some new name'
        self.assertEqual(tester.external_id, 'Some new name')
        tester.external_id = 'Test plate 1'
        self.assertEqual(tester.external_id, 'Test plate 1')

        self.assertEqual(len(Plate(23).quantification_processes), 1)
        self.assertEqual(
            Plate(23).quantification_processes[0], QuantificationProcess(1))
        self.assertEqual(Plate(22).process, GDNAExtractionProcess(1))

        exp = {
            '1.SKB1.640202': [[Well(3073), '1.SKB1.640202.21.A1'],
                              [Well(3121), '1.SKB1.640202.21.A2'],
                              [Well(3169), '1.SKB1.640202.21.A3'],
                              [Well(3217), '1.SKB1.640202.21.A4'],
                              [Well(3265), '1.SKB1.640202.21.A5'],
                              [Well(3313), '1.SKB1.640202.21.A6'],
                              [Well(3361), '1.SKB1.640202.21.A7'],
                              [Well(3409), '1.SKB1.640202.21.A8'],
                              [Well(3457), '1.SKB1.640202.21.A9'],
                              [Well(3505), '1.SKB1.640202.21.A10'],
                              [Well(3553), '1.SKB1.640202.21.A11'],
                              [Well(3601), '1.SKB1.640202.21.A12']],
            '1.SKB2.640194': [[Well(3079), '1.SKB2.640194.21.B1'],
                              [Well(3127), '1.SKB2.640194.21.B2'],
                              [Well(3175), '1.SKB2.640194.21.B3'],
                              [Well(3223), '1.SKB2.640194.21.B4'],
                              [Well(3271), '1.SKB2.640194.21.B5'],
                              [Well(3319), '1.SKB2.640194.21.B6'],
                              [Well(3367), '1.SKB2.640194.21.B7'],
                              [Well(3415), '1.SKB2.640194.21.B8'],
                              [Well(3463), '1.SKB2.640194.21.B9'],
                              [Well(3511), '1.SKB2.640194.21.B10'],
                              [Well(3559), '1.SKB2.640194.21.B11'],
                              [Well(3607), '1.SKB2.640194.21.B12']],
            '1.SKB3.640195': [[Well(3085), '1.SKB3.640195.21.C1'],
                              [Well(3133), '1.SKB3.640195.21.C2'],
                              [Well(3181), '1.SKB3.640195.21.C3'],
                              [Well(3229), '1.SKB3.640195.21.C4'],
                              [Well(3277), '1.SKB3.640195.21.C5'],
                              [Well(3325), '1.SKB3.640195.21.C6'],
                              [Well(3373), '1.SKB3.640195.21.C7'],
                              [Well(3421), '1.SKB3.640195.21.C8'],
                              [Well(3469), '1.SKB3.640195.21.C9'],
                              [Well(3517), '1.SKB3.640195.21.C10'],
                              [Well(3565), '1.SKB3.640195.21.C11'],
                              [Well(3613), '1.SKB3.640195.21.C12']],
            '1.SKB4.640189': [[Well(3091), '1.SKB4.640189.21.D1'],
                              [Well(3139), '1.SKB4.640189.21.D2'],
                              [Well(3187), '1.SKB4.640189.21.D3'],
                              [Well(3235), '1.SKB4.640189.21.D4'],
                              [Well(3283), '1.SKB4.640189.21.D5'],
                              [Well(3331), '1.SKB4.640189.21.D6'],
                              [Well(3379), '1.SKB4.640189.21.D7'],
                              [Well(3427), '1.SKB4.640189.21.D8'],
                              [Well(3475), '1.SKB4.640189.21.D9'],
                              [Well(3523), '1.SKB4.640189.21.D10'],
                              [Well(3571), '1.SKB4.640189.21.D11'],
                              [Well(3619), '1.SKB4.640189.21.D12']],
            '1.SKB5.640181': [[Well(3097), '1.SKB5.640181.21.E1'],
                              [Well(3145), '1.SKB5.640181.21.E2'],
                              [Well(3193), '1.SKB5.640181.21.E3'],
                              [Well(3241), '1.SKB5.640181.21.E4'],
                              [Well(3289), '1.SKB5.640181.21.E5'],
                              [Well(3337), '1.SKB5.640181.21.E6'],
                              [Well(3385), '1.SKB5.640181.21.E7'],
                              [Well(3433), '1.SKB5.640181.21.E8'],
                              [Well(3481), '1.SKB5.640181.21.E9'],
                              [Well(3529), '1.SKB5.640181.21.E10'],
                              [Well(3577), '1.SKB5.640181.21.E11'],
                              [Well(3625), '1.SKB5.640181.21.E12']],
            '1.SKB6.640176': [[Well(3103), '1.SKB6.640176.21.F1'],
                              [Well(3151), '1.SKB6.640176.21.F2'],
                              [Well(3199), '1.SKB6.640176.21.F3'],
                              [Well(3247), '1.SKB6.640176.21.F4'],
                              [Well(3295), '1.SKB6.640176.21.F5'],
                              [Well(3343), '1.SKB6.640176.21.F6'],
                              [Well(3391), '1.SKB6.640176.21.F7'],
                              [Well(3439), '1.SKB6.640176.21.F8'],
                              [Well(3487), '1.SKB6.640176.21.F9'],
                              [Well(3535), '1.SKB6.640176.21.F10'],
                              [Well(3583), '1.SKB6.640176.21.F11'],
                              [Well(3631), '1.SKB6.640176.21.F12']]
        }
        self.assertEqual(tester.duplicates, exp)
        self.assertEqual(tester.unknown_samples, [])
        exp = tester.get_well(1, 1)
        exp.composition.update('Unknown')
        self.assertEqual(tester.unknown_samples, [exp])
        exp.composition.update('1.SKB1.640202')

        # test that the quantification_processes attribute correctly
        # orders multiple processes in order from oldest to newest
        tester2 = Plate(26)
        self.assertEqual(len(tester2.quantification_processes), 2)
        self.assertEqual(
            tester2.quantification_processes[0].date,
            datetime.strptime("2017-10-25 19:10:25-0700",
                              '%Y-%m-%d %H:%M:%S%z'))
        self.assertEqual(
            tester2.quantification_processes[1].date,
            datetime.strptime("2017-10-26 03:10:25-0700",
                              '%Y-%m-%d %H:%M:%S%z'))
예제 #15
0
    def test_get_previously_plated_wells(self):
        tester = Plate(21)
        three_plates_list = [Plate(27), Plate(30), Plate(33)]
        exp = {
            Well(3073): three_plates_list,
            Well(3079): three_plates_list,
            Well(3085): three_plates_list,
            Well(3091): three_plates_list,
            Well(3097): three_plates_list,
            Well(3103): three_plates_list,
            Well(3121): three_plates_list,
            Well(3127): three_plates_list,
            Well(3133): three_plates_list,
            Well(3139): three_plates_list,
            Well(3145): three_plates_list,
            Well(3151): three_plates_list,
            Well(3169): three_plates_list,
            Well(3175): three_plates_list,
            Well(3181): three_plates_list,
            Well(3187): three_plates_list,
            Well(3193): three_plates_list,
            Well(3199): three_plates_list,
            Well(3217): three_plates_list,
            Well(3223): three_plates_list,
            Well(3229): three_plates_list,
            Well(3235): three_plates_list,
            Well(3241): three_plates_list,
            Well(3247): three_plates_list,
            Well(3265): three_plates_list,
            Well(3271): three_plates_list,
            Well(3277): three_plates_list,
            Well(3283): three_plates_list,
            Well(3289): three_plates_list,
            Well(3295): three_plates_list,
            Well(3313): three_plates_list,
            Well(3319): three_plates_list,
            Well(3325): three_plates_list,
            Well(3331): three_plates_list,
            Well(3337): three_plates_list,
            Well(3343): three_plates_list,
            Well(3361): three_plates_list,
            Well(3367): three_plates_list,
            Well(3373): three_plates_list,
            Well(3379): three_plates_list,
            Well(3385): three_plates_list,
            Well(3391): three_plates_list,
            Well(3409): three_plates_list,
            Well(3415): three_plates_list,
            Well(3421): three_plates_list,
            Well(3427): three_plates_list,
            Well(3433): three_plates_list,
            Well(3439): three_plates_list,
            Well(3457): three_plates_list,
            Well(3463): three_plates_list,
            Well(3469): three_plates_list,
            Well(3475): three_plates_list,
            Well(3481): three_plates_list,
            Well(3487): three_plates_list,
            Well(3505): three_plates_list,
            Well(3511): three_plates_list,
            Well(3517): three_plates_list,
            Well(3523): three_plates_list,
            Well(3529): three_plates_list,
            Well(3535): three_plates_list,
            Well(3553): three_plates_list,
            Well(3559): three_plates_list,
            Well(3565): three_plates_list,
            Well(3571): three_plates_list,
            Well(3577): three_plates_list,
            Well(3583): three_plates_list,
            Well(3601): three_plates_list,
            Well(3607): three_plates_list,
            Well(3613): three_plates_list,
            Well(3619): three_plates_list,
            Well(3625): three_plates_list,
            Well(3631): three_plates_list
        }
        obs = tester.get_previously_plated_wells()
        self.assertEqual(obs, exp)

        # Create another plate and put a sample on it that isn't anywhere else
        spp = SamplePlatingProcess.create(User('*****@*****.**'),
                                          PlateConfiguration(1),
                                          'New Plate For Prev')
        spp.update_well(1, 1, '1.SKM1.640184')
        obs = spp.plate.get_previously_plated_wells()
        self.assertEqual(obs, {})
예제 #16
0
 def test_factory(self):
     self.assertEqual(Container.factory(3077), Tube(5))
     self.assertEqual(Container.factory(1825), Well(1824))
예제 #17
0
파일: plate.py 프로젝트: antgonza/labman
    def get(self, plate_id):
        plate = _get_plate(plate_id)
        # sorting is done in plate.duplicates
        duplicates = [[
            sample_info[0].row, sample_info[0].column, sample_info[1]
        ] for sample_info in chain.from_iterable(plate.duplicates.values())]

        # sorting of wells has to be done here as they are in a dictionary
        previous_plates = []
        prev_plated = plate.get_previously_plated_wells()
        well_ids = sorted([w.id for w in prev_plated.keys()])
        for curr_well_id in well_ids:
            curr_well = Well(curr_well_id)
            curr_plates = prev_plated[curr_well]
            # plates are sorted in plate id order in
            # get_previously_plated_wells
            previous_plates.append([[curr_well.row, curr_well.column],
                                    [{
                                        'plate_id': p.id,
                                        'plate_name': p.external_id
                                    } for p in curr_plates]])

        # sorting is done in plate.unknown_samples
        unknowns = [[well.row, well.column] for well in plate.unknown_samples]

        # sorting is done in plate.quantification processes
        quantitation_processes = [[
            q.id, q.personnel.name,
            q.date.strftime(q.get_date_format()), q.notes
        ] for q in plate.quantification_processes]

        plate_config = plate.plate_configuration
        result = {
            'plate_id':
            plate.id,
            'plate_name':
            plate.external_id,
            'discarded':
            plate.discarded,
            'plate_configuration': [
                plate_config.id, plate_config.description,
                plate_config.num_rows, plate_config.num_columns
            ],
            'notes':
            plate.notes,
            'process_notes':
            plate.process.notes,
            'studies':
            sorted(s.id for s in plate.studies),
            'duplicates':
            duplicates,
            'previous_plates':
            previous_plates,
            'unknowns':
            unknowns,
            'quantitation_processes':
            quantitation_processes
        }

        self.write(result)
        self.finish()
예제 #18
0
    def test_properties(self):
        # Plate 21 - Defined in the test DB
        tester = Plate(21)
        self.assertEqual(tester.external_id, 'Test plate 1')
        self.assertEqual(tester.plate_configuration, PlateConfiguration(1))
        self.assertFalse(tester.discarded)
        self.assertIsNone(tester.notes)
        obs_layout = tester.layout
        self.assertEqual(len(obs_layout), 8)
        for row in obs_layout:
            self.assertEqual(len(row), 12)
        self.assertEqual(tester.studies, {Study(1)})
        self.assertIsNone(tester.quantification_process)
        self.assertEqual(tester.process, SamplePlatingProcess(10))

        # Test changing the name of the plate
        tester.external_id = 'Some new name'
        self.assertEqual(tester.external_id, 'Some new name')
        tester.external_id = 'Test plate 1'
        self.assertEqual(tester.external_id, 'Test plate 1')

        self.assertEqual(
            Plate(23).quantification_process, QuantificationProcess(1))
        self.assertEqual(Plate(22).process, GDNAExtractionProcess(1))

        exp = {
            '1.SKB1.640202': [
                Well(3073),
                Well(3253),
                Well(3433),
                Well(3613),
                Well(3793),
                Well(3973)
            ],
            '1.SKB2.640194': [
                Well(3088),
                Well(3268),
                Well(3448),
                Well(3628),
                Well(3808),
                Well(3988)
            ],
            '1.SKB3.640195': [
                Well(3103),
                Well(3283),
                Well(3463),
                Well(3643),
                Well(3823),
                Well(4003)
            ],
            '1.SKB4.640189': [
                Well(3118),
                Well(3298),
                Well(3478),
                Well(3658),
                Well(3838),
                Well(4018)
            ],
            '1.SKB5.640181': [
                Well(3133),
                Well(3313),
                Well(3493),
                Well(3673),
                Well(3853),
                Well(4033)
            ],
            '1.SKB6.640176': [
                Well(3148),
                Well(3328),
                Well(3508),
                Well(3688),
                Well(3868),
                Well(4048)
            ],
            '1.SKB7.640196': [
                Well(3163),
                Well(3343),
                Well(3523),
                Well(3703),
                Well(3883),
                Well(4063)
            ],
            '1.SKB8.640193': [
                Well(3178),
                Well(3358),
                Well(3538),
                Well(3718),
                Well(3898),
                Well(4078)
            ],
            '1.SKB9.640200': [
                Well(3193),
                Well(3373),
                Well(3553),
                Well(3733),
                Well(3913),
                Well(4093)
            ],
            '1.SKD1.640179': [
                Well(3208),
                Well(3388),
                Well(3568),
                Well(3748),
                Well(3928),
                Well(4108)
            ],
            '1.SKD2.640178': [
                Well(3223),
                Well(3403),
                Well(3583),
                Well(3763),
                Well(3943),
                Well(4123)
            ],
            '1.SKD3.640198': [
                Well(3238),
                Well(3418),
                Well(3598),
                Well(3778),
                Well(3958),
                Well(4138)
            ]
        }
        self.assertEqual(tester.duplicates, exp)
예제 #19
0
 def test_compressed_gDNA_composition_attributes(self):
     obs = CompressedGDNAComposition(1)
     self.assertEqual(obs.container, Well(3076))
     self.assertEqual(obs.total_volume, 10)
     self.assertIsNone(obs.notes)
     self.assertEqual(obs.gdna_composition, GDNAComposition(1))
예제 #20
0
    def test_properties(self):
        # Plate 21 - Defined in the test DB
        tester = Plate(21)
        self.assertEqual(tester.external_id, 'Test plate 1')
        self.assertEqual(tester.plate_configuration, PlateConfiguration(1))
        self.assertFalse(tester.discarded)
        tester.discarded = True
        self.assertTrue(tester.discarded)
        self.assertIsNone(tester.notes)
        obs_layout = tester.layout
        self.assertEqual(len(obs_layout), 8)
        for row in obs_layout:
            self.assertEqual(len(row), 12)
        self.assertEqual(tester.studies, {Study(1)})
        self.assertIsNone(tester.quantification_process)
        self.assertEqual(tester.process, SamplePlatingProcess(10))

        # Test changing the name of the plate
        tester.external_id = 'Some new name'
        self.assertEqual(tester.external_id, 'Some new name')
        tester.external_id = 'Test plate 1'
        self.assertEqual(tester.external_id, 'Test plate 1')

        self.assertEqual(
            Plate(23).quantification_process, QuantificationProcess(1))
        self.assertEqual(Plate(22).process, GDNAExtractionProcess(1))

        exp = {
            '1.SKB1.640202': [[Well(3073), '1.SKB1.640202.21.A1'],
                              [Well(3253), '1.SKB1.640202.21.B1'],
                              [Well(3433), '1.SKB1.640202.21.C1'],
                              [Well(3613), '1.SKB1.640202.21.D1'],
                              [Well(3793), '1.SKB1.640202.21.E1'],
                              [Well(3973), '1.SKB1.640202.21.F1']],
            '1.SKB2.640194': [[Well(3088), '1.SKB2.640194.21.A2'],
                              [Well(3268), '1.SKB2.640194.21.B2'],
                              [Well(3448), '1.SKB2.640194.21.C2'],
                              [Well(3628), '1.SKB2.640194.21.D2'],
                              [Well(3808), '1.SKB2.640194.21.E2'],
                              [Well(3988), '1.SKB2.640194.21.F2']],
            '1.SKB3.640195': [[Well(3103), '1.SKB3.640195.21.A3'],
                              [Well(3283), '1.SKB3.640195.21.B3'],
                              [Well(3463), '1.SKB3.640195.21.C3'],
                              [Well(3643), '1.SKB3.640195.21.D3'],
                              [Well(3823), '1.SKB3.640195.21.E3'],
                              [Well(4003), '1.SKB3.640195.21.F3']],
            '1.SKB4.640189': [[Well(3118), '1.SKB4.640189.21.A4'],
                              [Well(3298), '1.SKB4.640189.21.B4'],
                              [Well(3478), '1.SKB4.640189.21.C4'],
                              [Well(3658), '1.SKB4.640189.21.D4'],
                              [Well(3838), '1.SKB4.640189.21.E4'],
                              [Well(4018), '1.SKB4.640189.21.F4']],
            '1.SKB5.640181': [[Well(3133), '1.SKB5.640181.21.A5'],
                              [Well(3313), '1.SKB5.640181.21.B5'],
                              [Well(3493), '1.SKB5.640181.21.C5'],
                              [Well(3673), '1.SKB5.640181.21.D5'],
                              [Well(3853), '1.SKB5.640181.21.E5'],
                              [Well(4033), '1.SKB5.640181.21.F5']],
            '1.SKB6.640176': [[Well(3148), '1.SKB6.640176.21.A6'],
                              [Well(3328), '1.SKB6.640176.21.B6'],
                              [Well(3508), '1.SKB6.640176.21.C6'],
                              [Well(3688), '1.SKB6.640176.21.D6'],
                              [Well(3868), '1.SKB6.640176.21.E6'],
                              [Well(4048), '1.SKB6.640176.21.F6']],
            '1.SKB7.640196': [[Well(3163), '1.SKB7.640196.21.A7'],
                              [Well(3343), '1.SKB7.640196.21.B7'],
                              [Well(3523), '1.SKB7.640196.21.C7'],
                              [Well(3703), '1.SKB7.640196.21.D7'],
                              [Well(3883), '1.SKB7.640196.21.E7'],
                              [Well(4063), '1.SKB7.640196.21.F7']],
            '1.SKB8.640193': [[Well(3178), '1.SKB8.640193.21.A8'],
                              [Well(3358), '1.SKB8.640193.21.B8'],
                              [Well(3538), '1.SKB8.640193.21.C8'],
                              [Well(3718), '1.SKB8.640193.21.D8'],
                              [Well(3898), '1.SKB8.640193.21.E8'],
                              [Well(4078), '1.SKB8.640193.21.F8']],
            '1.SKB9.640200': [[Well(3193), '1.SKB9.640200.21.A9'],
                              [Well(3373), '1.SKB9.640200.21.B9'],
                              [Well(3553), '1.SKB9.640200.21.C9'],
                              [Well(3733), '1.SKB9.640200.21.D9'],
                              [Well(3913), '1.SKB9.640200.21.E9'],
                              [Well(4093), '1.SKB9.640200.21.F9']],
            '1.SKD1.640179': [[Well(3208), '1.SKD1.640179.21.A10'],
                              [Well(3388), '1.SKD1.640179.21.B10'],
                              [Well(3568), '1.SKD1.640179.21.C10'],
                              [Well(3748), '1.SKD1.640179.21.D10'],
                              [Well(3928), '1.SKD1.640179.21.E10'],
                              [Well(4108), '1.SKD1.640179.21.F10']],
            '1.SKD2.640178': [[Well(3223), '1.SKD2.640178.21.A11'],
                              [Well(3403), '1.SKD2.640178.21.B11'],
                              [Well(3583), '1.SKD2.640178.21.C11'],
                              [Well(3763), '1.SKD2.640178.21.D11'],
                              [Well(3943), '1.SKD2.640178.21.E11'],
                              [Well(4123), '1.SKD2.640178.21.F11']],
            '1.SKD3.640198': [[Well(3238), '1.SKD3.640198.21.A12'],
                              [Well(3418), '1.SKD3.640198.21.B12'],
                              [Well(3598), '1.SKD3.640198.21.C12'],
                              [Well(3778), '1.SKD3.640198.21.D12'],
                              [Well(3958), '1.SKD3.640198.21.E12'],
                              [Well(4138), '1.SKD3.640198.21.F12']]
        }
        self.assertEqual(tester.duplicates, exp)
        self.assertEqual(tester.unknown_samples, [])
        exp = tester.get_well(1, 1)
        exp.composition.update('Unknown')
        self.assertEqual(tester.unknown_samples, [exp])
        exp.composition.update('1.SKB1.640202')
예제 #21
0
 def test_get_wells_by_sample(self):
     tester = Plate(21)
     exp = [
         Well(3073),
         Well(3121),
         Well(3169),
         Well(3217),
         Well(3265),
         Well(3313),
         Well(3361),
         Well(3409),
         Well(3457),
         Well(3505),
         Well(3553),
         Well(3601)
     ]
     self.assertEqual(tester.get_wells_by_sample('1.SKB1.640202'), exp)
     self.assertEqual(tester.get_wells_by_sample('1.SKM1.640183'), [])