*Given a the yaml input of the SN Lightcurves generate a numpy polynomial of the curves.*

    **Key Arguments:**
        - ``log`` -- logger
        - ``snLightCurves`` -- some info on sn LightCurves
        - ``pathToOutputDirectory`` -- path to the output directory (provided by the user)
        - ``pathToOutputPlotDirectory`` -- path to the output plots directory
        - ``plot`` -- generate plot?

    **Return:**
        - ``polynomialDict`` -- { snType, polynomialLightcurve }

def generate_numpy_polynomial_lightcurves(
        log,
        snLightCurves,
        pathToOutputDirectory,
        pathToOutputPlotDirectory,
        plot=False):
    """
    *Given a the yaml input of the SN Lightcurves generate a numpy polynomial of the curves.*

    **Key Arguments:**
        - ``log`` -- logger
        - ``snLightCurves`` -- some info on sn LightCurves
        - ``pathToOutputDirectory`` -- path to the output directory (provided by the user)
        - ``pathToOutputPlotDirectory`` -- path to the output plots directory
        - ``plot`` -- generate plot?

    **Return:**
        - ``polynomialDict`` -- { snType, polynomialLightcurve }
    """
    ################ > IMPORTS ################
    ## STANDARD LIB ##
    ## THIRD PARTY ##
    import numpy as np
    import matplotlib.pyplot as plt
    import yaml
    ## LOCAL APPLICATION ##
    import dryxPython.plotting as dp

    ################ >ACTION(S) ################
    # EXTRACT THE MODEL LIGHTCURVE POLYNOMIALS
    fileName = pathToOutputDirectory + "/transient_light_curves.yaml"
    stream = file(fileName, 'r')
    yamlContent = yaml.load(stream)
    generatedLCs = yamlContent
    stream.close()

    log.info('fileName: %s' % (fileName,))
    log.debug('generatedLCs: %s' % (generatedLCs,))

    rawLightCurveDict = {}
    for model, filterData in generatedLCs.iteritems():
        thisModel = model
        rawLightCurveDict[thisModel] = {}
        for ffilter, modelData in filterData.iteritems():
            rawLightCurveDict[thisModel][ffilter] = {}
            plotDict = {}

            if modelData["poly"] is None:
                log.warning(
                    'cound not plot the raw lightcurve for the %s object in rest frame %s-band - probably insufficient spectral coverage' %
                    (model, ffilter))
                rawLightCurveDict[thisModel][ffilter]['poly'] = None
                rawLightCurveDict[thisModel][ffilter][
                    'Explosion Day Relative to Peak'] = None
                rawLightCurveDict[thisModel][ffilter][
                    'End of lightcurve relative to peak'] = None
                continue

            # explosionDay = snLightCurves[model]['Explosion Day Relative to Peak']
            endOfLightcurveDay = snLightCurves[model][
                'End of lightcurve relative to peak']
            explosionDay = modelData['Explosion Day Relative to Peak']
            log.info(
                'explosionDay, endOfLightcurveDay for raw Light Curve: %s, %s' %
                (explosionDay, endOfLightcurveDay))
            # endOfLightcurveDay = snLightCurves[model]['End of lightcurve relative to peak']
            # log.info('endOfLightcurveDay %s' % (endOfLightcurveDay,))
            # log.info('explosionDay %s' % (explosionDay,))
            poly = modelData['poly']
            peakMag = modelData['Peak Magnitude']
            peakMagPoly = np.poly1d([peakMag, ])
            polyLightCurve = np.poly1d(poly)
            polyLightCurve = polyLightCurve - peakMagPoly
            polyLightCurve = np.poly1d(polyLightCurve)
            rawLightCurveDict[thisModel][ffilter]['poly'] = polyLightCurve
            rawLightCurveDict[thisModel][ffilter][
                'Explosion Day Relative to Peak'] = explosionDay

            log.debug(
                'rawLightCurveDict[thisModel][ffilter][Explosion Day Relative to Peak]: %s' %
                (rawLightCurveDict[thisModel][ffilter]['Explosion Day Relative to Peak'],))
            rawLightCurveDict[thisModel][ffilter][
                'End of lightcurve relative to peak'] = endOfLightcurveDay
            plotDict[model] = polyLightCurve

            if plot:
                plot_polynomial(
                    log,
                    title="00 raw lightcurve for %s, filter %s" % (
                        model, ffilter),
                    polynomialDict=plotDict,
                    orginalDataDictionary=False,
                    pathToOutputPlotsFolder=pathToOutputPlotDirectory,
                    xRange=[explosionDay, endOfLightcurveDay],
                    xlabel=False,
                    ylabel=False,
                    xAxisLimits=False,
                    yAxisLimits=False,
                    yAxisInvert=True,
                    prependNum=False)

    return rawLightCurveDict