code: def _step3func(self, samples, noreverse, maxindels, force, ipyclient):
          
          ## print headers
          if self._headers:
              print("\n  Step 3: Clustering/Mapping reads")
  
          ## Require reference seq for reference-based methods
          if self.paramsdict['assembly_method'] != "denovo":
              if not self.paramsdict['reference_sequence']:
                  raise IPyradError(REQUIRE_REFERENCE_PATH\
                              .format(self.paramsdict["assembly_method"]))
              else:
                  ## index the reference sequence
                  ## Allow force to reindex the reference sequence
                  ## send to run on the cluster. 
                  lbview = ipyclient.load_balanced_view()
                  async = lbview.apply(index_reference_sequence, *(self, force))
  
                  ## print a progress bar for the indexing
                  start = time.time()
                  while 1:
                      elapsed = datetime.timedelta(seconds=int(time.time()-start))
                      printstr = " {}    | {} | s3 |".format("indexing reference", elapsed)
                      finished = int(async.ready())
                      progressbar(1, finished, printstr, spacer=self._spacer)
                      if finished:
                          print("")
                          break
                      time.sleep(0.9)
                  ## error check
                  if not async.successful():
                      raise IPyradWarningExit(async.result())
  
          ## Get sample objects from list of strings
          samples = _get_samples(self, samples)
  
          ## Check if all/none in the right state
          if not self._samples_precheck(samples, 3, force):
              raise IPyradError(FIRST_RUN_2)
  
          elif not force:
              ## skip if all are finished
              if all([i.stats.state >= 3 for i in samples]):
                  print(CLUSTERS_EXIST.format(len(samples)))
                  return
  
          ## run the step function
          assemble.cluster_within.run(self, samples, noreverse, maxindels,
                                      force, ipyclient)
docs: hidden wrapped function to start step 3