RDG-Networks 0.2.3__py3-none-any.whl → 0.2.4__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: RDG-Networks
3
- Version: 0.2.3
3
+ Version: 0.2.4
4
4
  Summary: Most of the code from the RDG Networks project
5
5
  Home-page: https://github.com/NiekMooij/RDG_networks
6
6
  Author: Niek Mooij
@@ -3,12 +3,12 @@ RDG_networks/__init__.py,sha256=aCfGs87cJn0Tp5GqTpFXPOEfJPpR4Tnnz819Kk_0t84,661
3
3
  RDG_networks/draw_segments.py,sha256=U53N5GXmQHWKdM1Q1faP_EGKjc6enOu2mcsunzSFpP0,984
4
4
  RDG_networks/generate_line_network.py,sha256=lJ4rhObim3WcEQoebomewRQKWNJC5phFyFYRW7qjXIg,1127
5
5
  RDG_networks/generate_line_segments.py,sha256=QV8_k7q6TD5c7Hcb2Ms_apEdWYw4XdLr7rdJgh49v4Q,9004
6
- RDG_networks/generate_line_segments_dynamic.py,sha256=hAdqjyNgkEUnm7CprSKeEu7yCbvFBY2OHnkB_smubuA,7438
6
+ RDG_networks/generate_line_segments_dynamic.py,sha256=GoIhGXYbcvjqR5BJCnkvAGp8QBpzsE1ZSbl2k9XAOGI,7531
7
7
  RDG_networks/get_intersection_segments.py,sha256=mXB5qCy1oOps4Vu1mX6flW6v_4Xxc71YK41yOWjJX8o,2797
8
8
  RDG_networks/sample_in_polygon.py,sha256=qpPpW-Da1vK8ZkVWMJ0zBsE8IgyMB619gCdybSkzKSQ,1605
9
- RDG_Networks-0.2.3.dist-info/LICENSE.txt,sha256=BHUkX2GsdTr30sKmVZ1MLGR1njnx17EX_oUuuSVZZPE,598
10
- RDG_Networks-0.2.3.dist-info/METADATA,sha256=oU7JLuH6AAby1lALPMtF-YzJ4nA81KeR3ww04YAgT4k,2422
11
- RDG_Networks-0.2.3.dist-info/WHEEL,sha256=Xo9-1PvkuimrydujYJAjF7pCkriuXBpUPEjma1nZyJ0,92
12
- RDG_Networks-0.2.3.dist-info/entry_points.txt,sha256=Htsh9jRabMCGHwXayUwZoSy-9IFGFrMB1X9hgyyr3_8,350
13
- RDG_Networks-0.2.3.dist-info/top_level.txt,sha256=4gUUYafD5Al9V8ZSiViVGYHpRMMCsCBcGgCNodk9Syg,13
14
- RDG_Networks-0.2.3.dist-info/RECORD,,
9
+ RDG_Networks-0.2.4.dist-info/LICENSE.txt,sha256=BHUkX2GsdTr30sKmVZ1MLGR1njnx17EX_oUuuSVZZPE,598
10
+ RDG_Networks-0.2.4.dist-info/METADATA,sha256=UAxR8eK6DyBT3B1C1O9chrCUnYpWfhh7YcytLETtYMc,2422
11
+ RDG_Networks-0.2.4.dist-info/WHEEL,sha256=Xo9-1PvkuimrydujYJAjF7pCkriuXBpUPEjma1nZyJ0,92
12
+ RDG_Networks-0.2.4.dist-info/entry_points.txt,sha256=Htsh9jRabMCGHwXayUwZoSy-9IFGFrMB1X9hgyyr3_8,350
13
+ RDG_Networks-0.2.4.dist-info/top_level.txt,sha256=4gUUYafD5Al9V8ZSiViVGYHpRMMCsCBcGgCNodk9Syg,13
14
+ RDG_Networks-0.2.4.dist-info/RECORD,,
@@ -2,6 +2,7 @@ import numpy as np
2
2
  import random
3
3
  from shapely.geometry import LineString
4
4
  from typing import List, Dict, Any, Tuple
5
+ import matplotlib.pyplot as plt
5
6
 
6
7
  from .Classes import LineSegment
7
8
 
@@ -88,7 +89,7 @@ def update_for_border_intersections(lines: List[Dict[str, Any]]) -> List[Dict[st
88
89
 
89
90
  return lines
90
91
 
91
- def check_and_update_when_intersect(lines: List[Dict[str, Any]], epsilon: float) -> List[Dict[str, Any]]:
92
+ def check_and_update_when_intersect(lines: List[Dict[str, Any]], epsilon: float, dt: float) -> List[Dict[str, Any]]:
92
93
  """
93
94
  Check for intersections between lines and update their properties accordingly.
94
95
 
@@ -99,36 +100,37 @@ def check_and_update_when_intersect(lines: List[Dict[str, Any]], epsilon: float)
99
100
  Returns:
100
101
  List[Dict[str, Any]]: The updated list of lines after handling intersections.
101
102
  """
103
+
102
104
  for index1, j1 in enumerate(lines):
103
105
  for index2, j2 in enumerate(lines):
104
106
  if j1['id'][:-2] == j2['id'][:-2] or index2 < index1:
105
107
  continue
106
-
108
+
107
109
  if j1['growth_status'] == False and j2['growth_status'] == False:
108
110
  continue
109
-
111
+
110
112
  line1 = LineString([j1['start'], j1['end']])
111
113
  line2 = LineString([j2['start'], j2['end']])
112
-
114
+
113
115
  intersection_pt = line1.intersection(line2)
114
116
 
115
117
  if not intersection_pt.is_empty:
116
118
  d1 = np.linalg.norm(np.array(j1['start']) - np.array([intersection_pt.x, intersection_pt.y]))
117
119
  d2 = np.linalg.norm(np.array(j2['start']) - np.array([intersection_pt.x, intersection_pt.y]))
118
120
 
119
- arrival_1 = j1['introduction_time'] + d1 / epsilon
120
- arrival_2 = j2['introduction_time'] + d2 / epsilon
121
+ arrival_1 = j1['introduction_time'] + d1 / epsilon * dt
122
+ arrival_2 = j2['introduction_time'] + d2 / epsilon * dt
121
123
 
122
124
  if arrival_1 > arrival_2:
123
125
  lines[index1]['end'] = (intersection_pt.x, intersection_pt.y)
124
126
  lines[index1]['neighbors_initial'] = lines[index1]['neighbors_initial'] + [j2['id'][:-2]]
125
- lines[index1]['growth_status'] = False
127
+ lines[index1]['growth_status'] = False
126
128
 
127
129
  else:
128
130
  lines[index2]['end'] = (intersection_pt.x, intersection_pt.y)
129
131
  lines[index2]['neighbors_initial'] = lines[index2]['neighbors_initial'] + [j1['id'][:-2]]
130
132
  lines[index2]['growth_status'] = False
131
-
133
+
132
134
  return lines
133
135
 
134
136
  def transform_to_standard_lines(lines: List[Dict[str, Any]]) -> List[LineSegment]:
@@ -173,7 +175,7 @@ def generate_line_segments_dynamic(size: int, dt: float, epsilon: float, time: f
173
175
  """
174
176
  lines = []
175
177
  line_id, t, t_total = 1, 0, 0
176
-
178
+
177
179
  # Stop loop whenever we have enough lines and all lines have stopped growing
178
180
  while len(lines) / 2 < size or np.any([item['growth_status'] for item in lines]):
179
181
 
@@ -185,17 +187,18 @@ def generate_line_segments_dynamic(size: int, dt: float, epsilon: float, time: f
185
187
  if time == 0:
186
188
  number_of_lines_to_add = size
187
189
  else:
188
- number_of_lines_to_add = int(t - (t % time))
190
+ number_of_lines_to_add = int(t / time)
191
+
189
192
  for _ in range(number_of_lines_to_add):
190
193
  lines = add_new_line(lines, line_id, t_total, angles=angles)
191
194
  line_id += 1
192
-
193
- t = 0
195
+
196
+ t = 0
194
197
 
195
198
  lines = grow_lines(lines, epsilon)
196
199
  lines = update_for_border_intersections(lines)
197
- lines = check_and_update_when_intersect(lines, epsilon)
198
-
200
+ lines = check_and_update_when_intersect(lines, epsilon, dt)
201
+
199
202
  lines = transform_to_standard_lines(lines)
200
203
 
201
204
  return lines