code: def extract_db_info(self, obj, keys):
          
  
          objl = self.convert_in(obj)
  
          # FIXME: this is too complex
          if isinstance(objl, self.__class__):
              return objl.update_meta_info()
  
          try:
              with builtins.open(objl, mode='r') as fd:
                  state = json.load(fd)
          except IOError as e:
              raise e
  
          result = super(BaseStructuredCalibration, self).extract_db_info(state, keys)
  
          try:
              minfo = state['meta_info']
              result['mode'] = minfo['mode_name']
              origin = minfo['origin']
              date_obs = origin['date_obs']
          except KeyError:
              origin = {}
              date_obs = "1970-01-01T00:00:00.00"
  
          result['instrument'] = state['instrument']
          result['uuid'] = state['uuid']
          result['tags'] = state['tags']
          result['type'] = state['type']
          result['observation_date'] = conv.convert_date(date_obs)
          result['origin'] = origin
  
          return result
docs: Extract metadata from serialized file