code: def _AtB_plus_BtA(A: BlockMatrix, B: BlockMatrix) -> BlockMatrix:
      """Compute `(A.T @ B) + (B.T @ A)`, used in estimating IBD0 (k0).
  
      Parameters
      ----------
      A : :class:`.BlockMatrix`
      B : :class:`.BlockMatrix`
  
      Returns
      -------
      :class:`.BlockMatrix`
          `(A.T @ B) + (B.T @ A)`
      """
      temp = (A.T @ B).checkpoint(new_temp_file())
      return temp + temp.T
  
imports: from typing import Optional
  import hail
  import hail.expr.aggregators
  from hail import ir
  from hail.backend.spark_backend import SparkBackend
  from hail.expr import ArrayNumericExpression, BooleanExpression, CallExpression, Float64Expression, analyze, expr_array, expr_call, expr_float64, matrix_table_source
  from hail.expr.types import tarray
  from hail.linalg import BlockMatrix
  from hail.table import Table
  from hail.typecheck import enumeration, nullable, numeric, typecheck
  from hail.utils import new_temp_file
  from hail.utils.java import Env
  from ..pca import _hwe_normalized_blanczos, hwe_normalized_pca
label_desc: Use image node_id 5 for calling a global function with example usage: _AtB_plus_BtA(A, B) and returns: unknown