class_docstr: A Pose Generator computes low energy conformations for molecular complexes.
  
  Many questions in structural biophysics reduce to that of computing
  the binding free energy of molecular complexes. A key step towards
  computing the binding free energy of two complexes is to find low
  energy "poses", that is energetically favorable conformations of
  molecules with respect to each other. One application of this
  technique is to find low energy poses for protein-ligand
  interactions.
class_docstr_tok: ["A","Pose","Generator","computes","low","energy","conformations","for","molecular","complexes",".","Many","questions","in","structural","biophysics","reduce","to","that","of","computing","the","binding","free","energy","of","molecular","complexes",".","A","key","step","towards","computing","the","binding","free","energy","of","two","complexes","is","to","find","low","energy","``","poses","''",",","that","is","energetically","favorable","conformations","of","molecules","with","respect","to","each","other",".","One","application","of","this","technique","is","to","find","low","energy","poses","for","protein-ligand","interactions","."]
docstr: Generates a list of low energy poses for molecular complex
  
  Parameters
  ----------
  molecular_complexes: Tuple[str, str]
      A representation of a molecular complex. This tuple is
      (protein_file, ligand_file).
  centroid: np.ndarray, optional (default None)
      The centroid to dock against. Is computed if not specified.
  box_dims: np.ndarray, optional (default None)
      A numpy array of shape `(3,)` holding the size of the box to dock.
      If not specified is set to size of molecular complex plus 5 angstroms.
  exhaustiveness: int, optional (default 10)
      Tells pose generator how exhaustive it should be with pose
      generation.
  num_modes: int, optional (default 9)
      Tells pose generator how many binding modes it should generate at
      each invocation.
  num_pockets: int, optional (default None)
      If specified, `self.pocket_finder` must be set. Will only
      generate poses for the first `num_pockets` returned by
      `self.pocket_finder`.
  out_dir: str, optional (default None)
      If specified, write generated poses to this directory.
  generate_score: bool, optional (default False)
      If `True`, the pose generator will return scores for complexes.
      This is used typically when invoking external docking programs
      that compute scores.
  
  Returns
  -------
  A list of molecular complexes in energetically favorable poses.
docstr_tok: ["Generates","a","list","of","low","energy","poses","for","molecular","complex","Parameters","--","--","--","--","--","molecular_complexes",":","Tuple","[","str",",","str","]","A","representation","of","a","molecular","complex",".","This","tuple","is","(","protein_file",",","ligand_file",")",".","centroid",":","np.ndarray",",","optional","(","default","None",")","The","centroid","to","dock","against",".","Is","computed","if","not","specified",".","box_dims",":","np.ndarray",",","optional","(","default","None",")","A","numpy","array","of","shape","`","(","3",",",")","`","holding","the","size","of","the","box","to","dock",".","If","not","specified","is","set","to","size","of","molecular","complex","plus","5","angstroms",".","exhaustiveness",":","int",",","optional","(","default","10",")","Tells","pose","generator","how","exhaustive","it","should","be","with","pose","generation",".","num_modes",":","int",",","optional","(","default","9",")","Tells","pose","generator","how","many","binding","modes","it","should","generate","at","each","invocation",".","num_pockets",":","int",",","optional","(","default","None",")","If","specified",",","`","self.pocket_finder","`","must","be","set",".","Will","only","generate","poses","for","the","first","`","num_pockets","`","returned","by","`","self.pocket_finder","`",".","out_dir",":","str",",","optional","(","default","None",")","If","specified",",","write","generated","poses","to","this","directory",".","generate_score",":","bool",",","optional","(","default","False",")","If","`","True","`",",","the","pose","generator","will","return","scores","for","complexes",".","This","is","used","typically","when","invoking","external","docking","programs","that","compute","scores",".","Returns","--","--","--","-","A","list","of","molecular","complexes","in","energetically","favorable","poses","."]
code: def generate_poses(
      self,
      molecular_complex: Tuple[str, str],
      centroid: Optional[np.ndarray] = None,
      box_dims: Optional[np.ndarray] = None,
      exhaustiveness: int = 10,
      num_modes: int = 9,
      num_pockets: Optional[int] = None,
      out_dir: Optional[str] = None,
      generate_scores: bool = False,
  ):
      """Generates a list of low energy poses for molecular complex
  
      Parameters
      ----------
      molecular_complexes: Tuple[str, str]
          A representation of a molecular complex. This tuple is
          (protein_file, ligand_file).
      centroid: np.ndarray, optional (default None)
          The centroid to dock against. Is computed if not specified.
      box_dims: np.ndarray, optional (default None)
          A numpy array of shape `(3,)` holding the size of the box to dock.
          If not specified is set to size of molecular complex plus 5 angstroms.
      exhaustiveness: int, optional (default 10)
          Tells pose generator how exhaustive it should be with pose
          generation.
      num_modes: int, optional (default 9)
          Tells pose generator how many binding modes it should generate at
          each invocation.
      num_pockets: int, optional (default None)
          If specified, `self.pocket_finder` must be set. Will only
          generate poses for the first `num_pockets` returned by
          `self.pocket_finder`.
      out_dir: str, optional (default None)
          If specified, write generated poses to this directory.
      generate_score: bool, optional (default False)
          If `True`, the pose generator will return scores for complexes.
          This is used typically when invoking external docking programs
          that compute scores.
  
      Returns
      -------
      A list of molecular complexes in energetically favorable poses.
      """
      raise NotImplementedError
  
imports: import platform
  import logging
  import os
  import tempfile
  import numpy
  from subprocess import Popen, PIPE
  from typing import List, Optional, Tuple, Union
  from deepchem.dock.binding_pocket import BindingPocketFinder
  from deepchem.utils.data_utils import download_url, get_data_dir
  from deepchem.utils.typing import RDKitMol
  from deepchem.utils.geometry_utils import compute_centroid, compute_protein_range
  from deepchem.utils.rdkit_utils import load_molecule, write_molecule
  from deepchem.utils.docking_utils import load_docked_ligands, write_vina_conf, write_gnina_conf, read_gnina_log
label_desc: Use image node_id 1 for calling the PoseGenerator obj's underlying member method code with example usage: obj.generate_poses(molecular_complex, centroid, box_dims, exhaustiveness, num_modes, num_pockets, out_dir, generate_scores) without return types