Source code for ai2_kit.lib.plumed

import pandas as pd
from typing import List, Union


[docs] def load_colvar_from_files(*files): """ load plumed colvar from multiple files and concatenate into a single DataFrame """ fragments = [] for file in files: with open(file) as f: fragments.append(load_colvar(f)) return pd.concat(fragments)
[docs] def load_colvar(fp, skip='#! FIELDS'): """ load plumed colvar file as DataFrame :param fp: file pointer :param skip: skip the header line :return: DataFrame """ line = next(fp) if not line.startswith(skip): raise ValueError(f'Invalid colvar file header: {line}') names = line[len(skip):].strip().split() return pd.read_csv(fp, delim_whitespace=True, names=names)
[docs] def get_cvs_bias_from_df(df, cv_names: Union[List[str], str], bias_name: str): """ get collective variables and bias from pandas dataframe :param df: pandas dataframe :param cv_names: names of collective variable columns :param bias_name: name of bias column :return: cvs, bias in numpy array for gaussian_kde """ if isinstance(cv_names, str): cv_names = [cv_names] if len(cv_names) == 1: cvs = df[cv_names[0]].values else: cvs = df[cv_names].values.T bias = df[bias_name].values return cvs, bias