aboutsummaryrefslogtreecommitdiff
path: root/py/data.py
blob: de850e83b714dbdad927dcd561c8bd0044221539 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
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),
  ]),
]