diff options
Diffstat (limited to 'python/data.py')
-rw-r--r-- | python/data.py | 102 |
1 files changed, 102 insertions, 0 deletions
diff --git a/python/data.py b/python/data.py new file mode 100644 index 0000000..de850e8 --- /dev/null +++ b/python/data.py @@ -0,0 +1,102 @@ +# Data +arg = '' +from scipy.spatial import Voronoi, voronoi_plot_2d, KDTree, distance +import matplotlib.pyplot as plt + +class Pit: + def __init__(self, loc, depth, diam): + self.loc = loc + self.depth = depth + self.diam = diam + + def __repr__(self): + return '%s @ %.1fcm deep, %.1fcm wide' % (str(self.loc), self.depth, self.diam) + + def disp(self): + return '%.1fcm dp\n %.1fcm wd' % (self.depth, self.diam) + + def __getitem__(self,ind): + return self.loc[ind] + +class Date: + def __init__(self, year, month, day): + self.year = year + self.month = month + self.day = day + + def __repr__(self): + return '%d-%d-%d' % (self.year, self.month, self.day) + +class Trial: + def __init__(self, date, intro, dead, size, pits): + self.date = date + self.intro = intro + self.dead = dead + self.size = size + self.pits = pits + self.pitlocs = [pit.loc for pit in self.pits] + + def __repr__(self): + return str(self.date) + ' ' + str(self.pits) + + def plot(self, save=False): + vor = Voronoi([pit.loc for pit in self.pits]) + voronoi_plot_2d(vor) + plt.xlabel('%s (dimension %dx%dcm)' % (str(self.date), self.size[0], self.size[1])) + if save: + plt.savefig(str(self.date)+'.png', bbox_inches='tight') + else: + plt.show() + + def nearest_neighbor(self): + tree = KDTree(self.pitlocs) + sumnn = 0 + return [dists[1] for dists in tree.query(self.pitlocs,2)[0]] + +trials = [ + Trial(Date(2019, 10, 16), 31, 6, [33,32], [ + Pit([4,25],1.3,4.2), + Pit([3,13],1.4,3.7), + Pit([10,25],1.1,3.0), + Pit([18,18],1.8,2.3), + Pit([30,14],2.2,3.1), + Pit([29,11],1.4,2.5), + Pit([27,10],1.2,2.1), + Pit([29,6],2.4,3.9), + Pit([26,5],1.8,3.6), + ]), + Trial(Date(2019, 10, 30), 27, 3, [24,24], [ + Pit([4,21],2.0,7.0), + Pit([7,22],2.5,4.1), + Pit([2,9],0.5,2.0), + Pit([12,18],1.2,2.5), + Pit([12,11],1.2,3.0), + Pit([20,11],1.0,3.0), + Pit([19,2],1.5,4.0), + ]), + Trial(Date(2019, 12, 3), 19, 3, [17, 16], [ + Pit([14,5],1.3,4.1), + Pit([12,2],1.2,3.8), + Pit([5,1],0.9,3.2), + Pit([15,17],2.2,3.8), + Pit([12,17],1.2,2.5), + Pit([7,17],2.0,5.0), + Pit([1,17],1.8,3.6), + ]), + Trial(Date(2019, 12, 5), 10, 0, [17, 16], [ + Pit([17,4],1.3,3.1), + Pit([10,4],1.5,3.1), + Pit([16,9],1.4,2.9), + ]), + Trial(Date(2019, 12, 19), 12, 4, [8,7], [ + Pit([4,7],.8,.9), + Pit([3,5],.9,.8), + Pit([8,2],2,3), + ]), + Trial(Date(2019, 12, 20), 5, 0, [8,7], [ + Pit([6,7],.8,.8), + Pit([2,2],.8,.8), + Pit([8,6],.8,.8), + Pit([2,9],.8,.8), + ]), +] |