diff --git a/cml/ports/source_adapters.py b/cml/ports/source_adapters.py index d769fbc6a4e0238076a8a3e070e23fcbf38b27d4..a183a875ba737a29a846a110ef1f9a0fbe7fa279 100644 --- a/cml/ports/source_adapters.py +++ b/cml/ports/source_adapters.py @@ -37,14 +37,35 @@ class Adapter(ABC): # TODO (dmt): Provide common base class or pandas operations. - class PandasBlock: - def __init__(self, data_block): + _LAST_THREE_COLUMNS = 3 + + def __init__(self, data_block, relatives=None): self.__data_block = data_block def __str__(self): return str(self.__data_block) + def __getitem__(self, item): + return self.__data_block.iloc[item][:self.rows-self._LAST_THREE_COLUMNS] + + def __len__(self): + return self.__data_block.shape[0] + + def set_labels(self, labels): + data_frame = self.__data_block["Z"] = labels + return PandasBlock(data_frame, self.relatives) + + @property + def rows(self): + return self.__data_block.shape[1] + + def new_block_from(self, column_values): + data_from = self.__data_block.loc[self.__data_block["T"].isin( + column_values)] + + return PandasBlock(data_from) + def get_duplicated_pairs(self, *args): bool_series = self.__data_block.duplicated(subset=[args[0], args[1]])