Source code for quetzal.analysis.on_demand

# -*- coding: utf-8 -*-

[docs]def node_path(path): return { int(p.split('node_')[1]) for p in path if type(p) is str and 'node' in p }
[docs]def select(row, link_checkpoints, node_checkpoints): links, nodes = link_checkpoints, node_checkpoints bool_nodes = row['node_path'] >= nodes if nodes else True bool_links = row['pt_path'] >= links if links else True return bool_nodes & bool_links
[docs]def checkpoint_demand( od_stack, link_checkpoints, node_checkpoints, volume_columns=['volume'], suffixe='' ): df = od_stack.copy() df['select_bool'] = df.apply( lambda r: select(r, link_checkpoints, node_checkpoints), axis=1 ) for column in volume_columns: df[column + suffixe] = df[column] * df['select_bool'] return df