diff --git a/src/soap/soapy/util.py b/src/soap/soapy/util.py index 96666d15c022ddba580e8bd20dbe9d3887692371..b4705e139d637d9fae39e5bf96a5b2fc633b5976 100644 --- a/src/soap/soapy/util.py +++ b/src/soap/soapy/util.py @@ -66,6 +66,19 @@ def mp_compute_column_block(gi, gj_list, kfct): krow.append(k) return krow +def mp_compute_column_block_idx(gi, gj_list, kfct): + """ + Evaluates kfct for each pair (i, j), with j from j_list + """ + krow = [] + for gj in gj_list: + if gj < gi: + k = 0. + else: + k = kfct(gi, gj) + krow.append(k) + return krow + def compute_upper_triangle( kfct, g_list, @@ -79,7 +92,7 @@ def compute_upper_triangle( gi = g_list[i] for j in range(i, dim): gj = g_list[j] - kij = kfct(gi, gj) + kij = kfct_primed(gi, gj) kmat[i,j] = kij kmat[j,i] = kij return kmat @@ -93,6 +106,7 @@ def mp_compute_upper_triangle( tstart_twall=(None,None), backup=True, verbose=True, + embed_idx=True, **kwargs): """ Compute kernel matrix computed from pairs of objects in object list @@ -110,8 +124,9 @@ def mp_compute_upper_triangle( t_wall = tstart_twall[1] dim = len(g_list) kmat = np.zeros((dim,dim)) - # Embed mp index in g-list objects - for mp_idx, g in enumerate(g_list): g.mp_idx = mp_idx + if embed_idx: + # Embed mp index in g-list objects + for mp_idx, g in enumerate(g_list): g.mp_idx = mp_idx # Divide onto column blocks col_idcs = np.arange(len(g_list)) col_div_list = np.array_split(col_idcs, n_blocks) @@ -130,7 +145,7 @@ def mp_compute_upper_triangle( pool = mp.Pool(processes=n_procs) # Prime mp function mp_compute_column_block_primed = fct.partial( - mp_compute_column_block, + mp_compute_column_block if embed_idx else mp_compute_column_block_idx, gj_list=gj_list, kfct=kfct_primed) # Map & close diff --git a/src/soap/tools/loadwrite.py b/src/soap/tools/loadwrite.py index 391d1d6cd965b89838aaa4b85b7f12825dd91405..30ca6c56a3c496ba09abd0ff49c60f94148510b8 100644 --- a/src/soap/tools/loadwrite.py +++ b/src/soap/tools/loadwrite.py @@ -46,8 +46,8 @@ def structure_from_ase( log=None): # NOTE Center of mass is computed without considering PBC => Requires unwrapped coordinates structure = None - frag_bond_matrix = None - atom_bond_matrix = None + frag_bond_matrix = np.array([], dtype=bool) + atom_bond_matrix = np.array([], dtype=bool) frag_labels = [] atom_labels = [] # System properties