[docs]@dataclassclassBaseMolecularEncoder(BaseModel,ABC):"""Base class for molecular representation learning."""model_name:str=field(default="BaseMolecularEncoder")
def_inspect_task_types(self,y:Union[np.ndarray,torch.Tensor],return_type:Literal["pt","np"]="pt")->Union[np.ndarray,torch.Tensor]:"""Inspect the task types of the target values. Parameters ---------- y : Union[np.ndarray, torch.Tensor] Target values: 2D array for multiple tasks return_type : Literal["pt", "np"], default="pt" Return type of the result Returns ------- result : Union[np.ndarray, torch.Tensor] Result of the task types inspection """ifisinstance(y,np.ndarray):y=torch.from_numpy(y)# 0/1/nan -> binary classification (True), otherwise -> regression (False)result=torch.tensor([torch.all(torch.isnan(y[:,i])|(y[:,i]==0)|(y[:,i]==1))foriinrange(y.shape[1])],dtype=torch.bool)ifreturn_type=="np":returnresult.numpy()returnresult