コード例 #1
0
ファイル: analysis.py プロジェクト: LucasFievet/Tomorrow
def get_fit_parms(fields=GOOD_FITS, fit_style='stretched exponential', 
    xmin='custom', return_oil_field=True):
    """Return a hash with the keys being the fields (names) and value the 
    relevant fit parameters given the fit style.
    """
    fit_parms = {}
    if fit_style == 'exponential':
        fit = fit_exponential
    elif fit_style == 'stretched exponential':
        fit = fit_stretched_exponential
    elif fit_style == 'power law':
        fit = fit_power_law

    oil_fields = get_oil_fields()

    if xmin == 'custom':
        def get_xmin(field, MAXES):
            return MAXES[field] if field in MAXES.keys() else 'max'

    for field in fields:
        fit_parms[field] = fit(oil_fields[field], xmin=get_xmin(field, MAXES))

    if return_oil_field:
        return (fit_parms, oil_fields)
    else:
        return fit_parms
コード例 #2
0
ファイル: analysis.py プロジェクト: LucasFievet/Tomorrow
def rate_of_discoveries(bins=[1e4, 1e6, 1e7, 1e8], fields='all'):
    """Plots the number of fields discovered up to time t. This informs us about
    the underlying discovery mechanism. This mechanism can depend on size.
    """
    oil_fields = get_oil_fields()
    if fields == 'all':
        urrs = Series(URRS)[oil_fields.columns].dropna() * 1e6 * M3_TO_BARRELS
    binned_urrs = [urrs[(urrs > bins[i]) & (urrs < bins[i+1])] 
                      for i in range(len(bins)-1)]
    res = []
    plt.ion()
    fig = plt.figure(figsize=(28, 10))
    for i, bin in enumerate(binned_urrs):
        starts = []
        for field in bin.index:
            starts.append(oil_fields[field].dropna().index[0])
        starts = array(starts)
        dates = date_range(START, END)
        number_of_discoveries = [(starts <= date).sum() for date in dates]
        res.append((dates, number_of_discoveries))
        
        fig.add_subplot(1, len(bins)-1, i+1)
        ax = plt.gca()
        ax.plot(dates, number_of_discoveries, 'ok', markersize=4.)
        plt.xlabel('Date of discovery')
        plt.ylabel('Number of fields discovered')
        plt.title('bin=%s-%s' % (log10(bins[i]), log10(bins[i+1])))
       
    return res