TwoWayDHCross#

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

Bases: MatingProtocol

Class implementing mating protocols for two-way DH crosses.

Constructor for the concrete class TwoWayDHCross.

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, None) – Random number source.

  • kwargs (dict) – Additional keyword arguments.

Methods

mate

Mate individuals according to a 2-way mate selection scheme, then create doubled haploid (DH) progenies.

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 2-way mate selection scheme, then create doubled haploid (DH) progenies.

Example crossing diagram:

                     pgmat
                       │                        sel = [A,B,...]
                      AxB
           ┌───────────┴───────────┐            nmating = 2
          AxB                     AxB           duplicate cross 2x
           │                       │            nself = 2
        S0(AxB)                 S0(AxB)         first self
           │                       │
        S1(AxB)                 S1(AxB)         second self
     ┌─────┴─────┐           ┌─────┴─────┐      DH, nprogeny = 2
DH(S1(AxB)) DH(S1(AxB)) DH(S1(AxB)) DH(S1(AxB)) final result
Parameters:
  • pgmat (DensePhasedGenotypeMatrix) – A DensePhasedGenotypeMatrix 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:

    • Even indices are female.

    • Odd indices are male.

    Example:

    xconfig = [[ 1, 5 ],
               [ 3, 8 ],
               [ 2, 7 ],
               ...,
               [ F, M ]]
    female = [1, 3, 2, ..., F]
    male = [5, 8, 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 pattern before ‘nprogeny’ 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.