DeepGraphLearning / torchdrug

A powerful and flexible machine learning platform for drug discovery
https://torchdrug.ai/
Apache License 2.0
1.43k stars 199 forks source link

TypeError: metaclass conflict: the metaclass of a derived class must be a (non-strict) subclass of the metaclasses of all its bases #186

Open tsa87 opened 1 year ago

tsa87 commented 1 year ago

Version:

torch==1.13.0
torch-geometric==2.3.0
torchdrug==0.2.0

Code:

import torch_geometric

Output:

---------------------------------------------------------------------------
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
Cell In[7], line 1
----> 1 import torch_geometric

File ~/env/lib/python3.8/site-packages/torch_geometric/__init__.py:2
      1 import torch_geometric.utils
----> 2 import torch_geometric.data
      3 import torch_geometric.sampler
      4 import torch_geometric.loader

File ~/env/lib/python3.8/site-packages/torch_geometric/data/__init__.py:7
      5 from .data import Data
      6 from .hetero_data import HeteroData
----> 7 from .batch import Batch
      8 from .temporal import TemporalData
      9 from .dataset import Dataset

File ~/env/lib/python3.8/site-packages/torch_geometric/data/batch.py:11
      9 from torch_geometric.data.collate import collate
     10 from torch_geometric.data.data import BaseData, Data
---> 11 from torch_geometric.data.dataset import IndexType
     12 from torch_geometric.data.separate import separate
     15 class DynamicInheritance(type):
     16     # A meta class that sets the base class of a `Batch` object, e.g.:
     17     # * `Batch(Data)` in case `Data` objects are batched together
     18     # * `Batch(HeteroData)` in case `HeteroData` objects are batched together

File ~/env/lib/python3.8/site-packages/torch_geometric/data/dataset.py:20
     15 from torch_geometric.data.makedirs import makedirs
     17 IndexType = Union[slice, Tensor, np.ndarray, Sequence]
---> 20 class Dataset(torch.utils.data.Dataset, ABC):
     21     r"""Dataset base class for creating graph datasets.
     22     See `here <https://pytorch-geometric.readthedocs.io/en/latest/tutorial/
     23     create_dataset.html>`__ for the accompanying tutorial.
   (...)
     41             downloading and processing the dataset. (default: :obj:`True`)
     42     """
     43     @property
     44     def raw_file_names(self) -> Union[str, List[str], Tuple]:

TypeError: metaclass conflict: the metaclass of a derived class must be a (non-strict) subclass of the metaclasses of all its bases
jasperhyp commented 1 year ago

Bumping this up -- also experiencing this issue. No problem if loading torchdrug after PyG.

Ac2zoom commented 1 year ago

Also seeing this issue with esm: `TypeError Traceback (most recent call last) Cell In[6], line 1 ----> 1 from torchdrug import core, models, tasks, utils 3 model = models.GIN(input_dim=dataset.node_feature_dim, 4 hidden_dims=[256, 256, 256, 256], 5 short_cut=True, batch_norm=True, concat_hidden=True) 6 task = tasks.PropertyPrediction(model, task=dataset.tasks, 7 criterion="bce", metric=("auprc", "auroc"))

File ~/anaconda3/envs/linea/lib/python3.9/site-packages/torchdrug/models/init.py:10 8 from .infograph import InfoGraph, MultiviewContrast 9 from .flow import GraphAutoregressiveFlow ---> 10 from .esm import EvolutionaryScaleModeling 11 from .embedding import TransE, DistMult, ComplEx, RotatE, SimplE 12 from .neurallp import NeuralLogicProgramming

File ~/anaconda3/envs/linea/lib/python3.9/site-packages/torchdrug/models/esm.py:6 4 import torch 5 from torch import nn ----> 6 import esm 8 from torchdrug import core, layers, utils, data 9 from torchdrug.layers import functional

File ~/anaconda3/envs/linea/lib/python3.9/site-packages/esm/init.py:8 ... 28 # and it's up to whatever consumes the dataset to decide what valid_flow_mask should be. 29 _has_builtin_flow_mask = False 31 def init(self, root, transforms=None):

TypeError: metaclass conflict: the metaclass of a derived class must be a (non-strict) subclass of the metaclasses of all its bases`

benyaminjami commented 5 months ago

Also seeing this issue with esm: `TypeError Traceback (most recent call last) Cell In[6], line 1 ----> 1 from torchdrug import core, models, tasks, utils 3 model = models.GIN(input_dim=dataset.node_feature_dim, 4 hidden_dims=[256, 256, 256, 256], 5 short_cut=True, batch_norm=True, concat_hidden=True) 6 task = tasks.PropertyPrediction(model, task=dataset.tasks, 7 criterion="bce", metric=("auprc", "auroc"))

File ~/anaconda3/envs/linea/lib/python3.9/site-packages/torchdrug/models/init.py:10 8 from .infograph import InfoGraph, MultiviewContrast 9 from .flow import GraphAutoregressiveFlow ---> 10 from .esm import EvolutionaryScaleModeling 11 from .embedding import TransE, DistMult, ComplEx, RotatE, SimplE 12 from .neurallp import NeuralLogicProgramming

File ~/anaconda3/envs/linea/lib/python3.9/site-packages/torchdrug/models/esm.py:6 4 import torch 5 from torch import nn ----> 6 import esm 8 from torchdrug import core, layers, utils, data 9 from torchdrug.layers import functional

File ~/anaconda3/envs/linea/lib/python3.9/site-packages/esm/init.py:8 ... 28 # and it's up to whatever consumes the dataset to decide what valid_flow_mask should be. 29 _has_builtin_flow_mask = False 31 def init(self, root, transforms=None):

TypeError: metaclass conflict: the metaclass of a derived class must be a (non-strict) subclass of the metaclasses of all its bases`

Have you been able to solve this issue for esm?