# Time-stamp: <Tue 2021-05-11 23:31 ingo> # # Copyright (c) 2016-2021 Pathpy Developers # ============================================================================= from __future__ import annotations from typing import Optional, Union from functools import singledispatch from numpy.random import choice, shuffle, permutation from pathpy import logger from pathpy.models.api import Network from pathpy.models.api import TemporalNetwork # create logger LOG = logger(__name__) # def train_test_split(network: Union[Network, TemporalNetwork], test_size: Optional[float]=0.25, train_size: Optional[float]=None, split: Optional[str]='node') -> tuple(Union[Network,TemporalNetwork], Union[Network, TemporalNetwork]): # raise NotImplementedError('Unsupported type') @singledispatch def train_test_split(network: Network, test_size: Optional[float] = 0.25, train_size: Optional[float] = None, split: Optional[str] = 'node') -> tuple(Network, Network): """Returns a train/test split of a network object. This method is implemented for instances of Network and TemporalNetwork. The train/test split is non-destructive and based on object references, i.e. the function returns new Network instances that contain references to the same node/edge objects. The original network is not affected. Parameters ----------
# Author : Jürgen Hackl <*****@*****.**> # Time-stamp: <Thu 2020-04-02 16:50 juergen> # # Copyright (c) 2016-2019 Pathpy Developers # ============================================================================= from __future__ import annotations from typing import List import datetime from pathpy import logger, tqdm, config from pathpy.core.edge import Edge from pathpy.core.path import Path from pathpy.core.higher_order_network import (HigherOrderNetwork, HigherOrderNode) # create logger log = logger(__name__) class NullModel: """A null model for higher order networks.""" def __init__(self, network): """Initialize the null model""" self.network = network self.order = 0 self.hon = HigherOrderNetwork() def __call__(self, order: int = 1) -> HigherOrderNetwork: """Returns a null model of given order.""" # check if null model was already calculated if order == self.order and self.hon.number_of_nodes() > 0: