diff --git a/src/microbe.py b/src/microbe.py index 4a977e0..194b8b9 100644 --- a/src/microbe.py +++ b/src/microbe.py @@ -420,15 +420,16 @@ def microbe_uptake_gene(self, ReqEnz, EnzGenes, MonomersProduced): # Give each taxon a random number of additional uptake genes between the number they have and n_upgenes for i in range(self.n_taxa): - n_zero = sum(UptakeGenes.iloc[i, :][UptakeGenes.iloc[i, :] == 0]) + zero_index = (UptakeGenes.iloc[i, :] == 0).to_numpy() + n_zero = int(zero_index.sum()) if n_zero == 0: # has all genes continue probability_list = [0] * n_zero locator = np.random.choice( - range(1, n_zero + 1), 1, replace=True + range(1, n_zero + 1), replace=True ) # derive n_zero >= locater >= 1 (NOTE) probability_list[0 : int(locator)] = [1] * int(locator) - UptakeGenes.iloc[i, :][UptakeGenes.iloc[i, :] == 0] = np.random.choice( + UptakeGenes.iloc[i, zero_index] = np.random.choice( probability_list, n_zero, replace=False ).astype("int8")