Source code for rpxdock.sampling.xhier_util

import numpy as np, logging
from rpxdock.sampling.xform_hierarchy import XformHier_f4

log = logging.getLogger(__name__)

[docs]def xform_hier_guess_sampling_covrads( hierarchy_depth, sampling_lever, base_sample_resl, base_cart_resl, base_ori_resl, xhier_cart_fudge_factor, xhier_ori_fudge_factor, **kw, ): resl = base_sample_resl * 2**(hierarchy_depth - 1) log.debug("low tot resl {resl} {base_sample_resl}") cart_resl = resl / np.sqrt(2) ori_resl = resl / np.sqrt(2) / sampling_lever * 180 / np.pi cart_resl_fudge = cart_resl * xhier_cart_fudge_factor ori_resl_fudge = ori_resl * xhier_ori_fudge_factor xh = XformHier_f4([0, 0, 0], [1, 1, 1], [1, 1, 1], ori_resl_fudge) log.debug( f"lever {sampling_lever:7.3f} resoultion {resl:7.3f} cart {cart_resl:7.3f}" + f"ori {xh.ori_resl:7.3f} ori actual/request {xh.ori_resl / ori_resl:7.3f}", ) ori_resl_fudge = xh.ori_resl ori_resl = ori_resl_fudge / xhier_ori_fudge_factor h_resl = list() for i in range(hierarchy_depth): h_cart_resl = cart_resl * 0.5**i h_ori_resl = ori_resl * 0.5**i hb_cart_resl = h_cart_resl + base_cart_resl hb_ori_resl = h_ori_resl + base_ori_resl h_cart_resl_fudge = h_cart_resl * xhier_cart_fudge_factor h_ori_resl_fudge = h_ori_resl * xhier_ori_fudge_factor log.debug(f"stage {i} samp: {h_cart_resl:6.3f} {h_ori_resl:6.3f}" + f"score: {hb_cart_resl:6.3f} {hb_ori_resl:6.3f}" + f"fugded: {h_cart_resl_fudge:6.3f} {h_ori_resl_fudge:6.3f}") h_resl.append((hb_cart_resl, hb_ori_resl)) cart_side = cart_resl * 2.0 / np.sqrt(3) nsamp_per_nm3 = int(xh.size(0) * ((1000 / cart_side) / 100)**3) return h_resl, (cart_resl_fudge, ori_resl_fudge), nsamp_per_nm3