[med-svn] [gmap] 02/04: Imported Upstream version 2015-12-31.v7

Alex Mestiashvili malex-guest at moszumanska.debian.org
Fri Feb 5 15:21:18 UTC 2016


This is an automated email from the git hooks/post-receive script.

malex-guest pushed a commit to branch master
in repository gmap.

commit 108926cde9abc21780fab8e244044383bec55381
Author: Alexandre Mestiashvili <alex at biotec.tu-dresden.de>
Date:   Fri Feb 5 10:35:21 2016 +0100

    Imported Upstream version 2015-12-31.v7
---
 ChangeLog      |   7 ++
 src/output.c   |  19 +++--
 src/samprint.c | 256 ++++++++++++++++++++++++++++++---------------------------
 src/samprint.h |  10 +--
 src/stage2.c   |   4 +-
 5 files changed, 159 insertions(+), 137 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index cb8f107..c2032b1 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2016-02-04  twu
+
+    * stage2.c: Fixed termination condition for while loop
+
+    * output.c, samprint.c, samprint.h: Added check for artificial mate in
+      --add-paired-nomappers mode, to set SAM flag correctly
+
 2016-01-21  twu
 
     * dynprog_genome.c: Fixed bug in checking bestrL before it is computed,
diff --git a/src/output.c b/src/output.c
index 3b59563..4afafef 100644
--- a/src/output.c
+++ b/src/output.c
@@ -1,4 +1,4 @@
-static char rcsid[] = "$Id: output.c 181903 2016-01-07 20:30:55Z twu $";
+static char rcsid[] = "$Id: output.c 183725 2016-02-04 00:40:15Z twu $";
 #ifdef HAVE_CONFIG_H
 #include <config.h>
 #endif
@@ -186,7 +186,8 @@ filestring_fromresult_sam (Filestring_T *fp_failedinput_1, Filestring_T *fp_fail
       SAM_print_nomapping(fp,ABBREV_NOMAPPING_1,
 			  queryseq1,/*mate*/NULL,/*acc1*/Shortread_accession(queryseq1),
 			  /*acc2*/NULL,chromosome_iit,resulttype,
-			  /*first_read_p*/true,/*pathnum*/0,/*npaths*/0,/*npaths_mate*/0,/*mate_chrpos*/0U,
+			  /*first_read_p*/true,/*pathnum*/0,/*npaths*/0,
+			  /*artificial_mate_p*/false,/*npaths_mate*/0,/*mate_chrpos*/0U,
 			  quality_shift,sam_read_group_id,invert_first_p,invert_second_p);
       if (failedinput_root != NULL) {
 	Shortread_print_query_singleend(*fp_failedinput_1,queryseq1,/*headerseq*/queryseq1);
@@ -221,7 +222,7 @@ filestring_fromresult_sam (Filestring_T *fp_failedinput_1, Filestring_T *fp_fail
 		chromosome_iit,queryseq1,/*queryseq2*/NULL,
 		/*pairedlength*/0,chrpos,/*mate_chrpos*/0U,
 		/*clipdir*/0,/*hardclip5_low*/0,/*hardclip5_high*/0,/*hardclip3_low*/0,/*hardclip3_high*/0,
-		resulttype,/*first_read_p*/true,/*npaths_mate*/0,quality_shift,
+		resulttype,/*first_read_p*/true,/*artificial_mate_p*/false,/*npaths_mate*/0,quality_shift,
 		sam_read_group_id,invert_first_p,invert_second_p,merge_samechr_p);
     }
 
@@ -237,7 +238,8 @@ filestring_fromresult_sam (Filestring_T *fp_failedinput_1, Filestring_T *fp_fail
       SAM_print_nomapping(fp,ABBREV_UNPAIRED_TRANSLOC,
 			  queryseq1,/*mate*/NULL,/*acc1*/Shortread_accession(queryseq1),
 			  /*acc2*/NULL,chromosome_iit,resulttype,
-			  /*first_read_p*/true,/*pathnum*/1,npaths,/*npaths_mate*/0,/*mate_chrpos*/0U,
+			  /*first_read_p*/true,/*pathnum*/1,npaths,
+			  /*artificial_mate_p*/false,/*npaths_mate*/0,/*mate_chrpos*/0U,
 			  quality_shift,sam_read_group_id,invert_first_p,invert_second_p);
       if (failedinput_root != NULL) {
 	Shortread_print_query_singleend(*fp_failedinput_1,queryseq1,/*headerseq*/queryseq1);
@@ -262,7 +264,7 @@ filestring_fromresult_sam (Filestring_T *fp_failedinput_1, Filestring_T *fp_fail
 		  chromosome_iit,queryseq1,/*queryseq2*/NULL,
 		  /*pairedlength*/0,chrpos,/*mate_chrpos*/0U,
 		  /*clipdir*/0,/*hardclip5_low*/0,/*hardclip5_high*/0,/*hardclip3_low*/0,/*hardclip3_high*/0,
-		  resulttype,/*first_read_p*/true,/*npaths_mate*/0,quality_shift,
+		  resulttype,/*first_read_p*/true,/*artificial_mate_p*/false,/*npaths_mate*/0,quality_shift,
 		  sam_read_group_id,invert_first_p,invert_second_p,merge_samechr_p);
       }
     }
@@ -279,7 +281,8 @@ filestring_fromresult_sam (Filestring_T *fp_failedinput_1, Filestring_T *fp_fail
       SAM_print_nomapping(fp,ABBREV_UNPAIRED_MULT_XS,
 			  queryseq1,/*mate*/NULL,/*acc1*/Shortread_accession(queryseq1),
 			  /*acc2*/NULL,chromosome_iit,resulttype,
-			  /*first_read_p*/true,/*pathnum*/1,npaths,/*npaths_mate*/0,/*mate_chrpos*/0U,
+			  /*first_read_p*/true,/*pathnum*/1,npaths,
+			  /*artificial_mate_p*/false,/*npaths_mate*/0,/*mate_chrpos*/0U,
 			  quality_shift,sam_read_group_id,invert_first_p,invert_second_p);
       if (failedinput_root != NULL) {
 	Shortread_print_query_singleend(*fp_failedinput_1,queryseq1,/*headerseq*/queryseq1);
@@ -304,7 +307,7 @@ filestring_fromresult_sam (Filestring_T *fp_failedinput_1, Filestring_T *fp_fail
 		  chromosome_iit,queryseq1,/*queryseq2*/NULL,
 		  /*pairedlength*/0,chrpos,/*mate_chrpos*/0U,
 		  /*clipdir*/0,/*hardclip5_low*/0,/*hardclip5_high*/0,/*hardclip3_low*/0,/*hardclip3_high*/0,
-		  resulttype,/*first_read_p*/true,/*npaths_mate*/0,quality_shift,
+		  resulttype,/*first_read_p*/true,/*artificial_mate_p*/false,/*npaths_mate*/0,quality_shift,
 		  sam_read_group_id,invert_first_p,invert_second_p,merge_samechr_p);
       }
     }
@@ -754,7 +757,7 @@ Output_filestring_fromresult (Filestring_T *fp_failedinput, Result_T result, Req
       Sequence_print_header(fp,headerseq,checksump);
 
       if (npaths == 0) {
-	print_npaths(fp,0,chrsubset_name,
+	print_npaths(fp,/*npaths*/0,chrsubset_name,
 		     /*mergedp*/false,/*chimera*/NULL,Result_failuretype(result));
 
 
diff --git a/src/samprint.c b/src/samprint.c
index 2fe012c..221dd1d 100644
--- a/src/samprint.c
+++ b/src/samprint.c
@@ -1,4 +1,4 @@
-static char rcsid[] = "$Id: samprint.c 181904 2016-01-07 20:31:34Z twu $";
+static char rcsid[] = "$Id: samprint.c 183725 2016-02-04 00:40:15Z twu $";
 #ifdef HAVE_CONFIG_H
 #include <config.h>
 #endif
@@ -109,7 +109,7 @@ SAM_setup (bool add_paired_nomappers_p_in, bool paired_flag_means_concordant_p_i
 
 unsigned int
 SAM_compute_flag (bool plusp, Stage3end_T mate, Resulttype_T resulttype,
-		  bool first_read_p, int pathnum, int npaths, int npaths_mate,
+		  bool first_read_p, int pathnum, int npaths, bool artificial_mate_p, int npaths_mate,
 		  int absmq_score, int first_absmq, bool invertp, bool invert_mate_p) {
   unsigned int flag = 0U;
 
@@ -136,7 +136,11 @@ SAM_compute_flag (bool plusp, Stage3end_T mate, Resulttype_T resulttype,
       debug(printf("SECOND_READ %d\n",SECOND_READ_P));
       flag |= SECOND_READ_P;
     }
-    if (npaths_mate == 0) {
+    if (artificial_mate_p == true) {
+      debug(printf("MATE_UNMAPPED %d\n",MATE_UNMAPPED));
+      flag |= MATE_UNMAPPED;
+
+    } else if (npaths_mate == 0) {
       debug(printf("MATE_UNMAPPED %d\n",MATE_UNMAPPED));
       flag |= MATE_UNMAPPED;
 
@@ -202,7 +206,7 @@ SAM_compute_flag (bool plusp, Stage3end_T mate, Resulttype_T resulttype,
       debug(printf("NOT_PRIMARY %d\n",NOT_PRIMARY));
       flag |= NOT_PRIMARY;
     } else {
-      /* Just as good as first alignment, so don't mark as secondary */
+      /* Just as good as first alignment, so don't mark as altloc */
     }
   }
 
@@ -355,8 +359,8 @@ make_complement_buffered (char *complement, char *sequence, unsigned int length)
 void
 SAM_print_nomapping (Filestring_T fp, char *abbrev, Shortread_T queryseq, Stage3end_T mate, char *acc1, char *acc2,
 		     Univ_IIT_T chromosome_iit, Resulttype_T resulttype, bool first_read_p,
-		     int pathnum, int npaths, int npaths_mate, Chrpos_T mate_chrpos, int quality_shift,
-		     char *sam_read_group_id, bool invertp, bool invert_mate_p) {
+		     int pathnum, int npaths, bool artificial_mate_p, int npaths_mate,
+		     Chrpos_T mate_chrpos, int quality_shift, char *sam_read_group_id, bool invertp, bool invert_mate_p) {
   unsigned int flag;
 
 
@@ -373,7 +377,7 @@ SAM_print_nomapping (Filestring_T fp, char *abbrev, Shortread_T queryseq, Stage3
   /* 5. MAPQ: Mapping quality.  Picard says MAPQ should be 0 for an unmapped read */
   /* 6. CIGAR */
   flag = SAM_compute_flag(/*plusp (NA)*/true,mate,resulttype,first_read_p,
-			  /*pathnum*/0,/*npaths*/0,npaths_mate,
+			  /*pathnum*/0,/*npaths*/0,artificial_mate_p,npaths_mate,
 			  /*absmq_score*/0,/*first_absmq*/0,invertp,invert_mate_p);
   FPRINTF(fp,"\t%u\t*\t0\t0\t*",flag);
 
@@ -1166,7 +1170,7 @@ print_substrings (Filestring_T fp, char *abbrev, Stage3end_T stage3end, Stage3en
 		  int absmq_score, int first_absmq, int second_absmq, int mapq_score,
 		  Shortread_T queryseq, int pairedlength,
 		  Chrpos_T chrpos, Chrpos_T mate_chrpos, int hardclip_low, int hardclip_high,
-		  Resulttype_T resulttype, bool first_read_p, int npaths_mate,
+		  Resulttype_T resulttype, bool first_read_p, bool artificial_mate_p, int npaths_mate,
 		  int quality_shift, char *sam_read_group_id, bool invertp, bool invert_mate_p,
 		  bool circularp) {
   unsigned int flag = 0U;
@@ -1209,8 +1213,8 @@ print_substrings (Filestring_T fp, char *abbrev, Stage3end_T stage3end, Stage3en
 
   /* 2. FLAG */
   flag = SAM_compute_flag(plusp,mate,resulttype,first_read_p,
-			  pathnum,npaths,npaths_mate,absmq_score,first_absmq,
-			  invertp,invert_mate_p);
+			  pathnum,npaths,artificial_mate_p,npaths_mate,
+			  absmq_score,first_absmq,invertp,invert_mate_p);
   FPRINTF(fp,"\t%u",flag);
 
   /* 3. RNAME: chr */
@@ -2170,7 +2174,8 @@ print_halfdonor (Filestring_T fp, char *abbrev, Substring_T donor, Stage3end_T t
 		 char *acc1, char *acc2, int pathnum, int npaths, int absmq_score, int first_absmq, int second_absmq, int mapq_score,
 		 Univ_IIT_T chromosome_iit, Shortread_T queryseq, int pairedlength,
 		 Chrpos_T concordant_chrpos, Chrpos_T donor_chrpos, Chrpos_T acceptor_chrpos, Chrpos_T mate_chrpos,
-		 int hardclip_low, int hardclip_high, Resulttype_T resulttype, bool first_read_p, int npaths_mate,
+		 int hardclip_low, int hardclip_high, Resulttype_T resulttype, bool first_read_p,
+		 bool artificial_mate_p, int npaths_mate,
 		 int quality_shift, char *sam_read_group_id, bool invertp, bool invert_mate_p,
 		 bool use_hardclip_p, bool print_xt_p, int donor_sensedir, char donor_strand, char acceptor_strand,
 		 char *donor_chr, char *acceptor_chr, char donor1, char donor2, char acceptor2, char acceptor1,
@@ -2202,7 +2207,7 @@ print_halfdonor (Filestring_T fp, char *abbrev, Substring_T donor, Stage3end_T t
 
   /* 2. FLAG */
   flag = SAM_compute_flag(plusp,mate,resulttype,first_read_p,
-			  pathnum,npaths,npaths_mate,absmq_score,first_absmq,
+			  pathnum,npaths,artificial_mate_p,npaths_mate,absmq_score,first_absmq,
 			  invertp,invert_mate_p);
   FPRINTF(fp,"\t%u",flag);
 
@@ -2685,7 +2690,7 @@ print_halfacceptor (Filestring_T fp, char *abbrev, Substring_T acceptor, Stage3e
 		    char *acc1, char *acc2, int pathnum, int npaths, int absmq_score, int first_absmq, int second_absmq, int mapq_score,
 		    Univ_IIT_T chromosome_iit, Shortread_T queryseq, int pairedlength,
 		    Chrpos_T concordant_chrpos, Chrpos_T donor_chrpos, Chrpos_T acceptor_chrpos, Chrpos_T mate_chrpos,
-		    int hardclip_low, int hardclip_high, Resulttype_T resulttype, bool first_read_p, int npaths_mate,
+		    int hardclip_low, int hardclip_high, Resulttype_T resulttype, bool first_read_p, bool artificial_mate_p, int npaths_mate,
 		    int quality_shift, char *sam_read_group_id, bool invertp, bool invert_mate_p,
 		    bool use_hardclip_p, bool print_xt_p, int acceptor_sensedir, char donor_strand, char acceptor_strand,
 		    char *donor_chr, char *acceptor_chr, char donor1, char donor2, char acceptor2, char acceptor1,
@@ -2717,7 +2722,7 @@ print_halfacceptor (Filestring_T fp, char *abbrev, Substring_T acceptor, Stage3e
 
   /* 2. FLAG */
   flag = SAM_compute_flag(plusp,mate,resulttype,first_read_p,
-			  pathnum,npaths,npaths_mate,absmq_score,first_absmq,
+			  pathnum,npaths,artificial_mate_p,npaths_mate,absmq_score,first_absmq,
 			  invertp,invert_mate_p);
   FPRINTF(fp,"\t%u",flag);
 
@@ -3193,7 +3198,7 @@ print_exon_exon (Filestring_T fp, char *abbrev, Stage3end_T this, Stage3end_T ma
 		 int absmq_score, int first_absmq, int second_absmq, int mapq_score,
 		 Univ_IIT_T chromosome_iit, Shortread_T queryseq, int pairedlength,
 		 Chrpos_T mate_chrpos, int hardclip_low, int hardclip_high,
-		 Resulttype_T resulttype, bool first_read_p, int npaths_mate,
+		 Resulttype_T resulttype, bool first_read_p, bool artificial_mate_p, int npaths_mate,
 		 int quality_shift, char *sam_read_group_id, bool invertp, bool invert_mate_p) {
   Chrpos_T donor_chrpos, acceptor_chrpos, concordant_chrpos;
   Substring_T donor, acceptor;
@@ -3271,7 +3276,7 @@ print_exon_exon (Filestring_T fp, char *abbrev, Stage3end_T this, Stage3end_T ma
 		      chromosome_iit,queryseq,pairedlength,
 		      concordant_chrpos,donor_chrpos,acceptor_chrpos,mate_chrpos,
 		      /*hardclip_low*/0,/*hardclip_high*/querylength-circularpos,
-		      resulttype,first_read_p,npaths_mate,quality_shift,sam_read_group_id,
+		      resulttype,first_read_p,artificial_mate_p,npaths_mate,quality_shift,sam_read_group_id,
 		      invertp,invert_mate_p,/*use_hardclip_p*/true,/*print_xt_p*/true,
 		      donor_sensedir,donor_strand,acceptor_strand,donor_chr,acceptor_chr,
 		      donor1,donor2,acceptor2,acceptor1,donor_prob,acceptor_prob,
@@ -3281,7 +3286,7 @@ print_exon_exon (Filestring_T fp, char *abbrev, Stage3end_T this, Stage3end_T ma
 		      chromosome_iit,queryseq,pairedlength,
 		      /*concordant_chrpos*/1,/*donor_chrpos*/1,acceptor_chrpos,mate_chrpos,
 		      /*hardclip_low*/circularpos,/*hardclip_high*/0,
-		      resulttype,first_read_p,npaths_mate,quality_shift,sam_read_group_id,
+		      resulttype,first_read_p,artificial_mate_p,npaths_mate,quality_shift,sam_read_group_id,
 		      invertp,invert_mate_p,/*use_hardclip_p*/true,/*print_xt_p*/true,
 		      donor_sensedir,donor_strand,acceptor_strand,donor_chr,acceptor_chr,
 		      donor1,donor2,acceptor2,acceptor1,donor_prob,acceptor_prob,
@@ -3292,7 +3297,7 @@ print_exon_exon (Filestring_T fp, char *abbrev, Stage3end_T this, Stage3end_T ma
 		      chromosome_iit,queryseq,pairedlength,
 		      concordant_chrpos,donor_chrpos,acceptor_chrpos,mate_chrpos,
 		      hardclip_low,hardclip_high,resulttype,first_read_p,
-		      npaths_mate,quality_shift,sam_read_group_id,
+		      artificial_mate_p,npaths_mate,quality_shift,sam_read_group_id,
 		      invertp,invert_mate_p,/*use_hardclip_p*/true,/*print_xt_p*/true,
 		      donor_sensedir,donor_strand,acceptor_strand,donor_chr,acceptor_chr,
 		      donor1,donor2,acceptor2,acceptor1,donor_prob,acceptor_prob,
@@ -3305,7 +3310,7 @@ print_exon_exon (Filestring_T fp, char *abbrev, Stage3end_T this, Stage3end_T ma
 			 chromosome_iit,queryseq,pairedlength,
 			 concordant_chrpos,donor_chrpos,acceptor_chrpos,mate_chrpos,
 			 /*hardclip_low*/0,/*hardclip_high*/querylength-circularpos,
-			 resulttype,first_read_p,npaths_mate,quality_shift,sam_read_group_id,
+			 resulttype,first_read_p,artificial_mate_p,npaths_mate,quality_shift,sam_read_group_id,
 			 invertp,invert_mate_p,/*use_hardclip_p*/true,/*print_xt_p*/true,
 			 acceptor_sensedir,donor_strand,acceptor_strand,donor_chr,acceptor_chr,
 			 donor1,donor2,acceptor2,acceptor1,donor_prob,acceptor_prob,
@@ -3315,7 +3320,7 @@ print_exon_exon (Filestring_T fp, char *abbrev, Stage3end_T this, Stage3end_T ma
 			 chromosome_iit,queryseq,pairedlength,
 			 /*concordant_chrpos*/1,donor_chrpos,/*acceptor_chrpos*/1,mate_chrpos,
 			 /*hardclip_low*/circularpos,/*hardclip_high*/0,
-			 resulttype,first_read_p,npaths_mate,quality_shift,sam_read_group_id,
+			 resulttype,first_read_p,artificial_mate_p,npaths_mate,quality_shift,sam_read_group_id,
 			 invertp,invert_mate_p,/*use_hardclip_p*/true,/*print_xt_p*/true,
 			 acceptor_sensedir,donor_strand,acceptor_strand,donor_chr,acceptor_chr,
 			 donor1,donor2,acceptor2,acceptor1,donor_prob,acceptor_prob,
@@ -3326,7 +3331,7 @@ print_exon_exon (Filestring_T fp, char *abbrev, Stage3end_T this, Stage3end_T ma
 			 chromosome_iit,queryseq,pairedlength,
 			 concordant_chrpos,donor_chrpos,acceptor_chrpos,mate_chrpos,
 			 hardclip_low,hardclip_high,resulttype,first_read_p,
-			 npaths_mate,quality_shift,sam_read_group_id,
+			 artificial_mate_p,npaths_mate,quality_shift,sam_read_group_id,
 			 invertp,invert_mate_p,/*use_hardclip_p*/true,/*print_xt_p*/true,
 			 acceptor_sensedir,donor_strand,acceptor_strand,donor_chr,acceptor_chr,
 			 donor1,donor2,acceptor2,acceptor1,donor_prob,acceptor_prob,
@@ -3340,7 +3345,7 @@ print_exon_exon (Filestring_T fp, char *abbrev, Stage3end_T this, Stage3end_T ma
 			 chromosome_iit,queryseq,pairedlength,
 			 concordant_chrpos,donor_chrpos,acceptor_chrpos,mate_chrpos,
 			 /*hardclip_low*/0,/*hardclip_high*/querylength-circularpos,
-			 resulttype,first_read_p,npaths_mate,quality_shift,sam_read_group_id,
+			 resulttype,first_read_p,artificial_mate_p,npaths_mate,quality_shift,sam_read_group_id,
 			 invertp,invert_mate_p,/*use_hardclip_p*/true,/*print_xt_p*/true,
 			 acceptor_sensedir,donor_strand,acceptor_strand,donor_chr,acceptor_chr,
 			 donor1,donor2,acceptor2,acceptor1,donor_prob,acceptor_prob,
@@ -3350,7 +3355,7 @@ print_exon_exon (Filestring_T fp, char *abbrev, Stage3end_T this, Stage3end_T ma
 			 chromosome_iit,queryseq,pairedlength,
 			 /*concordant_chrpos*/1,donor_chrpos,/*acceptor_chrpos*/1,mate_chrpos,
 			 /*hardclip_low*/circularpos,/*hardclip_high*/0,
-			 resulttype,first_read_p,npaths_mate,quality_shift,sam_read_group_id,
+			 resulttype,first_read_p,artificial_mate_p,npaths_mate,quality_shift,sam_read_group_id,
 			 invertp,invert_mate_p,/*use_hardclip_p*/true,/*print_xt_p*/true,
 			 acceptor_sensedir,donor_strand,acceptor_strand,donor_chr,acceptor_chr,
 			 donor1,donor2,acceptor2,acceptor1,donor_prob,acceptor_prob,
@@ -3361,7 +3366,7 @@ print_exon_exon (Filestring_T fp, char *abbrev, Stage3end_T this, Stage3end_T ma
 			 chromosome_iit,queryseq,pairedlength,
 			 concordant_chrpos,donor_chrpos,acceptor_chrpos,mate_chrpos,
 			 hardclip_low,hardclip_high,resulttype,first_read_p,
-			 npaths_mate,quality_shift,sam_read_group_id,
+			 artificial_mate_p,npaths_mate,quality_shift,sam_read_group_id,
 			 invertp,invert_mate_p,/*use_hardclip_p*/true,/*print_xt_p*/true,
 			 acceptor_sensedir,donor_strand,acceptor_strand,donor_chr,acceptor_chr,
 			 donor1,donor2,acceptor2,acceptor1,donor_prob,acceptor_prob,
@@ -3374,7 +3379,7 @@ print_exon_exon (Filestring_T fp, char *abbrev, Stage3end_T this, Stage3end_T ma
 		      chromosome_iit,queryseq,pairedlength,
 		      concordant_chrpos,donor_chrpos,acceptor_chrpos,mate_chrpos,
 		      /*hardclip_low*/0,/*hardclip_high*/querylength-circularpos,
-		      resulttype,first_read_p,npaths_mate,quality_shift,sam_read_group_id,
+		      resulttype,first_read_p,artificial_mate_p,npaths_mate,quality_shift,sam_read_group_id,
 		      invertp,invert_mate_p,/*use_hardclip_p*/true,/*print_xt_p*/true,
 		      donor_sensedir,donor_strand,acceptor_strand,donor_chr,acceptor_chr,
 		      donor1,donor2,acceptor2,acceptor1,donor_prob,acceptor_prob,
@@ -3384,7 +3389,7 @@ print_exon_exon (Filestring_T fp, char *abbrev, Stage3end_T this, Stage3end_T ma
 		      chromosome_iit,queryseq,pairedlength,
 		      /*concordant_chrpos*/1,/*donor_chrpos*/1,acceptor_chrpos,mate_chrpos,
 		      /*hardclip_low*/circularpos,/*hardclip_high*/0,
-		      resulttype,first_read_p,npaths_mate,quality_shift,sam_read_group_id,
+		      resulttype,first_read_p,artificial_mate_p,npaths_mate,quality_shift,sam_read_group_id,
 		      invertp,invert_mate_p,/*use_hardclip_p*/true,/*print_xt_p*/true,
 		      donor_sensedir,donor_strand,acceptor_strand,donor_chr,acceptor_chr,
 		      donor1,donor2,acceptor2,acceptor1,donor_prob,acceptor_prob,
@@ -3395,7 +3400,7 @@ print_exon_exon (Filestring_T fp, char *abbrev, Stage3end_T this, Stage3end_T ma
 		      chromosome_iit,queryseq,pairedlength,
 		      concordant_chrpos,donor_chrpos,acceptor_chrpos,mate_chrpos,
 		      hardclip_low,hardclip_high,resulttype,first_read_p,
-		      npaths_mate,quality_shift,sam_read_group_id,
+		      artificial_mate_p,npaths_mate,quality_shift,sam_read_group_id,
 		      invertp,invert_mate_p,/*use_hardclip_p*/true,/*print_xt_p*/true,
 		      donor_sensedir,donor_strand,acceptor_strand,donor_chr,acceptor_chr,
 		      donor1,donor2,acceptor2,acceptor1,donor_prob,acceptor_prob,
@@ -3410,7 +3415,7 @@ print_exon_exon (Filestring_T fp, char *abbrev, Stage3end_T this, Stage3end_T ma
 			 chromosome_iit,queryseq,pairedlength,
 			 concordant_chrpos,donor_chrpos,acceptor_chrpos,mate_chrpos,
 			 /*hardclip_low*/0,/*hardclip_high*/querylength-circularpos,
-			 resulttype,first_read_p,npaths_mate,quality_shift,sam_read_group_id,
+			 resulttype,first_read_p,artificial_mate_p,npaths_mate,quality_shift,sam_read_group_id,
 			 invertp,invert_mate_p,/*use_hardclip_p*/true,/*print_xt_p*/true,
 			 acceptor_sensedir,donor_strand,acceptor_strand,donor_chr,acceptor_chr,
 			 donor1,donor2,acceptor2,acceptor1,donor_prob,acceptor_prob,
@@ -3420,7 +3425,7 @@ print_exon_exon (Filestring_T fp, char *abbrev, Stage3end_T this, Stage3end_T ma
 			 chromosome_iit,queryseq,pairedlength,
 			 /*concordant_chrpos*/1,donor_chrpos,/*acceptor_chrpos*/1,mate_chrpos,
 			 /*hardclip_low*/circularpos,/*hardclip_high*/0,
-			 resulttype,first_read_p,npaths_mate,quality_shift,sam_read_group_id,
+			 resulttype,first_read_p,artificial_mate_p,npaths_mate,quality_shift,sam_read_group_id,
 			 invertp,invert_mate_p,/*use_hardclip_p*/true,/*print_xt_p*/true,
 			 acceptor_sensedir,donor_strand,acceptor_strand,donor_chr,acceptor_chr,
 			 donor1,donor2,acceptor2,acceptor1,donor_prob,acceptor_prob,
@@ -3431,7 +3436,7 @@ print_exon_exon (Filestring_T fp, char *abbrev, Stage3end_T this, Stage3end_T ma
 			 chromosome_iit,queryseq,pairedlength,
 			 concordant_chrpos,donor_chrpos,acceptor_chrpos,mate_chrpos,
 			 hardclip_low,hardclip_high,resulttype,first_read_p,
-			 npaths_mate,quality_shift,sam_read_group_id,
+			 artificial_mate_p,npaths_mate,quality_shift,sam_read_group_id,
 			 invertp,invert_mate_p,/*use_hardclip_p*/true,/*print_xt_p*/true,
 			 acceptor_sensedir,donor_strand,acceptor_strand,donor_chr,acceptor_chr,
 			 donor1,donor2,acceptor2,acceptor1,donor_prob,acceptor_prob,
@@ -3444,7 +3449,7 @@ print_exon_exon (Filestring_T fp, char *abbrev, Stage3end_T this, Stage3end_T ma
 		      chromosome_iit,queryseq,pairedlength,
 		      concordant_chrpos,donor_chrpos,acceptor_chrpos,mate_chrpos,
 		      /*hardclip_low*/0,/*hardclip_high*/querylength-circularpos,
-		      resulttype,first_read_p,npaths_mate,quality_shift,sam_read_group_id,
+		      resulttype,first_read_p,artificial_mate_p,npaths_mate,quality_shift,sam_read_group_id,
 		      invertp,invert_mate_p,/*use_hardclip_p*/true,/*print_xt_p*/true,
 		      donor_sensedir,donor_strand,acceptor_strand,donor_chr,acceptor_chr,
 		      donor1,donor2,acceptor2,acceptor1,donor_prob,acceptor_prob,
@@ -3454,7 +3459,7 @@ print_exon_exon (Filestring_T fp, char *abbrev, Stage3end_T this, Stage3end_T ma
 		      chromosome_iit,queryseq,pairedlength,
 		      /*concordant_chrpos*/1,/*donor_chrpos*/1,acceptor_chrpos,mate_chrpos,
 		      /*hardclip_low*/circularpos,/*hardclip_high*/0,
-		      resulttype,first_read_p,npaths_mate,quality_shift,sam_read_group_id,
+		      resulttype,first_read_p,artificial_mate_p,npaths_mate,quality_shift,sam_read_group_id,
 		      invertp,invert_mate_p,/*use_hardclip_p*/true,/*print_xt_p*/true,
 		      donor_sensedir,donor_strand,acceptor_strand,donor_chr,acceptor_chr,
 		      donor1,donor2,acceptor2,acceptor1,donor_prob,acceptor_prob,
@@ -3465,7 +3470,7 @@ print_exon_exon (Filestring_T fp, char *abbrev, Stage3end_T this, Stage3end_T ma
 		      chromosome_iit,queryseq,pairedlength,
 		      concordant_chrpos,donor_chrpos,acceptor_chrpos,mate_chrpos,
 		      hardclip_low,hardclip_high,resulttype,first_read_p,
-		      npaths_mate,quality_shift,sam_read_group_id,
+		      artificial_mate_p,npaths_mate,quality_shift,sam_read_group_id,
 		      invertp,invert_mate_p,/*use_hardclip_p*/true,/*print_xt_p*/true,
 		      donor_sensedir,donor_strand,acceptor_strand,donor_chr,acceptor_chr,
 		      donor1,donor2,acceptor2,acceptor1,donor_prob,acceptor_prob,
@@ -3489,8 +3494,8 @@ SAM_print (Filestring_T fp, Filestring_T fp_failedinput, char *abbrev,
 	   int absmq_score, int first_absmq, int second_absmq, int mapq_score, Univ_IIT_T chromosome_iit, Shortread_T queryseq,
 	   Shortread_T queryseq_mate, int pairedlength, Chrpos_T chrpos, Chrpos_T mate_chrpos,
 	   int clipdir, int hardclip5_low, int hardclip5_high, int hardclip3_low, int hardclip3_high,
-	   Resulttype_T resulttype, bool first_read_p,
-	   int npaths_mate, int quality_shift, char *sam_read_group_id, bool invertp, bool invert_mate_p,
+	   Resulttype_T resulttype, bool first_read_p, bool artificial_mate_p, int npaths_mate,
+	   int quality_shift, char *sam_read_group_id, bool invertp, bool invert_mate_p,
 	   bool merge_samechr_p) {
   Hittype_T hittype;
   unsigned int flag;
@@ -3504,8 +3509,8 @@ SAM_print (Filestring_T fp, Filestring_T fp_failedinput, char *abbrev,
   /* Also, can use this test here because --quiet-if-excessive cases go directly to SAM_print_nomapping */
   if (npaths == 0) {
     SAM_print_nomapping(fp,abbrev,queryseq,mate,acc1,acc2,chromosome_iit,resulttype,first_read_p,
-			/*pathnum*/0,/*npaths*/0,npaths_mate,mate_chrpos,quality_shift,
-			sam_read_group_id,invertp,invert_mate_p);
+			/*pathnum*/0,/*npaths*/0,artificial_mate_p,npaths_mate,mate_chrpos,
+			quality_shift,sam_read_group_id,invertp,invert_mate_p);
 
     if (fp_failedinput != NULL) {
       if (first_read_p == true) {
@@ -3537,8 +3542,8 @@ SAM_print (Filestring_T fp, Filestring_T fp_failedinput, char *abbrev,
     }
 
     flag = SAM_compute_flag(Stage3end_plusp(this),mate,resulttype,first_read_p,
-			    pathnum,npaths,npaths_mate,absmq_score,first_absmq,
-			    invertp,invert_mate_p);
+			    pathnum,npaths,artificial_mate_p,npaths_mate,
+			    absmq_score,first_absmq,invertp,invert_mate_p);
 
     querylength = Shortread_fulllength(queryseq);
     if ((circularpos = Stage3end_circularpos(this)) > 0
@@ -3614,13 +3619,13 @@ SAM_print (Filestring_T fp, Filestring_T fp_failedinput, char *abbrev,
       print_exon_exon(fp,abbrev,this,mate,acc1,acc2,pathnum,npaths,
 		      absmq_score,first_absmq,second_absmq,mapq_score,chromosome_iit,queryseq,pairedlength,
 		      mate_chrpos,hardclip5_low,hardclip5_high,resulttype,/*first_read_p*/true,
-		      npaths_mate,quality_shift,sam_read_group_id,
+		      artificial_mate_p,npaths_mate,quality_shift,sam_read_group_id,
 		      invertp,invert_mate_p);
     } else {
       print_exon_exon(fp,abbrev,this,mate,acc1,acc2,pathnum,npaths,
 		      absmq_score,first_absmq,second_absmq,mapq_score,chromosome_iit,queryseq,pairedlength,
 		      mate_chrpos,hardclip3_low,hardclip3_high,resulttype,/*first_read_p*/false,
-		      npaths_mate,quality_shift,sam_read_group_id,
+		      artificial_mate_p,npaths_mate,quality_shift,sam_read_group_id,
 		      invertp,invert_mate_p);
     }
 
@@ -3635,24 +3640,24 @@ SAM_print (Filestring_T fp, Filestring_T fp_failedinput, char *abbrev,
       print_substrings(fp,abbrev,this,mate,acc1,acc2,pathnum,npaths,
 		       absmq_score,first_absmq,second_absmq,mapq_score,queryseq,pairedlength,
 		       chrpos,mate_chrpos,/*hardclip_low*/0,/*hardclip_high*/querylength-circularpos,
-		       resulttype,first_read_p,npaths_mate,quality_shift,sam_read_group_id,
+		       resulttype,first_read_p,artificial_mate_p,npaths_mate,quality_shift,sam_read_group_id,
 		       invertp,invert_mate_p,/*circularp*/true);
       print_substrings(fp,abbrev,this,mate,acc1,acc2,pathnum,npaths,
 		       absmq_score,first_absmq,second_absmq,mapq_score,queryseq,pairedlength,
 		       /*chrpos*/1,mate_chrpos,/*hardclip_low*/circularpos,/*hardclip_high*/0,
-		       resulttype,first_read_p,npaths_mate,quality_shift,sam_read_group_id,
+		       resulttype,first_read_p,artificial_mate_p,npaths_mate,quality_shift,sam_read_group_id,
 		       invertp,invert_mate_p,/*circularp*/true);
     } else if (first_read_p == true) {
       print_substrings(fp,abbrev,this,mate,acc1,acc2,pathnum,npaths,
 		       absmq_score,first_absmq,second_absmq,mapq_score,queryseq,pairedlength,
 		       chrpos,mate_chrpos,hardclip5_low,hardclip5_high,resulttype,/*first_read_p*/true,
-		       npaths_mate,quality_shift,sam_read_group_id,
+		       artificial_mate_p,npaths_mate,quality_shift,sam_read_group_id,
 		       invertp,invert_mate_p,/*circularp*/false);
     } else {
       print_substrings(fp,abbrev,this,mate,acc1,acc2,pathnum,npaths,
 		       absmq_score,first_absmq,second_absmq,mapq_score,queryseq,pairedlength,
 		       chrpos,mate_chrpos,hardclip3_low,hardclip3_high,resulttype,/*first_read_p*/false,
-		       npaths_mate,quality_shift,sam_read_group_id,
+		       artificial_mate_p,npaths_mate,quality_shift,sam_read_group_id,
 		       invertp,invert_mate_p,/*circularp*/false);
     }
   }
@@ -3696,12 +3701,14 @@ SAM_print_paired (Filestring_T fp, Filestring_T fp_failedinput_1, Filestring_T f
       Filestring_set_split_output(fp,OUTPUT_NM);
       SAM_print_nomapping(fp,ABBREV_NOMAPPING_1,queryseq1,/*mate*/(Stage3end_T) NULL,
 			  acc1,acc2,chromosome_iit,resulttype,
-			  /*first_read_p*/true,/*pathnum*/0,/*npaths*/0,/*npaths_mate*/0,
+			  /*first_read_p*/true,/*pathnum*/0,/*npaths*/0,
+			  /*artificial_mate_p*/false,/*npaths_mate*/0,
 			  /*mate_chrpos*/0U,quality_shift,
 			  sam_read_group_id,invert_first_p,invert_second_p);
       SAM_print_nomapping(fp,ABBREV_NOMAPPING_2,queryseq2,/*mate*/(Stage3end_T) NULL,
 			  acc1,acc2,chromosome_iit,resulttype,
-			  /*first_read_p*/false,/*pathnum*/0,/*npaths*/0,/*npaths_mate*/0,
+			  /*first_read_p*/false,/*pathnum*/0,/*npaths*/0,
+			  /*artificial_mate_p*/false,/*npaths_mate*/0,
 			  /*mate_chrpos*/0U,quality_shift,
 			  sam_read_group_id,invert_second_p,invert_first_p);
 
@@ -3754,7 +3761,7 @@ SAM_print_paired (Filestring_T fp, Filestring_T fp_failedinput_1, Filestring_T f
 		  /*queryseq*/queryseq1,/*queryseq_mate*/queryseq2,
 		  Stage3pair_pairlength(stage3pair),/*chrpos*/chrpos5,/*mate_chrpos*/chrpos3,
 		  clipdir,hardclip5_low,hardclip5_high,hardclip3_low,hardclip3_high,
-		  resulttype,/*first_read_p*/true,/*npaths_mate*/npaths,
+		  resulttype,/*first_read_p*/true,/*artificial_mate_p*/false,/*npaths_mate*/npaths,
 		  quality_shift,sam_read_group_id,invert_first_p,invert_second_p,
 		  merge_samechr_p);
 
@@ -3766,7 +3773,7 @@ SAM_print_paired (Filestring_T fp, Filestring_T fp_failedinput_1, Filestring_T f
 		  /*queryseq*/queryseq2,/*queryseq_mate*/queryseq1,
 		  Stage3pair_pairlength(stage3pair),/*chrpos*/chrpos3,/*mate_chrpos*/chrpos5,
 		  clipdir,hardclip5_low,hardclip5_high,hardclip3_low,hardclip3_high,
-		  resulttype,/*first_read_p*/false,/*npaths_mate*/npaths,
+		  resulttype,/*first_read_p*/false,/*artificial_mate_p*/false,/*npaths_mate*/npaths,
 		  quality_shift,sam_read_group_id,invert_second_p,invert_first_p,
 		  merge_samechr_p);
 
@@ -3785,7 +3792,7 @@ SAM_print_paired (Filestring_T fp, Filestring_T fp_failedinput_1, Filestring_T f
 	}
 	/* merging changes resulttype from UNPAIRED_UNIQ to SINGLEEND_UNIQ */
 	flag = SAM_compute_flag(Stage3end_plusp(hit5),/*mate*/NULL,/*resulttype*/SINGLEEND_UNIQ,/*first_read_p*/true,
-				/*pathnum*/1,/*npaths*/1,/*npaths_mate*/0,
+				/*pathnum*/1,/*npaths*/1,/*artificial_mate_p*/false,/*npaths_mate*/0,
 				Stage3pair_absmq_score(stage3pair),first_absmq,/*invertp*/false,
 				/*invert_mate_p*/false);
 	Filestring_set_split_output(fp,OUTPUT_UU);
@@ -3823,15 +3830,15 @@ SAM_print_paired (Filestring_T fp, Filestring_T fp_failedinput_1, Filestring_T f
 	SAM_print_nomapping(fp,ABBREV_CONCORDANT_TRANSLOC,
 			    queryseq1,/*mate*/(Stage3end_T) NULL,
 			    acc1,acc2,chromosome_iit,resulttype,
-			    /*first_read_p*/true,/*pathnum*/1,npaths,/*npaths_mate*/npaths,
-			    /*mate_chrpos*/0U,quality_shift,
-			    sam_read_group_id,invert_first_p,invert_second_p);
+			    /*first_read_p*/true,/*pathnum*/1,npaths,
+			    /*artificial_mate_p*/false,/*npaths_mate*/npaths,/*mate_chrpos*/0U,
+			    quality_shift,sam_read_group_id,invert_first_p,invert_second_p);
 	SAM_print_nomapping(fp,ABBREV_CONCORDANT_TRANSLOC,
 			    queryseq2,/*mate*/(Stage3end_T) NULL,
 			    acc1,acc2,chromosome_iit,resulttype,
-			    /*first_read_p*/false,/*pathnum*/1,npaths,/*npaths_mate*/npaths,
-			    /*mate_chrpos*/0U,quality_shift,
-			    sam_read_group_id,invert_second_p,invert_first_p);
+			    /*first_read_p*/false,/*pathnum*/1,npaths,
+			    /*artificial_mate_p*/false,/*npaths_mate*/npaths,/*mate_chrpos*/0U,
+			    quality_shift,sam_read_group_id,invert_second_p,invert_first_p);
 
       } else {
 	/* Stage3pair_eval(stage3pairarray,npaths,maxpaths_report,queryseq1,queryseq2); */
@@ -3868,7 +3875,7 @@ SAM_print_paired (Filestring_T fp, Filestring_T fp_failedinput_1, Filestring_T f
 		    /*queryseq*/queryseq1,/*queryseq_mate*/queryseq2,
 		    Stage3pair_pairlength(stage3pair),/*chrpos*/chrpos5,/*mate_chrpos*/chrpos3,
 		    clipdir,hardclip5_low,hardclip5_high,hardclip3_low,hardclip3_high,
-		    resulttype,/*first_read_p*/true,/*npaths_mate*/npaths,
+		    resulttype,/*first_read_p*/true,/*artificial_mate_p*/false,/*npaths_mate*/npaths,
 		    quality_shift,sam_read_group_id,invert_first_p,invert_second_p,
 		    merge_samechr_p);
 
@@ -3880,7 +3887,7 @@ SAM_print_paired (Filestring_T fp, Filestring_T fp_failedinput_1, Filestring_T f
 		    /*queryseq*/queryseq2,/*queryseq_mate*/queryseq1,
 		    Stage3pair_pairlength(stage3pair),/*chrpos*/chrpos3,/*mate_chrpos*/chrpos5,
 		    clipdir,hardclip5_low,hardclip5_high,hardclip3_low,hardclip3_high,
-		    resulttype,/*first_read_p*/false,/*npaths_mate*/npaths,
+		    resulttype,/*first_read_p*/false,/*artificial_mate_p*/false,/*npaths_mate*/npaths,
 		    quality_shift,sam_read_group_id,invert_second_p,invert_first_p,
 		    merge_samechr_p);
 	}
@@ -3895,13 +3902,15 @@ SAM_print_paired (Filestring_T fp, Filestring_T fp_failedinput_1, Filestring_T f
 	SAM_print_nomapping(fp,ABBREV_CONCORDANT_MULT_XS,
 			    queryseq1,/*mate*/(Stage3end_T) NULL,
 			    acc1,acc2,chromosome_iit,resulttype,
-			    /*first_read_p*/true,/*pathnum*/1,npaths,/*npaths_mate*/npaths,
+			    /*first_read_p*/true,/*pathnum*/1,npaths,
+			    /*artificial_mate_p*/false,/*npaths_mate*/npaths,
 			    /*mate_chrpos*/0U,quality_shift,
 			    sam_read_group_id,invert_first_p,invert_second_p);
 	SAM_print_nomapping(fp,ABBREV_CONCORDANT_MULT_XS,
 			    queryseq2,/*mate*/(Stage3end_T) NULL,
 			    acc1,acc2,chromosome_iit,resulttype,
-			    /*first_read_p*/false,/*pathnum*/1,npaths,/*npaths_mate*/npaths,
+			    /*first_read_p*/false,/*pathnum*/1,npaths,
+			    /*artificial_mate_p*/false,/*npaths_mate*/npaths,
 			    /*mate_chrpos*/0U,quality_shift,
 			    sam_read_group_id,invert_second_p,invert_first_p);
 
@@ -3946,7 +3955,7 @@ SAM_print_paired (Filestring_T fp, Filestring_T fp_failedinput_1, Filestring_T f
 		      /*queryseq*/queryseq1,/*queryseq_mate*/queryseq2,
 		      Stage3pair_pairlength(stage3pair),/*chrpos*/chrpos5,/*mate_chrpos*/chrpos3,
 		      clipdir,hardclip5_low,hardclip5_high,hardclip3_low,hardclip3_high,
-		      resulttype,/*first_read_p*/true,/*npaths_mate*/npaths,
+		      resulttype,/*first_read_p*/true,/*artificial_mate_p*/false,/*npaths_mate*/npaths,
 		      quality_shift,sam_read_group_id,invert_first_p,invert_second_p,
 		      merge_samechr_p);
 
@@ -3958,7 +3967,7 @@ SAM_print_paired (Filestring_T fp, Filestring_T fp_failedinput_1, Filestring_T f
 		      /*queryseq*/queryseq2,/*queryseq_mate*/queryseq1,
 		      Stage3pair_pairlength(stage3pair),/*chrpos*/chrpos3,/*mate_chrpos*/chrpos5,
 		      clipdir,hardclip5_low,hardclip5_high,hardclip3_low,hardclip3_high,
-		      resulttype,/*first_read_p*/false,/*npaths_mate*/npaths,
+		      resulttype,/*first_read_p*/false,/*artificial_mate_p*/false,/*npaths_mate*/npaths,
 		      quality_shift,sam_read_group_id,invert_second_p,invert_first_p,
 		      merge_samechr_p);
 	    
@@ -3977,7 +3986,7 @@ SAM_print_paired (Filestring_T fp, Filestring_T fp_failedinput_1, Filestring_T f
 	    }
 	    /* merging changes resulttype from UNPAIRED_UNIQ to SINGLEEND_UNIQ */
 	    flag = SAM_compute_flag(Stage3end_plusp(hit5),/*mate*/NULL,/*resulttype*/SINGLEEND_UNIQ,/*first_read_p*/true,
-				    /*pathnum*/1,/*npaths*/1,/*npaths_mate*/0,
+				    /*pathnum*/1,/*npaths*/1,/*artificial_mate_p*/false,/*npaths_mate*/0,
 				    Stage3pair_absmq_score(stage3pair),first_absmq,/*invertp*/false,
 				    /*invert_mate_p*/false);
 	    Pair_print_sam(fp,ABBREV_CONCORDANT_MULT,pairarray,npairs,/*cigar_tokens*/NULL,/*gmap_intronp*/false,
@@ -4044,7 +4053,7 @@ SAM_print_paired (Filestring_T fp, Filestring_T fp_failedinput_1, Filestring_T f
 		/*queryseq*/queryseq1,/*queryseq_mate*/queryseq2,
 		Stage3pair_pairlength(stage3pair),/*chrpos*/chrpos5,/*mate_chrpos*/chrpos3,
 		/*clipdir*/0,hardclip5_low,hardclip5_high,hardclip3_low,hardclip3_high,
-		resulttype,/*first_read_p*/true,/*npaths_mate*/npaths,
+		resulttype,/*first_read_p*/true,/*artificial_mate_p*/false,/*npaths_mate*/npaths,
 		quality_shift,sam_read_group_id,invert_first_p,invert_second_p,
 		merge_samechr_p);
 
@@ -4056,7 +4065,7 @@ SAM_print_paired (Filestring_T fp, Filestring_T fp_failedinput_1, Filestring_T f
 		/*queryseq*/queryseq2,/*queryseq_mate*/queryseq1,
 		Stage3pair_pairlength(stage3pair),/*chrpos*/chrpos3,/*mate_chrpos*/chrpos5,
 		/*clipdir*/0,hardclip5_low,hardclip5_high,hardclip3_low,hardclip3_high,
-		resulttype,/*first_read_p*/false,/*npaths_mate*/npaths,
+		resulttype,/*first_read_p*/false,/*artificial_mate_p*/false,/*npaths_mate*/npaths,
 		quality_shift,sam_read_group_id,invert_second_p,invert_first_p,
 		merge_samechr_p);
 
@@ -4069,13 +4078,15 @@ SAM_print_paired (Filestring_T fp, Filestring_T fp_failedinput_1, Filestring_T f
 	SAM_print_nomapping(fp,ABBREV_PAIRED_MULT_XS,
 			    queryseq1,/*mate*/(Stage3end_T) NULL,
 			    acc1,acc2,chromosome_iit,resulttype,
-			    /*first_read_p*/true,/*pathnum*/1,npaths,/*npaths_mate*/npaths,
+			    /*first_read_p*/true,/*pathnum*/1,npaths,
+			    /*artificial_mate_p*/false,/*npaths_mate*/npaths,
 			    /*mate_chrpos*/0U,quality_shift,
 			    sam_read_group_id,invert_first_p,invert_second_p);
 	SAM_print_nomapping(fp,ABBREV_PAIRED_MULT_XS,
 			    queryseq2,/*mate*/(Stage3end_T) NULL,
 			    acc1,acc2,chromosome_iit,resulttype,
-			    /*first_read_p*/false,/*pathnum*/1,npaths,/*npaths_mate*/npaths,
+			    /*first_read_p*/false,/*pathnum*/1,npaths,
+			    /*artificial_mate_p*/false,/*npaths_mate*/npaths,
 			    /*mate_chrpos*/0U,quality_shift,
 			    sam_read_group_id,invert_second_p,invert_first_p);
 
@@ -4104,7 +4115,7 @@ SAM_print_paired (Filestring_T fp, Filestring_T fp_failedinput_1, Filestring_T f
 		    /*queryseq*/queryseq1,/*queryseq_mate*/queryseq2,
 		    Stage3pair_pairlength(stage3pair),/*chrpos*/chrpos5,/*mate_chrpos*/chrpos3,
 		    /*clipdir*/0,hardclip5_low,hardclip5_high,hardclip3_low,hardclip3_high,
-		    resulttype,/*first_read_p*/true,/*npaths_mate*/npaths,
+		    resulttype,/*first_read_p*/true,/*artificial_mate_p*/false,/*npaths_mate*/npaths,
 		    quality_shift,sam_read_group_id,invert_first_p,invert_second_p,
 		    merge_samechr_p);
 
@@ -4116,7 +4127,7 @@ SAM_print_paired (Filestring_T fp, Filestring_T fp_failedinput_1, Filestring_T f
 		    /*queryseq*/queryseq2,/*queryseq_mate*/queryseq1,
 		    Stage3pair_pairlength(stage3pair),/*chrpos*/chrpos3,/*mate_chrpos*/chrpos5,
 		    /*clipdir*/0,hardclip5_low,hardclip5_high,hardclip3_low,hardclip3_high,
-		    resulttype,/*first_read_p*/false,/*npaths_mate*/npaths,
+		    resulttype,/*first_read_p*/false,/*artificial_mate_p*/false,/*npaths_mate*/npaths,
 		    quality_shift,sam_read_group_id,invert_second_p,invert_first_p,
 		    merge_samechr_p);
 	}
@@ -4150,7 +4161,7 @@ SAM_print_paired (Filestring_T fp, Filestring_T fp_failedinput_1, Filestring_T f
 		/*queryseq*/queryseq1,/*queryseq_mate*/queryseq2,
 		/*pairedlength*/0U,/*chrpos*/chrpos5,/*mate_chrpos*/chrpos3,
 		/*clipdir*/0,/*hardclip5_low*/0,/*hardclip5_high*/0,/*hardclip3_low*/0,/*hardclip3_high*/0,
-		resulttype,/*first_read_p*/true,/*npaths_mate*/1,quality_shift,sam_read_group_id,
+		resulttype,/*first_read_p*/true,/*artificial_mate_p*/false,/*npaths_mate*/1,quality_shift,sam_read_group_id,
 		invert_first_p,invert_second_p,merge_samechr_p);
 
       /* Note: Do not act on add_paired_nomappers_p, since the two reads are artificially paired up already */
@@ -4163,7 +4174,7 @@ SAM_print_paired (Filestring_T fp, Filestring_T fp_failedinput_1, Filestring_T f
 		/*queryseq*/queryseq2,/*queryseq_mate*/queryseq1,
 		/*pairedlength*/0U,/*chrpos*/chrpos3,/*mate_chrpos*/chrpos5,
 		/*clipdir*/0,/*hardclip5_low*/0,/*hardclip5_high*/0,/*hardclip3_low*/0,/*hardclip3_high*/0,
-		resulttype,/*first_read_p*/false,/*npaths_mate*/1,quality_shift,sam_read_group_id,
+		resulttype,/*first_read_p*/false,/*artificial_mate_p*/false,/*npaths_mate*/1,quality_shift,sam_read_group_id,
 		invert_second_p,invert_first_p,merge_samechr_p);
 
     } else if (resulttype == UNPAIRED_MULT || resulttype == UNPAIRED_TRANSLOC) {
@@ -4222,8 +4233,8 @@ SAM_print_paired (Filestring_T fp, Filestring_T fp_failedinput_1, Filestring_T f
 		    /*queryseq*/queryseq1,/*queryseq_mate*/queryseq2,
 		    /*pairedlength*/0U,/*chrpos*/chrpos5,/*mate_chrpos*/chrpos3,
 		    /*clipdir*/0,/*hardclip5_low*/0,/*hardclip5_high*/0,/*hardclip3_low*/0,/*hardclip3_high*/0,
-		    resulttype,/*first_read_p*/true,/*npaths_mate*/npaths_max,quality_shift,sam_read_group_id,
-		    invert_first_p,invert_second_p,merge_samechr_p);
+		    resulttype,/*first_read_p*/true,/*artificial_mate_p*/false,/*npaths_mate*/npaths_max,
+		    quality_shift,sam_read_group_id,invert_first_p,invert_second_p,merge_samechr_p);
 
 	  stage3 = stage3array2[pathnum-1];
 	  SAM_print(fp,fp_failedinput_2,abbrev,stage3,/*mate*/stage3array1[pathnum-1],acc1,acc2,pathnum,npaths_max,
@@ -4232,8 +4243,8 @@ SAM_print_paired (Filestring_T fp, Filestring_T fp_failedinput_1, Filestring_T f
 		    /*queryseq*/queryseq2,/*queryseq_mate*/queryseq1,
 		    /*pairedlength*/0U,/*chrpos*/chrpos3,/*mate_chrpos*/chrpos5,
 		    /*clipdir*/0,/*hardclip5_low*/0,/*hardclip5_high*/0,/*hardclip3_low*/0,/*hardclip3_high*/0,
-		    resulttype,/*first_read_p*/false,/*npaths_mate*/npaths_max,quality_shift,sam_read_group_id,
-		    invert_second_p,invert_first_p,merge_samechr_p);
+		    resulttype,/*first_read_p*/false,/*artificial_mate_p*/false,/*npaths_mate*/npaths_max,
+		    quality_shift,sam_read_group_id,invert_second_p,invert_first_p,merge_samechr_p);
 	}
 
 	/* Print remaining results with non-mappers */
@@ -4251,13 +4262,13 @@ SAM_print_paired (Filestring_T fp, Filestring_T fp_failedinput_1, Filestring_T f
 		      /*queryseq*/queryseq1,/*queryseq_mate*/queryseq2,
 		      /*pairedlength*/0U,/*chrpos*/chrpos5,/*mate_chrpos*/chrpos3,
 		      /*clipdir*/0,/*hardclip5_low*/0,/*hardclip5_high*/0,/*hardclip3_low*/0,/*hardclip3_high*/0,
-		      resulttype,/*first_read_p*/true,/*npaths_mate*/npaths_max,quality_shift,sam_read_group_id,
-		      invert_first_p,invert_second_p,merge_samechr_p);
+		      resulttype,/*first_read_p*/true,/*artificial_mate_p*/true,/*npaths_mate*/npaths_max,
+		      quality_shift,sam_read_group_id,invert_first_p,invert_second_p,merge_samechr_p);
 
 	    /* matching nomapper for second end */
 	    SAM_print_nomapping(fp,abbrev,queryseq2,/*mate*/stage3,acc1,acc2,chromosome_iit,
-				resulttype,/*first_read_p*/false,pathnum,/*npaths*/npaths_max,/*npaths_mate*/npaths_max,
-				/*mate_chrpos*/chrpos5,
+				resulttype,/*first_read_p*/false,pathnum,npaths_max,
+				/*artificial_mate_p*/false,/*npaths_mate*/npaths_max,/*mate_chrpos*/chrpos5,
 				quality_shift,sam_read_group_id,invert_first_p,invert_second_p);
 	  }
 
@@ -4271,8 +4282,8 @@ SAM_print_paired (Filestring_T fp, Filestring_T fp_failedinput_1, Filestring_T f
 
 	    /* matching nomapper for first end */
 	    SAM_print_nomapping(fp,abbrev,queryseq1,/*mate*/stage3,acc1,acc2,chromosome_iit,
-				resulttype,/*first_read_p*/true,pathnum,/*npaths*/npaths_max,/*npaths_mate*/npaths_max,
-				/*mate_chrpos*/chrpos3,
+				resulttype,/*first_read_p*/true,pathnum,npaths_max,
+				/*artificial_mate_p*/false,/*npaths_mate*/npaths_max,/*mate_chrpos*/chrpos3,
 				quality_shift,sam_read_group_id,invert_first_p,invert_second_p);
 
 	    SAM_print(fp,fp_failedinput_2,abbrev,stage3,/*mate*/NULL,acc1,acc2,pathnum,npaths_max,
@@ -4281,8 +4292,8 @@ SAM_print_paired (Filestring_T fp, Filestring_T fp_failedinput_1, Filestring_T f
 		      /*queryseq*/queryseq2,/*queryseq_mate*/queryseq1,
 		      /*pairedlength*/0U,/*chrpos*/chrpos3,/*mate_chrpos*/chrpos5,
 		      /*clipdir*/0,/*hardclip5_low*/0,/*hardclip5_high*/0,/*hardclip3_low*/0,/*hardclip3_high*/0,
-		      resulttype,/*first_read_p*/false,/*npaths_mate*/npaths_max,quality_shift,sam_read_group_id,
-		      invert_second_p,invert_first_p,merge_samechr_p);
+		      resulttype,/*first_read_p*/false,/*artificial_mate_p*/true,/*npaths_mate*/npaths_max,
+		      quality_shift,sam_read_group_id,invert_second_p,invert_first_p,merge_samechr_p);
 	  }
 	}
 
@@ -4311,14 +4322,14 @@ SAM_print_paired (Filestring_T fp, Filestring_T fp_failedinput_1, Filestring_T f
 		    /*queryseq*/queryseq1,/*queryseq_mate*/queryseq2,
 		    /*pairedlength*/0U,/*chrpos*/chrpos5,/*mate_chrpos*/chrpos3,
 		    /*clipdir*/0,/*hardclip5_low*/0,/*hardclip5_high*/0,/*hardclip3_low*/0,/*hardclip3_high*/0,
-		    resulttype,/*first_read_p*/true,/*npaths_mate*/npaths2,quality_shift,sam_read_group_id,
-		    invert_first_p,invert_second_p,merge_samechr_p);
+		    resulttype,/*first_read_p*/true,/*artificial_mate_p*/false,/*npaths_mate*/npaths2,
+		    quality_shift,sam_read_group_id,invert_first_p,invert_second_p,merge_samechr_p);
 
 	} else if (quiet_if_excessive_p && npaths1 > maxpaths_report) {
 	  /* Just printing one end as nomapping */
 	  SAM_print_nomapping(fp,abbrev,queryseq1,mate,acc1,acc2,chromosome_iit,
-			      resulttype,/*first_read_p*/true,/*pathnum*/1,npaths1,/*npaths_mate*/npaths2,
-			      /*mate_chrpos*/chrpos3,
+			      resulttype,/*first_read_p*/true,/*pathnum*/1,npaths1,
+			      /*artificial_mate_p*/false,/*npaths_mate*/npaths2,/*mate_chrpos*/chrpos3,
 			      quality_shift,sam_read_group_id,invert_first_p,invert_second_p);
 
 	} else {
@@ -4334,8 +4345,8 @@ SAM_print_paired (Filestring_T fp, Filestring_T fp_failedinput_1, Filestring_T f
 		      /*queryseq*/queryseq1,/*queryseq_mate*/queryseq2,
 		      /*pairedlength*/0U,/*chrpos*/chrpos5,/*mate_chrpos*/chrpos3,
 		      /*clipdir*/0,/*hardclip5_low*/0,/*hardclip5_high*/0,/*hardclip3_low*/0,/*hardclip3_high*/0,
-		      resulttype,/*first_read_p*/true,/*npaths_mate*/npaths2,quality_shift,sam_read_group_id,
-		      invert_first_p,invert_second_p,merge_samechr_p);
+		      resulttype,/*first_read_p*/true,/*artificial_mate_p*/false,/*npaths_mate*/npaths2,
+		      quality_shift,sam_read_group_id,invert_first_p,invert_second_p,merge_samechr_p);
 	  }
 	}
 			  
@@ -4365,14 +4376,14 @@ SAM_print_paired (Filestring_T fp, Filestring_T fp_failedinput_1, Filestring_T f
 		    /*queryseq*/queryseq2,/*queryseq_mate*/queryseq1,
 		    /*pairedlength*/0U,/*chrpos*/chrpos3,/*mate_chrpos*/chrpos5,
 		    /*clipdir*/0,/*hardclip5_low*/0,/*hardclip5_high*/0,/*hardclip3_low*/0,/*hardclip3_high*/0,
-		    resulttype,/*first_read_p*/false,/*npaths_mate*/npaths1,quality_shift,sam_read_group_id,
-		    invert_second_p,invert_first_p,merge_samechr_p);
+		    resulttype,/*first_read_p*/false,/*artificial_mate_p*/false,/*npaths_mate*/npaths1,
+		    quality_shift,sam_read_group_id,invert_second_p,invert_first_p,merge_samechr_p);
 	  
 	} else if (quiet_if_excessive_p && npaths2 > maxpaths_report) {
 	  /* Just printing one end as nomapping */
 	  SAM_print_nomapping(fp,abbrev,queryseq2,mate,acc1,acc2,chromosome_iit,
-			      resulttype,/*first_read_p*/false,/*pathnum*/1,npaths2,/*npaths_mate*/npaths1,
-			      /*mate_chrpos*/chrpos5,
+			      resulttype,/*first_read_p*/false,/*pathnum*/1,npaths2,
+			      /*artificial_mate_p*/false,/*npaths_mate*/npaths1,/*mate_chrpos*/chrpos5,
 			      quality_shift,sam_read_group_id,invert_second_p,invert_first_p);
 	  
 	} else {
@@ -4388,8 +4399,8 @@ SAM_print_paired (Filestring_T fp, Filestring_T fp_failedinput_1, Filestring_T f
 		      /*queryseq*/queryseq2,/*queryseq_mate*/queryseq1,
 		      /*pairedlength*/0U,/*chrpos*/chrpos3,/*mate_chrpos*/chrpos5,
 		      /*clipdir*/0,/*hardclip5_low*/0,/*hardclip5_high*/0,/*hardclip3_low*/0,/*hardclip3_high*/0,
-		      resulttype,/*first_read_p*/false,/*npaths_mate*/npaths1,quality_shift,sam_read_group_id,
-		      invert_second_p,invert_first_p,merge_samechr_p);
+		      resulttype,/*first_read_p*/false,/*artificial_mate_p*/false,/*npaths_mate*/npaths1,
+		      quality_shift,sam_read_group_id,invert_second_p,invert_first_p,merge_samechr_p);
 	  }
 	}
       }
@@ -4471,8 +4482,8 @@ SAM_print_paired (Filestring_T fp, Filestring_T fp_failedinput_1, Filestring_T f
 	  /* Handle nomappers with each mapped mate */
 	} else {
 	  SAM_print_nomapping(fp,abbrev,queryseq1,mate,acc1,acc2,chromosome_iit,resulttype,
-			      /*first_read_p*/true,/*pathnum*/0,npaths1,/*npaths_mate*/npaths2,
-			      /*mate_chrpos*/chrpos3,
+			      /*first_read_p*/true,/*pathnum*/0,npaths1,
+			      /*artificial_mate_p*/false,/*npaths_mate*/npaths2,/*mate_chrpos*/chrpos3,
 			      quality_shift,sam_read_group_id,invert_first_p,invert_second_p);
 	}
 
@@ -4493,10 +4504,11 @@ SAM_print_paired (Filestring_T fp, Filestring_T fp_failedinput_1, Filestring_T f
 		    /*queryseq*/queryseq1,/*queryseq_mate*/queryseq2,
 		    /*pairedlength*/0U,/*chrpos*/chrpos5,/*mate_chrpos*/chrpos3,
 		    /*clipdir*/0,/*hardclip5_low*/0,/*hardclip5_high*/0,/*hardclip3_low*/0,/*hardclip3_high*/0,
-		    resulttype,/*first_read_p*/true,/*npaths_mate*/npaths_max,quality_shift,sam_read_group_id,
-		    invert_first_p,invert_second_p,merge_samechr_p);
+		    resulttype,/*first_read_p*/true,/*artificial_mate_p*/true,/*npaths_mate*/npaths_max,
+		    quality_shift,sam_read_group_id,invert_first_p,invert_second_p,merge_samechr_p);
 	  SAM_print_nomapping(fp,abbrev,queryseq2,/*mate*/stage3,acc1,acc2,chromosome_iit,
-			      resulttype,/*first_read_p*/false,/*pathnum*/1,/*npaths*/npaths_max,/*npaths_mate*/npaths_max,/*mate_chrpos*/chrpos5,
+			      resulttype,/*first_read_p*/false,/*pathnum*/1,npaths1,
+			      /*artificial_mate_p*/false,/*npaths_mate*/npaths_max,/*mate_chrpos*/chrpos5,
 			      quality_shift,sam_read_group_id,invert_first_p,invert_second_p);
 	} else {
 	  SAM_print(fp,fp_failedinput_1,abbrev,stage3,mate,acc1,acc2,/*pathnum*/1,npaths1,
@@ -4505,8 +4517,8 @@ SAM_print_paired (Filestring_T fp, Filestring_T fp_failedinput_1, Filestring_T f
 		    /*queryseq*/queryseq1,/*queryseq_mate*/queryseq2,
 		    /*pairedlength*/0U,/*chrpos*/chrpos5,/*mate_chrpos*/chrpos3,
 		    /*clipdir*/0,/*hardclip5_low*/0,/*hardclip5_high*/0,/*hardclip3_low*/0,/*hardclip3_high*/0,
-		    resulttype,/*first_read_p*/true,/*npaths_mate*/npaths2,quality_shift,sam_read_group_id,
-		    invert_first_p,invert_second_p,merge_samechr_p);
+		    resulttype,/*first_read_p*/true,/*artificial_mate_p*/false,/*npaths_mate*/npaths2,
+		    quality_shift,sam_read_group_id,invert_first_p,invert_second_p,merge_samechr_p);
 	}
 
       } else if (quiet_if_excessive_p && npaths1 > maxpaths_report) {
@@ -4516,8 +4528,8 @@ SAM_print_paired (Filestring_T fp, Filestring_T fp_failedinput_1, Filestring_T f
 	  /* Handle nomappers with each mapped mate */
 	} else {
 	  SAM_print_nomapping(fp,abbrev,queryseq1,mate,acc1,acc2,chromosome_iit,resulttype,
-			      /*first_read_p*/true,/*pathnum*/1,npaths1,/*npaths_mate*/npaths2,
-			      /*mate_chrpos*/chrpos3,
+			      /*first_read_p*/true,/*pathnum*/1,npaths1,
+			      /*artificial_mate_p*/false,/*npaths_mate*/npaths2,/*mate_chrpos*/chrpos3,
 			      quality_shift,sam_read_group_id,invert_first_p,invert_second_p);
 	}
 
@@ -4534,7 +4546,7 @@ SAM_print_paired (Filestring_T fp, Filestring_T fp_failedinput_1, Filestring_T f
 	    npaths_max = npaths1; /* since npaths2 == 0 */
 	    SAM_print_nomapping(fp,abbrev,queryseq2,/*mate*/stage3,acc1,acc2,chromosome_iit,
 				resulttype,/*first_read_p*/false,pathnum,
-				/*npaths*/npaths_max,/*npaths_mate*/npaths_max,/*mate_chrpos*/chrpos5,
+				npaths1,/*artificial_mate_p*/false,/*npaths_mate*/npaths_max,/*mate_chrpos*/chrpos5,
 				quality_shift,sam_read_group_id,invert_first_p,invert_second_p);
 	    SAM_print(fp,fp_failedinput_1,abbrev,stage3,mate,acc1,acc2,pathnum,npaths_max,
 		      Stage3end_absmq_score(stage3),first_absmq1,second_absmq1,
@@ -4542,7 +4554,7 @@ SAM_print_paired (Filestring_T fp, Filestring_T fp_failedinput_1, Filestring_T f
 		      /*queryseq*/queryseq1,/*queryseq_mate*/queryseq2,
 		      /*pairedlength*/0U,/*chrpos*/chrpos5,/*mate_chrpos*/chrpos3,
 		      /*clipdir*/0,/*hardclip5_low*/0,/*hardclip5_high*/0,/*hardclip3_low*/0,/*hardclip3_high*/0,
-		      resulttype,/*first_read_p*/true,/*npaths_mate*/npaths_max,quality_shift,sam_read_group_id,
+		      resulttype,/*first_read_p*/true,/*artificial_mate_p*/true,/*npaths_mate*/npaths_max,quality_shift,sam_read_group_id,
 		      invert_first_p,invert_second_p,merge_samechr_p);
 
 	  } else {
@@ -4552,8 +4564,8 @@ SAM_print_paired (Filestring_T fp, Filestring_T fp_failedinput_1, Filestring_T f
 		      /*queryseq*/queryseq1,/*queryseq_mate*/queryseq2,
 		      /*pairedlength*/0U,/*chrpos*/chrpos5,/*mate_chrpos*/chrpos3,
 		      /*clipdir*/0,/*hardclip5_low*/0,/*hardclip5_high*/0,/*hardclip3_low*/0,/*hardclip3_high*/0,
-		      resulttype,/*first_read_p*/true,/*npaths_mate*/npaths2,quality_shift,sam_read_group_id,
-		      invert_first_p,invert_second_p,merge_samechr_p);
+		      resulttype,/*first_read_p*/true,/*artificial_mate_p*/false,/*npaths_mate*/npaths2,
+		      quality_shift,sam_read_group_id,invert_first_p,invert_second_p,merge_samechr_p);
 	  }
 	}
       }
@@ -4579,8 +4591,8 @@ SAM_print_paired (Filestring_T fp, Filestring_T fp_failedinput_1, Filestring_T f
 	  /* Handle nomappers with each mapped mate */
 	} else {
 	  SAM_print_nomapping(fp,abbrev,queryseq2,mate,acc1,acc2,chromosome_iit,resulttype,
-			      /*first_read_p*/false,/*pathnum*/0,npaths2,/*npaths_mate*/npaths1,
-			      /*mate_chrpos*/chrpos5,
+			      /*first_read_p*/false,/*pathnum*/0,npaths2,
+			      /*artificial_mate_p*/false,/*npaths_mate*/npaths1,/*mate_chrpos*/chrpos5,
 			      quality_shift,sam_read_group_id,invert_second_p,invert_first_p);
 	}
 
@@ -4597,7 +4609,7 @@ SAM_print_paired (Filestring_T fp, Filestring_T fp_failedinput_1, Filestring_T f
 	  npaths_max = npaths2;	/* since npaths1 == 0 */
 	  SAM_print_nomapping(fp,abbrev,queryseq2,/*mate*/stage3,acc1,acc2,chromosome_iit,
 			      resulttype,/*first_read_p*/true,/*pathnum*/1,
-			      /*npaths*/npaths_max,/*npaths_mate*/npaths_max,/*mate_chrpos*/chrpos3,
+			      npaths2,/*artificial_mate_p*/false,/*npaths_mate*/npaths_max,/*mate_chrpos*/chrpos3,
 			      quality_shift,sam_read_group_id,invert_first_p,invert_second_p);
 	  SAM_print(fp,fp_failedinput_2,abbrev,stage3,mate,acc1,acc2,/*pathnum*/1,npaths_max,
 		    Stage3end_absmq_score(stage3),first_absmq2,/*second_absmq2*/0,
@@ -4605,8 +4617,8 @@ SAM_print_paired (Filestring_T fp, Filestring_T fp_failedinput_1, Filestring_T f
 		    /*queryseq*/queryseq2,/*queryseq_mate*/queryseq1,
 		    /*pairedlength*/0U,/*chrpos*/chrpos3,/*mate_chrpos*/chrpos5,
 		    /*clipdir*/0,/*hardclip5_low*/0,/*hardclip5_high*/0,/*hardclip3_low*/0,/*hardclip3_high*/0,
-		    resulttype,/*first_read_p*/false,/*npaths_mate*/npaths_max,quality_shift,sam_read_group_id,
-		    invert_second_p,invert_first_p,merge_samechr_p);
+		    resulttype,/*first_read_p*/false,/*artificial_mate_p*/true,/*npaths_mate*/npaths_max,
+		    quality_shift,sam_read_group_id,invert_second_p,invert_first_p,merge_samechr_p);
 
 	} else {
 	  SAM_print(fp,fp_failedinput_2,abbrev,stage3,mate,acc1,acc2,/*pathnum*/1,npaths2,
@@ -4615,8 +4627,8 @@ SAM_print_paired (Filestring_T fp, Filestring_T fp_failedinput_1, Filestring_T f
 		    /*queryseq*/queryseq2,/*queryseq_mate*/queryseq1,
 		    /*pairedlength*/0U,/*chrpos*/chrpos3,/*mate_chrpos*/chrpos5,
 		    /*clipdir*/0,/*hardclip5_low*/0,/*hardclip5_high*/0,/*hardclip3_low*/0,/*hardclip3_high*/0,
-		    resulttype,/*first_read_p*/false,/*npaths_mate*/npaths1,quality_shift,sam_read_group_id,
-		    invert_second_p,invert_first_p,merge_samechr_p);
+		    resulttype,/*first_read_p*/false,/*artificial_mate_p*/false,/*npaths_mate*/npaths1,
+		    quality_shift,sam_read_group_id,invert_second_p,invert_first_p,merge_samechr_p);
 	}
 
       } else if (quiet_if_excessive_p && npaths2 > maxpaths_report) {
@@ -4626,8 +4638,8 @@ SAM_print_paired (Filestring_T fp, Filestring_T fp_failedinput_1, Filestring_T f
 	  /* Handle nomappers with each mapped mate */
 	} else {
 	  SAM_print_nomapping(fp,abbrev,queryseq2,mate,acc1,acc2,chromosome_iit,resulttype,
-			      /*first_read_p*/false,/*pathnum*/1,npaths2,/*npaths_mate*/npaths1,
-			      /*mate_chrpos*/chrpos5,
+			      /*first_read_p*/false,/*pathnum*/1,npaths2,
+			      /*artificial_mate_p*/false,/*npaths_mate*/npaths1,/*mate_chrpos*/chrpos5,
 			      quality_shift,sam_read_group_id,invert_second_p,invert_first_p);
 	}
 
@@ -4644,7 +4656,7 @@ SAM_print_paired (Filestring_T fp, Filestring_T fp_failedinput_1, Filestring_T f
 	    npaths_max = npaths2;	/* since npaths1 == 0 */
 	    SAM_print_nomapping(fp,abbrev,queryseq2,/*mate*/stage3,acc1,acc2,chromosome_iit,
 				resulttype,/*first_read_p*/true,pathnum,
-				/*npaths*/npaths_max,/*npaths_mate*/npaths_max,/*mate_chrpos*/chrpos3,
+				npaths2,/*artificial_mate_p*/false,/*npaths_mate*/npaths_max,/*mate_chrpos*/chrpos3,
 				quality_shift,sam_read_group_id,invert_first_p,invert_second_p);
 	    SAM_print(fp,fp_failedinput_2,abbrev,stage3,mate,acc1,acc2,pathnum,npaths_max,
 		      Stage3end_absmq_score(stage3),first_absmq2,second_absmq2,
@@ -4652,8 +4664,8 @@ SAM_print_paired (Filestring_T fp, Filestring_T fp_failedinput_1, Filestring_T f
 		      /*queryseq*/queryseq2,/*queryseq_mate*/queryseq1,
 		      /*pairedlength*/0U,/*chrpos*/chrpos3,/*mate_chrpos*/chrpos5,
 		      /*clipdir*/0,/*hardclip5_low*/0,/*hardclip5_high*/0,/*hardclip3_low*/0,/*hardclip3_high*/0,
-		      resulttype,/*first_read_p*/false,/*npaths_mate*/npaths_max,quality_shift,sam_read_group_id,
-		      invert_second_p,invert_first_p,merge_samechr_p);
+		      resulttype,/*first_read_p*/false,/*artificial_mate_p*/true,/*npaths_mate*/npaths_max,
+		      quality_shift,sam_read_group_id,invert_second_p,invert_first_p,merge_samechr_p);
 
 	  } else {
 	    SAM_print(fp,fp_failedinput_2,abbrev,stage3,mate,acc1,acc2,pathnum,npaths2,
@@ -4662,8 +4674,8 @@ SAM_print_paired (Filestring_T fp, Filestring_T fp_failedinput_1, Filestring_T f
 		      /*queryseq*/queryseq2,/*queryseq_mate*/queryseq1,
 		      /*pairedlength*/0U,/*chrpos*/chrpos3,/*mate_chrpos*/chrpos5,
 		      /*clipdir*/0,/*hardclip5_low*/0,/*hardclip5_high*/0,/*hardclip3_low*/0,/*hardclip3_high*/0,
-		      resulttype,/*first_read_p*/false,/*npaths_mate*/npaths1,quality_shift,sam_read_group_id,
-		      invert_second_p,invert_first_p,merge_samechr_p);
+		      resulttype,/*first_read_p*/false,/*artificial_mate_p*/false,/*npaths_mate*/npaths1,
+		      quality_shift,sam_read_group_id,invert_second_p,invert_first_p,merge_samechr_p);
 	  }
 	}
       }
diff --git a/src/samprint.h b/src/samprint.h
index 9723497..4170329 100644
--- a/src/samprint.h
+++ b/src/samprint.h
@@ -1,4 +1,4 @@
-/* $Id: samprint.h 181904 2016-01-07 20:31:34Z twu $ */
+/* $Id: samprint.h 183725 2016-02-04 00:40:15Z twu $ */
 #ifndef SAMPRINT_INCLUDED
 #define SAMPRINT_INCLUDED
 
@@ -35,14 +35,14 @@ SAM_compute_chrpos (int hardclip_low, int hardclip_high, Stage3end_T this, int q
 
 extern unsigned int
 SAM_compute_flag (bool plusp, Stage3end_T mate, Resulttype_T resulttype,
-		  bool first_read_p, int pathnum, int npaths, int npaths_mate,
+		  bool first_read_p, int pathnum, int npaths, bool artificial_mate_p, int npaths_mate,
 		  int absmq_score, int first_absmq, bool invertp, bool invert_mate_p);
 
 extern void
 SAM_print_nomapping (Filestring_T fp, char *abbrev, Shortread_T queryseq, Stage3end_T mate, char *acc1, char *acc2,
 		     Univ_IIT_T chromosome_iit, Resulttype_T resulttype, bool first_read_p,
-		     int pathnum, int npaths, int npaths_mate, Chrpos_T mate_chrpos,
-		     int quality_shift, char *sam_read_group_id, bool invertp, bool invert_mate_p);
+		     int pathnum, int npaths, bool artificial_mate_p, int npaths_mate,
+		     Chrpos_T mate_chrpos, int quality_shift, char *sam_read_group_id, bool invertp, bool invert_mate_p);
 
 extern void
 SAM_print (Filestring_T fp, Filestring_T fp_failedinput, char *abbrev,
@@ -50,7 +50,7 @@ SAM_print (Filestring_T fp, Filestring_T fp_failedinput, char *abbrev,
 	   int absmq_score, int first_absmq, int second_absmq, int mapq_score, Univ_IIT_T chromosome_iit, Shortread_T queryseq,
 	   Shortread_T queryseq2, int pairedlength, Chrpos_T chrpos, Chrpos_T mate_chrpos,
 	   int clipdir, int hardclip5_low, int hardclip5_high, int hardclip3_low, int hardclip3_high,
-	   Resulttype_T resulttype, bool first_read_p, int npaths_mate, int quality_shift,
+	   Resulttype_T resulttype, bool first_read_p, bool artificial_mate_p, int npaths_mate, int quality_shift,
 	   char *sam_read_group_id, bool invertp, bool invert_mate_p, bool merge_samechr_p);
 
 extern void
diff --git a/src/stage2.c b/src/stage2.c
index acbc11c..c0e0e63 100644
--- a/src/stage2.c
+++ b/src/stage2.c
@@ -1,4 +1,4 @@
-static char rcsid[] = "$Id: stage2.c 166741 2015-06-02 01:24:48Z twu $";
+static char rcsid[] = "$Id: stage2.c 183727 2016-02-04 00:40:29Z twu $";
 #ifdef HAVE_CONFIG_H
 #include <config.h>
 #endif
@@ -2163,7 +2163,7 @@ score_querypos_lookforward_mult (
       }
     }
 
-    while (hiti < nhits) {
+    while (hiti >= 0) {
       /* Adjacent position not found for hiti */
       currlink = &(links[querypos][hiti + low_hit]);
 

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-med/gmap.git



More information about the debian-med-commit mailing list