@@ -187,9 +187,10 @@ void PrintTrackedAgents()
187
187
for (i = 1 ; i <=N ; i ++ ) {
188
188
if (Status [i ] == 1 ) {
189
189
if ((i >= TrackedAgentsGroup1start && i <= TrackedAgentsGroup1end ) || (i >= TrackedAgentsGroup2start && i <= TrackedAgentsGroup2end )) {
190
- fprintf (AgentHistoryFile ,"%ld\t%ld\t%ld\t%lf\t%d\t%lf\t%lf\t%ld\t%ld\t%ld\t%3.2lf\t%3.2lf\t%3.2e\t%d\t%2.1lf\t%2.1lf\t%2.1lf\t%2.1lf\t%ld\t%ld\t%ld" ,
190
+ fprintf (AgentHistoryFile ,"%ld\t%ld\t%ld\t%lf\t%d\t%lf\t%lf\t%ld\t%ld\t%ld\t%3.2lf\t%3.2lf\t%3.2e\t%d\t%2.1lf\t%2.1lf\t%2.1lf\t%2.1lf\t%ld\t%ld\t%ld\t%ld\t%ld\t%ld\t%ld\t%ld\t%ld " ,
191
191
repl ,time ,i , SetPoint [i ], Status [i ], Time_Inf [i ], s [i ], Treated [i ], tx_days [i ], tx_days_aids [i ], Age [i ], ProbDropout [i ], V [i ],
192
- CD4 [i ],Drug [i ][1 ],Drug [i ][2 ],Drug [i ][3 ],Drug [i ][4 ], metab_type [i ], Donors_Index [i ], TransDR [i ]);
192
+ CD4 [i ],Drug [i ][1 ],Drug [i ][2 ],Drug [i ][3 ],Drug [i ][4 ], metab_type [i ], Donors_Index [i ], TransDR [i ], AcqDR [i ],
193
+ mut_locus1 [i ], mut_locus2 [i ], mut_locus3 [i ], mut_locus4 [i ], mut_locus5 [i ]);
193
194
for (i1 = 0 ;i1 <=alleles [1 ];i1 ++ ) {
194
195
for (i2 = 0 ;i2 <=alleles [2 ];i2 ++ ) {
195
196
for (i3 = 0 ;i3 <=alleles [3 ];i3 ++ ) {
@@ -958,6 +959,29 @@ void AddInfecteds()
958
959
UnderCare [i ] = 0 ;
959
960
}
960
961
962
+ //assign agents to have viral mutations at the beginning of the simulation
963
+ if (genrand_real2 () < prop_mut_locus1 ){ //locus position 1 is K65R
964
+ mut_locus1 [i ] = 1 ;
965
+ I_vec [i ][1 ][0 ][0 ][0 ][0 ]= 100000 ;
966
+
967
+ }
968
+ if (genrand_real2 () < prop_mut_locus2 ){ //locus position 2 is M184V
969
+ mut_locus2 [i ] = 1 ;
970
+ I_vec [i ][0 ][1 ][0 ][0 ][0 ]= 100000 ;
971
+ }
972
+ if (genrand_real2 () < prop_mut_locus3 ){ //locus position 3 is K103N
973
+ mut_locus3 [i ] = 1 ;
974
+ I_vec [i ][0 ][0 ][1 ][0 ][0 ]= 100000 ;
975
+ }
976
+ if (genrand_real2 () < prop_mut_locus4 ){ //locus position 4 is GenericTDF
977
+ mut_locus4 [i ] = 1 ;
978
+ I_vec [i ][0 ][0 ][0 ][1 ][0 ]= 100000 ;
979
+ }
980
+ if (genrand_real2 () < prop_mut_locus5 ){ //locus position 5 is GenericEFV
981
+ mut_locus5 [i ] = 1 ;
982
+ I_vec [i ][0 ][0 ][0 ][0 ][1 ]= 100000 ;
983
+ }
984
+
961
985
Time_Inf [i ] = time ;
962
986
CD4time [i ]= - Time_Inf [i ] ; // What does this mean???
963
987
TimeInAIDS [i ]= 0 ;
@@ -969,7 +993,10 @@ void AddInfecteds()
969
993
I_vec [i ][0 ][0 ][0 ][0 ][0 ] = I [i ];
970
994
M_vec [i ][0 ][0 ][0 ][0 ][0 ] = 0.0 ;
971
995
L_vec [i ][0 ][0 ][0 ][0 ][0 ] = 0.0 ;
972
-
996
+
997
+ if (mut_locus3 [i ]== 1 ){
998
+
999
+ }
973
1000
Donors_V [i ] = -1.0 ; // Flag absence of information with -1's or zeros.
974
1001
Donors_ViralContribToLogSP0 [i ] = -1.0 ; // Flag absence of information with -1's or zeros
975
1002
Donors_EnvirContribToLogSP0 [i ] = -1.0 ; // Flag absence of information with -1's or zeros
@@ -2311,7 +2338,24 @@ void UpdateViralLoadsAim3()
2311
2338
} while (Time < time_final );
2312
2339
2313
2340
// Done getting locus specific information. Update the old style "plain" V viral load array for agent i.
2314
- V [i ] = V_total ;
2341
+ V [i ] = V_total ;
2342
+
2343
+
2344
+ // Calculate the sum of the resistant mutants for triple, quadruple and quintuple mutants.
2345
+ long triplus_mut_eq1 ;
2346
+ long triplus_mut_eq2 ;
2347
+ long triplus_mut_eq3 ;
2348
+ long triplus_mut_tot ;
2349
+
2350
+ triplus_mut_eq1 = I_vec [i ][0 ][0 ][1 ][1 ][1 ] + I_vec [i ][0 ][1 ][0 ][1 ][1 ] + I_vec [i ][0 ][1 ][1 ][0 ][1 ] + I_vec [i ][0 ][1 ][1 ][1 ][0 ];
2351
+ triplus_mut_eq2 = triplus_mut_eq1 + I_vec [i ][1 ][0 ][1 ][0 ][1 ] + I_vec [i ][1 ][0 ][1 ][1 ][0 ] + I_vec [i ][1 ][1 ][0 ][0 ][1 ] + I_vec [i ][1 ][1 ][1 ][0 ][0 ];
2352
+ triplus_mut_eq3 = triplus_mut_eq2 + I_vec [i ][1 ][0 ][0 ][1 ][1 ] + I_vec [i ][0 ][1 ][1 ][1 ][1 ] + I_vec [i ][1 ][0 ][1 ][1 ][1 ] + I_vec [i ][1 ][1 ][0 ][1 ][1 ];
2353
+ triplus_mut_tot = triplus_mut_eq3 + I_vec [i ][1 ][1 ][1 ][0 ][1 ] + I_vec [i ][1 ][1 ][1 ][1 ][0 ] + I_vec [i ][1 ][1 ][1 ][1 ][1 ];
2354
+
2355
+ //Use the sum of the 3+ mutant populations to assign acquired drug resistance
2356
+ if (TransDR [i ]== 0 && triplus_mut_tot > 0 ){
2357
+ AcqDR [i ]= 1 ;
2358
+ }
2315
2359
2316
2360
} // i loop
2317
2361
} // end of subroutine
@@ -3688,7 +3732,7 @@ void PrintHeaders()
3688
3732
3689
3733
if (repl == 1 ) {
3690
3734
if ( (TrackedAgentsGroup1end - TrackedAgentsGroup1start > 0 ) || ( TrackedAgentsGroup2end - TrackedAgentsGroup2start > 0 ) ) {
3691
- fprintf (AgentHistoryFile ,"repl\ttime\tAgent\tSPVL\tStatus\ttInf\ts\ttx\ttx_d\ttx_dA\tAge\tPdrop\tV\tCD4\tD1\tD2\tD3\tD4\tMet\tDonor_Index\tTransmittedDR " );
3735
+ fprintf (AgentHistoryFile ,"repl\ttime\tAgent\tSPVL\tStatus\ttInf\ts\ttx\ttx_d\ttx_dA\tAge\tPdrop\tV\tCD4\tD1\tD2\tD3\tD4\tMet\tDonor_Index\tTransDR_status\tAcqDR_status\tmut_at_loc1\tmut_at_loc2\tmut_at_loc3\tmut_at_loc4\tmut_at_loc5 " );
3692
3736
for (i1 = 0 ;i1 <=alleles [1 ];i1 ++ ) {
3693
3737
for (i2 = 0 ;i2 <=alleles [2 ];i2 ++ ) {
3694
3738
for (i3 = 0 ;i3 <=alleles [3 ];i3 ++ ) {
0 commit comments