def rapidRevisitBatch(colmap=None, runName='opsim', extraSql=None, extraMetadata=None, nside=64, ditherStacker=None, ditherkwargs=None):
    'Metrics for evaluating proper motion and parallax.\n\n    Parameters\n    ----------\n    colmap : dict or None, optional\n        A dictionary with a mapping of column names. Default will use OpsimV4 column names.\n    runName : str, optional\n        The name of the simulated survey. Default is "opsim".\n    nside : int, optional\n        Nside for the healpix slicer. Default 64.\n    extraSql : str or None, optional\n        Additional sql constraint to apply to all metrics.\n    extraMetadata : str or None, optional\n        Additional metadata to apply to all results.\n    ditherStacker: str or rubin_sim.maf.stackers.BaseDitherStacker\n        Optional dither stacker to use to define ra/dec columns.\n    ditherkwargs: dict, optional\n        Optional dictionary of kwargs for the dither stacker.\n\n    Returns\n    -------\n    metricBundleDict\n    '
    if (colmap is None):
        colmap = ColMapDict('fbs')
    bundleList = []
    sql = ''
    metadata = 'All visits'
    if ((extraSql is not None) and (len(extraSql) > 0)):
        sql = extraSql
        if (extraMetadata is None):
            metadata = extraSql.replace('filter =', '').replace('filter=', '')
            metadata = metadata.replace('"', '').replace("'", '')
    if (extraMetadata is not None):
        metadata = extraMetadata
    subgroup = metadata
    (raCol, decCol, degrees, ditherStacker, ditherMeta) = radecCols(ditherStacker, colmap, ditherkwargs)
    metadata = combineMetadata(metadata, ditherMeta)
    slicer = slicers.HealpixSlicer(nside=nside, lonCol=raCol, latCol=decCol, latLonDeg=degrees)
    subsetPlots = [plots.HealpixSkyMap(), plots.HealpixHistogram()]
    displayDict = {'group': 'SRD Rapid Revisits', 'subgroup': subgroup, 'order': 0, 'caption': None}
    dTmax = 30
    m2 = metrics.NRevisitsMetric(dT=dTmax, mjdCol=colmap['mjd'], normed=False, metricName='NumberOfQuickRevisits')
    plotDict = {'colorMin': 400, 'colorMax': 2000, 'xMin': 400, 'xMax': 2000}
    caption = ('Number of consecutive visits with return times faster than %.1f minutes, ' % dTmax)
    caption += 'in any filter, all proposals. '
    displayDict['caption'] = caption
    bundle = mb.MetricBundle(m2, slicer, sql, plotDict=plotDict, plotFuncs=subsetPlots, stackerList=[ditherStacker], metadata=metadata, displayDict=displayDict, summaryMetrics=standardSummary(withCount=False))
    bundleList.append(bundle)
    displayDict['order'] += 1
    dTmin = (40.0 / 60.0)
    dTpairs = 20.0
    dTmax = 30.0
    nOne = 82
    nTwo = 28
    pixArea = float(hp.nside2pixarea(nside, degrees=True))
    scale = (pixArea * hp.nside2npix(nside))
    m1 = metrics.RapidRevisitMetric(metricName='RapidRevisits', mjdCol=colmap['mjd'], dTmin=(((dTmin / 60.0) / 60.0) / 24.0), dTpairs=((dTpairs / 60.0) / 24.0), dTmax=((dTmax / 60.0) / 24.0), minN1=nOne, minN2=nTwo)
    plotDict = {'xMin': 0, 'xMax': 1, 'colorMin': 0, 'colorMax': 1, 'logScale': False}
    cutoff1 = 0.9
    summaryStats = [metrics.FracAboveMetric(cutoff=cutoff1, scale=scale, metricName='Area (sq deg)')]
    caption = ('Rapid Revisit: area that receives at least %d visits between %.3f and %.1f minutes, ' % (nOne, dTmin, dTmax))
    caption += ('with at least %d of those visits falling between %.3f and %.1f minutes. ' % (nTwo, dTmin, dTpairs))
    caption += 'Summary statistic "Area" indicates the area on the sky which meets this requirement. (SRD design specification is 2000 sq deg).'
    displayDict['caption'] = caption
    bundle = mb.MetricBundle(m1, slicer, sql, plotDict=plotDict, plotFuncs=subsetPlots, stackerList=[ditherStacker], metadata=metadata, displayDict=displayDict, summaryMetrics=summaryStats)
    bundleList.append(bundle)
    displayDict['order'] += 1
    for b in bundleList:
        b.setRunName(runName)
    return mb.makeBundlesDictFromList(bundleList)
Metrics for evaluating proper motion and parallax.

Parameters
----------
colmap : dict or None, optional
    A dictionary with a mapping of column names. Default will use OpsimV4 column names.
runName : str, optional
    The name of the simulated survey. Default is "opsim".
nside : int, optional
    Nside for the healpix slicer. Default 64.
extraSql : str or None, optional
    Additional sql constraint to apply to all metrics.
extraMetadata : str or None, optional
    Additional metadata to apply to all results.
ditherStacker: str or rubin_sim.maf.stackers.BaseDitherStacker
    Optional dither stacker to use to define ra/dec columns.
ditherkwargs: dict, optional
    Optional dictionary of kwargs for the dither stacker.

Returns
-------
metricBundleDict
def rapidRevisitBatch(colmap=None, runName='opsim', extraSql=None, extraMetadata=None, nside=64, ditherStacker=None, ditherkwargs=None):
    'Metrics for evaluating proper motion and parallax.\n\n    Parameters\n    ----------\n    colmap : dict or None, optional\n        A dictionary with a mapping of column names. Default will use OpsimV4 column names.\n    runName : str, optional\n        The name of the simulated survey. Default is "opsim".\n    nside : int, optional\n        Nside for the healpix slicer. Default 64.\n    extraSql : str or None, optional\n        Additional sql constraint to apply to all metrics.\n    extraMetadata : str or None, optional\n        Additional metadata to apply to all results.\n    ditherStacker: str or rubin_sim.maf.stackers.BaseDitherStacker\n        Optional dither stacker to use to define ra/dec columns.\n    ditherkwargs: dict, optional\n        Optional dictionary of kwargs for the dither stacker.\n\n    Returns\n    -------\n    metricBundleDict\n    '
    if (colmap is None):
        colmap = ColMapDict('fbs')
    bundleList = []
    sql = 
    metadata = 'All visits'
    if ((extraSql is not None) and (len(extraSql) > 0)):
        sql = extraSql
        if (extraMetadata is None):
            metadata = extraSql.replace('filter =', ).replace('filter=', )
            metadata = metadata.replace('"', ).replace("'", )
    if (extraMetadata is not None):
        metadata = extraMetadata
    subgroup = metadata
    (raCol, decCol, degrees, ditherStacker, ditherMeta) = radecCols(ditherStacker, colmap, ditherkwargs)
    metadata = combineMetadata(metadata, ditherMeta)
    slicer = slicers.HealpixSlicer(nside=nside, lonCol=raCol, latCol=decCol, latLonDeg=degrees)
    subsetPlots = [plots.HealpixSkyMap(), plots.HealpixHistogram()]
    displayDict = {'group': 'SRD Rapid Revisits', 'subgroup': subgroup, 'order': 0, 'caption': None}
    dTmax = 30
    m2 = metrics.NRevisitsMetric(dT=dTmax, mjdCol=colmap['mjd'], normed=False, metricName='NumberOfQuickRevisits')
    plotDict = {'colorMin': 400, 'colorMax': 2000, 'xMin': 400, 'xMax': 2000}
    caption = ('Number of consecutive visits with return times faster than %.1f minutes, ' % dTmax)
    caption += 'in any filter, all proposals. '
    displayDict['caption'] = caption
    bundle = mb.MetricBundle(m2, slicer, sql, plotDict=plotDict, plotFuncs=subsetPlots, stackerList=[ditherStacker], metadata=metadata, displayDict=displayDict, summaryMetrics=standardSummary(withCount=False))
    bundleList.append(bundle)
    displayDict['order'] += 1
    dTmin = (40.0 / 60.0)
    dTpairs = 20.0
    dTmax = 30.0
    nOne = 82
    nTwo = 28
    pixArea = float(hp.nside2pixarea(nside, degrees=True))
    scale = (pixArea * hp.nside2npix(nside))
    m1 = metrics.RapidRevisitMetric(metricName='RapidRevisits', mjdCol=colmap['mjd'], dTmin=(((dTmin / 60.0) / 60.0) / 24.0), dTpairs=((dTpairs / 60.0) / 24.0), dTmax=((dTmax / 60.0) / 24.0), minN1=nOne, minN2=nTwo)
    plotDict = {'xMin': 0, 'xMax': 1, 'colorMin': 0, 'colorMax': 1, 'logScale': False}
    cutoff1 = 0.9
    summaryStats = [metrics.FracAboveMetric(cutoff=cutoff1, scale=scale, metricName='Area (sq deg)')]
    caption = ('Rapid Revisit: area that receives at least %d visits between %.3f and %.1f minutes, ' % (nOne, dTmin, dTmax))
    caption += ('with at least %d of those visits falling between %.3f and %.1f minutes. ' % (nTwo, dTmin, dTpairs))
    caption += 'Summary statistic "Area" indicates the area on the sky which meets this requirement. (SRD design specification is 2000 sq deg).'
    displayDict['caption'] = caption
    bundle = mb.MetricBundle(m1, slicer, sql, plotDict=plotDict, plotFuncs=subsetPlots, stackerList=[ditherStacker], metadata=metadata, displayDict=displayDict, summaryMetrics=summaryStats)
    bundleList.append(bundle)
    displayDict['order'] += 1
    for b in bundleList:
        b.setRunName(runName)
    return mb.makeBundlesDictFromList(bundleList)