def save(self: "BioPlateManipulation", plate_name: str, **kwargs) -> Optional[str]: """ Save BioPlate objwct to plate history database Parameters ---------- plate_name : str name of plate to save it in database eg : "expetiment 1" kwargs : dict To know kwargs see :func:`~BioPlate.database.plate_historic_db.PlateHist.add_hplate` Returns ------- response : str database response for adding or updating plate historic database """ dbName = kwargs.get("db_hist_name") if not dbName: phi = PlateHist() else: phi = PlateHist(db_name=dbName) well = next(BioPlateIterate(self, OnlyValue=True)).shape numWell = well[0] * well[1] response = phi.add_hplate(numWell, plate_name, self) if isinstance(response, str): return response else: dict_update = {"plate_name": plate_name, "plate_array": self} return phi.update_hplate(dict_update, response, key="id")
def count_BioPlateStack(cls): result = {} index = 0 for plate in BioPlateIterate(cls.plate, OnlyValue=True): if plate.name == "Plate": result[index] = cls.count_BioPlatePlate() pass elif plate.name == "Inserts": try: result[index] = cls.count_BioPlateInserts() except StopIteration: break index += 1 return result
def iterate(self: "BioPlateManipulation", order: str = "C", accumulate: bool = True) -> Generator: """ Generaror to Iterate a BioPlate instance by column or row, with ability to group value of same well Parameters ---------- order : { 'C', 'R'} Iterate by column (C) or by row (R) accumulate : bool (by default True) Group data of same well together Yields ------- well : tuple each iteration contain well identifier and value(s) eg : ("B2", "value") """ yield from BioPlateIterate(self, order=order, accumulate=accumulate)
def __new__(cls, plate, reverse=False): cls.plate = plate cls.reverse = reverse cls.plate_iterated = BioPlateIterate(plate, OnlyValue=True) return cls.count()
def test_inserts(self): self.assertEqual( list(BioPlateIterate(self.inserts)), [ ("A1", "A1", ""), ("B1", "B1", ""), ("C1", "C1", ""), ("D1", "D1", ""), ("E1", "E1", ""), ("F1", "F1", ""), ("G1", "G1", ""), ("H1", "H1", ""), ("A2", "A2", ""), ("B2", "B2", ""), ("C2", "C2", ""), ("D2", "D2", ""), ("E2", "E2", ""), ("F2", "F2", ""), ("G2", "G2", ""), ("H2", "H2", ""), ("A3", "A3", ""), ("B3", "B3", ""), ("C3", "C3", ""), ("D3", "D3", ""), ("E3", "E3", ""), ("F3", "F3", ""), ("G3", "G3", ""), ("H3", "H3", ""), ("A4", "A4", ""), ("B4", "B4", ""), ("C4", "C4", ""), ("D4", "D4", ""), ("E4", "E4", ""), ("F4", "F4", ""), ("G4", "G4", ""), ("H4", "H4", ""), ("A5", "A5", ""), ("B5", "B5", ""), ("C5", "C5", ""), ("D5", "D5", ""), ("E5", "E5", ""), ("F5", "F5", ""), ("G5", "G5", ""), ("H5", "H5", ""), ("A6", "A6", ""), ("B6", "B6", ""), ("C6", "C6", ""), ("D6", "D6", ""), ("E6", "E6", ""), ("F6", "F6", ""), ("G6", "G6", ""), ("H6", "H6", ""), ("A7", "A7", ""), ("B7", "B7", ""), ("C7", "C7", ""), ("D7", "D7", ""), ("E7", "E7", ""), ("F7", "F7", ""), ("G7", "G7", ""), ("H7", "H7", ""), ("A8", "A8", ""), ("B8", "B8", ""), ("C8", "C8", ""), ("D8", "D8", ""), ("E8", "E8", ""), ("F8", "F8", ""), ("G8", "G8", ""), ("H8", "H8", ""), ("A9", "A9", ""), ("B9", "B9", ""), ("C9", "C9", ""), ("D9", "D9", ""), ("E9", "E9", ""), ("F9", "F9", ""), ("G9", "G9", ""), ("H9", "H9", ""), ("A10", "A10", ""), ("B10", "B10", ""), ("C10", "C10", ""), ("D10", "D10", ""), ("E10", "E10", ""), ("F10", "F10", ""), ("G10", "G10", ""), ("H10", "H10", ""), ("A11", "A11", ""), ("B11", "B11", ""), ("C11", "C11", ""), ("D11", "D11", ""), ("E11", "E11", ""), ("F11", "F11", ""), ("G11", "G11", ""), ("H11", "H11", ""), ("A12", "A12", ""), ("B12", "B12", ""), ("C12", "C12", ""), ("D12", "D12", ""), ("E12", "E12", ""), ("F12", "F12", ""), ("G12", "G12", ""), ("H12", "H12", ""), ], ) self.assertEqual( list(BioPlateIterate(self.inserts, accumulate=False)), [ ("A1", "A1"), ("B1", "B1"), ("C1", "C1"), ("D1", "D1"), ("E1", "E1"), ("F1", "F1"), ("G1", "G1"), ("H1", "H1"), ("A2", "A2"), ("B2", "B2"), ("C2", "C2"), ("D2", "D2"), ("E2", "E2"), ("F2", "F2"), ("G2", "G2"), ("H2", "H2"), ("A3", "A3"), ("B3", "B3"), ("C3", "C3"), ("D3", "D3"), ("E3", "E3"), ("F3", "F3"), ("G3", "G3"), ("H3", "H3"), ("A4", "A4"), ("B4", "B4"), ("C4", "C4"), ("D4", "D4"), ("E4", "E4"), ("F4", "F4"), ("G4", "G4"), ("H4", "H4"), ("A5", "A5"), ("B5", "B5"), ("C5", "C5"), ("D5", "D5"), ("E5", "E5"), ("F5", "F5"), ("G5", "G5"), ("H5", "H5"), ("A6", "A6"), ("B6", "B6"), ("C6", "C6"), ("D6", "D6"), ("E6", "E6"), ("F6", "F6"), ("G6", "G6"), ("H6", "H6"), ("A7", "A7"), ("B7", "B7"), ("C7", "C7"), ("D7", "D7"), ("E7", "E7"), ("F7", "F7"), ("G7", "G7"), ("H7", "H7"), ("A8", "A8"), ("B8", "B8"), ("C8", "C8"), ("D8", "D8"), ("E8", "E8"), ("F8", "F8"), ("G8", "G8"), ("H8", "H8"), ("A9", "A9"), ("B9", "B9"), ("C9", "C9"), ("D9", "D9"), ("E9", "E9"), ("F9", "F9"), ("G9", "G9"), ("H9", "H9"), ("A10", "A10"), ("B10", "B10"), ("C10", "C10"), ("D10", "D10"), ("E10", "E10"), ("F10", "F10"), ("G10", "G10"), ("H10", "H10"), ("A11", "A11"), ("B11", "B11"), ("C11", "C11"), ("D11", "D11"), ("E11", "E11"), ("F11", "F11"), ("G11", "G11"), ("H11", "H11"), ("A12", "A12"), ("B12", "B12"), ("C12", "C12"), ("D12", "D12"), ("E12", "E12"), ("F12", "F12"), ("G12", "G12"), ("H12", "H12"), ("A1", ""), ("B1", ""), ("C1", ""), ("D1", ""), ("E1", ""), ("F1", ""), ("G1", ""), ("H1", ""), ("A2", ""), ("B2", ""), ("C2", ""), ("D2", ""), ("E2", ""), ("F2", ""), ("G2", ""), ("H2", ""), ("A3", ""), ("B3", ""), ("C3", ""), ("D3", ""), ("E3", ""), ("F3", ""), ("G3", ""), ("H3", ""), ("A4", ""), ("B4", ""), ("C4", ""), ("D4", ""), ("E4", ""), ("F4", ""), ("G4", ""), ("H4", ""), ("A5", ""), ("B5", ""), ("C5", ""), ("D5", ""), ("E5", ""), ("F5", ""), ("G5", ""), ("H5", ""), ("A6", ""), ("B6", ""), ("C6", ""), ("D6", ""), ("E6", ""), ("F6", ""), ("G6", ""), ("H6", ""), ("A7", ""), ("B7", ""), ("C7", ""), ("D7", ""), ("E7", ""), ("F7", ""), ("G7", ""), ("H7", ""), ("A8", ""), ("B8", ""), ("C8", ""), ("D8", ""), ("E8", ""), ("F8", ""), ("G8", ""), ("H8", ""), ("A9", ""), ("B9", ""), ("C9", ""), ("D9", ""), ("E9", ""), ("F9", ""), ("G9", ""), ("H9", ""), ("A10", ""), ("B10", ""), ("C10", ""), ("D10", ""), ("E10", ""), ("F10", ""), ("G10", ""), ("H10", ""), ("A11", ""), ("B11", ""), ("C11", ""), ("D11", ""), ("E11", ""), ("F11", ""), ("G11", ""), ("H11", ""), ("A12", ""), ("B12", ""), ("C12", ""), ("D12", ""), ("E12", ""), ("F12", ""), ("G12", ""), ("H12", ""), ], )
def test_stack(self): self.assertEqual( list(BioPlateIterate(self.stack)), [ ("A1", "A1", "A1plt1"), ("B1", "B1", "B1plt1"), ("C1", "C1", "C1plt1"), ("D1", "D1", "D1plt1"), ("E1", "E1", "E1plt1"), ("F1", "F1", "F1plt1"), ("G1", "G1", "G1plt1"), ("H1", "H1", "H1plt1"), ("A2", "A2", "A2plt1"), ("B2", "B2", "B2plt1"), ("C2", "C2", "C2plt1"), ("D2", "D2", "D2plt1"), ("E2", "E2", "E2plt1"), ("F2", "F2", "F2plt1"), ("G2", "G2", "G2plt1"), ("H2", "H2", "H2plt1"), ("A3", "A3", "A3plt1"), ("B3", "B3", "B3plt1"), ("C3", "C3", "C3plt1"), ("D3", "D3", "D3plt1"), ("E3", "E3", "E3plt1"), ("F3", "F3", "F3plt1"), ("G3", "G3", "G3plt1"), ("H3", "H3", "H3plt1"), ("A4", "A4", "A4plt1"), ("B4", "B4", "B4plt1"), ("C4", "C4", "C4plt1"), ("D4", "D4", "D4plt1"), ("E4", "E4", "E4plt1"), ("F4", "F4", "F4plt1"), ("G4", "G4", "G4plt1"), ("H4", "H4", "H4plt1"), ("A5", "A5", "A5plt1"), ("B5", "B5", "B5plt1"), ("C5", "C5", "C5plt1"), ("D5", "D5", "D5plt1"), ("E5", "E5", "E5plt1"), ("F5", "F5", "F5plt1"), ("G5", "G5", "G5plt1"), ("H5", "H5", "H5plt1"), ("A6", "A6", "A6plt1"), ("B6", "B6", "B6plt1"), ("C6", "C6", "C6plt1"), ("D6", "D6", "D6plt1"), ("E6", "E6", "E6plt1"), ("F6", "F6", "F6plt1"), ("G6", "G6", "G6plt1"), ("H6", "H6", "H6plt1"), ("A7", "A7", "A7plt1"), ("B7", "B7", "B7plt1"), ("C7", "C7", "C7plt1"), ("D7", "D7", "D7plt1"), ("E7", "E7", "E7plt1"), ("F7", "F7", "F7plt1"), ("G7", "G7", "G7plt1"), ("H7", "H7", "H7plt1"), ("A8", "A8", "A8plt1"), ("B8", "B8", "B8plt1"), ("C8", "C8", "C8plt1"), ("D8", "D8", "D8plt1"), ("E8", "E8", "E8plt1"), ("F8", "F8", "F8plt1"), ("G8", "G8", "G8plt1"), ("H8", "H8", "H8plt1"), ("A9", "A9", "A9plt1"), ("B9", "B9", "B9plt1"), ("C9", "C9", "C9plt1"), ("D9", "D9", "D9plt1"), ("E9", "E9", "E9plt1"), ("F9", "F9", "F9plt1"), ("G9", "G9", "G9plt1"), ("H9", "H9", "H9plt1"), ("A10", "A10", "A10plt1"), ("B10", "B10", "B10plt1"), ("C10", "C10", "C10plt1"), ("D10", "D10", "D10plt1"), ("E10", "E10", "E10plt1"), ("F10", "F10", "F10plt1"), ("G10", "G10", "G10plt1"), ("H10", "H10", "H10plt1"), ("A11", "A11", "A11plt1"), ("B11", "B11", "B11plt1"), ("C11", "C11", "C11plt1"), ("D11", "D11", "D11plt1"), ("E11", "E11", "E11plt1"), ("F11", "F11", "F11plt1"), ("G11", "G11", "G11plt1"), ("H11", "H11", "H11plt1"), ("A12", "A12", "A12plt1"), ("B12", "B12", "B12plt1"), ("C12", "C12", "C12plt1"), ("D12", "D12", "D12plt1"), ("E12", "E12", "E12plt1"), ("F12", "F12", "F12plt1"), ("G12", "G12", "G12plt1"), ("H12", "H12", "H12plt1"), ], ) self.assertEqual( list(BioPlateIterate(self.stack, order="C")), [ ("A1", "A1", "A1plt1"), ("B1", "B1", "B1plt1"), ("C1", "C1", "C1plt1"), ("D1", "D1", "D1plt1"), ("E1", "E1", "E1plt1"), ("F1", "F1", "F1plt1"), ("G1", "G1", "G1plt1"), ("H1", "H1", "H1plt1"), ("A2", "A2", "A2plt1"), ("B2", "B2", "B2plt1"), ("C2", "C2", "C2plt1"), ("D2", "D2", "D2plt1"), ("E2", "E2", "E2plt1"), ("F2", "F2", "F2plt1"), ("G2", "G2", "G2plt1"), ("H2", "H2", "H2plt1"), ("A3", "A3", "A3plt1"), ("B3", "B3", "B3plt1"), ("C3", "C3", "C3plt1"), ("D3", "D3", "D3plt1"), ("E3", "E3", "E3plt1"), ("F3", "F3", "F3plt1"), ("G3", "G3", "G3plt1"), ("H3", "H3", "H3plt1"), ("A4", "A4", "A4plt1"), ("B4", "B4", "B4plt1"), ("C4", "C4", "C4plt1"), ("D4", "D4", "D4plt1"), ("E4", "E4", "E4plt1"), ("F4", "F4", "F4plt1"), ("G4", "G4", "G4plt1"), ("H4", "H4", "H4plt1"), ("A5", "A5", "A5plt1"), ("B5", "B5", "B5plt1"), ("C5", "C5", "C5plt1"), ("D5", "D5", "D5plt1"), ("E5", "E5", "E5plt1"), ("F5", "F5", "F5plt1"), ("G5", "G5", "G5plt1"), ("H5", "H5", "H5plt1"), ("A6", "A6", "A6plt1"), ("B6", "B6", "B6plt1"), ("C6", "C6", "C6plt1"), ("D6", "D6", "D6plt1"), ("E6", "E6", "E6plt1"), ("F6", "F6", "F6plt1"), ("G6", "G6", "G6plt1"), ("H6", "H6", "H6plt1"), ("A7", "A7", "A7plt1"), ("B7", "B7", "B7plt1"), ("C7", "C7", "C7plt1"), ("D7", "D7", "D7plt1"), ("E7", "E7", "E7plt1"), ("F7", "F7", "F7plt1"), ("G7", "G7", "G7plt1"), ("H7", "H7", "H7plt1"), ("A8", "A8", "A8plt1"), ("B8", "B8", "B8plt1"), ("C8", "C8", "C8plt1"), ("D8", "D8", "D8plt1"), ("E8", "E8", "E8plt1"), ("F8", "F8", "F8plt1"), ("G8", "G8", "G8plt1"), ("H8", "H8", "H8plt1"), ("A9", "A9", "A9plt1"), ("B9", "B9", "B9plt1"), ("C9", "C9", "C9plt1"), ("D9", "D9", "D9plt1"), ("E9", "E9", "E9plt1"), ("F9", "F9", "F9plt1"), ("G9", "G9", "G9plt1"), ("H9", "H9", "H9plt1"), ("A10", "A10", "A10plt1"), ("B10", "B10", "B10plt1"), ("C10", "C10", "C10plt1"), ("D10", "D10", "D10plt1"), ("E10", "E10", "E10plt1"), ("F10", "F10", "F10plt1"), ("G10", "G10", "G10plt1"), ("H10", "H10", "H10plt1"), ("A11", "A11", "A11plt1"), ("B11", "B11", "B11plt1"), ("C11", "C11", "C11plt1"), ("D11", "D11", "D11plt1"), ("E11", "E11", "E11plt1"), ("F11", "F11", "F11plt1"), ("G11", "G11", "G11plt1"), ("H11", "H11", "H11plt1"), ("A12", "A12", "A12plt1"), ("B12", "B12", "B12plt1"), ("C12", "C12", "C12plt1"), ("D12", "D12", "D12plt1"), ("E12", "E12", "E12plt1"), ("F12", "F12", "F12plt1"), ("G12", "G12", "G12plt1"), ("H12", "H12", "H12plt1"), ], ) self.assertEqual( list(BioPlateIterate(self.stack, order="C", accumulate=False)), [ ("A1", "A1"), ("B1", "B1"), ("C1", "C1"), ("D1", "D1"), ("E1", "E1"), ("F1", "F1"), ("G1", "G1"), ("H1", "H1"), ("A2", "A2"), ("B2", "B2"), ("C2", "C2"), ("D2", "D2"), ("E2", "E2"), ("F2", "F2"), ("G2", "G2"), ("H2", "H2"), ("A3", "A3"), ("B3", "B3"), ("C3", "C3"), ("D3", "D3"), ("E3", "E3"), ("F3", "F3"), ("G3", "G3"), ("H3", "H3"), ("A4", "A4"), ("B4", "B4"), ("C4", "C4"), ("D4", "D4"), ("E4", "E4"), ("F4", "F4"), ("G4", "G4"), ("H4", "H4"), ("A5", "A5"), ("B5", "B5"), ("C5", "C5"), ("D5", "D5"), ("E5", "E5"), ("F5", "F5"), ("G5", "G5"), ("H5", "H5"), ("A6", "A6"), ("B6", "B6"), ("C6", "C6"), ("D6", "D6"), ("E6", "E6"), ("F6", "F6"), ("G6", "G6"), ("H6", "H6"), ("A7", "A7"), ("B7", "B7"), ("C7", "C7"), ("D7", "D7"), ("E7", "E7"), ("F7", "F7"), ("G7", "G7"), ("H7", "H7"), ("A8", "A8"), ("B8", "B8"), ("C8", "C8"), ("D8", "D8"), ("E8", "E8"), ("F8", "F8"), ("G8", "G8"), ("H8", "H8"), ("A9", "A9"), ("B9", "B9"), ("C9", "C9"), ("D9", "D9"), ("E9", "E9"), ("F9", "F9"), ("G9", "G9"), ("H9", "H9"), ("A10", "A10"), ("B10", "B10"), ("C10", "C10"), ("D10", "D10"), ("E10", "E10"), ("F10", "F10"), ("G10", "G10"), ("H10", "H10"), ("A11", "A11"), ("B11", "B11"), ("C11", "C11"), ("D11", "D11"), ("E11", "E11"), ("F11", "F11"), ("G11", "G11"), ("H11", "H11"), ("A12", "A12"), ("B12", "B12"), ("C12", "C12"), ("D12", "D12"), ("E12", "E12"), ("F12", "F12"), ("G12", "G12"), ("H12", "H12"), ("A1", "A1plt1"), ("B1", "B1plt1"), ("C1", "C1plt1"), ("D1", "D1plt1"), ("E1", "E1plt1"), ("F1", "F1plt1"), ("G1", "G1plt1"), ("H1", "H1plt1"), ("A2", "A2plt1"), ("B2", "B2plt1"), ("C2", "C2plt1"), ("D2", "D2plt1"), ("E2", "E2plt1"), ("F2", "F2plt1"), ("G2", "G2plt1"), ("H2", "H2plt1"), ("A3", "A3plt1"), ("B3", "B3plt1"), ("C3", "C3plt1"), ("D3", "D3plt1"), ("E3", "E3plt1"), ("F3", "F3plt1"), ("G3", "G3plt1"), ("H3", "H3plt1"), ("A4", "A4plt1"), ("B4", "B4plt1"), ("C4", "C4plt1"), ("D4", "D4plt1"), ("E4", "E4plt1"), ("F4", "F4plt1"), ("G4", "G4plt1"), ("H4", "H4plt1"), ("A5", "A5plt1"), ("B5", "B5plt1"), ("C5", "C5plt1"), ("D5", "D5plt1"), ("E5", "E5plt1"), ("F5", "F5plt1"), ("G5", "G5plt1"), ("H5", "H5plt1"), ("A6", "A6plt1"), ("B6", "B6plt1"), ("C6", "C6plt1"), ("D6", "D6plt1"), ("E6", "E6plt1"), ("F6", "F6plt1"), ("G6", "G6plt1"), ("H6", "H6plt1"), ("A7", "A7plt1"), ("B7", "B7plt1"), ("C7", "C7plt1"), ("D7", "D7plt1"), ("E7", "E7plt1"), ("F7", "F7plt1"), ("G7", "G7plt1"), ("H7", "H7plt1"), ("A8", "A8plt1"), ("B8", "B8plt1"), ("C8", "C8plt1"), ("D8", "D8plt1"), ("E8", "E8plt1"), ("F8", "F8plt1"), ("G8", "G8plt1"), ("H8", "H8plt1"), ("A9", "A9plt1"), ("B9", "B9plt1"), ("C9", "C9plt1"), ("D9", "D9plt1"), ("E9", "E9plt1"), ("F9", "F9plt1"), ("G9", "G9plt1"), ("H9", "H9plt1"), ("A10", "A10plt1"), ("B10", "B10plt1"), ("C10", "C10plt1"), ("D10", "D10plt1"), ("E10", "E10plt1"), ("F10", "F10plt1"), ("G10", "G10plt1"), ("H10", "H10plt1"), ("A11", "A11plt1"), ("B11", "B11plt1"), ("C11", "C11plt1"), ("D11", "D11plt1"), ("E11", "E11plt1"), ("F11", "F11plt1"), ("G11", "G11plt1"), ("H11", "H11plt1"), ("A12", "A12plt1"), ("B12", "B12plt1"), ("C12", "C12plt1"), ("D12", "D12plt1"), ("E12", "E12plt1"), ("F12", "F12plt1"), ("G12", "G12plt1"), ("H12", "H12plt1"), ], )
def test_plt_onlyvalue(self): np.array_equal([self.plt[1:, 1:]], list(BioPlateIterate(self.plt, OnlyValue=True)))