code: def experiments_fmri_create(self, experiment_id, filename):
          
          # Get the experiment to ensure that it exist before we even create the
          # functional data object
          experiment = self.experiments_get(experiment_id)
          if experiment is None:
              return None
          # Create functional data object from given file
          fmri = self.funcdata.create_object(filename)
          # Update experiment to associate it with created fMRI object. Assign
          # result to experiment. Should the experiment have been deleted in
          # parallel the result will be None
          experiment = self.experiments.update_fmri_data(experiment_id, fmri.identifier)
          if experiment is None:
              # Delete fMRI object's data directory
              shutil.rmtree(fmri.directory)
              # Delete functional data object from databases
              self.funcdata.delete_object(fmri.identifier, erase=True)
              return None
          else:
              return funcdata.FMRIDataHandle(fmri, experiment_id)
docs: Create functional data object from given file and associate the
          object with the specified experiment.
  
          Parameters
          ----------
          experiment_id : string
              Unique experiment identifier
          filename : File-type object
              Functional data file
  
          Returns
          -------
          FMRIDataHandle
              Handle for created fMRI object or None if identified experiment
              is unknown