@@ -10,67 +10,106 @@ compute_Kqb = function(model, Tmax){
10
10
UseMethod(" compute_Kqb" , model $ Mpar )
11
11
}
12
12
13
- # ' Compute dispersal to lay eggs within one feeding cycle
13
+ # ' Compute net dispersal matrix to blood feed within one feeding cycle
14
14
# '
15
15
# ' @param model a model defined as a compound [list]
16
16
# ' @param Tmax the number of time steps
17
17
# '
18
18
# ' @return the model, a compound [list]
19
19
# ' @export
20
- compute_Kqb.BQS = function (model , Tmax = 200 ){with(model ,with(Mpar ,{
21
- nb = dim(Psi_bb )[2 ]
22
- nq = dim(Psi_qq )[2 ]
23
- ns = dim(Psi_ss )[2 ]
24
-
25
- Mbb = pB * (1 - sigb )* (1 - psiB )* Psi_bb
26
- success = pB * (1 - sigb )* psiB * Psi_bb
27
- Mbq = pB * psiB * Psi_bq
28
- Mbs = pB * sigb * psiB * Psi_bs
29
- Mqb = pQ * (1 - sigf )* psiQ * Psi_qb
30
- Mqq = pQ * (1 - sigq )* (1 - psiQ )* Psi_qq
31
- Mqs = pQ * (sigf * psiQ + sigq * (1 - psiQ ))* Psi_qs
32
- Msb = pS * psiS * Psi_sb
33
- Msq = 0 * t(Mqs )
34
- Mss = (1 - psiS )* Psi_ss
35
-
36
- M1 = cbind(Mbb , Mqb , Msb , 0 * Mbb )
37
- M2 = cbind(0 * Mbq , Mqq , Msq , 0 * Mbq )
38
- M3 = cbind(Mbs , Mqs , Mss , 0 * Mbs )
39
- M4 = cbind(success , 0 * Mqb , 0 * Msb , diag(1 ,nb ))
40
- M = rbind(M1 , M2 , M3 , M4 )
20
+ compute_Kqb.BQ = function (model , Tmax = 100 ){with(model , with(Mpar ,{
41
21
42
- cohort = Psi_qb %*% diag(pQ ,nq )
43
- Cyes = diag(psiB , nb )%*% cohort
44
- Cno = diag(1 - psiB , nb )%*% cohort
22
+ cohort = Psi_qb %*% diag(pB , nb )
45
23
46
- Kt = rbind(Cno , 0 * Mqq , 0 * Mqs , Cyes )
24
+ notpsiQ = diag(1 - psiQ , nq )
25
+ psiQ = diag(psiQ , nq )
26
+ pQ = diag(pQ , nq )
47
27
48
- for ( i in 1 : Tmax ) Kt = M %*% Kt
49
- Kt [ - c( 1 : ( nb + nq + ns )),]
28
+ Kbq = 0 * cohort # Success
29
+ Bt = cohort # Failure
50
30
51
- model $ KGV $ Kqb = Kt [nb + nq + ns + c(1 : nb ),]
31
+ Kqb = psiQ %*% cohort # Success
32
+ Qt = notpsiQ %*% cohort # Failure
33
+ for (i in 1 : Tmax ){
34
+ Kqb = Kqb + psiQ %*% Qt
35
+ Qt = Psi_qq %*% pQ %*% notpsiQ %*% Qt
36
+ }
37
+ model $ KGV $ Kqb = Kqb
52
38
return (model )
53
39
}))}
54
40
55
- # ' Compute net dispersal matrix to blood feed within one feeding cycle
41
+
42
+ # ' Compute dispersal to lay eggs within one feeding cycle
56
43
# '
57
44
# ' @param model a model defined as a compound [list]
58
45
# ' @param Tmax the number of time steps
59
46
# '
60
47
# ' @return the model, a compound [list]
61
48
# ' @export
62
- compute_Kqb.BQ = function (model , Tmax = 100 ){with(model , with(Mpar ,{
63
- cohort = Psi_qb %*% diag(pB , nb )
64
- Kqb = diag(psiQ , nq ) %*% cohort # Success
65
- Qt = diag(1 - psiQ , nq ) %*% cohort # Failure
66
- for (i in 1 : Tmax ){
67
- Kqb = Kqb + diag(pQ * psiQ , nq ) %*% Psi_qq %*% Qt
68
- Qt = diag(pQ * (1 - psiQ ), nq ) %*% Psi_qq %*% Qt
49
+ compute_Kqb.BQS = function (model , Tmax = 200 ){with(model ,with(Mpar ,{
50
+
51
+ nb = dim(b )[1 ]
52
+ nq = dim(q )[1 ]
53
+ ns = dim(s )[1 ]
54
+
55
+ sigF = diag(sigf , nq )
56
+ nsigF = diag(1 - sigf , nq )
57
+ npsiB = diag(1 - psiB , nb )
58
+ psiB = diag(psiB , nb )
59
+ pB = diag(pB , nb )
60
+ nsigB = diag(1 - sigb , nb )
61
+ sigB = diag(sigb , nb )
62
+
63
+ npsiQ = diag(1 - psiQ , nq )
64
+ psiQ = diag(psiQ , nq )
65
+ pQ = diag(pQ , nq )
66
+ nsigQ = diag(1 - sigq , nq )
67
+ sigQ = diag(sigq , nq )
68
+
69
+ npsiS = diag(1 - psiS , ns )
70
+ psiS = diag(psiS , ns )
71
+ pS = diag(pS , ns )
72
+
73
+ Mbb = Psi_bb %*% nsigB %*% pB %*% npsiB
74
+ Mbq = 0 * Psi_bq
75
+ trap = psiQ
76
+ Mbs = Psi_bs %*% psiS %*% pS
77
+
78
+ Mqb = Psi_qb %*% psiB %*% pB
79
+ Mqq = Psi_qq %*% nsigQ %*% pQ %*% npsiQ
80
+ Mqs = 0 * t(Psi_sq )
81
+
82
+ Msb = Psi_sb %*% sigB %*% pB %*% npsiB
83
+ Msq = Psi_sq %*% sigQ %*% pQ %*% npsiQ
84
+ Mss = Psi_ss %*% npsiS %*% pS
85
+
86
+ M1 = cbind(Mbb , Mbq , Mbs , 0 * Mbq )
87
+ M2 = cbind(Mqb , Mqq , Mqs , 0 * Mqq )
88
+ M3 = cbind(Msb , Msq , Mss , 0 * Msq )
89
+ M4 = cbind(0 * Mqb , trap , 0 * Mqs , diag(1 ,nq ))
90
+ M = rbind(M1 , M2 , M3 , M4 )
91
+
92
+ B0 = pB
93
+ Q0 = 0 * (Psi_qb %*% pB )
94
+ S0 = 0 * (Psi_sb %*% pB )
95
+ T0 = 0 * Q0
96
+
97
+ nix = nb + nq + ns + c(1 : nq )
98
+ BSQT = rbind(B0 , S0 , Q0 , T0 )
99
+
100
+ looking = 1
101
+ while (looking > 1e-6 ){
102
+ BSQT = M %*% BSQT
103
+ looking = sum(BSQT [- nix ,- nix ])
69
104
}
105
+
106
+ nix = 1 : (nb + nq + ns )
107
+ Kqb = BSQT [- nix ,]
70
108
model $ KGV $ Kqb = Kqb
71
109
return (model )
72
110
}))}
73
111
112
+
74
113
# ' Compute dispersal matrix to blood feed within one feeding cycle
75
114
# '
76
115
# ' @param model a model defined as a compound [list]
@@ -90,13 +129,18 @@ compute_Kbq = function(model, Tmax){
90
129
# ' @return the model, a compound [list]
91
130
# ' @export
92
131
compute_Kbq.BQ = function (model , Tmax = 100 ){with(model , with(Mpar ,{
132
+
133
+ notpsiB = diag(1 - psiB , nb )
134
+ psiB = diag(psiB , nb )
135
+ pB = diag(pB , nb )
136
+
93
137
cohort = Psi_bq %*% diag(pQ , nq )
94
- Kbq = diag( psiB , nb ) %*% cohort # Success
95
- Bt = diag( 1 - psiB , nb ) %*% cohort # Failure
138
+ Kbq = 0 * cohort # Success
139
+ Bt = cohort # Failure
96
140
97
141
for (i in 1 : Tmax ){
98
- Kbq = Kbq + diag( pB * psiB , nb ) %*% Psi_bb %*% Bt
99
- Bt = diag( pB * ( 1 - psiB ), nb ) %*% Psi_bb %*% Bt
142
+ Kbq = Kbq + psiB %*% Bt
143
+ Bt = Psi_bb %*% pB %*% notpsiB %*% Bt
100
144
}
101
145
model $ KGV $ Kbq = Kbq
102
146
return (model )
@@ -116,31 +160,43 @@ compute_Kbq.BQS = function(model, Tmax = 200){with(model,with(Mpar,{
116
160
nq = dim(q )[1 ]
117
161
ns = dim(s )[1 ]
118
162
119
- Mbb = pB * (1 - sigb )* (1 - psiB )* Psi_bb
120
- success = pB * (1 - sigb )* psiB * Psi_bb
121
- Mbq = pB * psiB * Psi_bq
122
- Mbs = pB * sigb * psiB * Psi_bs
123
- Mqb = pQ * (1 - sigf )* psiQ * Psi_qb
124
- Mqq = pQ * (1 - sigq )* (1 - psiQ )* Psi_qq
125
- Mqs = pQ * (sigf * psiQ + sigq * (1 - psiQ ))* Psi_qs
126
- Msb = pS * psiS * Psi_sb
127
- Msq = 0 * t(Mqs )
128
- Mss = (1 - psiS )* Psi_ss
129
-
130
- M1 = cbind(Mbb , 0 * Mqb , Msb , 0 * Mqb )
131
- M2 = cbind(Mbq , Mqq , Msq , 0 * Mqq )
132
- M3 = cbind(Mbs , Mqs , Mss , 0 * Mqs )
133
- M4 = cbind(success , diag(1 ,nq ), 0 * Msq , diag(1 ,nq ))
134
- M = rbind(M1 , M2 , M3 , M4 )
135
-
136
- cohort = Psi_bq %*% diag(pB ,nb )
137
- Cyes = diag(psiQ , nq )%*% cohort
138
- Cno = diag(1 - psiQ , nq )%*% cohort
139
-
140
- Kt = rbind(0 * Mbb , Cno , 0 * Mbs , Cyes )
141
- for (i in 1 : Tmax ) Kt = M %*% Kt
142
- Kt [- c(1 : (nb + nq + ns )),]
143
- model $ KGV $ Kbq = Kt [nb + nq + ns + c(1 : nq ),]
163
+ sigF = diag(sigf , nq )
164
+ nsigF = diag(1 - sigf , nq )
165
+ npsiB = diag(1 - psiB , nb )
166
+ psiB = diag(psiB , nb )
167
+ pB = diag(pB , nb )
168
+ nsigB = diag(1 - sigb , nb )
169
+ sigB = diag(sigb , nb )
170
+ npsiS = diag(1 - psiS , ns )
171
+ psiS = diag(psiS , ns )
172
+ pS = diag(pS , ns )
173
+
174
+ cohort = diag(pQ ,nq )
175
+ B = Psi_bq %*% nsigF %*% diag(pQ ,nq )
176
+ S = Psi_sq %*% sigF %*% diag(pQ ,nq )
177
+
178
+ Mbb = Psi_bb %*% nsigB %*% pB %*% npsiB
179
+ trap = psiB
180
+ Msb = Psi_sb %*% sigB %*% pB %*% npsiB
181
+ Mbs = Psi_bs %*% pS %*% psiS
182
+ Mss = Psi_ss %*% pS %*% npsiS
183
+
184
+ M1 = cbind(Mbb , Mbs , 0 * Mbb )
185
+ M2 = cbind(Msb , Mss , 0 * Msb )
186
+ M3 = cbind(trap , 0 * Psi_bs , diag(1 ,nb ))
187
+ M = rbind(M1 , M2 , M3 )
188
+
189
+ nix = nb + ns + c(1 : nb )
190
+ TBS = rbind(B , S , 0 * B )
191
+
192
+ looking = 1
193
+ while (looking > 1e-6 ) {
194
+ TBS = M %*% TBS
195
+ looking = sum(TBS [- nix ,- nix ])
196
+ }
197
+ nix = 1 : (nb + ns )
198
+ Kbq = TBS [- nix ,]
199
+ model $ KGV $ Kbq = Kbq
144
200
return (model )
145
201
}))}
146
202
0 commit comments