%matplotlib inline from matplotlib import pyplot as plt import pandas as pd df = pd.DataFrame.from_csv('crb-talaya.csv') # Remove all records except for those where breedingSiteID in (r1, r2, r3, r4) breedingSiteIDlist = ['r1','r2','r3','r4'] df = df[df['breedingSiteID'].isin(breedingSiteIDlist)] #df grouped = df['beetles'].groupby(df['breedingSiteID']) beetles = grouped.sum() beetles df['date'] = df.index grouped = df['date'].groupby(df['breedingSiteID']) days = grouped.max() - grouped.min() days = days.astype('timedelta64[D]') days grouped.min() grouped.max() # Beetles trapped per day trap_rate = beetles/(days + 1) trap_rate trap_rate.mean(), trap_rate.median() rates dfence_rates = list(trap_rate.values) dfence_names = ['DF1', 'DF2', 'DF3', 'DF4'] dfence_x = [150, 250, 50, 350] # meters from corner of fence dfence_color = len(dfence_rates) * ['red'] pan_rates = [0.017857, 0.416862, 0.491803, 0.215457, 0.306792] pan_names = ['P27', 'P28', 'P29', 'P30', 'P31'] pan_x = [0, 100, 200, 300, 400] pan_color = len(pan_rates) * ['green'] rates = dfence_rates + pan_rates names = dfence_names + pan_names x = dfence_x + pan_x color = dfence_color + pan_color plt.bar(x, rates, color=color, align='center', width=40) plt.xticks(x, names) pans = {'27': 0.017857, '28': 0.416862, '29': 0.491803, '30': 0.215457, '31': 0.306792} pan = pans.values() dfence = trap_rate.values plt.pyplot.boxplot([pan, dfence]) traps = {'r1', 'r2', 'r3', 'r4'} pixels_per_cm = {'r1': 3.708, 'r2': 4.167, 'r3': 4.029, 'r4': 4.815} # For each trapped beetle, this function returns x, y, and distance from # the lure in centimeters, with the origin (0,0) at the lure. def capture_points(trap, pixels_per_cm): filename = trap + '-Results.xls' df = pd.read_csv(filename, sep='\t', index_col=0 ) nrows = df.shape[0] result = list() for i in range(2, nrows+1): x = (df.X[i] - df.X[1])/pixels_per_cm y = (df.Y[1] - df.Y[i])/pixels_per_cm distance = (x**2 + y**2)**0.5 result.append({'trap': trap, 'x': x, 'y': y, 'distance': distance}); return(result) b = list() for trap in traps: a = capture_points(trap, pixels_per_cm[trap]) b.extend(a) df = pd.DataFrame(b) #df ax = df.plot(x = 'x', y = 'y', style = 'o', ylim = (-150, 150), title = 'Location of trapped beetles with respect to lures at (0,0)') ax.set_xlabel('x (cm)') ax.set_ylabel('y (cm)') ax.set_aspect('equal') ax = df.hist(column='distance', bins=20) df.distance.median() @article {DeFence-traps, title = {DeFence Traps: Using Fish Netting as Novel CRB Pheromone Trap Deployed on Fence Lines}, year = {2015}, type = {CRB Technical Report}, author = {Aubrey Moore and Roland Quitugua} }