docs: def _read(self, directory, filename, session, path, name, extension,
                spatial=False, spatialReferenceID=4236, replaceParamFile=None,
                readIndexMaps=True):
          """
          Mapping Table Read from File Method
          """
          # Set file extension property
          self.fileExtension = extension
  
          # Dictionary of keywords/cards and parse function names
          KEYWORDS = {'INDEX_MAP': mtc.indexMapChunk,
                      'ROUGHNESS': mtc.mapTableChunk,
                      'INTERCEPTION': mtc.mapTableChunk,
                      'RETENTION': mtc.mapTableChunk,
                      'GREEN_AMPT_INFILTRATION': mtc.mapTableChunk,
                      'GREEN_AMPT_INITIAL_SOIL_MOISTURE': mtc.mapTableChunk,
                      'RICHARDS_EQN_INFILTRATION_BROOKS': mtc.mapTableChunk,
                      'RICHARDS_EQN_INFILTRATION_HAVERCAMP': mtc.mapTableChunk,
                      'EVAPOTRANSPIRATION': mtc.mapTableChunk,
                      'WELL_TABLE': mtc.mapTableChunk,
                      'OVERLAND_BOUNDARY': mtc.mapTableChunk,
                      'TIME_SERIES_INDEX': mtc.mapTableChunk,
                      'GROUNDWATER': mtc.mapTableChunk,
                      'GROUNDWATER_BOUNDARY': mtc.mapTableChunk,
                      'AREA_REDUCTION': mtc.mapTableChunk,
                      'WETLAND_PROPERTIES': mtc.mapTableChunk,
                      'MULTI_LAYER_SOIL': mtc.mapTableChunk,
                      'SOIL_EROSION_PROPS': mtc.mapTableChunk,
                      'CONTAMINANT_TRANSPORT': mtc.contamChunk,
                      'SEDIMENTS': mtc.sedimentChunk}
  
          indexMaps = dict()
          mapTables = []
  
          # Parse file into chunks associated with keywords/cards
          with io_open(path, 'r') as f:
              chunks = pt.chunk(KEYWORDS, f)
  
          # Parse chunks associated with each key
          for key, chunkList in iteritems(chunks):
              # Parse each chunk in the chunk list
              for chunk in chunkList:
                  # Call chunk specific parsers for each chunk
                  result = KEYWORDS[key](key, chunk)
  
                  # Index Map handler
                  if key == 'INDEX_MAP':
  
                      # Create GSSHAPY IndexMap object from result object
                      indexMap = IndexMap(name=result['idxName'])
  
                      # Dictionary used to map index maps to mapping tables
                      indexMaps[result['idxName']] = indexMap
  
                      # Associate IndexMap with MapTableFile
                      indexMap.mapTableFile = self
  
                      if readIndexMaps:
                          # Invoke IndexMap read method
                          indexMap.read(directory=directory, filename=result['filename'], session=session,
                                        spatial=spatial, spatialReferenceID=spatialReferenceID)
                      else:
                          # add path to file
                          indexMap.filename = result['filename']
  
                  # Map Table handler
                  else:
                      # Create a list of all the map tables in the file
                      if result:
                          mapTables.append(result)
  
          # Create GSSHAPY ORM objects with the resulting objects that are
          # returned from the parser functions
          self._createGsshaPyObjects(mapTables, indexMaps, replaceParamFile, directory, session, spatial, spatialReferenceID)