ladim 2.1.6__py3-none-any.whl → 2.1.7__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
ladim/__init__.py CHANGED
@@ -1,3 +1,3 @@
1
- __version__ = '2.1.6'
1
+ __version__ = '2.1.7'
2
2
 
3
3
  from .main import main, run
ladim/state.py CHANGED
@@ -1,4 +1,3 @@
1
- import pandas as pd
2
1
  import numpy as np
3
2
 
4
3
 
@@ -14,14 +13,17 @@ class State:
14
13
  def __init__(self):
15
14
  self._num_released = 0
16
15
  self._varnames = set()
17
- self._data = pd.DataFrame()
16
+ self._data = dict() # type: dict[str, np.ndarray]
18
17
 
19
18
  @property
20
19
  def size(self):
21
20
  """
22
21
  Current number of particles
23
22
  """
24
- return len(self._data)
23
+ keys = list(self._data.keys())
24
+ if len(keys) == 0:
25
+ return 0
26
+ return len(self._data[keys[0]])
25
27
 
26
28
  @property
27
29
  def released(self):
@@ -42,23 +44,35 @@ class State:
42
44
  if not particles:
43
45
  return
44
46
 
45
- num_new_particles = next(len(v) for v in particles.values())
46
- particles['pid'] = np.arange(num_new_particles) + self._num_released
47
- particles['alive'] = np.ones(num_new_particles, dtype=bool)
48
- if 'active' in particles:
49
- particles['active'] = np.array(particles['active'], dtype=bool)
47
+ # Check that input has correct format
48
+ num_new = next(len(v) for v in particles.values())
49
+ fields = {} # type: dict[str, np.ndarray]
50
+ for k, v in particles.items():
51
+ fields[k] = np.asarray(v)
52
+ if not np.shape(fields[k]) == (num_new, ):
53
+ raise ValueError('Unequal number of array elements in input')
54
+
55
+ # Add standard variables
56
+ fields['pid'] = np.arange(num_new) + self._num_released
57
+ fields['alive'] = np.ones(num_new, dtype=bool)
58
+ if 'active' in fields:
59
+ fields['active'] = np.array(fields['active'], dtype=bool)
50
60
  else:
51
- particles['active'] = np.ones(num_new_particles, dtype=bool)
52
-
53
- new_particles = pd.DataFrame(data=particles)
54
- self._data = pd.concat(
55
- objs=[self._data, new_particles],
56
- axis='index',
57
- ignore_index=True,
58
- join='outer',
59
- )
60
-
61
- self._num_released += num_new_particles
61
+ fields['active'] = np.ones(num_new, dtype=bool)
62
+
63
+ # Concatenate old and new particles
64
+ newdata = {} # type: dict[str, np.ndarray]
65
+ num_old = self.size
66
+ for k, v_new in fields.items():
67
+ if k in self._data:
68
+ v_old = self._data[k]
69
+ else:
70
+ v_old = np.zeros(num_old, dtype=v_new.dtype)
71
+
72
+ newdata[k] = np.concatenate([v_old, v_new], dtype=v_old.dtype)
73
+
74
+ self._data = newdata
75
+ self._num_released += num_new
62
76
 
63
77
  def remove(self, particles):
64
78
  """
@@ -71,13 +85,16 @@ class State:
71
85
  return
72
86
 
73
87
  keep = ~particles
74
- self._data = self._data.iloc[keep]
88
+ for k in self._data.keys():
89
+ self._data[k] = self._data[k][keep]
75
90
 
76
91
  def __getitem__(self, item):
77
- return self._data[item].values
92
+ return self._data[item]
78
93
 
79
94
  def __setitem__(self, item, value):
80
- self._data[item] = value
95
+ v = np.asarray(value)
96
+ assert v.shape == (self.size, )
97
+ self._data[item] = v
81
98
 
82
99
  def __len__(self):
83
100
  return self.size
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ladim
3
- Version: 2.1.6
3
+ Version: 2.1.7
4
4
  Summary: Lagrangian Advection and Diffusion Model
5
5
  Home-page: https://github.com/pnsaevik/ladim
6
6
  Author: Bjørn Ådlandsvik
@@ -1,4 +1,4 @@
1
- ladim/__init__.py,sha256=4K0u0bGFAIfFFuiQ5hs1xrHxa8YmuIGeFH2JKcDKM-I,51
1
+ ladim/__init__.py,sha256=RcAneNkq971JmIjd87hY3EyxPQJdcGxn4iPnOD5VZ64,51
2
2
  ladim/__main__.py,sha256=I1AOHBQDwQNe3fVmDMyC84JcriqidOEURoeoJSOCTzg,24
3
3
  ladim/config.py,sha256=A-yLStNqqDwh_wMCIsmd8cmaXuUvz698IMlYvGZT5tE,5710
4
4
  ladim/forcing.py,sha256=DgBi2qEH5etOHTL3fWbPjjUvnLPDU50tknHWdWaNqeI,19061
@@ -9,7 +9,7 @@ ladim/output.py,sha256=AlP3_FGKU_bmSLRyiR3cbbNCwMVkYcuwOjoy0397-CI,8307
9
9
  ladim/release.py,sha256=P9KnZminvFPMfAJPizo72d6z8-X5ttM9Qw9p_yPtfpQ,13150
10
10
  ladim/sample.py,sha256=n8wRGd_VsW_qyQe1ZoTpmfZcdcwB929vsM8PoKG6JTs,8292
11
11
  ladim/solver.py,sha256=bfpb2z5ZU0k8eoFWliMMbafYddL7-AfoTvNONO43apo,785
12
- ladim/state.py,sha256=xDP3DfuG7NZyYOkFr-KUotrbwPIGUVHhqy9Gisl-85Q,2872
12
+ ladim/state.py,sha256=tHMn4eB2XJ3Ua-uqaKQY_UR56ErDapSbqdY2bd-040g,3550
13
13
  ladim/tracker.py,sha256=Dpf26jAyu1xAuySRsv3-sOCXJhY3sDvmzUiUyMRUYqU,5118
14
14
  ladim/utilities.py,sha256=a3ZK3OuJRfzjEDAfASsuEKItyWC-4GsGUWKEZp1hg0E,1790
15
15
  ladim/gridforce/ROMS.py,sha256=VzvKXyyYSdQayCszTZQOh36aXyTaCJ7rxOhGDRjbPhE,27796
@@ -19,14 +19,14 @@ ladim/gridforce/zROMS.py,sha256=4bnrmcXiWpCAUch9uqd_0XmyKRh-Ll6sFvIHiTbTOOg,2399
19
19
  ladim/ibms/__init__.py,sha256=YUbvHnFXfSJ0lTl6elc-ajyIh1LDqWYlX7Q_MHuNce4,939
20
20
  ladim/ibms/light.py,sha256=POltHmKkX8-q3t9wXyfcseCKEq9Bq-kX1WEJYsr1lNQ,2737
21
21
  ladim/plugins/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
22
- ladim-2.1.6.dist-info/licenses/LICENSE,sha256=BgtXyjNr6Ly9nQ7ZLXKpV3r5kWRLnh5MiN0dxp0Bvfc,1085
22
+ ladim-2.1.7.dist-info/licenses/LICENSE,sha256=BgtXyjNr6Ly9nQ7ZLXKpV3r5kWRLnh5MiN0dxp0Bvfc,1085
23
23
  postladim/__init__.py,sha256=ND-wa5_GNg01Tp0p_1zA1VD804zbfP3o4Cmd8pWU7OE,113
24
24
  postladim/cellcount.py,sha256=nCFu9iJmprubn4YmPB4W0VO02GfEb90Iif7D49w1Kss,2054
25
25
  postladim/kde_plot.py,sha256=GvMWzT6VxIeXKh1cnqaGzR-4jGG_WIHGMLPpRMXIpo4,1628
26
26
  postladim/particlefile.py,sha256=0aif9wYUJ-VrpQKeCef8wB5VCiBB-gWY6sxNCUYviTA,4889
27
27
  postladim/variable.py,sha256=-2aihoppYMMmpSpCqaF31XvpinTMaH3Y01-USDIkbBc,6587
28
- ladim-2.1.6.dist-info/METADATA,sha256=YI0UNYhSahzPv8Za-ekBBFHEMv_yhilg5KAR4i-PVI4,1950
29
- ladim-2.1.6.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
30
- ladim-2.1.6.dist-info/entry_points.txt,sha256=JDlNJo87GJaOkH0-BpAzTPLCrZcuPSdSlHNQ4XmnoRg,41
31
- ladim-2.1.6.dist-info/top_level.txt,sha256=TK8Gl7d6MsrAQvqKG4b6YJCbB4UL46Se3SzsI-sJAuc,16
32
- ladim-2.1.6.dist-info/RECORD,,
28
+ ladim-2.1.7.dist-info/METADATA,sha256=KGCwnDdl7vI0f4q5h5PrrgYVO68gufex-6t9X_wJocc,1950
29
+ ladim-2.1.7.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
30
+ ladim-2.1.7.dist-info/entry_points.txt,sha256=JDlNJo87GJaOkH0-BpAzTPLCrZcuPSdSlHNQ4XmnoRg,41
31
+ ladim-2.1.7.dist-info/top_level.txt,sha256=TK8Gl7d6MsrAQvqKG4b6YJCbB4UL46Se3SzsI-sJAuc,16
32
+ ladim-2.1.7.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (80.9.0)
2
+ Generator: setuptools (80.10.2)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5