docs: def cache_inputs(self):
          """
          Runs the Study's repository source node for each of the inputs
          of the study, thereby caching any data required from remote
          repositorys. Useful when launching many parallel jobs that will
          all try to concurrently access the remote repository, and probably
          lead to timeout errors.
          """
          workflow = pe.Workflow(name='cache_download',
                                 base_dir=self.processor.work_dir)
          subjects = pe.Node(IdentityInterface(['subject_id']), name='subjects',
                             environment=self.environment)
          sessions = pe.Node(IdentityInterface(['subject_id', 'visit_id']),
                             name='sessions', environment=self.environment)
          subjects.iterables = ('subject_id', tuple(self.subject_ids))
          sessions.iterables = ('visit_id', tuple(self.visit_ids))
          source = pe.Node(RepositorySource(
              self.bound_spec(i).collection for i in self.inputs), name='source')
          workflow.connect(subjects, 'subject_id', sessions, 'subject_id')
          workflow.connect(sessions, 'subject_id', source, 'subject_id')
          workflow.connect(sessions, 'visit_id', source, 'visit_id')
          workflow.run()