Example #1
0
def trends(ident, levels=None, outputdir=None, verbose=0):
    """

    Parameters
    ----------
    ident
    levels
    outputdir
    verbose

    Returns
    -------

    """
    from raso import load_radiosonde
    from raso.config import outdir
    import matplotlib.pyplot as plt

    yplevs = [1000, 3000, 7000, 12500, 17500, 22500, 30000, 40000, 50000, 60000, 85000, 92500]  # Pressure Levels, Ticks

    isonde = load_radiosonde(ident, variables=[])
    if outputdir is None:
        outputdir = outdir + '/figures'

    #
    # DATA
    #

    if levels is None:
        levels = [10000, 30000, 50000, 60000, 70000, 85000, 92500]

    if 'detect_opts' not in isonde.attrs:
        print "No Detection Options found ?", ident
        return

    for icor, iopts in isonde.detect_opts.items():
        iname = iopts['savename']
        isonde.load_data(iname)
        ivar = iopts['variable']
        idata = getattr(isonde, iname)
        daynight = iopts.get('daynight', False)
        #
        # Profile
        #
        varis = [ivar, '%s_mcor' % ivar, '%s_qcor' % ivar, '%s_qecor' % ivar, '%s_era_adj' % ivar, '%s_era' % ivar]
        varnames = ['U', 'M', 'Q', 'QE', 'EA', 'E']

        # Period 1979 - 2015 (32y)
        if daynight:
            ax, lgd = _trend_plotter(idata[varis, idata.major_axis.hour == 12, :], slice('1979', '2015'), varis, yplevs,
                                     varnames)
            plt.savefig('%s/%s_%s_%s_trends_12Z_79-15.pdf' % (outputdir, ident, iname, ivar), bbox_extra_artists=(lgd,),
                        bbox_inches='tight')
            print_verbose('%s/%s_%s_%s_trends_12Z_79-15.pdf' % (outputdir, ident, iname, ivar), verbose)
            ax, lgd = _trend_plotter(idata[varis, idata.major_axis.hour == 0, :], slice('1979', '2015'), varis, yplevs,
                                     varnames)
            plt.savefig('%s/%s_%s_%s_trends_00Z_79-15.pdf' % (outputdir, ident, iname, ivar), bbox_extra_artists=(lgd,),
                        bbox_inches='tight')
            print_verbose('%s/%s_%s_%s_trends_00Z_79-15.pdf' % (outputdir, ident, iname, ivar), verbose)

        else:
            ax, lgd = _trend_plotter(idata[varis], slice('1979', '2015'), varis, yplevs, varnames)
            plt.savefig('%s/%s_%s_%s_trends_79-15.pdf' % (outputdir, ident, iname, ivar), bbox_extra_artists=(lgd,),
                        bbox_inches='tight')
            print_verbose('%s/%s_%s_%s_trends_79-15.pdf' % (outputdir, ident, iname, ivar), verbose)

        # Period 1990 - 2015 (15y)
        if daynight:
            ax, lgd = _trend_plotter(idata[varis, idata.major_axis.hour == 12, :], slice('1990', '2015'), varis, yplevs,
                                     varnames)
            plt.savefig('%s/%s_%s_%s_trends_12Z_90-15.pdf' % (outputdir, ident, iname, ivar), bbox_extra_artists=(lgd,),
                        bbox_inches='tight')
            print_verbose('%s/%s_%s_%s_trends_12Z_90-15.pdf' % (outputdir, ident, iname, ivar), verbose)
            ax, lgd = _trend_plotter(idata[varis, idata.major_axis.hour == 0, :], slice('1990', '2015'), varis, yplevs,
                                     varnames)
            plt.savefig('%s/%s_%s_%s_trends_00Z_90-15.pdf' % (outputdir, ident, iname, ivar), bbox_extra_artists=(lgd,),
                        bbox_inches='tight')
            print_verbose('%s/%s_%s_%s_trends_00Z_90-15.pdf' % (outputdir, ident, iname, ivar), verbose)

        else:
            ax, lgd = _trend_plotter(idata[varis], slice('1990', '2015'), varis, yplevs, varnames)
            plt.savefig('%s/%s_%s_%s_trends_79-15.pdf' % (outputdir, ident, iname, ivar), bbox_extra_artists=(lgd,),
                        bbox_inches='tight')
            print_verbose('%s/%s_%s_%s_trends_90-15.pdf' % (outputdir, ident, iname, ivar), verbose)

        # Period 1980 - 2000 (20y)
        if daynight:
            ax, lgd = _trend_plotter(idata[varis, idata.major_axis.hour == 12, :], slice('1980', '2000'), varis, yplevs,
                                     varnames)
            plt.savefig('%s/%s_%s_%s_trends_12Z_80-00.pdf' % (outputdir, ident, iname, ivar), bbox_extra_artists=(lgd,),
                        bbox_inches='tight')
            print_verbose('%s/%s_%s_%s_trends_12Z_80-00.pdf' % (outputdir, ident, iname, ivar), verbose)
            ax, lgd = _trend_plotter(idata[varis, idata.major_axis.hour == 0, :], slice('1980', '2000'), varis, yplevs,
                                     varnames)
            plt.savefig('%s/%s_%s_%s_trends_00Z_80-00.pdf' % (outputdir, ident, iname, ivar), bbox_extra_artists=(lgd,),
                        bbox_inches='tight')
            print_verbose('%s/%s_%s_%s_trends_00Z_80-00.pdf' % (outputdir, ident, iname, ivar), verbose)

        else:
            ax, lgd = _trend_plotter(idata[varis], slice('1980', '2000'), varis, yplevs, varnames)
            plt.savefig('%s/%s_%s_%s_trends_80-00.pdf' % (outputdir, ident, iname, ivar), bbox_extra_artists=(lgd,),
                        bbox_inches='tight')
            print_verbose('%s/%s_%s_%s_trends_80-00.pdf' % (outputdir, ident, iname, ivar), verbose)

        # Period 1975 - 2015 (30y)
        if daynight:
            ax, lgd = _trend_plotter(idata[varis, idata.major_axis.hour == 12, :], slice('1985', '2015'), varis, yplevs,
                                     varnames)
            plt.savefig('%s/%s_%s_%s_trends_12Z_85-15.pdf' % (outputdir, ident, iname, ivar), bbox_extra_artists=(lgd,),
                        bbox_inches='tight')
            print_verbose('%s/%s_%s_%s_trends_12Z_85-15.pdf' % (outputdir, ident, iname, ivar), verbose)
            ax, lgd = _trend_plotter(idata[varis, idata.major_axis.hour == 0, :], slice('1985', '2015'), varis, yplevs,
                                     varnames)
            plt.savefig('%s/%s_%s_%s_trends_00Z_85-15.pdf' % (outputdir, ident, iname, ivar), bbox_extra_artists=(lgd,),
                        bbox_inches='tight')
            print_verbose('%s/%s_%s_%s_trends_00Z_85-15.pdf' % (outputdir, ident, iname, ivar), verbose)

        else:
            ax, lgd = _trend_plotter(idata[varis], slice('1985', '2015'), varis, yplevs, varnames)
            plt.savefig('%s/%s_%s_%s_trends_85-15.pdf' % (outputdir, ident, iname, ivar), bbox_extra_artists=(lgd,),
                        bbox_inches='tight')
            print_verbose('%s/%s_%s_%s_trends_85-15.pdf' % (outputdir, ident, iname, ivar), verbose)

        plt.close('all')
        #
        # LEVEL
        #
        for ilev in levels:
            if daynight:
                fig, ax = plt.subplots(len(varis), 1, figsize=(12, len(varis)), sharex=True, sharey=True)
                ym = int(idata[ivar, idata.major_axis.hour == 12, ilev].mean())
                for j, jvar in enumerate(varis):
                    if jvar in idata.items:
                        ax[j] = timeseries_line_trend(idata[:, idata.major_axis.hour == 12, :], jvar,
                                                   '%s_dep_snht' % ivar, ilev, '%s [K]' % varnames[j], ax=ax[j],
                                                   plabel=ym + 4, ylim=(ym - 5, ym + 5), window=365,
                                                   label=varnames[j])
                    ax[j].grid(True)
                # lgd = ax.legend(bbox_to_anchor=(1.1, 1), loc='upper left', fontsize=10)
                    ax[j].set_xlim('1979', '2016')
                ax[-1].set_xlabel('Time (RM:365)')
                plt.savefig('%s/%s_%s_%s_trends_12Z_%04d.pdf' % (outputdir, ident, iname, ivar, ilev / 100)) #, bbox_extra_artists=(lgd,), bbox_inches='tight')
                print_verbose('%s/%s_%s_%s_trends_12Z_%04d.pdf' % (outputdir, ident, iname, ivar, ilev / 100), verbose)
                plt.close()
                #
                fig, ax = plt.subplots(1, 1, figsize=(12, 4))
                ym = int(idata[ivar, idata.major_axis.hour == 0, ilev].mean())
                for j, jvar in enumerate(varis):
                    if jvar in idata.items:
                        ax = timeseries_line_trend(idata[:, idata.major_axis.hour == 0, :], jvar,
                                                   '%s_dep_snht' % ivar, ilev, '%s [K]' % ivar, ax=ax,
                                                   plabel=ym + 4, ylim=(ym - 5, ym + 5), window=365,
                                                   label=varnames[j])
                ax.grid(True)
                lgd = ax.legend(bbox_to_anchor=(1.1, 1), loc='upper left', fontsize=10)
                ax.set_xlim('1979', '2016')
                ax.set_xlabel('Time (RM:365)')
                plt.savefig('%s/%s_%s_%s_trends_00Z_%04d.pdf' % (outputdir, ident, iname, ivar, ilev / 100),
                            bbox_extra_artists=(lgd,), bbox_inches='tight')
                print_verbose('%s/%s_%s_%s_trends_12Z_%04d.pdf' % (outputdir, ident, iname, ivar, ilev / 100), verbose)
                plt.close()

            else:
                fig, ax = plt.subplots(1, 1, figsize=(12, 4))
                ym = int(idata[ivar, :, ilev].mean())
                for j, jvar in enumerate(varis):
                    if jvar in idata.items:
                        ax = timeseries_line_trend(idata, jvar, '%s_dep_snht' % ivar, ilev, '%s [K]' % ivar,
                                                   ax=ax, plabel=ym + 4, ylim=(ym - 5, ym + 5), window=730,
                                                   label=varnames[j])
                ax.grid(True)
                lgd = ax.legend(bbox_to_anchor=(1.1, 1), loc='upper left', fontsize=10)
                ax.set_xlim('1979', '2016')
                ax.set_xlabel('Time (RM:730)')
                plt.savefig('%s/%s_%s_%s_trends_%04d.pdf' % (outputdir, ident, iname, ivar, ilev / 100),
                            bbox_extra_artists=(lgd,), bbox_inches='tight')
                print_verbose('%s/%s_%s_%s_trends_%04d.pdf' % (outputdir, ident, iname, ivar, ilev / 100), verbose)
                plt.close()
    plt.close('all')
Example #2
0
def corrections(ident, levels=None, outputdir=None, verbose=0):
    """

    Parameters
    ----------
    ident
    levels
    outputdir
    verbose

    Returns
    -------

    """
    from raso import load_radiosonde
    from raso.config import outdir
    import matplotlib.pyplot as plt

    yplevs = [1000, 3000, 7000, 12500, 17500, 22500, 30000, 40000, 50000, 60000, 85000, 92500]  # Pressure Levels, Ticks

    isonde = load_radiosonde(ident, variables=[])
    if outputdir is None:
        outputdir = outdir + '/figures'
    #
    # DATA
    #
    if 'detect_opts' not in isonde.attrs:
        print "No Detection Options found ?", ident
        return

    if levels is None:
        levels = [10000, 30000, 50000, 60000, 70000, 85000, 92500]

    for icor, iopts in isonde.detect_opts.items():
        iname = iopts['savename']
        isonde.load_data(iname)
        ithres = iopts['thres']
        ivar = iopts['variable']
        idata = getattr(isonde, iname)
        daynight = iopts.get('daynight', False)
        #
        # CONTOUR
        #
        for j, jvar in enumerate(['%s_mcor' % ivar, '%s_qcor' % ivar, '%s_qecor' % ivar]):
            if jvar not in idata.items:
                continue

            if daynight:
                timeseries_var(idata[:, idata.major_axis.hour == 12, :], jvar, freq='M', yticklabels=yplevs)
                plt.savefig("%s/%s_%s_%s_12Z.pdf" % (outputdir, ident, iname, jvar))
                print_verbose("%s/%s_%s_%s_12Z.pdf" % (outputdir, ident, iname, jvar), verbose)

                timeseries_anomaly(idata[:, idata.major_axis.hour == 12, :], jvar, '%s_era' % ivar, freq='M',
                                   yticklabels=yplevs)
                plt.savefig("%s/%s_%s_%s_dep_12Z.pdf" % (outputdir, ident, iname, jvar))
                print_verbose("%s/%s_%s_%s_dep_12Z.pdf" % (outputdir, ident, iname, jvar), verbose)

                timeseries_var(idata[:, idata.major_axis.hour == 0, :], jvar, freq='M', yticklabels=yplevs)
                plt.savefig("%s/%s_%s_%s_00Z.pdf" % (outputdir, ident, iname, jvar))
                print_verbose("%s/%s_%s_%s_00Z.pdf" % (outputdir, ident, iname, jvar), verbose)

                timeseries_anomaly(idata[:, idata.major_axis.hour == 0, :], jvar, '%s_era' % ivar, freq='M',
                                   yticklabels=yplevs)
                plt.savefig("%s/%s_%s_%s_dep_00Z.pdf" % (outputdir, ident, iname, jvar))
                print_verbose("%s/%s_%s_%s_dep_00Z.pdf" % (outputdir, ident, iname, jvar), verbose)

            else:
                timeseries_var(idata, jvar, freq='M', yticklabels=yplevs)
                plt.savefig("%s/%s_%s_%s.pdf" % (outputdir, ident, iname, jvar))
                print_verbose("%s/%s_%s_%s.pdf" % (outputdir, ident, iname, jvar), verbose)

                timeseries_anomaly(idata, jvar, '%s_era' % ivar, freq='M', yticklabels=yplevs)
                plt.savefig("%s/%s_%s_%s_dep.pdf" % (outputdir, ident, iname, jvar))
                print_verbose("%s/%s_%s_%s_dep.pdf" % (outputdir, ident, iname, jvar), verbose)
        #
        # LEVEL
        #
        for ilev in levels:
            if daynight:
                fig, ax = plt.subplots(3, 1, figsize=(12, 6), sharex=True, sharey=True)
                varnames = ['M', 'Q', 'QE']
                ym = int(idata["%s_dep" % ivar, idata.major_axis.hour == 12, ilev].mean())
                for j, jvar in enumerate(['%s_mcor' % ivar, '%s_qcor' % ivar, '%s_qecor' % ivar]):
                    if jvar not in idata.items:
                        continue

                    timeseries_line_correction(idata[:, idata.major_axis.hour == 12, :], jvar,
                                               '%s_dep_snht' % ivar, ilev, '%s dep [K]' % ivar,
                                               breaks='%s_dep_breaks' % ivar, ax=ax[j],
                                               departures='%s_era' % ivar, ylim=(ym - 5, ym + 5),
                                               force_snht=True, post_snht=True, plabel=None)
                    idata['%s_dep' % ivar, idata.major_axis.hour == 12, ilev].resample('12h').mean().rolling(window=60,
                                                                                                             min_periods=1).mean().plot(
                        ax=ax[j], color='gray', zorder=1)
                    ax[j].set_xlim('1979', '2016')
                    ax[j].set_ylabel(varnames[j] + ' dep (ERA) [K]')
                    ax[j].grid(True)
                ax[0].set_title('Corrections at %d hPa 12Z' % (ilev / 100))
                ax[-1].set_xlabel('Time (RM:60)')
                plt.savefig('%s/%s_%s_%s_corr_12Z_%04d.pdf' % (outputdir, ident, iname, ivar, (ilev / 100)))
                print_verbose('%s/%s_%s_%s_corr_12Z_%04d.pdf' % (outputdir, ident, iname, ivar, (ilev / 100)), verbose)

                fig, ax = plt.subplots(3, 1, figsize=(12, 6), sharex=True, sharey=True)
                ym = int(idata["%s_dep" % ivar, idata.major_axis.hour == 0, ilev].mean())
                for j, jvar in enumerate(['%s_mcor' % ivar, '%s_qcor' % ivar, '%s_qecor' % ivar]):
                    if jvar not in idata.items:
                        continue

                    timeseries_line_correction(idata[:, idata.major_axis.hour == 0, :], jvar,
                                               '%s_dep_snht' % ivar, ilev, '%s dep [K]' % ivar,
                                               breaks='%s_dep_breaks' % ivar, ax=ax[j],
                                               departures='%s_era' % ivar, ylim=(ym - 5, ym + 5),
                                               force_snht=True, post_snht=True, plabel=None)
                    idata['%s_dep' % ivar, idata.major_axis.hour == 0, ilev].resample('12h').mean().rolling(window=60,
                                                                                                            min_periods=1).mean().plot(
                        ax=ax[j], color='gray', zorder=1)
                    ax[j].set_xlim('1979', '2016')
                    ax[j].set_ylabel(varnames[j] + ' dep (ERA) [K]')
                    ax[j].grid(True)
                ax[0].set_title('Corrections at %d hPa 00Z' % (ilev / 100))
                ax[-1].set_xlabel('Time (RM:60)')
                plt.savefig('%s/%s_%s_%s_corr_00Z_%04d.pdf' % (outputdir, ident, iname, ivar, (ilev / 100)))
                print_verbose('%s/%s_%s_%s_corr_00Z_%04d.pdf' % (outputdir, ident, iname, ivar, (ilev / 100)), verbose)

            else:
                fig, ax = plt.subplots(3, 1, figsize=(12, 6), sharex=True, sharey=True)
                varnames = ['M', 'Q', 'QE']
                ym = int(idata["%s_dep" % ivar, :, ilev].mean())
                for j, jvar in enumerate(['%s_mcor' % ivar, '%s_qcor' % ivar, '%s_qecor' % ivar]):
                    if jvar not in idata.items:
                        continue

                    timeseries_line_correction(idata, jvar, '%s_dep_snht' % ivar, ilev, '%s dep [K]' % ivar,
                                               breaks='%s_dep_breaks' % ivar, ax=ax[j],
                                               departures='%s_era' % ivar, ylim=(ym - 5, ym + 5),
                                               force_snht=True, post_snht=True, plabel=None)
                    idata['%s_dep' % ivar, :, ilev].resample('12h').mean().rolling(window=60,
                                                                                   min_periods=1).mean().plot(ax=ax[j],
                                                                                                              color='gray',
                                                                                                              zorder=1)
                    ax[j].set_xlim('1979', '2016')
                    ax[j].set_ylabel(varnames[j] + ' dep (ERA) [K]')
                    ax[j].grid(True)
                ax[0].set_title('Corrections at %d hPa' % (ilev / 100))
                ax[-1].set_xlabel('Time (RM:60)')
                plt.savefig('%s/%s_%s_%s_corr_%04d.pdf' % (outputdir, ident, iname, ivar, (ilev / 100)))
                print_verbose('%s/%s_%s_%s_corr_%04d.pdf' % (outputdir, ident, iname, ivar, (ilev / 100)), verbose)

    plt.close('all')
Example #3
0
def data(ident, outputdir=None, verbose=0):
    """ Automated Data count plots

    Parameters
    ----------
    ident
    outputdir
    verbose

    Returns
    -------

    """
    from raso import load_radiosonde
    from raso.config import outdir
    import matplotlib.pyplot as plt

    yplevs = [1000, 3000, 7000, 12500, 17500, 22500, 30000, 40000, 50000, 60000, 85000, 92500]  # Pressure Levels, Ticks

    isonde = load_radiosonde(ident, variables=['igra', 'data', 'std_data'])
    if outputdir is None:
        outputdir = outdir + '/figures'
    #
    # DATA
    #
    if 'data' in isonde.vars:
        varis = ['t', 'r']
        if isonde.data.columns.isin(varis).sum() == len(varis):
            dates = pd.Series(1, index=pd.DatetimeIndex(
                isonde.data[varis].dropna().index.unique()))  # events with t,r variables
        else:
            varis = isonde.data.columns.tolist()
            dates = pd.Series(1, index=pd.DatetimeIndex(isonde.data.index.unique()))  # events with all variables
        events = dates.groupby(dates.index.to_period(freq='M')).count()  # events per month
        events.plot(grid=True, kind='area')
        plt.title("Radiosonde %s (DATA), Sounding Events (%s)" % (isonde.id, ",".join(varis)))
        plt.xlabel("Month")
        plt.ylabel("Soundings per Month [#]")
        plt.savefig('%s/%s_data_counts.pdf' % (outputdir, ident))
        print_verbose('%s/%s_data_counts.pdf' % (outputdir, ident), verbose)
        plt.close()
    #
    # IGRA
    #
    if 'igra' in isonde.vars:
        varis = ['t', 'dpd']
        if isonde.igra.columns.isin(varis).sum() == len(varis):
            dates = pd.Series(1, index=pd.DatetimeIndex(
                isonde.igra[varis].dropna().index.unique()))  # events with t,r variables
        else:
            varis = isonde.igra.columns.tolist()
            dates = pd.Series(1, index=pd.DatetimeIndex(isonde.igra.index.unique()))  # events with all variables
        events = dates.groupby(dates.index.to_period(freq='M')).count()  # events per month
        events.plot(grid=True, kind='area')
        plt.title("Radiosonde %s (IGRA), Sounding Events (%s)" % (isonde.id, ",".join(varis)))
        plt.xlabel("Month")
        plt.ylabel("Soundings per Month [#]")
        plt.savefig('%s/%s_igra_counts.pdf' % (outputdir, ident))
        print_verbose('%s/%s_igra_counts.pdf' % (outputdir, ident), verbose)
        plt.close()
    #
    # STD DATA
    #
    if 'std_data' in isonde.vars:
        varis = ['t', 'r']
        if isonde.std_data.columns.isin(varis).sum() == len(varis):
            dates = pd.Series(1, index=pd.DatetimeIndex(
                isonde.std_data[varis].dropna().index.unique()))  # events with t,r variables
        else:
            varis = isonde.std_data.columns.tolist()
            dates = pd.Series(1, index=pd.DatetimeIndex(isonde.std_data.index.unique()))  # events with all variables
        events = dates.groupby(dates.index.to_period(freq='M')).count()  # events per month
        events.plot(grid=True, kind='area')
        plt.title("Radiosonde %s (STDDATA), Sounding Events (%s)" % (isonde.id, ",".join(varis)))
        plt.xlabel("Month")
        plt.ylabel("Soundings per Month [#]")
        plt.savefig('%s/%s_std_data_counts.pdf' % (outputdir, ident))
        plt.close()
        #
        for ivar in isonde.std_data.columns.tolist():
            if ivar in ['p', 'u', 'v', 'qual']:
                continue
            timeseries_var(isonde.std_data, ivar, freq='M', title='RASO %s' % isonde.id, yticklabels=yplevs)
            plt.savefig("%s/%s_%s_contour.pdf" % (outputdir, ident, ivar))
            plt.close()
    plt.close('all')
Example #4
0
def breakpoints(ident, levels=None, outputdir=None, verbose=0):
    """

    Parameters
    ----------
    ident
    levels
    outputdir
    verbose

    Returns
    -------

    """
    from raso import load_radiosonde
    from raso.config import outdir
    import matplotlib.pyplot as plt

    isonde = load_radiosonde(ident, variables=[])
    if outputdir is None:
        outputdir = outdir + '/figures'
    #
    # DATA
    #
    if 'detect_opts' not in isonde.attrs:
        print "No Detection Options found ?", ident
        return

    if levels is None:
        levels = [10000, 30000, 50000, 60000, 70000, 85000, 92500]

    for icor, iopts in isonde.detect_opts.items():
        iname = iopts['savename']
        isonde.load_data(iname)
        ithres = iopts['thres']
        ivar = iopts['variable']
        idata = getattr(isonde, iname)
        daynight = iopts.get('daynight', False)
        #
        # LEVEL
        #
        for ilev in levels:
            if daynight:
                ym = int(idata[ivar, idata.major_axis.hour == 12, ilev].mean())
                breakpoint_timeseries(idata[:, idata.major_axis.hour == 12, :], ivar, p=ilev, post_snht=True,
                                      window=365, min_periods=1, ylim=(ym - 5, ym + 5))
                plt.savefig("%s/%s_%s_%s_12Z_breakstat_%04d.pdf" % (outputdir, ident, iname, ivar, ilev / 100))
                print_verbose("%s/%s_%s_%s_12Z_breakstat_%04d.pdf" % (outputdir, ident, iname, ivar, ilev / 100),
                              verbose)

                ym = int(idata[ivar, idata.major_axis.hour == 0, ilev].mean())
                breakpoint_timeseries(idata[:, idata.major_axis.hour == 0, :], ivar, p=ilev, post_snht=True,
                                      window=365, min_periods=1, ylim=(ym - 5, ym + 5))
                plt.savefig("%s/%s_%s_%s_00Z_breakstat_%04d.pdf" % (outputdir, ident, iname, ivar, ilev / 100))
                print_verbose("%s/%s_%s_%s_00Z_breakstat_%04d.pdf" % (outputdir, ident, iname, ivar, ilev / 100),
                              verbose)

            else:
                ym = int(idata[ivar, :, ilev].mean())
                breakpoint_timeseries(idata, ivar, p=ilev, post_snht=True, window=730, min_periods=1,
                                      ylim=(ym - 5, ym + 5))
                plt.savefig("%s/%s_%s_%s_breakstat_%04d.pdf" % (outputdir, ident, iname, ivar, ilev / 100))
                print_verbose("%s/%s_%s_%s_breakstat_%04d.pdf" % (outputdir, ident, iname, ivar, ilev / 100), verbose)

    plt.close('all')
Example #5
0
def snht(ident, levels=None, outputdir=None, verbose=0):
    """

    Parameters
    ----------
    ident
    levels
    outputdir
    verbose

    Returns
    -------

    """
    from raso import load_radiosonde
    from raso.config import outdir
    import matplotlib.pyplot as plt

    yplevs = [1000, 3000, 7000, 12500, 17500, 22500, 30000, 40000, 50000, 60000, 85000, 92500]  # Pressure Levels, Ticks

    isonde = load_radiosonde(ident, variables=[])
    if outputdir is None:
        outputdir = outdir + '/figures'
    #
    # DATA
    #
    if 'detect_opts' not in isonde.attrs:
        print "No Detection Options found ?", ident
        return

    if levels is None:
        levels = [10000, 30000, 50000, 60000, 70000, 85000, 92500]

    for icor, iopts in isonde.detect_opts.items():
        iname = iopts['savename']
        isonde.load_data(iname)
        ithres = iopts['thres']
        ivar = iopts['variable']
        idata = getattr(isonde, iname)
        daynight = iopts.get('daynight', False)
        #
        #  CONTOUR
        #
        if daynight:
            timeseries_snht(idata[:, idata.major_axis.hour == 12, :], '%s_dep' % ivar,
                            levels=list(ithres * np.array([1, 2, 5, 10, 20])), yticklabels=yplevs)
            plt.savefig("%s/%s_%s_%s_12Z_snht.pdf" % (outputdir, ident, iname, ivar))
            print_verbose("%s/%s_%s_%s_12Z_snht.pdf" % (outputdir, ident, iname, ivar), verbose)

            timeseries_snht(idata[:, idata.major_axis.hour == 0, :], '%s_dep' % ivar,
                            levels=list(ithres * np.array([1, 2, 5, 10, 20])), yticklabels=yplevs)
            plt.savefig("%s/%s_%s_%s_00Z_snht.pdf" % (outputdir, ident, iname, ivar))
            print_verbose("%s/%s_%s_%s_00Z_snht.pdf" % (outputdir, ident, iname, ivar), verbose)

        else:
            timeseries_snht(idata, '%s_dep' % ivar, levels=list(ithres * np.array([1, 2, 5, 10, 20])),
                            yticklabels=yplevs)
            plt.savefig("%s/%s_%s_%s_snht.pdf" % (outputdir, ident, iname, ivar))
            print_verbose("%s/%s_%s_%s_snht.pdf" % (outputdir, ident, iname, ivar), verbose)
        #
        # LEVEL
        #
        for ilev in levels:
            fig, ax = plt.subplots(1, 1, figsize=(12, 2))

            if daynight:
                timeseries_line_snht(idata[:, idata.major_axis.hour == 12, :], '%s_dep' % ivar,
                                     '%s_dep_snht' % ivar, ilev, '%s dep (12Z) [K]' % ivar,
                                     breaks='%s_dep_breaks' % ivar, ax=ax, ylim=(-10, 10))
                ax.set_xlabel('Time (RM:60)')
                plt.savefig('%s/%s_%s_%s_12Z_snht_%04d.pdf' % (outputdir, ident, iname, ivar, (ilev / 100)))
                print_verbose('%s/%s_%s_%s_12Z_snht_%04d.pdf' % (outputdir, ident, iname, ivar, (ilev / 100)), verbose)

                timeseries_line_snht(idata[:, idata.major_axis.hour == 0, :], '%s_dep' % ivar,
                                     '%s_dep_snht' % ivar, ilev, '%s dep (00Z) [K]' % ivar,
                                     breaks='%s_dep_breaks' % ivar, ax=ax, ylim=(-10, 10))
                ax.set_xlabel('Time (RM:60)')
                plt.savefig('%s/%s_%s_%s_00Z_snht_%04d.pdf' % (outputdir, ident, iname, ivar, (ilev / 100)))
                print_verbose('%s/%s_%s_%s_00Z_snht_%04d.pdf' % (outputdir, ident, iname, ivar, (ilev / 100)), verbose)

            else:
                timeseries_line_snht(idata, '%s_dep' % ivar, '%s_dep_snht' % ivar, ilev, '%s dep [K]' % ivar,
                                     breaks='%s_dep_breaks' % ivar, ax=ax, ylim=(-10, 10))
                ax.set_xlabel('Time (RM:60)')
                plt.savefig('%s/%s_%s_%s_snht_%04d.pdf' % (outputdir, ident, iname, ivar, (ilev / 100)))
                print_verbose('%s/%s_%s_%s_snht_%04d.pdf' % (outputdir, ident, iname, ivar, (ilev / 100)), verbose)
    plt.close('all')