TwoWayCross#

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

Bases: MatingProtocol

Class implementing mating protocols for two-way crosses.

Constructor for the concrete class TwoWayCross.

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 2-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 2-way mate selection scheme.

Example crossing diagram:

                pgmat
                │                       sel = [A,B,...]
               AxB
    ┌───────────┴───────────┐           nmating * nprogeny = 2
   AxB                     AxB          duplicate cross (nmating * nprogeny) times
    │                       │           nself = 2
S0(AxB)                 S0(AxB)         first self
    │                       │
S1(AxB)                 S1(AxB)         second self
    |                       |
S1(AxB)                 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]
    

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

  • nprogeny (numpy.ndarray) – Number of 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 progeny lines 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.