code: def mergeall(filename, snrmin, snrmax, bdfdir):
      
  
      filename = os.path.abspath(filename)
      bignumber = 500
  
      if os.path.exists(filename):
          scans = ps.read_scans(filename, bdfdir=bdfdir)
          scanlist = sorted(scans.keys())
      else:
          logger.warn('Could not find file {0}. Estimating scans from available files.'.format(filename))
          filelist = glob.glob(os.path.join(os.path.dirname(filename), '*{0}_sc*pkl'.format(os.path.basename(filename))))
          try:
              scanlist = sorted(set([int(fn.rstrip('.pkl').split('_sc')[1].split('seg')[0]) for fn in filelist]))
          except IndexError:
              logger.warn('Could not parse filenames for scans. Looking over big range.')
              scanlist = range(bignumber)
  
      logger.info('Merging over scans {0}'.format(scanlist))
  
      for scan in scanlist:
          pc.merge_segments(filename, scan)
      pc.merge_scans(os.path.dirname(filename), os.path.basename(filename), scanlist, snrmin=snrmin, snrmax=snrmax)
docs: Merge cands/noise files over all scans
  
      Tries to find scans from filename, but will fall back to finding relevant files if it does not exist.