Source code for deepmd.model.model_stat

import numpy as np
from collections import defaultdict

def _make_all_stat_ref(data, nbatches):
    all_stat = defaultdict(list)
    for ii in range(data.get_nsystems()) :
        for jj in range(nbatches) :
            stat_data = data.get_batch (sys_idx = ii)
            for dd in stat_data:
                if dd == "natoms_vec":
                    stat_data[dd] = stat_data[dd].astype(np.int32) 
                all_stat[dd].append(stat_data[dd])        
    return all_stat


[docs]def make_stat_input(data, nbatches, merge_sys = True): """ pack data for statistics Parameters ---------- data: The data merge_sys: bool (True) Merge system data Returns ------- all_stat: A dictionary of list of list storing data for stat. if merge_sys == False data can be accessed by all_stat[key][sys_idx][batch_idx][frame_idx] else merge_sys == True can be accessed by all_stat[key][batch_idx][frame_idx] """ all_stat = defaultdict(list) for ii in range(data.get_nsystems()) : sys_stat = defaultdict(list) for jj in range(nbatches) : stat_data = data.get_batch (sys_idx = ii) for dd in stat_data: if dd == "natoms_vec": stat_data[dd] = stat_data[dd].astype(np.int32) sys_stat[dd].append(stat_data[dd]) for dd in sys_stat: if merge_sys: for bb in sys_stat[dd]: all_stat[dd].append(bb) else: all_stat[dd].append(sys_stat[dd]) return all_stat
[docs]def merge_sys_stat(all_stat): first_key = list(all_stat.keys())[0] nsys = len(all_stat[first_key]) ret = defaultdict(list) for ii in range(nsys): for dd in all_stat: for bb in all_stat[dd][ii]: ret[dd].append(bb) return ret