class_docstr: Sampler for validation and testing
  
  Parameters
  ----------
  g : DGLGraph
      Graph containing KG graph
  edges : tensor
      Seed edges
  batch_size : int
      Batch size of each mini batch.
  neg_sample_size : int
      How many negative edges sampled for each node.
  neg_chunk_size : int
      How many edges in one chunk. We split one batch into chunks.
  mode : str
      Sampling mode.
  number_workers: int
      Number of workers used in parallel for this sampler
  filter_false_neg : bool
      If True, exlucde true positive edges in sampled negative edges
      If False, return all sampled negative edges even there are positive edges
      Default: True
class_docstr_tok: ["Sampler","for","validation","and","testing","Parameters","--","--","--","--","--","g",":","DGLGraph","Graph","containing","KG","graph","edges",":","tensor","Seed","edges","batch_size",":","int","Batch","size","of","each","mini","batch",".","neg_sample_size",":","int","How","many","negative","edges","sampled","for","each","node",".","neg_chunk_size",":","int","How","many","edges","in","one","chunk",".","We","split","one","batch","into","chunks",".","mode",":","str","Sampling","mode",".","number_workers",":","int","Number","of","workers","used","in","parallel","for","this","sampler","filter_false_neg",":","bool","If","True",",","exlucde","true","positive","edges","in","sampled","negative","edges","If","False",",","return","all","sampled","negative","edges","even","there","are","positive","edges","Default",":","True"]
docstr: Get next batch
  
  Returns
  -------
  DGLGraph
      Sampled positive graph
  ChunkNegEdgeSubgraph
      Negative graph wrapper
docstr_tok: ["Get","next","batch","Returns","--","--","--","-","DGLGraph","Sampled","positive","graph","ChunkNegEdgeSubgraph","Negative","graph","wrapper"]
code: def __next__(self):
      """Get next batch
  
      Returns
      -------
      DGLGraph
          Sampled positive graph
      ChunkNegEdgeSubgraph
          Negative graph wrapper
      """
      while True:
          pos_g, neg_g = next(self.sampler_iter)
          if self.filter_false_neg:
              neg_positive = neg_g.edata["false_neg"]
          neg_g = create_neg_subgraph(
              pos_g,
              neg_g,
              self.neg_chunk_size,
              self.neg_sample_size,
              "chunk" in self.mode,
              self.neg_head,
              self.g.number_of_nodes(),
          )
          if neg_g is not None:
              break
  
      pos_g.ndata["id"] = pos_g.parent_nid
      neg_g.ndata["id"] = neg_g.parent_nid
      pos_g.edata["id"] = pos_g._parent.edata["tid"][pos_g.parent_eid]
      if self.filter_false_neg:
          neg_g.edata["bias"] = F.astype(-neg_positive, F.float32)
      return pos_g, neg_g
  
imports: import math
  import numpy
  import scipy
  import dgl.backend
  import dgl
  import os
  import sys
  import pickle
  import time
  from dgl.base import NID, EID
  import pdb
label_desc: Use image node_id 3 for calling the EvalSampler obj's underlying member method code with example usage: obj.__next__() and returns: pos_g,  neg_g