docstr: Read scaled data from file for a given frame
  
  :param frame: Time frame index from where to fetch data
  :param orientation: None (default), 'neurological' or 'radiological'
  :rtype: Numpy array containing (possibly oriented) raw data
  
  .. seealso:: raw_data_from_fileobj
docstr_tok: ["Read","scaled","data","from","file","for","a","given","frame",":","param","frame",":","Time","frame","index","from","where","to","fetch","data",":","param","orientation",":","None","(","default",")",",","'neurological","'","or","'radiological'",":","rtype",":","Numpy","array","containing","(","possibly","oriented",")","raw","data","..","seealso",":",":","raw_data_from_fileobj"]
code: def data_from_fileobj(self, frame=0, orientation=None):
      """
      Read scaled data from file for a given frame
  
      :param frame: Time frame index from where to fetch data
      :param orientation: None (default), 'neurological' or 'radiological'
      :rtype: Numpy array containing (possibly oriented) raw data
  
      .. seealso:: raw_data_from_fileobj
      """
      header = self._header
      subhdr = self.subheaders[frame]
      raw_data = self.raw_data_from_fileobj(frame, orientation)
      # Scale factors have to be set to scalars to force scalar upcasting
      data = raw_data * header["ecat_calibration_factor"].item()
      data = data * subhdr["scale_factor"].item()
      return data
  
imports: import warnings
  from numbers import Integral
  import numpy
  from .arraywriters import make_array_writer
  from .fileslice import canonical_slicers, predict_shape, slice2outax
  from .spatialimages import SpatialHeader, SpatialImage
  from .volumeutils import array_from_file, make_dt_codes, native_code, swapped_code
  from .wrapstruct import WrapStruct
label_desc: Use image node_id 11 for calling the EcatSubHeader obj's underlying member method code with example usage: obj.data_from_fileobj(frame, orientation) and returns: data