def _get_ahringer_384_parent(child_stock): """ Get the 384-format LibraryStock corresponding to a 96-format child stock. Assumes standard Ahringer naming conventions. If the parent doesn't exist, creates it, assuming same parent as the child. """ child_plate_parts = child_stock.plate.id.split('-') parent_plate_name = child_plate_parts[0] + '-' + child_plate_parts[1] parent_plate = get_library_plate(parent_plate_name) child_well = child_stock.well parent_well = get_384_parent_well(child_plate_parts[2], child_well) parent_pk = generate_library_stock_name(parent_plate_name, parent_well) try: parent_stock = LibraryStock.objects.get(pk=parent_pk) except ObjectDoesNotExist: parent_stock = LibraryStock( id=parent_pk, plate=parent_plate, well=parent_well, parent_stock=None, intended_clone=child_stock.intended_clone, ) parent_stock.save() return parent_stock
def test_lower_right_corner(self): self.assertEqual(get_384_parent_well('A1', 'H12'), 'O23') self.assertEqual(get_384_parent_well('A2', 'H12'), 'O24') self.assertEqual(get_384_parent_well('B1', 'H12'), 'P23') self.assertEqual(get_384_parent_well('B2', 'H12'), 'P24')
def test_lower_left_corner(self): self.assertEqual(get_384_parent_well('A1', 'H01'), 'O01') self.assertEqual(get_384_parent_well('A2', 'H01'), 'O02') self.assertEqual(get_384_parent_well('B1', 'H01'), 'P01') self.assertEqual(get_384_parent_well('B2', 'H01'), 'P02')
def test_upper_right_corner(self): self.assertEqual(get_384_parent_well('A1', 'A12'), 'A23') self.assertEqual(get_384_parent_well('A2', 'A12'), 'A24') self.assertEqual(get_384_parent_well('B1', 'A12'), 'B23') self.assertEqual(get_384_parent_well('B2', 'A12'), 'B24')
def test_upper_left_corner(self): self.assertEqual(get_384_parent_well('A1', 'A01'), 'A01') self.assertEqual(get_384_parent_well('A2', 'A01'), 'A02') self.assertEqual(get_384_parent_well('B1', 'A01'), 'B01') self.assertEqual(get_384_parent_well('B2', 'A01'), 'B02')