From 125118d9d75a068df2c08d9b7ddb337288ee8544 Mon Sep 17 00:00:00 2001 From: Matt Johnson Date: Fri, 10 Jan 2025 20:53:54 -0800 Subject: [PATCH] include distances from all adsorbate/TS atoms in fingerprint to identify site uniqueness --- pynta/coveragedependence.py | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/pynta/coveragedependence.py b/pynta/coveragedependence.py index cb2d6159..ed54e8b5 100644 --- a/pynta/coveragedependence.py +++ b/pynta/coveragedependence.py @@ -402,7 +402,7 @@ def generate_pair_geometries(adpath1,adpath2,slabpath,metal,facet,adinfo1=None,a ad2_geoms.append(ad2s[i]) - inds = get_unique_site_inds(ad2_sites,slab,fixed_point=ad1_sites[0]["position"]) + inds = get_unique_site_inds(ad2_sites,slab,fixed_points=[x["position"] for x in ad1_sites]) for i in inds: # if any(sites_match(ad2_sites[i],s,slab) for s in ad1_to_ad1_sites[j]): @@ -546,16 +546,19 @@ def generate_pair_geometries(adpath1,adpath2,slabpath,metal,facet,adinfo1=None,a return adpairs,pairmols -def get_unique_site_inds(sites,slab,fixed_point=None,tol=0.15): +def get_unique_site_inds(sites,slab,fixed_points=None,tol=0.15): fingerprints = [] for k,site in enumerate(sites): - if fixed_point is None: + if fixed_points is None: fingerprints.append((site["morphology"],site["site"])) else: - bd,d = get_distances([site["position"]], [fixed_point], cell=slab.cell, pbc=(True,True,False)) - xydist = np.linalg.norm(bd[0][0][:2]) - zdist = bd[0][0][2] - fingerprints.append((site["morphology"],site["site"],xydist,zdist,)) + dists = [site["morphology"],site["site"]] + for fixed_point in fixed_points: + bd,d = get_distances([site["position"]], [fixed_point], cell=slab.cell, pbc=(True,True,False)) + xydist = np.linalg.norm(bd[0][0][:2]) + zdist = bd[0][0][2] + dists.extend([xydist,zdist]) + fingerprints.append(tuple(dists)) unique_sites = [] unique_inds = []