ThreeWayDHCross#

class pybrops.breed.prot.mate.ThreeWayDHCross.ThreeWayDHCross(progeny_counter=0, family_counter=0, rng=None, **kwargs)[source]#

Bases: MatingProtocol

Class implementing mating protocols for three-way DH crosses.

Constructor for the concrete class ThreeWayDHCross.

Parameters:
  • progeny_counter (Integral) – Progeny counter. This helps create progeny names.

  • family_counter (Integral) – Family counter. This helps label groups of progenies as originating from the same family.

  • rng (numpy.random.Generator, numpy.random.RandomState) – Random number source.

  • kwargs (dict) – Additional keyword arguments.

Methods

mate

Mate individuals according to a 3-way mate selection scheme.

Attributes

family_counter

Description for property family_counter.

nparent

Number of parents the mating protocol requires.

progeny_counter

Description for property progeny_counter.

rng

Random number generator.

property family_counter: Integral#

Description for property family_counter.

mate(pgmat, xconfig, nmating, nprogeny, miscout=None, nself=0, **kwargs)[source]#

Mate individuals according to a 3-way mate selection scheme.

Example crossing diagram:

sel = [R,F,M,...], nmating = 2, nprogeny = 2, nself = 2
                            pgmat
                              │                                 sel = [R,F,M,...]
                           Rx(FxM)
              ┌───────────────┴───────────────┐                 nmating = 2
           Rx(FxM)                         Rx(FxM)              duplicate cross 2x
              │                               │                 nself = 2
          S0(Rx(FxM))                     S0(Rx(FxM))           first self
              │                               │
          S1(Rx(FxM))                     S1(Rx(FxM))           second self
      ┌───────┴───────┐               ┌───────┴───────┐         DH, nprogeny = 2
DH(S1(Rx(FxM))) DH(S1(Rx(FxM))) DH(S1(Rx(FxM))) DH(S1(Rx(FxM))) final result
Parameters:
  • pgmat (DensePhasedGenotypeMatrix) – A GenotypeMatrix containing candidate breeding individuals.

  • xconfig (numpy.ndarray) –

    Array of shape (ncross,nparent) containing indices specifying a cross configuration. Each index corresponds to an individual in pgmat.

    Where:

    • ncross is the number of crosses to perform.

    • nparent is the number of parents required for a cross.

    Indices are paired as follows:

    • First index is the recurrent parent.

    • Second index is the female parent.

    • Third index is the male parent.

    Example:

    xconfig = [[ 1, 5, 3 ],
               [ 8, 2, 7 ],
               ...,
               [ R, F, M ]]
    recurrent = [1, 8, ..., R]
    female = [5, 2, ..., F]
    male = [3, 7, ..., M]
    

  • nmating (numpy.ndarray) – Number of cross patterns to perform.

  • nprogeny (numpy.ndarray) – Number of doubled haploid progeny to generate per cross.

  • miscout (dict, None, default = None) – Pointer to a dictionary for miscellaneous user defined output. If dict, write to dict (may overwrite previously defined fields). If None, user defined output is not calculated or stored.

  • nself (int, default = 0) – Number of selfing generations post-cross before double haploids are generated.

  • kwargs (dict) – Additional keyword arguments to be passed to constructor for the output DensePhasedGenotypeMatrix.

Returns:

out – A DensePhasedGenotypeMatrix of progeny.

Return type:

DensePhasedGenotypeMatrix

property nparent: Integral#

Number of parents the mating protocol requires.

property progeny_counter: Integral#

Description for property progeny_counter.

property rng: Generator | RandomState#

Random number generator.