1
1
import logging
2
2
import os
3
+ import pickle
3
4
from math import floor
4
5
from typing import Optional , Tuple , Union
5
6
@@ -231,7 +232,10 @@ def finalise(self):
231
232
del self .veh_occupancy
232
233
name = f"{ str (self )} .pkl"
233
234
path = os .path .join (self .config .output_path , name )
234
- nx .write_gpickle (self .graph , path )
235
+
236
+ with open (path , 'wb' ) as f :
237
+ pickle .dump (self .graph , f , pickle .HIGHEST_PROTOCOL )
238
+
235
239
del self .graph
236
240
237
241
@@ -435,7 +439,7 @@ def build(self, resources: dict, write_path: Optional[str] = None) -> None:
435
439
)
436
440
else :
437
441
self .logger .debug (f'Selecting links for mode:{ self .mode } .' )
438
- self .elem_gdf = self .elem_gdf .loc [links , :]
442
+ self .elem_gdf = self .elem_gdf .loc [list ( links ) , :]
439
443
440
444
self .elem_ids , self .elem_indices = self .generate_elem_ids (self .elem_gdf )
441
445
@@ -492,7 +496,7 @@ def finalise(self) -> None:
492
496
counts_df = pd .DataFrame (self .counts .flatten (), index = index )[0 ]
493
497
counts_df = counts_df .unstack (level = 'hour' ).sort_index ()
494
498
495
- counts_df ['total' ] = counts_df .sum (1 )
499
+ counts_df ['total' ] = counts_df .sum (1 , numeric_only = True )
496
500
counts_df = counts_df .reset_index ().set_index ('elem' )
497
501
498
502
key = f"{ self .name } _{ self .groupby_person_attribute } "
@@ -510,7 +514,7 @@ def finalise(self) -> None:
510
514
totals_df = pd .DataFrame (
511
515
data = self .counts , index = self .elem_ids , columns = range (0 , self .config .time_periods )
512
516
).sort_index ()
513
- totals_df ['total' ] = totals_df .sum (1 )
517
+ totals_df ['total' ] = totals_df .sum (1 , numeric_only = True )
514
518
515
519
del self .counts
516
520
@@ -590,7 +594,7 @@ def build(self, resources: dict, write_path: Optional[str] = None) -> None:
590
594
)
591
595
else :
592
596
self .logger .debug (f'Selecting links for mode:{ self .mode } .' )
593
- self .elem_gdf = self .elem_gdf .loc [links , :]
597
+ self .elem_gdf = self .elem_gdf .loc [list ( links ) , :]
594
598
595
599
self .elem_ids , self .elem_indices = self .generate_elem_ids (self .elem_gdf )
596
600
@@ -649,7 +653,7 @@ def finalise(self) -> None:
649
653
counts_df = counts_df .unstack (level = 'hour' ).sort_index ()
650
654
# counts_df = counts_df.reset_index().set_index(['elem', self.groupby_person_attribute])
651
655
652
- counts_df ['total' ] = counts_df .sum (1 )
656
+ counts_df ['total' ] = counts_df .sum (1 , numeric_only = True )
653
657
counts_df = counts_df .reset_index ().set_index ('elem' )
654
658
655
659
key = f"{ self .name } _{ self .groupby_person_attribute } "
@@ -667,7 +671,7 @@ def finalise(self) -> None:
667
671
totals_df = pd .DataFrame (
668
672
data = self .counts , index = self .elem_ids , columns = range (0 , self .config .time_periods )
669
673
).sort_index ()
670
- totals_df ['total' ] = totals_df .sum (1 )
674
+ totals_df ['total' ] = totals_df .sum (1 , numeric_only = True )
671
675
672
676
del self .counts
673
677
@@ -740,7 +744,7 @@ def build(self, resources: dict, write_path: Optional[str] = None) -> None:
740
744
)
741
745
else :
742
746
self .logger .debug (f'Selecting links for mode:{ self .mode } .' )
743
- self .elem_gdf = self .elem_gdf .loc [links , :]
747
+ self .elem_gdf = self .elem_gdf .loc [list ( links ) , :]
744
748
745
749
self .elem_ids , self .elem_indices = self .generate_elem_ids (self .elem_gdf )
746
750
@@ -1038,7 +1042,7 @@ def build(self, resources: dict, write_path: Optional[str] = None) -> None:
1038
1042
)
1039
1043
else :
1040
1044
self .logger .debug (f'Selecting links for mode:{ self .mode } .' )
1041
- self .elem_gdf = self .elem_gdf .loc [links , :]
1045
+ self .elem_gdf = self .elem_gdf .loc [list ( links ) , :]
1042
1046
1043
1047
self .elem_ids , self .elem_indices = self .generate_elem_ids (self .elem_gdf )
1044
1048
@@ -1150,7 +1154,7 @@ def finalise(self):
1150
1154
counts_df = pd .DataFrame (self .counts .flatten (), index = index )[0 ]
1151
1155
counts_df = counts_df .unstack (level = 'hour' ).sort_index ()
1152
1156
counts_df = counts_df .reset_index ().set_index (['elem' , self .groupby_person_attribute ])
1153
- counts_df ['total' ] = counts_df .sum (1 )
1157
+ counts_df ['total' ] = counts_df .sum (1 , numeric_only = True )
1154
1158
counts_df = counts_df .reset_index ().set_index ('elem' )
1155
1159
key = f"{ self .name } _{ self .groupby_person_attribute } "
1156
1160
counts_df = self .elem_gdf .join (
@@ -1168,7 +1172,7 @@ def finalise(self):
1168
1172
totals_df = pd .DataFrame (
1169
1173
data = self .counts , index = self .elem_ids , columns = range (0 , self .config .time_periods )
1170
1174
).sort_index ()
1171
- totals_df ['total' ] = totals_df .sum (1 )
1175
+ totals_df ['total' ] = totals_df .sum (1 , numeric_only = True )
1172
1176
1173
1177
del self .counts
1174
1178
@@ -1435,7 +1439,7 @@ def build(self, resources: dict, write_path: Optional[str] = None) -> None:
1435
1439
)
1436
1440
else :
1437
1441
self .logger .debug (f'Filtering stops for mode:{ self .mode } .' )
1438
- self .elem_gdf = self .elem_gdf .loc [viable_stops , :]
1442
+ self .elem_gdf = self .elem_gdf .loc [list ( viable_stops ) , :]
1439
1443
1440
1444
self .elem_ids , self .elem_indices = self .generate_elem_ids (self .elem_gdf )
1441
1445
@@ -1527,7 +1531,7 @@ def finalise(self):
1527
1531
counts_df = pd .DataFrame (data .flatten (), index = index )[0 ]
1528
1532
counts_df = counts_df .unstack (level = 'hour' ).sort_index ()
1529
1533
counts_df = counts_df .reset_index ().set_index (['elem' , self .groupby_person_attribute ])
1530
- counts_df ['total' ] = counts_df .sum (1 )
1534
+ counts_df ['total' ] = counts_df .sum (1 , numeric_only = True )
1531
1535
counts_df = counts_df .reset_index ().set_index ('elem' )
1532
1536
1533
1537
# Create volume counts output
@@ -1544,7 +1548,7 @@ def finalise(self):
1544
1548
totals_df = pd .DataFrame (
1545
1549
data = data , index = self .elem_ids , columns = range (0 , self .config .time_periods )
1546
1550
).sort_index ()
1547
- totals_df ['total' ] = totals_df .sum (1 )
1551
+ totals_df ['total' ] = totals_df .sum (1 , numeric_only = True )
1548
1552
1549
1553
del data
1550
1554
@@ -1621,7 +1625,7 @@ def build(self, resources: dict, write_path: Optional[str] = None) -> None:
1621
1625
)
1622
1626
else :
1623
1627
self .logger .debug (f'Filtering stops for mode:{ self .mode } .' )
1624
- self .elem_gdf = self .elem_gdf .loc [viable_stops , :]
1628
+ self .elem_gdf = self .elem_gdf .loc [list ( viable_stops ) , :]
1625
1629
1626
1630
self .elem_ids , self .elem_indices = self .generate_elem_ids (self .elem_gdf )
1627
1631
@@ -1751,7 +1755,7 @@ def finalise(self):
1751
1755
counts_df .index .name = n
1752
1756
1753
1757
counts_df = counts_df .reset_index ().set_index (['origin' , 'destination' , str (self .groupby_person_attribute )])
1754
- counts_df ['total' ] = counts_df .sum (1 )
1758
+ counts_df ['total' ] = counts_df .sum (1 , numeric_only = True )
1755
1759
1756
1760
counts_df ['geometry' ] = [
1757
1761
LineString ([o , d ]) for o , d in zip (counts_df .origin_geometry , counts_df .destination_geometry )
@@ -1769,7 +1773,7 @@ def finalise(self):
1769
1773
# calc sum across all recorded attribute classes
1770
1774
totals_df = counts_df .reset_index ().groupby (
1771
1775
['origin' , 'destination' ]
1772
- ).sum ().reset_index ().set_index (['origin' , 'destination' ])
1776
+ ).sum (numeric_only = True ).reset_index ().set_index (['origin' , 'destination' ])
1773
1777
1774
1778
# Join stop data and build geometry
1775
1779
for n in ("origin" , "destination" ):
@@ -1867,7 +1871,7 @@ def build(self, resources: dict, write_path: Optional[str] = None) -> None:
1867
1871
)
1868
1872
else :
1869
1873
self .logger .debug (f'Filtering stops for mode:{ self .mode } .' )
1870
- self .elem_gdf = self .elem_gdf .loc [viable_stops , :]
1874
+ self .elem_gdf = self .elem_gdf .loc [list ( viable_stops ) , :]
1871
1875
1872
1876
self .elem_ids , self .elem_indices = self .generate_elem_ids (self .elem_gdf )
1873
1877
@@ -2001,7 +2005,7 @@ def finalise(self):
2001
2005
2002
2006
counts_df = counts_df .reset_index ().set_index (names + ['veh_counts' ])
2003
2007
counts_df ['route' ] = counts_df .index .get_level_values ('veh_id' ).map (self .veh_route )
2004
- counts_df ['total' ] = counts_df .sum (1 )
2008
+ counts_df ['total' ] = counts_df .sum (1 , numeric_only = True )
2005
2009
2006
2010
counts_df ['geometry' ] = [LineString ([o , d ]) for o , d in zip (
2007
2011
counts_df .from_stop_geometry , counts_df .to_stop_geometry )]
@@ -2022,7 +2026,7 @@ def finalise(self):
2022
2026
self .result_dfs [key ] = counts_df
2023
2027
2024
2028
# calc sum across all recorded attribute classes
2025
- totals_df = counts_df .reset_index ().groupby (['from_stop' , 'to_stop' , 'veh_id' , 'route' , 'veh_counts' ]).sum ()
2029
+ totals_df = counts_df .reset_index ().groupby (['from_stop' , 'to_stop' , 'veh_id' , 'route' , 'veh_counts' ]).sum (numeric_only = True )
2026
2030
2027
2031
# Join stop data and build geometry
2028
2032
for n in ("from_stop" , "to_stop" ):
0 commit comments