Source code for resimpy.util.random.Ordering

__version__ = "v1.0"
__copyright__ = "Copyright 2022"
__license__ = "MIT"
__author__ = "Adam Cribbs lab"

import numpy as np
import pandas as pd
from functools import wraps


[docs]class ordering(object): def __init__(self, method): self.method = method def __call__(self, deal): if self.method == 'shuffle': order = self.shuffle elif self.method == 'permute': order = self.permute else: order = self.shuffle @wraps(deal) def switch(dself, *args, **kwargs): # print(args) # print(kwargs) print('======>ordering...') res2p = deal(dself, **kwargs) # print(res2p['data'].shape[0]) res2p['data'] = order( data=res2p['data'], # use_seed=kwargs['data'], # seed=kwargs['data'], ) # print(res2p['data']) return res2p return switch
[docs] def shuffle(self, data, use_seed=True, seed=1): num_samples = len(data) if isinstance(data, pd.DataFrame): print('shuffle') if use_seed: state = np.random.RandomState(seed) data = data.iloc[state.shuffle(num_samples)].reset_index(drop=True) else: data = data.iloc[np.random.shuffle(num_samples)].reset_index(drop=True) elif type(data) is np.ndarray: if use_seed: state = np.random.RandomState(seed) state.shuffle(data) else: np.random.shuffle(data) else: if use_seed: state = np.random.RandomState(seed) ids = state.shuffle(data) data = [data[i - 1] for i in ids] else: ids = np.random.shuffle(data) data = [data[i - 1] for i in ids] return data
[docs] def permute(self, ): pass