code: def phase_by_transmission(g, window_size, copy=True):
      
  
      # setup
      g = np.asarray(g, dtype='i1')
      g = GenotypeArray(g, copy=copy)
      g._values = memoryview_safe(g.values)
      check_ploidy(g.ploidy, 2)
      check_min_samples(g.n_samples, 3)
  
      # phase the progeny
      is_phased = _opt_phase_progeny_by_transmission(g.values)
      g.is_phased = np.asarray(is_phased).view(bool)
  
      # phase the parents
      _opt_phase_parents_by_transmission(g.values, is_phased, window_size)
  
      return g
docs: Phase genotypes in a trio or cross where possible using Mendelian
      transmission.
  
      Parameters
      ----------
      g : array_like, int, shape (n_variants, n_samples, 2)
          Genotype array, with parents as first two columns and progeny as
          remaining columns.
      window_size : int
          Number of previous heterozygous sites to include when phasing each
          parent. A number somewhere between 10 and 100 may be appropriate,
          depending on levels of heterozygosity and quality of data.
      copy : bool, optional
          If False, attempt to phase genotypes in-place. Note that this is
          only possible if the input array has int8 dtype, otherwise a copy is
          always made regardless of this parameter.
  
      Returns
      -------
      g : GenotypeArray
          Genotype array with progeny phased where possible.