aegis_sim.submodels.reproduction.matingmanager

 1import numpy as np
 2
 3class MatingManager:
 4    def __init__(self):
 5        pass
 6
 7    def pair_up_polygamously(self, sexes):
 8        """
 9        Return indices of reproducing, sex-sorted individuals.
10        Make sure no same-sex fertilization is happening.
11        """
12
13        indices_male = (sexes == 0).nonzero()[0]
14        indices_female = (sexes == 1).nonzero()[0]
15
16        # Compute number of pairs
17        n_males = len(indices_male)
18        n_females = len(indices_female)
19        n_pairs = min(n_males, n_females)
20
21        # Shuffle
22        np.random.shuffle(indices_male)
23        np.random.shuffle(indices_female)
24
25        # Pair up
26        males = indices_male[:n_pairs]
27        females = indices_female[:n_pairs]
28
29        return males, females
30
31    def pair_up_monogamously(self, sexes):
32        return
class MatingManager:
 4class MatingManager:
 5    def __init__(self):
 6        pass
 7
 8    def pair_up_polygamously(self, sexes):
 9        """
10        Return indices of reproducing, sex-sorted individuals.
11        Make sure no same-sex fertilization is happening.
12        """
13
14        indices_male = (sexes == 0).nonzero()[0]
15        indices_female = (sexes == 1).nonzero()[0]
16
17        # Compute number of pairs
18        n_males = len(indices_male)
19        n_females = len(indices_female)
20        n_pairs = min(n_males, n_females)
21
22        # Shuffle
23        np.random.shuffle(indices_male)
24        np.random.shuffle(indices_female)
25
26        # Pair up
27        males = indices_male[:n_pairs]
28        females = indices_female[:n_pairs]
29
30        return males, females
31
32    def pair_up_monogamously(self, sexes):
33        return
def pair_up_polygamously(self, sexes):
 8    def pair_up_polygamously(self, sexes):
 9        """
10        Return indices of reproducing, sex-sorted individuals.
11        Make sure no same-sex fertilization is happening.
12        """
13
14        indices_male = (sexes == 0).nonzero()[0]
15        indices_female = (sexes == 1).nonzero()[0]
16
17        # Compute number of pairs
18        n_males = len(indices_male)
19        n_females = len(indices_female)
20        n_pairs = min(n_males, n_females)
21
22        # Shuffle
23        np.random.shuffle(indices_male)
24        np.random.shuffle(indices_female)
25
26        # Pair up
27        males = indices_male[:n_pairs]
28        females = indices_female[:n_pairs]
29
30        return males, females

Return indices of reproducing, sex-sorted individuals. Make sure no same-sex fertilization is happening.

def pair_up_monogamously(self, sexes):
32    def pair_up_monogamously(self, sexes):
33        return