aboutsummaryrefslogtreecommitdiff
path: root/py/data.py
diff options
context:
space:
mode:
authorHolden Rohrer <hr@hrhr.dev>2020-07-06 18:20:32 -0400
committerHolden Rohrer <hr@hrhr.dev>2020-07-06 18:41:47 -0400
commita1d245cfd1979ec78bbc01e5125af80071f8cc42 (patch)
tree9bf0ec38631e4f0879940dc4a0b133d78fc2f17c /py/data.py
parent5a18c8a33b90003a2c930a207f766800883c3622 (diff)
File reorganization
More makefile-friendly
Diffstat (limited to 'py/data.py')
-rw-r--r--py/data.py102
1 files changed, 102 insertions, 0 deletions
diff --git a/py/data.py b/py/data.py
new file mode 100644
index 0000000..de850e8
--- /dev/null
+++ b/py/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),
+ ]),
+]