Source code for idmtools_calibra.utilities.helper
import itertools
from logging import getLogger
import pandas as pd
import numpy as np
max_exp_name_len = 255
logger = getLogger(__name__)
[docs]def validate_exp_name(exp_name):
if len(exp_name) > max_exp_name_len:
print(
"The experiment name '%s' exceeds the max length %d (%d), please adjust your experiment name. Exiting..." %
(exp_name, max_exp_name_len, len(exp_name)))
return False
else:
return True
[docs]def json_to_pandas(channel_data, bins, channel=None):
"""
A function to convert nested array channel data from a json file to
a pandas.Series with the specified MultiIndex binning.
"""
logger.debug("Converting JSON data from '%s' channel to pandas.Series with %s MultiIndex.", channel, bins.keys())
bin_tuples = list(itertools.product(*bins.values()))
multi_index = pd.MultiIndex.from_tuples(bin_tuples, names=bins.keys())
channel_series = pd.Series(np.array(channel_data).flatten(), index=multi_index, name=channel)
logger.debug('\n%s', channel_series)
return channel_series