def plot_comps(N, S): fig = plt.figure() ax = fig.add_subplot(1,1,1) for j in range(100): # Random composition RAD = RandCompFast(N, S) ranks = range(1, len(RAD)+1) plt.plot(ranks, RAD, lw = 1, c='gray') # Predicted geometric series predRAD = predRADs.get_GeomSeries(N, S, False) ranks = range(1, S+1) plt.plot(ranks, predRAD, lw = 2, c='Lime') plt.yscale('log') plt.ylabel('Abundance') plt.xlabel('Rank in abundance') plt.title('Smallest abundance of MaxEnt prediction for SAD constrained\nby N and S (Geometric Series):'+str(min(predRAD))) plt.show() return
def plot_RADs_canonical(N, S): fig = plt.figure() ax = fig.add_subplot(1,1,1) # Predicted geometric series predRAD = predRADs.get_GeomSeries(N, S, False) # False mean no zeros allowed ranks = range(1, S+1) plt.plot(ranks, predRAD, lw = 1, c='m') # Predicted log-series logSeries = mete.get_mete_rad(S, N) predRAD = logSeries[0] ranks = range(1, S+1) plt.plot(ranks, predRAD, lw = 1, c='c') # Predicted PLN #predRAD = pln.get_rad_from_obs(predRAD, 'pln') #ranks = range(1, len(predRAD)+1) #plt.plot(ranks, predRAD, lw = 1, c='gray') plt.yscale('log') plt.show() return
def getPredRADs(N, S, Nmax): PRED = [] # Predicted geometric series predRAD = predRADs.get_GeomSeries(N, S, False) # False mean no zeros allowed PRED.append(predRAD) # Predicted log-series logSeries = mete.get_mete_rad(S, N) predRAD = logSeries[0] PRED.append(predRAD) # Predicted PLN predRAD = pln.get_rad_from_obs(RAD, 'pln') PRED.append(predRAD) sample_size = 10 # Predicted from compositions (basically geometric series) predRAD = getPred(N, S, maxn, 'compositions', sample_size) PRED.append(predRAD) # Predicted from Fraction 1: Power Fraction predRAD = getPred(N, S, maxn, 'power fraction', sample_size) PRED.append(predRAD) # Predicted from Fraction 2: Random non-preemption predRAD = getPred(N, S, maxn, 'random fraction non-preemption', sample_size) PRED.append(predRAD) # Predicted from Fraction 3: Random preemption predRAD = getPred(N, S, maxn, 'random fraction', sample_size) PRED.append(predRAD) return PRED
def generate_obs_pred_data(datasets, methods): for method in methods: for dataset in datasets: gN = 0 #OUT = open(mydir+'/data/'+method+'_'+dataset+'_obs_pred.txt','w+') IN = mydir+'/MicroMETE/data/'+dataset+'_SADs.txt' num_lines = sum(1 for line in open(IN)) for line in open(IN): line = line.split() obs = map(int, line) obs = list([x for x in obs if x > 1]) N = sum(obs) gN += N print N S = len(obs) if S < 10: continue obs.sort() obs.reverse() print method, dataset, N, S, 'countdown:', num_lines, if method == 'geom': # Predicted geometric series pred = predRADs.get_GeomSeries(N, S, False) # False mean no zeros allowed elif method == 'mete': # Predicted log-series logSeries = mete.get_mete_rad(S, N) pred = logSeries[0] r2 = macroecotools.obs_pred_rsquare(np.log10(obs), np.log10(pred)) print " r2:", r2 # write to file, by cite, observed and expected ranked abundances #for i, sp in enumerate(pred): # print>> OUT, obs[i], pred[i] num_lines -= 1 print 'N(HMP): ',gN #OUT.close() print dataset