docs: def create_object(self, subject_id, image_group_id, properties, fmri_data_id=None):
          """Create an experiment object for the subject and image group. Objects
          are referenced by their identifier. The reference to a functional data
          object is optional.
  
          Raises ValueError if no valid experiment name is given in property list.
  
          Parameters
          ----------
          subject_id : string
              Unique identifier of subject
          image_group_id : string
              Unique identifier of image group
          properties : Dictionary
              Set of experiment properties. Is required to contain at least the
              experiment name
          fmri_data_id : string, optional
              Unique identifier of functional MRI data object
  
          Returns
          -------
          ExperimentHandle
              Handle for created experiment object in database
          """
          # Ensure that experiment name is given in property list.
          if not datastore.PROPERTY_NAME in properties:
              raise ValueError('missing experiment name')
          elif properties[datastore.PROPERTY_NAME] is None:
              raise ValueError('invalid experiment name')
          # Create a new object identifier.
          identifier = str(uuid.uuid4()).replace('-','')
          # Create object handle and store it in database before returning it
          obj = ExperimentHandle(
              identifier,
              properties,
              subject_id,
              image_group_id,
              fmri_data_id=fmri_data_id
          )
          self.insert_object(obj)
          return obj