def mol_distance_func()

in source/src/molecule-unfolding/utility/MolGeoCalc.py [0:0]


def mol_distance_func(atom_pos_data, check, set):
    max_idx = max([int(num) for num in atom_pos_data.keys()])

    sum_distance = 0

    record_distance = []

    map_set = set

    for left_idx in range(max_idx-1):
        for right_idx in range(left_idx+1, max_idx):
            left_key = str(left_idx+1)
            right_key = str(right_idx+1)

            distance = calc_distance_between_pts([atom_pos_data[left_key]['pts']], [
                                                 atom_pos_data[right_key]['pts']])

            if check == 'initial':
                check_radius_distance = atom_pos_data[left_key]['vdw-radius'] + \
                    atom_pos_data[right_key]['vdw-radius']
                if check_radius_distance > distance:
                    map_set.add((left_key,right_key))
                    logging.debug(
                        f"!!!!!!!!!!!! initial van der waals check fail at {left_key} and {right_key} with check: {check_radius_distance} v.s. real {distance}")
            if check == 'test':
                check_radius_distance = atom_pos_data[left_key]['vdw-radius'] + \
                    atom_pos_data[right_key]['vdw-radius']
                if check_radius_distance > distance and (left_key,right_key) not in map_set:
                    logging.info(
                        f"!!!!!!!!!!!! found van der waals check fail at {left_key} and {right_key} with check: {check_radius_distance} v.s. real {distance}")

            sum_distance = sum_distance + distance

            record_distance.append(distance)

    return sum_distance, record_distance, map_set