code: def update_metadata_from(self, datapoint: PPIGraphSample) -> None:
      self.__gnn_model.update_metadata_from(
          GraphData(
              node_information=datapoint.node_features,
              edges={
                  f"e{i}": a
                  for i, a in enumerate(datapoint.adjacency_lists)
              },
              reference_nodes={},
          ),
      )
      if self.__num_target_labels is None:
          self.__num_target_labels = datapoint.node_labels.shape[1]
      else:
          assert (
              self.__num_target_labels == datapoint.node_labels.shape[1]
          )
  
imports: import numpy
  import torch
  from torch import nn
  from typing import Any, Dict, Iterable, NamedTuple, Optional, Union
  from ptgnn.baseneuralmodel import AbstractNeuralModel, ModuleWithMetrics
  from ptgnn.baseneuralmodel.utils.data import enforce_not_None
  from ptgnn.implementations.ppi.dataloader import PPIGraphSample
  from ptgnn.neuralmodels.gnn.graphneuralnetwork import GraphNeuralNetwork, GraphNeuralNetworkModel
  from ptgnn.neuralmodels.gnn.structs import GnnOutput, GraphData, TensorizedGraphData
label_desc: Use image node_id 3 for calling the PPIMulticlassClassification obj's underlying member method code with example usage: obj.update_metadata_from(datapoint) without return types