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.