class_docstr: Wrapper for Siemens format DICOMs
  
  Adds attributes:
  
  * csa_header : mapping
  * b_matrix : (3,3) array
  * q_vector : (3,) array
docstr: Get DWI q vector referring to voxel space
  
  Parameters
  ----------
  None
  
  Returns
  -------
  q: (3,) array
     Estimated DWI q vector in *voxel* orientation space.  Returns
     None if this is not (detectably) a DWI
docstr_tok: ["Get","DWI","q","vector","referring","to","voxel","space","Parameters","--","--","--","--","--","None","Returns","--","--","--","-","q",":","(","3",",",")","array","Estimated","DWI","q","vector","in","*","voxel","*","orientation","space",".","Returns","None","if","this","is","not","(","detectably",")","a","DWI"]
code: def q_vector(self):
      """Get DWI q vector referring to voxel space
  
      Parameters
      ----------
      None
  
      Returns
      -------
      q: (3,) array
         Estimated DWI q vector in *voxel* orientation space.  Returns
         None if this is not (detectably) a DWI
      """
      B = self.b_matrix
      if B is None:
          return None
      # We've enforced more or less positive semi definite with the
      # b_matrix routine
      return B2q(B, tol=1e-8)
  
imports: import operator
  import warnings
  import numpy
  from nibabel.optpkg import optional_package
  from ..onetime import auto_attr
  from ..openers import ImageOpener
  from .None import csareader
  from .dwiparams import B2q, nearest_pos_semi_def, q2bg
label_desc: Use image node_id 5 for calling the SiemensWrapper obj's underlying member method code with example usage: obj.q_vector() and returns: B2q, None