8bbc296
diff -up EMBOSS-6.4.0/emboss/acd/epscan.acd.fixconflict EMBOSS-6.4.0/emboss/acd/epscan.acd
8bbc296
--- EMBOSS-6.4.0/emboss/acd/epscan.acd.fixconflict	2012-02-27 09:53:58.673872826 -0500
8bbc296
+++ EMBOSS-6.4.0/emboss/acd/epscan.acd	2012-02-27 09:54:48.345441143 -0500
8bbc296
@@ -0,0 +1,63 @@
8bbc296
+application: epscan [
8bbc296
+  documentation: "Scans protein sequence(s) with fingerprints from
8bbc296
+                  the PRINTS database"
8bbc296
+  groups: "Protein:Motifs"
8bbc296
+    relations: "EDAM:0000158 topic Sequence motifs"
8bbc296
+    relations: "EDAM:0000382 operation Sequence motif recognition (protein)"
8bbc296
+    relations: "EDAM:0000347 operation Sequence database search
8bbc296
+                (by motif or pattern)"
8bbc296
+    relations: "EDAM:0000340 operation Protein secondary database search"
8bbc296
+]
8bbc296
+
8bbc296
+section: input [
8bbc296
+  information: "Input section"
8bbc296
+  type: "page"
8bbc296
+]
8bbc296
+
8bbc296
+  seqall: sequence [
8bbc296
+    parameter: "Y"
8bbc296
+    type: "Protein"
8bbc296
+    relations: "EDAM:0002886 data Sequence record (protein)"
8bbc296
+  ]
8bbc296
+
8bbc296
+endsection: input
8bbc296
+
8bbc296
+section: required [
8bbc296
+  information: "Required section"
8bbc296
+  type: "page"
8bbc296
+]
8bbc296
+
8bbc296
+  integer: emin [
8bbc296
+    standard: "Y"
8bbc296
+    minimum: "1"
8bbc296
+    maximum: "20"
8bbc296
+    default: "2"
8bbc296
+    information: "Minimum number of elements per fingerprint"
8bbc296
+    relations: "EDAM:0002527 data Parameter or primitive"
8bbc296
+  ]
8bbc296
+
8bbc296
+  integer: emax [
8bbc296
+    standard: "Y"
8bbc296
+    minimum: "$(emin)"
8bbc296
+    maximum: "20"
8bbc296
+    failrange: "N"
8bbc296
+    trueminimum: "N"
8bbc296
+    default: "20"
8bbc296
+    information: "Maximum number of elements per fingerprint"
8bbc296
+    relations: "EDAM:0002527 data Parameter or primitive"
8bbc296
+  ]
8bbc296
+
8bbc296
+endsection: required
8bbc296
+
8bbc296
+section: output [
8bbc296
+  information: "Output section"
8bbc296
+  type: "page"
8bbc296
+]
8bbc296
+
8bbc296
+  outfile: outfile [
8bbc296
+    parameter: "Y"
8bbc296
+    knowntype: "pscan output"
8bbc296
+    relations: "EDAM:0001420 data Sequence-profile alignment (fingerprint)"
8bbc296
+  ]
8bbc296
+
8bbc296
+endsection: output
8bbc296
diff -up EMBOSS-6.4.0/emboss/acd/Makefile.am.fixconflict EMBOSS-6.4.0/emboss/acd/Makefile.am
8bbc296
--- EMBOSS-6.4.0/emboss/acd/Makefile.am.fixconflict	2012-02-27 09:46:48.379612489 -0500
8bbc296
+++ EMBOSS-6.4.0/emboss/acd/Makefile.am	2012-02-27 09:46:59.796513263 -0500
8bbc296
@@ -54,7 +54,7 @@ pkgdata2_DATA = needle.acd needleall.acd
8bbc296
 	pepwheel.acd pepwindow.acd pepwindowall.acd plotcon.acd plotorf.acd \
8bbc296
 	polydot.acd preg.acd prettyplot.acd prettyseq.acd \
8bbc296
 	primersearch.acd printsextract.acd profit.acd \
8bbc296
-	prophecy.acd prophet.acd prosextract.acd pscan.acd psiphi.acd \
8bbc296
+	prophecy.acd prophet.acd prosextract.acd epscan.acd psiphi.acd \
8bbc296
 	rebaseextract.acd recoder.acd redata.acd remap.acd restover.acd \
8bbc296
 	restrict.acd revseq.acd seealso.acd \
8bbc296
 	seqcount.acd seqmatchall.acd \
8bbc296
diff -up EMBOSS-6.4.0/emboss/acd/Makefile.fixconflict EMBOSS-6.4.0/emboss/acd/Makefile
8bbc296
--- EMBOSS-6.4.0/emboss/acd/Makefile.fixconflict	2012-02-27 09:47:30.481246583 -0500
8bbc296
+++ EMBOSS-6.4.0/emboss/acd/Makefile	2012-02-27 09:47:33.853217278 -0500
8bbc296
@@ -299,7 +299,7 @@ pkgdata2_DATA = needle.acd needleall.acd
8bbc296
 	pepwheel.acd pepwindow.acd pepwindowall.acd plotcon.acd plotorf.acd \
8bbc296
 	polydot.acd preg.acd prettyplot.acd prettyseq.acd \
8bbc296
 	primersearch.acd printsextract.acd profit.acd \
8bbc296
-	prophecy.acd prophet.acd prosextract.acd pscan.acd psiphi.acd \
8bbc296
+	prophecy.acd prophet.acd prosextract.acd epscan.acd psiphi.acd \
8bbc296
 	rebaseextract.acd recoder.acd redata.acd remap.acd restover.acd \
8bbc296
 	restrict.acd revseq.acd seealso.acd \
8bbc296
 	seqcount.acd seqmatchall.acd \
8bbc296
diff -up EMBOSS-6.4.0/emboss/acd/Makefile.in.fixconflict EMBOSS-6.4.0/emboss/acd/Makefile.in
8bbc296
--- EMBOSS-6.4.0/emboss/acd/Makefile.in.fixconflict	2012-02-27 09:47:10.357421484 -0500
8bbc296
+++ EMBOSS-6.4.0/emboss/acd/Makefile.in	2012-02-27 09:47:16.506368036 -0500
8bbc296
@@ -299,7 +299,7 @@ pkgdata2_DATA = needle.acd needleall.acd
8bbc296
 	pepwheel.acd pepwindow.acd pepwindowall.acd plotcon.acd plotorf.acd \
8bbc296
 	polydot.acd preg.acd prettyplot.acd prettyseq.acd \
8bbc296
 	primersearch.acd printsextract.acd profit.acd \
8bbc296
-	prophecy.acd prophet.acd prosextract.acd pscan.acd psiphi.acd \
8bbc296
+	prophecy.acd prophet.acd prosextract.acd epscan.acd psiphi.acd \
8bbc296
 	rebaseextract.acd recoder.acd redata.acd remap.acd restover.acd \
8bbc296
 	restrict.acd revseq.acd seealso.acd \
8bbc296
 	seqcount.acd seqmatchall.acd \
8bbc296
diff -up EMBOSS-6.4.0/emboss/acd/printsextract.acd.fixconflict EMBOSS-6.4.0/emboss/acd/printsextract.acd
8bbc296
--- EMBOSS-6.4.0/emboss/acd/printsextract.acd.fixconflict	2012-02-27 09:48:16.922842970 -0500
8bbc296
+++ EMBOSS-6.4.0/emboss/acd/printsextract.acd	2012-02-27 09:48:27.680749468 -0500
8bbc296
@@ -1,5 +1,5 @@
8bbc296
 application: printsextract [
8bbc296
-  documentation: "Extract data from PRINTS database for use by pscan"
8bbc296
+  documentation: "Extract data from PRINTS database for use by epscan"
8bbc296
   groups: "Utils:Database creation"
8bbc296
   gui: "no"
8bbc296
   batch: "no"
8bbc296
diff -up EMBOSS-6.4.0/emboss/data/edamtoacd.dat.fixconflict EMBOSS-6.4.0/emboss/data/edamtoacd.dat
8bbc296
--- EMBOSS-6.4.0/emboss/data/edamtoacd.dat.fixconflict	2012-02-27 09:47:52.084058836 -0500
8bbc296
+++ EMBOSS-6.4.0/emboss/data/edamtoacd.dat	2012-02-27 09:47:57.107015183 -0500
8bbc296
@@ -159,7 +159,7 @@ outfile        |  "EDAM:Primer report"
8bbc296
 outfile        |  "EDAM:Primer report"                                       | knowntype:"primersearch output"                 
8bbc296
 outfile        |  "EDAM:Sequence-profile alignment report"                   | knowntype:"profit output"                       
8bbc296
 outfile        |  "EDAM:Sequence profile record"                             | knowntype:"prophecy output"                     
8bbc296
-outfile        |  "EDAM:Fingerprint alignment report"                        | knowntype:"pscan output"                        
8bbc296
+outfile        |  "EDAM:Fingerprint alignment report"                        | knowntype:"epscan output"                        
8bbc296
 outfile        |  "EDAM:Restriction enzyme report"                           | knowntype:"redata output"                       
8bbc296
 outfile        |  "EDAM:Restriction map report"                              | knowntype:"remap output"                        
8bbc296
 outfile        |  "EDAM:EMBOSS restover recognition site report"             | knowntype:"restover output"                        
8bbc296
diff -up EMBOSS-6.4.0/emboss/epscan.c.fixconflict EMBOSS-6.4.0/emboss/epscan.c
8bbc296
--- EMBOSS-6.4.0/emboss/epscan.c.fixconflict	2012-02-27 09:48:44.891599888 -0500
8bbc296
+++ EMBOSS-6.4.0/emboss/epscan.c	2012-02-27 09:48:40.234640361 -0500
8bbc296
@@ -0,0 +1,481 @@
8bbc296
+/* @source pscan application
8bbc296
+**
8bbc296
+** Reports fingerprints in a protein sequence
8bbc296
+** @author Copyright (C) Alan Bleasby (ableasby@hgmp.mrc.ac.uk)
8bbc296
+** @@
8bbc296
+**
8bbc296
+** This program is free software; you can redistribute it and/or
8bbc296
+** modify it under the terms of the GNU General Public License
8bbc296
+** as published by the Free Software Foundation; either version 2
8bbc296
+** of the License, or (at your option) any later version.
8bbc296
+**
8bbc296
+** This program is distributed in the hope that it will be useful,
8bbc296
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
8bbc296
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
8bbc296
+** GNU General Public License for more details.
8bbc296
+**
8bbc296
+** You should have received a copy of the GNU General Public License
8bbc296
+** along with this program; if not, write to the Free Software
8bbc296
+** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
8bbc296
+******************************************************************************/
8bbc296
+
8bbc296
+#include "emboss.h"
8bbc296
+
8bbc296
+
8bbc296
+
8bbc296
+
8bbc296
+static void pscan_print_hits(AjPFile outf, AjPList l, ajuint nmotifs,
8bbc296
+			     ajuint begin);
8bbc296
+
8bbc296
+
8bbc296
+
8bbc296
+
8bbc296
+/* @prog pscan ****************************************************************
8bbc296
+**
8bbc296
+** Scans proteins using PRINTS
8bbc296
+**
8bbc296
+******************************************************************************/
8bbc296
+
8bbc296
+int main(int argc, char **argv)
8bbc296
+{
8bbc296
+    AjPSeqall seqall;
8bbc296
+    AjPSeq seq   = NULL;
8bbc296
+    AjPFile outf = NULL;
8bbc296
+    ajint begin;
8bbc296
+    ajint end;
8bbc296
+    ajuint emin;
8bbc296
+    ajuint emax;
8bbc296
+
8bbc296
+    AjPFile mfile = NULL;
8bbc296
+    EmbPMatPrints s = NULL;
8bbc296
+    AjPList l = NULL;
8bbc296
+    AjPStr strand = NULL;
8bbc296
+    AjPStr substr = NULL;
8bbc296
+    AjPStr name = NULL;
8bbc296
+
8bbc296
+    AjBool all;
8bbc296
+    AjBool ordered;
8bbc296
+
8bbc296
+    ajint hits;
8bbc296
+    ajint nmotifs;
8bbc296
+
8bbc296
+    embInit("pscan", argc, argv);
8bbc296
+
8bbc296
+    seqall = ajAcdGetSeqall("sequence");
8bbc296
+    outf   = ajAcdGetOutfile("outfile");
8bbc296
+    emin   = ajAcdGetInt("emin");
8bbc296
+    emax   = ajAcdGetInt("emax");
8bbc296
+
8bbc296
+    substr = ajStrNew();
8bbc296
+    name   = ajStrNew();
8bbc296
+
8bbc296
+    all = ordered = ajTrue;
8bbc296
+
8bbc296
+
8bbc296
+
8bbc296
+    while(ajSeqallNext(seqall, &seq))
8bbc296
+    {
8bbc296
+	begin = ajSeqallGetseqBegin(seqall);
8bbc296
+	end   = ajSeqallGetseqEnd(seqall);
8bbc296
+
8bbc296
+	ajStrAssignC(&name,ajSeqGetNameC(seq));
8bbc296
+	strand = ajSeqGetSeqCopyS(seq);
8bbc296
+
8bbc296
+	ajStrAssignSubC(&substr,ajStrGetPtr(strand),begin-1,end-1);
8bbc296
+
8bbc296
+	nmotifs = 0;
8bbc296
+	ajDebug("pscan sequence '%S'\n", ajSeqGetNameS(seq));
8bbc296
+	embMatPrintsInit(&mfile);
8bbc296
+	ajDebug("pscan prints file '%F'\n", mfile);
8bbc296
+	l = ajListNew();
8bbc296
+	while((s = embMatProtReadInt(mfile)))
8bbc296
+	{
8bbc296
+	    ajDebug("pscan file '%F' read\n", mfile);
8bbc296
+	    if(s->n >= emin && s->n <= emax)
8bbc296
+	    {
8bbc296
+		hits=embMatProtScanInt(substr,name,s,&l,&all,&ordered,
8bbc296
+					    1);
8bbc296
+		if(hits)
8bbc296
+		    ++nmotifs;
8bbc296
+	    }
8bbc296
+	    embMatProtDelInt(&s);
8bbc296
+	}
8bbc296
+
8bbc296
+	pscan_print_hits(outf, l, nmotifs, begin);
8bbc296
+	ajListFree(&l);
8bbc296
+
8bbc296
+
8bbc296
+	ajStrDel(&strand);
8bbc296
+	ajFileClose(&mfile);
8bbc296
+    }
8bbc296
+
8bbc296
+    ajStrDel(&substr);
8bbc296
+    ajStrDel(&name);
8bbc296
+
8bbc296
+    ajSeqallDel(&seqall);
8bbc296
+    ajSeqDel(&seq;;
8bbc296
+    ajFileClose(&outf);
8bbc296
+
8bbc296
+    embExit();
8bbc296
+
8bbc296
+    return 0;
8bbc296
+}
8bbc296
+
8bbc296
+
8bbc296
+
8bbc296
+
8bbc296
+/* @funcstatic pscan_print_hits ***********************************************
8bbc296
+**
8bbc296
+** Undocumented.
8bbc296
+**
8bbc296
+** @param [u] outf [AjPFile] outfile
8bbc296
+** @param [u] l [AjPList] hits
8bbc296
+** @param [r] nmotifs [ajuint] number of hits
8bbc296
+** @param [r] begin [ajuint] start position
8bbc296
+** @@
8bbc296
+******************************************************************************/
8bbc296
+
8bbc296
+static void pscan_print_hits(AjPFile outf, AjPList l, ajuint nmotifs,
8bbc296
+			     ajuint begin)
8bbc296
+{
8bbc296
+    EmbPMatMatch mm;
8bbc296
+    ajuint i;
8bbc296
+    ajuint j;
8bbc296
+    AjBool found;
8bbc296
+    ajuint nleft;
8bbc296
+    ajuint maxelem = 0;
8bbc296
+    ajuint maxhpm;
8bbc296
+    ajuint hpm = 0;
8bbc296
+
8bbc296
+    nleft = nmotifs;
8bbc296
+
8bbc296
+
8bbc296
+    ajFmtPrintF(outf,"\n\nCLASS 1\n");
8bbc296
+    ajFmtPrintF(outf,"Fingerprints with all elements in order\n\n");
8bbc296
+
8bbc296
+
8bbc296
+    found = ajTrue;
8bbc296
+
8bbc296
+    while(found && nleft)
8bbc296
+    {
8bbc296
+	found = ajFalse;
8bbc296
+	maxelem = 0;
8bbc296
+	for(i=0;i
8bbc296
+	{
8bbc296
+	    ajListPop(l,(void **)&mm;;
8bbc296
+	    if(mm->all && mm->ordered)
8bbc296
+	    {
8bbc296
+		maxelem = AJMAX(maxelem,mm->n);
8bbc296
+		found = ajTrue;
8bbc296
+	    }
8bbc296
+	    hpm = mm->hpm;
8bbc296
+
8bbc296
+	    ajListPushAppend(l,(void *)mm);
8bbc296
+	    for(j=1;j
8bbc296
+	    {
8bbc296
+		ajListPop(l,(void **)&mm;;
8bbc296
+		ajListPushAppend(l,(void *)mm);
8bbc296
+	    }
8bbc296
+	}
8bbc296
+
8bbc296
+
8bbc296
+	if(found)
8bbc296
+	{
8bbc296
+	    found = ajFalse;
8bbc296
+	    for(i=0;i
8bbc296
+	    {
8bbc296
+		ajListPop(l,(void **)&mm;;
8bbc296
+		hpm = mm->hpm;
8bbc296
+
8bbc296
+		if(mm->all && mm->ordered && maxelem==mm->n)
8bbc296
+		    break;
8bbc296
+		ajListPushAppend(l,(void *)mm);
8bbc296
+
8bbc296
+		for(j=1;j
8bbc296
+		{
8bbc296
+		    ajListPop(l,(void **)&mm;;
8bbc296
+		    ajListPushAppend(l,(void *)mm);
8bbc296
+		}
8bbc296
+	    }
8bbc296
+
8bbc296
+	    if(mm->all && mm->ordered && maxelem==mm->n)
8bbc296
+	    {
8bbc296
+		ajFmtPrintF(outf,"Fingerprint %s Elements %d\n",
8bbc296
+			    ajStrGetPtr(mm->cod),mm->n);
8bbc296
+		ajFmtPrintF(outf,"    Accession number %s\n",
8bbc296
+			    ajStrGetPtr(mm->acc));
8bbc296
+		ajFmtPrintF(outf,"    %s\n",ajStrGetPtr(mm->tit));
8bbc296
+		ajFmtPrintF(outf,"  Element %d Threshold %d%% Score %d%%\n",
8bbc296
+			    mm->element+1, mm->thresh, mm->score);
8bbc296
+		ajFmtPrintF(outf,"             Start position %d Length %d\n",
8bbc296
+			    mm->start+begin,mm->len);
8bbc296
+
8bbc296
+		embMatMatchDel(&mm;;
8bbc296
+	    }
8bbc296
+
8bbc296
+	    for(i=1;i
8bbc296
+	    {
8bbc296
+		ajListPop(l,(void **)&mm;;
8bbc296
+		ajFmtPrintF(outf,"  Element %d Threshold %d%% Score %d%%\n",
8bbc296
+			    mm->element+1, mm->thresh, mm->score);
8bbc296
+		ajFmtPrintF(outf,"             Start position %d Length %d\n",
8bbc296
+			    mm->start+begin,mm->len);
8bbc296
+
8bbc296
+		embMatMatchDel(&mm;;
8bbc296
+	    }
8bbc296
+
8bbc296
+	    --nleft;
8bbc296
+	}
8bbc296
+
8bbc296
+    }
8bbc296
+
8bbc296
+    ajFmtPrintF(outf,"\n\nCLASS 2\n");
8bbc296
+    ajFmtPrintF(outf,"All elements match but not all in the "
8bbc296
+		"correct order\n\n");
8bbc296
+
8bbc296
+    found = ajTrue;
8bbc296
+
8bbc296
+    while(found && nleft)
8bbc296
+    {
8bbc296
+	found = ajFalse;
8bbc296
+	maxelem = 0;
8bbc296
+
8bbc296
+	for(i=0;i
8bbc296
+	{
8bbc296
+	    ajListPop(l,(void **)&mm;;
8bbc296
+	    if(mm->all)
8bbc296
+	    {
8bbc296
+		maxelem = AJMAX(maxelem,mm->n);
8bbc296
+		found = ajTrue;
8bbc296
+	    }
8bbc296
+	    hpm = mm->hpm;
8bbc296
+	    ajListPushAppend(l,(void *)mm);
8bbc296
+
8bbc296
+	    for(j=1;j
8bbc296
+	    {
8bbc296
+		ajListPop(l,(void **)&mm;;
8bbc296
+		ajListPushAppend(l,(void *)mm);
8bbc296
+	    }
8bbc296
+	}
8bbc296
+
8bbc296
+	if(found)
8bbc296
+	{
8bbc296
+
8bbc296
+	    found=ajFalse;
8bbc296
+	    for(i=0;i
8bbc296
+	    {
8bbc296
+		ajListPop(l,(void **)&mm;;
8bbc296
+		hpm = mm->hpm;
8bbc296
+		if(mm->all && maxelem==mm->n)
8bbc296
+		    break;
8bbc296
+		ajListPushAppend(l,(void *)mm);
8bbc296
+
8bbc296
+		for(j=1;j
8bbc296
+		{
8bbc296
+		    ajListPop(l,(void **)&mm;;
8bbc296
+		    ajListPushAppend(l,(void *)mm);
8bbc296
+		}
8bbc296
+	    }
8bbc296
+
8bbc296
+	    if(mm->all && maxelem==mm->n)
8bbc296
+	    {
8bbc296
+		ajFmtPrintF(outf,"Fingerprint %s Elements %d\n",
8bbc296
+			    ajStrGetPtr(mm->cod),mm->n);
8bbc296
+		ajFmtPrintF(outf,"    Accession number %s\n",
8bbc296
+			    ajStrGetPtr(mm->acc));
8bbc296
+		ajFmtPrintF(outf,"    %s\n",ajStrGetPtr(mm->tit));
8bbc296
+		ajFmtPrintF(outf,"  Element %d Threshold %d%% Score %d%%\n",
8bbc296
+			    mm->element+1, mm->thresh, mm->score);
8bbc296
+		ajFmtPrintF(outf,"             Start position %d Length %d\n",
8bbc296
+			    mm->start+begin,mm->len);
8bbc296
+
8bbc296
+		embMatMatchDel(&mm;;
8bbc296
+	    }
8bbc296
+
8bbc296
+	    for(i=1;i
8bbc296
+	    {
8bbc296
+		ajListPop(l,(void **)&mm;;
8bbc296
+		ajFmtPrintF(outf,"  Element %d Threshold %d%% Score %d%%\n",
8bbc296
+			    mm->element+1, mm->thresh, mm->score);
8bbc296
+		ajFmtPrintF(outf,"             Start position %d Length %d\n",
8bbc296
+			    mm->start+begin,mm->len);
8bbc296
+
8bbc296
+		embMatMatchDel(&mm;;
8bbc296
+	    }
8bbc296
+
8bbc296
+	    --nleft;
8bbc296
+	}
8bbc296
+
8bbc296
+    }
8bbc296
+
8bbc296
+
8bbc296
+
8bbc296
+
8bbc296
+    ajFmtPrintF(outf,"\n\nCLASS 3\n");
8bbc296
+    ajFmtPrintF(outf,
8bbc296
+		"Not all elements match but those that do are in order\n\n");
8bbc296
+
8bbc296
+    found = ajTrue;
8bbc296
+
8bbc296
+    while(found && nleft)
8bbc296
+    {
8bbc296
+	found  = ajFalse;
8bbc296
+	maxhpm = 0;
8bbc296
+	for(i=0;i
8bbc296
+	{
8bbc296
+	    ajListPop(l,(void **)&mm;;
8bbc296
+	    if(mm->ordered)
8bbc296
+	    {
8bbc296
+		maxhpm = AJMAX(maxelem,mm->hpm);
8bbc296
+		found  = ajTrue;
8bbc296
+	    }
8bbc296
+	    hpm = mm->hpm;
8bbc296
+	    ajListPushAppend(l,(void *)mm);
8bbc296
+
8bbc296
+	    for(j=1;j
8bbc296
+	    {
8bbc296
+		ajListPop(l,(void **)&mm;;
8bbc296
+		ajListPushAppend(l,(void *)mm);
8bbc296
+	    }
8bbc296
+	}
8bbc296
+
8bbc296
+
8bbc296
+	if(found)
8bbc296
+	{
8bbc296
+	    found = ajFalse;
8bbc296
+	    for(i=0;i
8bbc296
+	    {
8bbc296
+		ajListPop(l,(void **)&mm;;
8bbc296
+		hpm = mm->hpm;
8bbc296
+
8bbc296
+		if(mm->ordered && maxhpm==mm->hpm)
8bbc296
+		    break;
8bbc296
+		ajListPushAppend(l,(void *)mm);
8bbc296
+
8bbc296
+		for(j=1;j
8bbc296
+		{
8bbc296
+		    ajListPop(l,(void **)&mm;;
8bbc296
+		    ajListPushAppend(l,(void *)mm);
8bbc296
+		}
8bbc296
+	    }
8bbc296
+
8bbc296
+	    if(mm->ordered && maxhpm==mm->hpm)
8bbc296
+	    {
8bbc296
+		ajFmtPrintF(outf,"Fingerprint %s Elements %d\n",
8bbc296
+			    ajStrGetPtr(mm->cod),mm->n);
8bbc296
+		ajFmtPrintF(outf,"    Accession number %s\n",
8bbc296
+			    ajStrGetPtr(mm->acc));
8bbc296
+		ajFmtPrintF(outf,"    %s\n",ajStrGetPtr(mm->tit));
8bbc296
+		ajFmtPrintF(outf,"  Element %d Threshold %d%% Score %d%%\n",
8bbc296
+			    mm->element+1, mm->thresh, mm->score);
8bbc296
+		ajFmtPrintF(outf,"             Start position %d Length %d\n",
8bbc296
+			    mm->start+begin,mm->len);
8bbc296
+
8bbc296
+
8bbc296
+		embMatMatchDel(&mm;;
8bbc296
+	    }
8bbc296
+
8bbc296
+	    for(i=1;i
8bbc296
+	    {
8bbc296
+		ajListPop(l,(void **)&mm;;
8bbc296
+		ajFmtPrintF(outf,"  Element %d Threshold %d%% Score %d%%\n",
8bbc296
+			    mm->element+1, mm->thresh, mm->score);
8bbc296
+		ajFmtPrintF(outf,"             Start position %d Length %d\n",
8bbc296
+			    mm->start+begin,mm->len);
8bbc296
+
8bbc296
+		embMatMatchDel(&mm;;
8bbc296
+	    }
8bbc296
+
8bbc296
+	    --nleft;
8bbc296
+	}
8bbc296
+
8bbc296
+    }
8bbc296
+
8bbc296
+
8bbc296
+
8bbc296
+
8bbc296
+    ajFmtPrintF(outf,"\n\nCLASS 4\n");
8bbc296
+    ajFmtPrintF(outf,
8bbc296
+		"Remaining partial matches\n\n");
8bbc296
+
8bbc296
+    found = ajTrue;
8bbc296
+
8bbc296
+    while(found && nleft)
8bbc296
+    {
8bbc296
+	found = ajFalse;
8bbc296
+	maxhpm = 0;
8bbc296
+
8bbc296
+	for(i=0;i
8bbc296
+	{
8bbc296
+	    ajListPop(l,(void **)&mm;;
8bbc296
+	    maxhpm = AJMAX(maxelem,mm->hpm);
8bbc296
+	    found = ajTrue;
8bbc296
+
8bbc296
+	    hpm = mm->hpm;
8bbc296
+	    ajListPushAppend(l,(void *)mm);
8bbc296
+	    for(j=1;j
8bbc296
+	    {
8bbc296
+		ajListPop(l,(void **)&mm;;
8bbc296
+		ajListPushAppend(l,(void *)mm);
8bbc296
+	    }
8bbc296
+	}
8bbc296
+
8bbc296
+
8bbc296
+	if(found)
8bbc296
+	{
8bbc296
+	    found = ajFalse;
8bbc296
+	    for(i=0;i
8bbc296
+	    {
8bbc296
+		ajListPop(l,(void **)&mm;;
8bbc296
+		hpm = mm->hpm;
8bbc296
+
8bbc296
+		if(maxhpm==mm->hpm)
8bbc296
+		    break;
8bbc296
+		ajListPushAppend(l,(void *)mm);
8bbc296
+
8bbc296
+		for(j=1;j
8bbc296
+		{
8bbc296
+		    ajListPop(l,(void **)&mm;;
8bbc296
+		    ajListPushAppend(l,(void *)mm);
8bbc296
+		}
8bbc296
+	    }
8bbc296
+
8bbc296
+	    if(maxhpm==mm->hpm)
8bbc296
+	    {
8bbc296
+		ajFmtPrintF(outf,"Fingerprint %s Elements %d\n",
8bbc296
+			    ajStrGetPtr(mm->cod),mm->n);
8bbc296
+		ajFmtPrintF(outf,"    Accession number %s\n",
8bbc296
+			    ajStrGetPtr(mm->acc));
8bbc296
+		ajFmtPrintF(outf,"    %s\n",ajStrGetPtr(mm->tit));
8bbc296
+		ajFmtPrintF(outf,"  Element %d Threshold %d%% Score %d%%\n",
8bbc296
+			    mm->element+1, mm->thresh, mm->score);
8bbc296
+		ajFmtPrintF(outf,"             Start position %d Length %d\n",
8bbc296
+			    mm->start+begin,mm->len);
8bbc296
+
8bbc296
+
8bbc296
+		embMatMatchDel(&mm;;
8bbc296
+	    }
8bbc296
+
8bbc296
+	    for(i=1;i
8bbc296
+	    {
8bbc296
+		ajListPop(l,(void **)&mm;;
8bbc296
+		ajFmtPrintF(outf,"  Element %d Threshold %d%% Score %d%%\n",
8bbc296
+			    mm->element+1, mm->thresh, mm->score);
8bbc296
+		ajFmtPrintF(outf,"             Start position %d Length %d\n",
8bbc296
+			    mm->start+begin,mm->len);
8bbc296
+
8bbc296
+		embMatMatchDel(&mm;;
8bbc296
+	    }
8bbc296
+
8bbc296
+	    --nleft;
8bbc296
+	}
8bbc296
+
8bbc296
+    }
8bbc296
+
8bbc296
+
8bbc296
+    while(ajListPop(l,(void **)&mm))
8bbc296
+	if(mm)
8bbc296
+	    embMatMatchDel(&mm;;
8bbc296
+
8bbc296
+    return;
8bbc296
+}
8bbc296
diff -up EMBOSS-6.4.0/emboss/Makefile.am.fixconflict EMBOSS-6.4.0/emboss/Makefile.am
8bbc296
--- EMBOSS-6.4.0/emboss/Makefile.am.fixconflict	2012-02-27 09:48:55.526507467 -0500
8bbc296
+++ EMBOSS-6.4.0/emboss/Makefile.am	2012-02-27 09:52:54.611429591 -0500
8bbc296
@@ -80,7 +80,7 @@ pepwheel pepwindow pepwindowall \
8bbc296
 plotcon plotorf polydot preg \
8bbc296
 prettyplot prettyseq primersearch printsextract \
8bbc296
 profit prophecy prophet \
8bbc296
-prosextract pscan psiphi \
8bbc296
+prosextract epscan psiphi \
8bbc296
 rebaseextract recoder redata remap  \
8bbc296
 restover restrict revseq \
8bbc296
 seealso seqcount seqmatchall seqret seqretsetall seqretsplit \
8bbc296
@@ -301,7 +301,7 @@ profit_SOURCES = profit.c
8bbc296
 prophecy_SOURCES = prophecy.c
8bbc296
 prophet_SOURCES = prophet.c
8bbc296
 prosextract_SOURCES = prosextract.c
8bbc296
-pscan_SOURCES = pscan.c
8bbc296
+epscan_SOURCES = pscan.c
8bbc296
 psiphi_SOURCES = psiphi.c
8bbc296
 rebaseextract_SOURCES = rebaseextract.c
8bbc296
 recoder_SOURCES = recoder.c
8bbc296
diff -up EMBOSS-6.4.0/emboss/Makefile.in.fixconflict EMBOSS-6.4.0/emboss/Makefile.in
8bbc296
--- EMBOSS-6.4.0/emboss/Makefile.in.fixconflict	2012-02-27 09:49:12.123363211 -0500
8bbc296
+++ EMBOSS-6.4.0/emboss/Makefile.in	2012-02-27 09:52:34.681602796 -0500
8bbc296
@@ -109,7 +109,7 @@ bin_PROGRAMS = aaindexextract$(EXEEXT) a
8bbc296
 	plotorf$(EXEEXT) polydot$(EXEEXT) preg$(EXEEXT) \
8bbc296
 	prettyplot$(EXEEXT) prettyseq$(EXEEXT) primersearch$(EXEEXT) \
8bbc296
 	printsextract$(EXEEXT) profit$(EXEEXT) prophecy$(EXEEXT) \
8bbc296
-	prophet$(EXEEXT) prosextract$(EXEEXT) pscan$(EXEEXT) \
8bbc296
+	prophet$(EXEEXT) prosextract$(EXEEXT) epscan$(EXEEXT) \
8bbc296
 	psiphi$(EXEEXT) rebaseextract$(EXEEXT) recoder$(EXEEXT) \
8bbc296
 	redata$(EXEEXT) remap$(EXEEXT) restover$(EXEEXT) \
8bbc296
 	restrict$(EXEEXT) revseq$(EXEEXT) seealso$(EXEEXT) \
8bbc296
@@ -1837,10 +1837,10 @@ prosextract_DEPENDENCIES = ../nucleus/li
8bbc296
 	../ajax/ensembl/libensembl.la ../ajax/graphics/libajaxg.la \
8bbc296
 	../ajax/core/libajax.la $(EXTRA_LDS) ../ajax/pcre/libepcre.la \
8bbc296
 	../plplot/libeplplot.la $(am__DEPENDENCIES_1)
8bbc296
-am_pscan_OBJECTS = pscan.$(OBJEXT)
8bbc296
-pscan_OBJECTS = $(am_pscan_OBJECTS)
8bbc296
-pscan_LDADD = $(LDADD)
8bbc296
-pscan_DEPENDENCIES = ../nucleus/libnucleus.la ../ajax/acd/libacd.la \
8bbc296
+am_epscan_OBJECTS = pscan.$(OBJEXT)
8bbc296
+epscan_OBJECTS = $(am_epscan_OBJECTS)
8bbc296
+epscan_LDADD = $(LDADD)
8bbc296
+epscan_DEPENDENCIES = ../nucleus/libnucleus.la ../ajax/acd/libacd.la \
8bbc296
 	../ajax/ajaxdb/libajaxdb.la ../ajax/ensembl/libensembl.la \
8bbc296
 	../ajax/graphics/libajaxg.la ../ajax/core/libajax.la \
8bbc296
 	$(EXTRA_LDS) ../ajax/pcre/libepcre.la ../plplot/libeplplot.la \
8bbc296
@@ -2592,7 +2592,7 @@ SOURCES = $(aaindexextract_SOURCES) $(ab
8bbc296
 	$(preg_SOURCES) $(prettyplot_SOURCES) $(prettyseq_SOURCES) \
8bbc296
 	$(prima_SOURCES) $(primers_SOURCES) $(primersearch_SOURCES) \
8bbc296
 	$(printsextract_SOURCES) $(profit_SOURCES) $(prophecy_SOURCES) \
8bbc296
-	$(prophet_SOURCES) $(prosextract_SOURCES) $(pscan_SOURCES) \
8bbc296
+	$(prophet_SOURCES) $(prosextract_SOURCES) $(epscan_SOURCES) \
8bbc296
 	$(psiphi_SOURCES) $(rebaseextract_SOURCES) $(recoder_SOURCES) \
8bbc296
 	$(redata_SOURCES) $(remap_SOURCES) $(restover_SOURCES) \
8bbc296
 	$(restrict_SOURCES) $(revseq_SOURCES) $(seealso_SOURCES) \
8bbc296
@@ -2701,7 +2701,7 @@ DIST_SOURCES = $(aaindexextract_SOURCES)
8bbc296
 	$(preg_SOURCES) $(prettyplot_SOURCES) $(prettyseq_SOURCES) \
8bbc296
 	$(prima_SOURCES) $(primers_SOURCES) $(primersearch_SOURCES) \
8bbc296
 	$(printsextract_SOURCES) $(profit_SOURCES) $(prophecy_SOURCES) \
8bbc296
-	$(prophet_SOURCES) $(prosextract_SOURCES) $(pscan_SOURCES) \
8bbc296
+	$(prophet_SOURCES) $(prosextract_SOURCES) $(epscan_SOURCES) \
8bbc296
 	$(psiphi_SOURCES) $(rebaseextract_SOURCES) $(recoder_SOURCES) \
8bbc296
 	$(redata_SOURCES) $(remap_SOURCES) $(restover_SOURCES) \
8bbc296
 	$(restrict_SOURCES) $(revseq_SOURCES) $(seealso_SOURCES) \
8bbc296
@@ -3172,7 +3172,7 @@ profit_SOURCES = profit.c
8bbc296
 prophecy_SOURCES = prophecy.c
8bbc296
 prophet_SOURCES = prophet.c
8bbc296
 prosextract_SOURCES = prosextract.c
8bbc296
-pscan_SOURCES = pscan.c
8bbc296
+epscan_SOURCES = pscan.c
8bbc296
 psiphi_SOURCES = psiphi.c
8bbc296
 rebaseextract_SOURCES = rebaseextract.c
8bbc296
 recoder_SOURCES = recoder.c
8bbc296
@@ -3990,9 +3990,9 @@ prophet$(EXEEXT): $(prophet_OBJECTS) $(p
8bbc296
 prosextract$(EXEEXT): $(prosextract_OBJECTS) $(prosextract_DEPENDENCIES) 
8bbc296
 	@rm -f prosextract$(EXEEXT)
8bbc296
 	$(LINK) $(prosextract_OBJECTS) $(prosextract_LDADD) $(LIBS)
8bbc296
-pscan$(EXEEXT): $(pscan_OBJECTS) $(pscan_DEPENDENCIES) 
8bbc296
-	@rm -f pscan$(EXEEXT)
8bbc296
-	$(LINK) $(pscan_OBJECTS) $(pscan_LDADD) $(LIBS)
8bbc296
+epscan$(EXEEXT): $(epscan_OBJECTS) $(epscan_DEPENDENCIES) 
8bbc296
+	@rm -f epscan$(EXEEXT)
8bbc296
+	$(LINK) $(epscan_OBJECTS) $(epscan_LDADD) $(LIBS)
8bbc296
 psiphi$(EXEEXT): $(psiphi_OBJECTS) $(psiphi_DEPENDENCIES) 
8bbc296
 	@rm -f psiphi$(EXEEXT)
8bbc296
 	$(LINK) $(psiphi_OBJECTS) $(psiphi_LDADD) $(LIBS)
8bbc296
@@ -4456,7 +4456,7 @@ distclean-compile:
8bbc296
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/prophecy.Po@am__quote@
8bbc296
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/prophet.Po@am__quote@
8bbc296
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/prosextract.Po@am__quote@
8bbc296
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pscan.Po@am__quote@
8bbc296
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/epscan.Po@am__quote@
8bbc296
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/psiphi.Po@am__quote@
8bbc296
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rebaseextract.Po@am__quote@
8bbc296
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/recoder.Po@am__quote@