docs: def plot_sn_discovery_ratio_map(log,
                                  snSurveyDiscoveryTimes,
                                  redshifts,
                                  peakAppMagList,
                                  snCampaignLengthList,
                                  extraSurveyConstraints,
                                  pathToOutputPlotFolder):
      """
      *Plot the SN discoveries and non-discoveries in a polar plot as function of redshift*
  
      **Key Arguments:**
          - ``log`` -- logger
          - ``snSurveyDiscoveryTimes`` --
          - ``redshifts`` --
          - ``peakAppMagList`` -- the list of peakmags for each SN in each filter
          - ``snCampaignLengthList`` -- a list of campaign lengths in each filter
          - ``extraSurveyConstraints`` --
          - ``pathToOutputPlotDirectory`` -- path to add plots to
  
  
      **Return:**
          - None
      """
      ################ > IMPORTS ################
      ## STANDARD LIB ##
      import sys
      ## THIRD PARTY ##
      import matplotlib.pyplot as plt
      import numpy as np
      ## LOCAL APPLICATION ##
      import dryxPython.plotting as dp
      filters = ['g', 'r', 'i', 'z']
      faintMagLimit = extraSurveyConstraints['Faint-Limit of Peak Magnitude']
  
      ################ >ACTION(S) ################
      discovered = []
      tooFaint = []
      shortCampaign = []
      discoveredRedshift = []
      tooFaintRedshift = []
      notDiscoveredRedshift = []
      shortCampaignRedshift = []
      #log.info('len(redshifts) %s' % (len(redshifts),))
      dataDictionary = {}
      for item in range(len(redshifts)):
          if snSurveyDiscoveryTimes[item]['any'] is True:
              discoveryDayList = []
              faintDayList = []
              shortCampaignDayList = []
              for ffilter in filters:
                  if snSurveyDiscoveryTimes[item][ffilter]:
                      if peakAppMagList[item][ffilter] < faintMagLimit:
                          if snCampaignLengthList[item]['max'] < extraSurveyConstraints['Observable for at least ? number of days']:
                              shortCampaignDayList.append(
                                  snSurveyDiscoveryTimes[item][ffilter])
                          else:
                              discoveryDayList.append(
                                  snSurveyDiscoveryTimes[item][ffilter])
                      else:
                          faintDayList.append(
                              snSurveyDiscoveryTimes[item][ffilter])
  
              if len(discoveryDayList) > 0:
                  discovered.append(min(discoveryDayList))
                  discoveredRedshift.append(redshifts[item])
              elif len(shortCampaignDayList) > 0:
                  shortCampaign.append(min(shortCampaignDayList))
                  shortCampaignRedshift.append(redshifts[item])
              else:
                  tooFaint.append(min(faintDayList))
                  tooFaintRedshift.append(redshifts[item])
          else:
              notDiscoveredRedshift.append(redshifts[item])
  
      if len(notDiscoveredRedshift) > 0:
          dataDictionary["Undiscovered"] = notDiscoveredRedshift
      if len(tooFaintRedshift) > 0:
          dataDictionary[
              "Detected - too faint to constrain as transient"] = tooFaintRedshift
      if len(discoveredRedshift) > 0:
          dataDictionary["Discovered"] = discoveredRedshift
      if len(shortCampaignRedshift) > 0:
          dataDictionary[
              "Detected - campaign to short to constrain as transient"] = shortCampaignRedshift
  
      maxInList = max(redshifts) * 1.1
  
      ################ >ACTION(S) ################
      imageLink = plot_polar(
          log,
          title="Redshift Map of transients Simulated within the Survey Volume",
          dataDictionary=dataDictionary,
          pathToOutputPlotsFolder=pathToOutputPlotFolder,
          dataRange=False,
          ylabel=False,
          radius=maxInList,
          circumference=False,
          circleTicksRange=(0, 360, 60),
          circleTicksLabels=".",
          prependNum=False)
  
      return imageLink