[Debian-med-packaging] [SCM] The European Molecular Biology Open Software Suite. branch, master, updated. upstream/6.1.0-11-gc821778
Charles Plessy
charles at plessy.org
Mon Dec 14 01:05:46 UTC 2009
The following commit has been merged in the master branch:
commit c821778f517ff29f20734b80e8d79edce4140642
Author: Charles Plessy <charles at plessy.org>
Date: Mon Dec 14 10:04:01 2009 +0900
New upstream patch. These patches are not compatible with Dpkg source formats 3.0.
* New upstream patch (patch-1-3) with too many corrections to be listed in
this changelog.
See ‘ftp://emboss.open-bio.org/pub/EMBOSS/fixes/README.fixes’.
* Specified ‘Format: 1.5’ in debian/control (according to Policy 3.8.3
§5.6.16 and dpkg-source(1) 1.14.25), since the upstream patches can not be
easily handled by the formats 3.0.
diff --git a/debian/changelog b/debian/changelog
index b7c4322..fc36323 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,14 @@
+emboss (6.1.0-6) UNRELEASED; urgency=low
+
+ * New upstream patch (patch-1-3) with too many corrections to be listed in
+ this changelog.
+ See ‘ftp://emboss.open-bio.org/pub/EMBOSS/fixes/README.fixes’.
+ * Specified ‘Format: 1.5’ in debian/control (according to Policy 3.8.3
+ §5.6.16 and dpkg-source(1) 1.14.25), since the upstream patches can not be
+ easily handled by the formats 3.0.
+
+ -- Charles Plessy <plessy at debian.org> Mon, 14 Dec 2009 08:48:26 +0900
+
emboss (6.1.0-5) unstable; urgency=low
* The source package is now managed with Git (debian/control).
diff --git a/debian/control b/debian/control
index 9d73276..2a9e5f0 100644
--- a/debian/control
+++ b/debian/control
@@ -1,3 +1,4 @@
+Format: 1.5
Source: emboss
Section: science
Priority: optional
diff --git a/debian/patches/official-upstream-patch.patch b/debian/patches/official-upstream-patch.patch
index 5d39c90..8c8b0b3 100644
--- a/debian/patches/official-upstream-patch.patch
+++ b/debian/patches/official-upstream-patch.patch
@@ -5,45 +5,878 @@ Description: Official upstream patch.
Correct FASTQ input searching for '@' to start next sequence
Standardize FASTQ sequence formats with other OpenBio projects
Correct issues in igstrict, genpept and refseqp formats
+ .
24-Aug-2009: Fix string extension so that pointers in lists remain valid.
This fixes a bug in processing SwissProt complex descriptions.
Fix definition of AJRESIZE0 macro.
Fix processing of first match in a profile alignment (prophet).
-Origin: ftp://emboss.open-bio.org/pub/EMBOSS/fixes/patches/patch-1-2.gz
+ .
+ 02-Dec-2009: Fixes problems with extractfeat. The fix includes cleaner
+ definitions of functions used to match feature tags and
+ feature types which result in minor updates to 6 other
+ applications.
+ .
+ Extractfeat in previous versions used its own text parser
+ to extract feature data from only a limited set of
+ formats. In release 6.1.0 it was replaced by the standard
+ EMBOSS feature table. With no options set, extractfeat
+ rejected all features (type '*' was needed to extract
+ features). Extractfeat default settings now extract all
+ features from an entry.
+ .
+ Features on the reverse strand were incorrectly processed
+ (an effect caused by some of the old extractfeat code
+ remaining). Reverse strand features are now correctly
+ parsed, including both "join(complement())" and
+ "complement(join())" syntax in EMBL/GenBank/DDBJ feature
+ tables.
+ .
+ Fixes an issue in GenBank parsing where the ORIGIN line is absent.
+ .
+ Fixes scaling errors in prettyplot, especially in mEMBOSS
+ when plotting to a window on screen (the default
+ output). The plplot library does not report the true
+ width and height for several devices. The assumptions in
+ prettyplot depend on reasonable size estimates. Release
+ 6.2.0 will have further corrections to plplot device
+ scaling.
+ .
+ Fixes the counting of non-coding features in coderet.
+ .
+ Fixes a seqmatchall error for short sequences with perfect matches
+ .
+ When reverse-complementing sequences, also reverses
+ the quality scores.
+ .
+ Allows '-' in format names in the USA syntax, to allow
+ fastq-sanger fastq-illumina and fastq-solexa format names
+ to be used.
+ .
+ When reading protein sequences, a sequence with only a
+ stop is now recognized as empty (zero length) after
+ processing ambiguity codes and stops.
+ .
+ Fixes a problem writing features in PIR format when the
+ feature table is empty, for example a report file with no hits.
+ .
+ Fixes a dependency on 'ant' to install a Jemboss server.
+ .
+ Fixes a problem in logging Jemboss info/error messages.
+Origin: ftp://emboss.open-bio.org/pub/EMBOSS/fixes/patches/patch-1-3.gz
Forwarded: not-needed
+
diff -c -N --recursive EMBOSS-6.1.0orig/ajax/ajfeat.c EMBOSS-6.1.0/ajax/ajfeat.c
-*** EMBOSS-6.1.0orig/ajax/ajfeat.c 2009-07-06 16:48:46.000000000 +0100
---- EMBOSS-6.1.0/ajax/ajfeat.c 2009-07-30 15:28:13.000000000 +0100
-***************
-*** 9517,9528 ****
- ajint i;
-
- if(!featRegUfoFmt)
-! featRegUfoFmt = ajRegCompC("^([A-Za-z0-9]+):+(.*)$");
- /* \1 format */
- /* \2 remainder */
-
- if(!featRegUfoFile)
-! featRegUfoFile = ajRegCompC("^([^:]+)$");
-
- /*ajDebug("ajFeatUfoRead UFO '%S'\n", ufo);*/
-
---- 9517,9528 ----
- ajint i;
-
- if(!featRegUfoFmt)
-! featRegUfoFmt = ajRegCompC("^([A-Za-z0-9][A-Za-z0-9]+):+(.*)$");
- /* \1 format */
- /* \2 remainder */
-
- if(!featRegUfoFile)
-! featRegUfoFile = ajRegCompC("^(([A-Za-z]:)?[^:]+)$");
-
- /*ajDebug("ajFeatUfoRead UFO '%S'\n", ufo);*/
+*** EMBOSS-6.1.0orig/ajax/ajfeat.c Mon Sep 28 22:15:17 2009
+--- EMBOSS-6.1.0/ajax/ajfeat.c Mon Dec 7 12:07:06 2009
+***************
+*** 373,378 ****
+--- 373,383 ----
+ AjPTable pTagsTable,
+ AjBool recursion);
+ static void featWarn(const char* fmt, ...);
++ static AjBool featTypeTestDnaWild(const AjPStr type, const AjPStr str);
++ static AjBool featTypeTestProtWild(const AjPStr type, const AjPStr str);
++ static AjBool featTableTypeTestWild(const AjPStr type,
++ const AjPTable table,
++ const AjPStr str);
+
+
+
+***************
+*** 6284,6290 ****
+ /*ajDebug("last: calling featDumpPir for gfprev\n");*/
+ /*ajDebug("location: '%S'\n", location);*/
+
+! featDumpPir(gfprev,location, file); /* gfprev has tag data */
+ ajStrDel(&location);
+ ajStrDel(&pos);
+ ajStrDel(&temp);
+--- 6289,6296 ----
+ /*ajDebug("last: calling featDumpPir for gfprev\n");*/
+ /*ajDebug("location: '%S'\n", location);*/
+
+! if(gfprev)
+! featDumpPir(gfprev,location, file); /* gfprev has tag data */
+ ajStrDel(&location);
+ ajStrDel(&pos);
+ ajStrDel(&temp);
+***************
+*** 6919,6931 ****
+ ** Returns all cross-references from a feature table
+ **
+ ** @param [r] thys [const AjPFeattable] Feature table
+! ** @param [u] xreflist [AjPList] List of sequence cross-reference objects
+ ** @param [w] Ptaxid [ajuint*] Taxon ID
+ ** @return [AjBool] True on success
+ ** @@
+ ******************************************************************************/
+
+! AjBool ajFeattableGetXrefs(const AjPFeattable thys, AjPList xreflist,
+ ajuint *Ptaxid)
+ {
+ AjIList iterfeat = NULL;
+--- 6925,6937 ----
+ ** Returns all cross-references from a feature table
+ **
+ ** @param [r] thys [const AjPFeattable] Feature table
+! ** @param [u] Pxreflist [AjPList*] List of sequence cross-reference objects
+ ** @param [w] Ptaxid [ajuint*] Taxon ID
+ ** @return [AjBool] True on success
+ ** @@
+ ******************************************************************************/
+
+! AjBool ajFeattableGetXrefs(const AjPFeattable thys, AjPList *Pxreflist,
+ ajuint *Ptaxid)
+ {
+ AjIList iterfeat = NULL;
+***************
+*** 6934,6941 ****
+--- 6940,6952 ----
+ AjPSeqXref xref = NULL;
+ ajint ipos;
+ ajuint inum = 0;
++ AjPList xreflist;
+ AjPFeature feat = NULL;
+
++ if(!*Pxreflist)
++ *Pxreflist = ajListNew();
++ xreflist = *Pxreflist;
++
+ *Ptaxid = 0;
+ if(thys->Features)
+***************
+*** 7224,7230 ****
+
+
+
+! /* @func ajFeatGetSeq **********************************************************
+ **
+ ** Returns the sequence matching a feature. For multiple location features
+ ** (joins in an EMBL/GenBank feature table) the full feature table is used
+--- 7235,7241 ----
+
+
+
+! /* @func ajFeatGetFlags *******************************************************
+ **
+ ** Returns the sequence matching a feature. For multiple location features
+ ** (joins in an EMBL/GenBank feature table) the full feature table is used
+***************
+*** 7233,7269 ****
+ ** The database name is used to retrieve sequences from other entries
+ **
+ ** @param [r] thys [const AjPFeature] Feature
+! ** @param [r] table [const AjPFeattable] Full feature table
+ ** @param [r] seq [const AjPSeq] Sequence for the current feature table
+ ** @param [u] Pseqstr [AjPStr*] Sequence for this feature
+ ** @return [AjBool] True on success
+ ** @@
+ ******************************************************************************/
+
+! AjBool ajFeatGetSeq(const AjPFeature thys, const AjPFeattable table,
+ const AjPSeq seq, AjPStr* Pseqstr)
+ {
+ const AjPFeature gf;
+ AjIList iter = NULL;
+ AjPSeq remoteseq = NULL;
+ AjBool isjoin = ajFalse;
+
+ isjoin = ajFeatIsMultiple(thys);
+
+! ajDebug("ajFeatGetSeq nfeat:%u usa:%S\n",
+! ajFeattableSize(table), ajSeqGetUsaS(seq));
+ iter = ajListIterNewread(table->Features);
+
+ while(!ajListIterDone(iter))
+ {
+ gf = (const AjPFeature) ajListIterGet(iter);
+
+ if(gf->Group == thys->Group)
+ {
+! /*
+! if(isjoin && !ajFeatIsChild(gf))
+! continue;
+! */
+ ajFeatTrace(gf);
+
+ if(gf->Flags & FEATFLAG_BETWEEN_SEQ)
+--- 7244,7411 ----
+ ** The database name is used to retrieve sequences from other entries
+ **
+ ** @param [r] thys [const AjPFeature] Feature
+! ** @param [u] Pseqstr [AjPStr*] Sequence for this feature
+! ** @return [AjBool] True on success
+! ** @@
+! ******************************************************************************/
+!
+! AjBool ajFeatGetFlags(const AjPFeature thys, AjPStr* Pflagstr)
+! {
+! ajStrAssignC(Pflagstr, "");
+!
+! if(thys->Flags & FEATFLAG_START_BEFORE_SEQ)
+! ajStrAppendC(Pflagstr, "<start ");
+! if(thys->Flags & FEATFLAG_END_AFTER_SEQ)
+! ajStrAppendC(Pflagstr, ">end ");
+! if(thys->Flags & FEATFLAG_CHILD)
+! ajStrAppendC(Pflagstr, "child-exon ");
+! if(thys->Flags & FEATFLAG_BETWEEN_SEQ)
+! ajStrAppendC(Pflagstr, "x^y ");
+! if(thys->Flags & FEATFLAG_START_TWO)
+! ajStrAppendC(Pflagstr, "startrange ");
+! if(thys->Flags & FEATFLAG_END_TWO)
+! ajStrAppendC(Pflagstr, "endrange ");
+! if(thys->Flags & FEATFLAG_POINT)
+! ajStrAppendC(Pflagstr, "single-base ");
+! if(thys->Flags & FEATFLAG_COMPLEMENT_MAIN)
+! ajStrAppendC(Pflagstr, "complement(join) ");
+! if(thys->Flags & FEATFLAG_MULTIPLE)
+! ajStrAppendC(Pflagstr, "multiple ");
+! if(thys->Flags & FEATFLAG_GROUP)
+! ajStrAppendC(Pflagstr, "group ");
+! if(thys->Flags & FEATFLAG_ORDER)
+! ajStrAppendC(Pflagstr, "order ");
+! if(thys->Flags & FEATFLAG_ONEOF)
+! ajStrAppendC(Pflagstr, "oneof ");
+! if(thys->Flags & FEATFLAG_REMOTEID)
+! ajStrAppendC(Pflagstr, "remoteid ");
+! if(thys->Flags & FEATFLAG_LABEL)
+! ajStrAppendC(Pflagstr, "LABEL ");
+! if(thys->Flags & FEATFLAG_START_UNSURE)
+! ajStrAppendC(Pflagstr, "start-unsure ");
+! if(thys->Flags & FEATFLAG_END_UNSURE)
+! ajStrAppendC(Pflagstr, "end-unsure ");
+!
+! ajStrTrimWhite(Pflagstr);
+!
+! return ajTrue;
+! }
+!
+!
+!
+!
+! /* @func ajFeatGetSeq *********************************************************
+! **
+! ** Returns the sequence matching a feature.
+! **
+! ** The database name is used to retrieve sequences from other entries
+! **
+! ** @param [r] thys [const AjPFeature] Feature
+ ** @param [r] seq [const AjPSeq] Sequence for the current feature table
+ ** @param [u] Pseqstr [AjPStr*] Sequence for this feature
+ ** @return [AjBool] True on success
+ ** @@
+ ******************************************************************************/
+
+! AjBool ajFeatGetSeq(const AjPFeature thys,
+ const AjPSeq seq, AjPStr* Pseqstr)
+ {
++ AjPSeq remoteseq = NULL;
++ AjBool isjoin = ajFalse;
++ AjPStr tmpseq = NULL;
++ AjBool compjoin = ajFalse;
++
++ ajStrSetClear(Pseqstr);
++
++ isjoin = ajFeatIsMultiple(thys);
++
++ ajDebug("ajFeatGetSeq usa:%S\n",
++ ajSeqGetUsaS(seq));
++
++ if(thys->Flags & FEATFLAG_BETWEEN_SEQ)
++ return ajTrue;
++
++ ajFeatTrace(thys);
++
++ if(thys->Flags & FEATFLAG_REMOTEID)
++ {
++ if(!remoteseq)
++ remoteseq = ajSeqNew();
++
++ ajFeatGetRemoteseq(thys, ajSeqGetUsaS(seq), remoteseq);
++ ajStrAppendS(Pseqstr, ajSeqGetSeqS(remoteseq));
++ }
++ else
++ {
++ if(thys->Strand == '-' && !compjoin)
++ {
++ ajStrAppendSubS(&tmpseq, ajSeqGetSeqS(seq),
++ ajFeatGetStart(thys)-1, ajFeatGetEnd(thys)-1);
++ ajSeqstrReverse(&tmpseq);
++ ajStrInsertS(Pseqstr, 0, tmpseq);
++ ajStrDel(&tmpseq);
++ }
++ else
++ {
++ ajStrAppendSubS(Pseqstr, ajSeqGetSeqS(seq),
++ ajFeatGetStart(thys)-1, ajFeatGetEnd(thys)-1);
++ }
++ }
++
++ ajSeqDel(&remoteseq);
++
++ return ajTrue;
++ }
++
++
++
++
++ /* @func ajFeatGetSeqJoin ******************************************************
++ **
++ ** Returns the sequence matching a feature. For multiple location features
++ ** (joins in an EMBL/GenBank feature table) the full feature table is used
++ ** to find all exons.
++ **
++ ** The database name is used to retrieve sequences from other entries
++ **
++ ** @param [r] thys [const AjPFeature] Feature
++ ** @param [r] table [const AjPFeattable] Full feature table
++ ** @param [r] seq [const AjPSeq] Sequence for the current feature table
++ ** @param [u] Pseqstr [AjPStr*] Sequence for this feature
++ ** @return [AjBool] True on success
++ ** @@
++ ******************************************************************************/
++
++ AjBool ajFeatGetSeqJoin(const AjPFeature thys, const AjPFeattable table,
++ const AjPSeq seq, AjPStr* Pseqstr)
++ {
+ const AjPFeature gf;
+ AjIList iter = NULL;
+ AjPSeq remoteseq = NULL;
+ AjBool isjoin = ajFalse;
++ AjPStr tmpseq = NULL;
++ AjBool compjoin = ajFalse;
++ AjPStr flags = NULL;
++ ajuint count=0;
++
++ ajStrSetClear(Pseqstr);
+
+ isjoin = ajFeatIsMultiple(thys);
++ if(thys->Flags & FEATFLAG_COMPLEMENT_MAIN)
++ compjoin = ajTrue;
+
+! ajDebug("ajFeatGetSeqJoin nfeat:%u usa:%S\n",
+! ajFeattableGetSize(table), ajSeqGetUsaS(seq));
+ iter = ajListIterNewread(table->Features);
+
+ while(!ajListIterDone(iter))
+ {
++ count++;
+ gf = (const AjPFeature) ajListIterGet(iter);
+
+ if(gf->Group == thys->Group)
+ {
+! ajFeatGetFlags(gf, &flags);
+ ajFeatTrace(gf);
+
+ if(gf->Flags & FEATFLAG_BETWEEN_SEQ)
+***************
+*** 7280,7295 ****
+ }
+ else
+ {
+! if(gf->Strand == '-')
+! ajStrAppendSubS(Pseqstr, ajSeqGetSeqS(seq),
+! ajFeatGetEnd(gf)-1, ajFeatGetStart(gf)-1);
+ else
+ ajStrAppendSubS(Pseqstr, ajSeqGetSeqS(seq),
+ ajFeatGetStart(gf)-1, ajFeatGetEnd(gf)-1);
+ }
+ }
+ }
+
+ ajListIterDel(&iter);
+ ajSeqDel(&remoteseq);
+
+--- 7422,7447 ----
+ }
+ else
+ {
+! if(gf->Strand == '-' && !compjoin)
+! {
+! ajStrAppendSubS(&tmpseq, ajSeqGetSeqS(seq),
+! ajFeatGetStart(gf)-1, ajFeatGetEnd(gf)-1);
+! ajSeqstrReverse(&tmpseq);
+! ajStrAppendS(Pseqstr, tmpseq);
+! ajStrDel(&tmpseq);
+! }
+ else
++ {
+ ajStrAppendSubS(Pseqstr, ajSeqGetSeqS(seq),
+ ajFeatGetStart(gf)-1, ajFeatGetEnd(gf)-1);
++ }
+ }
+ }
+ }
+
++ if(compjoin)
++ ajSeqstrReverse(Pseqstr);
++
+ ajListIterDel(&iter);
+ ajSeqDel(&remoteseq);
+
+***************
+*** 7355,7372 ****
+ ** Returns all cross-references from a feature
+ **
+ ** @param [r] thys [const AjPFeature] Feature
+! ** @param [u] xreflist [AjPList] List of sequence cross-reference objects
+ ** @return [AjBool] True on success
+ ** @@
+ ******************************************************************************/
+
+! AjBool ajFeatGetXrefs(const AjPFeature thys, AjPList xreflist)
+ {
+ AjIList iter = NULL;
+ FeatPTagval item = NULL;
+ AjPSeqXref xref = NULL;
+ ajint ipos;
+ ajuint inum = 0;
+
+ if(thys->Tags)
+ {
+--- 7507,7529 ----
+ ** Returns all cross-references from a feature
+ **
+ ** @param [r] thys [const AjPFeature] Feature
+! ** @param [u] Pxreflist [AjPList*] List of sequence cross-reference objects
+ ** @return [AjBool] True on success
+ ** @@
+ ******************************************************************************/
+
+! AjBool ajFeatGetXrefs(const AjPFeature thys, AjPList *Pxreflist)
+ {
+ AjIList iter = NULL;
+ FeatPTagval item = NULL;
+ AjPSeqXref xref = NULL;
+ ajint ipos;
+ ajuint inum = 0;
++ AjPList xreflist;
++
++ if(!*Pxreflist)
++ *Pxreflist = ajListNew();
++ xreflist = *Pxreflist;
+
+ if(thys->Tags)
+ {
+***************
+*** 7388,7395 ****
+ xref->Start = ajFeatGetStart(thys)-1;
+ xref->End = ajFeatGetEnd(thys)-1;
+ ajListPushAppend(xreflist, xref);
+- ajUser("/%S='%S' db: '%S' id: '%S'",
+- item->Tag, item->Value, xref->Db, xref->Id);
+ xref->Type = XREF_DBXREF;
+ xref = NULL;
+ }
+--- 7545,7550 ----
+***************
+*** 10534,10539 ****
+--- 10689,10739 ----
+
+
+
++ /* @funcstatic featTypeTestDnaWild *********************************************
++ **
++ ** Given a feature type name,
++ ** returns the valid feature type for the internal DNA feature table
++ ** following alternative names until a matching wildcard name is found
++ **
++ ** @param [r] type [const AjPStr] Type name
++ ** @param [r] str [const AjPStr] Wildcard name
++ ** @return [AjBool] True if a match is found
++ ** @@
++ ******************************************************************************/
++
++ static AjBool featTypeTestDnaWild(const AjPStr type, const AjPStr str)
++ {
++ featInit();
++
++ return featTableTypeTestWild(type, FeatTypeTableDna, str);
++ }
++
++
++
++
++ /* @funcstatic featTypeTestProtWild ********************************************
++ **
++ ** Given a feature type name,
++ ** returns the valid feature type for the internal protein feature table
++ ** following alternative names until a unique name is found
++ **
++ ** @param [r] type [const AjPStr] Type name
++ ** @param [r] str [const AjPStr] Wildcard name
++ ** @return [AjBool] True if a match is found
++ ** @@
++ ******************************************************************************/
++
++ static AjBool featTypeTestProtWild(const AjPStr type, const AjPStr str)
++ {
++ featInit();
++
++ return featTableTypeTestWild(type, FeatTypeTableProtein, str);
++ }
++
++
++
++
++
+ /* @funcstatic featTagDna *****************************************************
+ **
+ ** Given a feature tag name,
+***************
+*** 10771,10776 ****
+--- 10971,11071 ----
+
+
+
++ /* @funcstatic featTableTypeTestWild *******************************************
++ **
++ ** Given a feature type name,
++ ** returns the valid feature type for a feature table
++ ** following alternative names which are common in the internal table
++ ** which is a combination of multiple definitions
++ **
++ ** @param [r] type [const AjPStr] Type name
++ ** @param [r] table [const AjPTable] Feature table
++ ** @param [r] str [const AjPStr] Wildcard name
++ ** @return [AjBool] True if a match is found
++ ** @@
++ ******************************************************************************/
++
++ static AjBool featTableTypeTestWild(const AjPStr type,
++ const AjPTable table,
++ const AjPStr str)
++ {
++ const AjPStr retkey = NULL;
++ const AjPStr tmpstr = NULL;
++ AjPStr tmpkey = NULL;
++ ajuint i = 0;
++ ajuint nkeys;
++ void **keys = NULL;
++ void **values = NULL;
++ AjPStr key = NULL;
++
++ if(ajStrMatchWildS(type, str))
++ return ajTrue;
++
++ retkey = (const AjPStr) ajTableFetchKey(table, type);
++
++ while(retkey && i < 5)
++ {
++ tmpstr = (AjPStr)ajTableFetch(table, retkey);
++ ajDebug("featTableTypeTestWild '%S' found in internal table"
++ " as '%S' (%S)\n",type, retkey, tmpstr);
++
++ if(ajStrGetCharLast(tmpstr) != ';')
++ {
++ if(ajStrMatchWildS(tmpstr, str))
++ return ajTrue;
++
++ tmpstr = (AjPStr)ajTableFetch(table, retkey);
++ retkey = (const AjPStr) ajTableFetchKey(table, tmpstr);
++ }
++ else
++ {
++ ajStrAssignSubS(&tmpkey, tmpstr, 0, ajStrFindAnyK(tmpstr, ';')-1);
++
++ if(ajStrMatchWildS(tmpkey, str))
++ {
++ ajStrDel(&tmpkey);
++ return ajTrue;
++ }
++
++ ajStrDel(&tmpkey);
++
++ ajDebug("featTableTypeTestWild '%S' is an alias for '%S'\n",
++ retkey, tmpstr);
++
++ retkey = (const AjPStr) ajTableFetchKey(table, tmpstr);
++
++ }
++
++ ajDebug("featTableTypeTestWild result %u '%S'\n",
++ ++i, retkey);
++ }
++
++ nkeys = ajTableToarray(table, &keys, &values);
++ AJFREE(values);
++ for (i=0; i<nkeys; i++)
++ {
++ key = (AjPStr) keys[i];
++ if(ajStrMatchWildS(key, str))
++ {
++ if(ajStrMatchS(featTableTypeInternalLimit(key,table),
++ featTableTypeInternalLimit(type,table)))
++ {
++ AJFREE(keys);
++ return ajTrue;
++ }
++ }
++ }
++
++ AJFREE(keys);
++ ajDebug("featTableTypeTestWild '%S' not in internal table %x, "
++ "default to NULL\n", type, table);
++
++ return ajFalse;
++ }
++
++
++
++
+ /* @funcstatic featTableTag ***************************************************
+ **
+ ** Given a feature tag name,
+***************
+*** 14471,14476 ****
+--- 14766,14829 ----
+
+
+
++ /* @func ajFeatTypeMatchWildS **************************************************
++ **
++ ** Tests whether the feature type matches a given wildcard string
++ ** including testing for alternative names
++ **
++ ** @param [r] gf [const AjPFeature] Feature
++ ** @param [r] str [const AjPStr] Feature type name to test
++ ** @return [AjBool] ajTrue on success
++ ** @@
++ ******************************************************************************/
++
++ AjBool ajFeatTypeMatchWildS(const AjPFeature gf, const AjPStr str)
++ {
++ AjBool ret = ajFalse;
++ AjPStr mystr = NULL;
++
++ mystr = ajStrNewS(str);
++ ajStrFmtLower(&mystr);
++
++ if(gf->Protein)
++ {
++ ret = featTypeTestProtWild(gf->Type, mystr);
++
++ if(!ret)
++ {
++ if(ajStrIsWild(mystr))
++ ajStrTrimEndC(&mystr, "*");
++ ret = ajFeatTypeMatchS(gf, mystr);
++ }
++
++ ajDebug("ajFeatTypeMatchWildS: %B '%S' '%S' prot:'%S'\n",
++ ret, mystr, gf->Type,
++ featTypeProtLimit(gf->Type));
++ }
++
++ else
++ {
++ ret = featTypeTestDnaWild(gf->Type, mystr);
++
++ if(!ret)
++ {
++ if(ajStrIsWild(mystr))
++ ajStrTrimEndC(&mystr, "*");
++ ret = ajFeatTypeMatchS(gf, mystr);
++ }
++
++ ajDebug("ajFeatTypeMatchWildS: %B '%S' '%S' dna: '%S'\n",
++ ret, mystr, gf->Type,
++ featTypeDnaLimit(gf->Type));
++ }
++ ajStrDel(&mystr);
++
++ return ret;
++ }
++
++
++
++
+ /* @func ajFeatIsLocal ********************************************************
+ **
+ ** Tests whether the feature is local to the sequence.
+diff -c -N --recursive EMBOSS-6.1.0orig/ajax/ajfeat.h EMBOSS-6.1.0/ajax/ajfeat.h
+*** EMBOSS-6.1.0orig/ajax/ajfeat.h Mon Sep 28 22:15:17 2009
+--- EMBOSS-6.1.0/ajax/ajfeat.h Wed Dec 2 12:27:01 2009
+***************
+*** 56,63 ****
+ AjPSeq seq);
+ float ajFeatGetScore (const AjPFeature thys);
+ const AjPStr ajFeatGetSource (const AjPFeature thys);
+! AjBool ajFeatGetSeq(const AjPFeature feat, const AjPFeattable table,
+ const AjPSeq seq, AjPStr* seqstr);
+ ajuint ajFeatGetStart (const AjPFeature thys);
+ char ajFeatGetStrand (const AjPFeature thys);
+ AjBool ajFeatGetTagC(const AjPFeature thys, const char* tname,
+--- 56,66 ----
+ AjPSeq seq);
+ float ajFeatGetScore (const AjPFeature thys);
+ const AjPStr ajFeatGetSource (const AjPFeature thys);
+! AjBool ajFeatGetFlags(const AjPFeature thys, AjPStr* Pflagstr);
+! AjBool ajFeatGetSeq(const AjPFeature feat,
+ const AjPSeq seq, AjPStr* seqstr);
++ AjBool ajFeatGetSeqJoin(const AjPFeature thys, const AjPFeattable table,
++ const AjPSeq seq, AjPStr* Pseqstr);
+ ajuint ajFeatGetStart (const AjPFeature thys);
+ char ajFeatGetStrand (const AjPFeature thys);
+ AjBool ajFeatGetTagC(const AjPFeature thys, const char* tname,
+***************
+*** 66,72 ****
+ ajint num, AjPStr* val);
+ AjBool ajFeatGetTranslation(const AjPFeature feat, AjPStr* seqstr);
+ const AjPStr ajFeatGetType (const AjPFeature thys);
+! AjBool ajFeatGetXrefs(const AjPFeature thys, AjPList xreflist);
+ AjBool ajFeatIsCompMult (const AjPFeature gf);
+ AjBool ajFeatIsLocal (const AjPFeature gf);
+ AjBool ajFeatIsLocalRange (const AjPFeature gf,
+--- 69,75 ----
+ ajint num, AjPStr* val);
+ AjBool ajFeatGetTranslation(const AjPFeature feat, AjPStr* seqstr);
+ const AjPStr ajFeatGetType (const AjPFeature thys);
+! AjBool ajFeatGetXrefs(const AjPFeature thys, AjPList *Pxreflist);
+ AjBool ajFeatIsCompMult (const AjPFeature gf);
+ AjBool ajFeatIsLocal (const AjPFeature gf);
+ AjBool ajFeatIsLocalRange (const AjPFeature gf,
+***************
+*** 107,113 ****
+ ajuint ajFeattableGetSize(const AjPFeattable thys);
+ const char* ajFeattableGetTypeC (const AjPFeattable thys);
+ const AjPStr ajFeattableGetTypeS (const AjPFeattable thys);
+! AjBool ajFeattableGetXrefs(const AjPFeattable thys, AjPList xreflist,
+ ajuint *Ptaxid);
+ AjBool ajFeattableIsNuc (const AjPFeattable thys);
+ AjBool ajFeattableIsProt (const AjPFeattable thys);
+--- 110,116 ----
+ ajuint ajFeattableGetSize(const AjPFeattable thys);
+ const char* ajFeattableGetTypeC (const AjPFeattable thys);
+ const AjPStr ajFeattableGetTypeS (const AjPFeattable thys);
+! AjBool ajFeattableGetXrefs(const AjPFeattable thys, AjPList *Pxreflist,
+ ajuint *Ptaxid);
+ AjBool ajFeattableIsNuc (const AjPFeattable thys);
+ AjBool ajFeattableIsProt (const AjPFeattable thys);
+***************
+*** 203,208 ****
+--- 206,212 ----
+ AjBool ajFeatTypeIsCds(const AjPFeature gf);
+ AjBool ajFeatTypeMatchC(const AjPFeature gf, const char* txt);
+ AjBool ajFeatTypeMatchS(const AjPFeature gf, const AjPStr str);
++ AjBool ajFeatTypeMatchWildS(const AjPFeature gf, const AjPStr str);
+ const AjPStr ajFeatTypeNuc(const AjPStr type);
+ const AjPStr ajFeatTypeProt(const AjPStr type);
+ AjPFeattable ajFeatUfoRead (AjPFeattabIn tabin, const AjPStr Ufo);
+diff -c -N --recursive EMBOSS-6.1.0orig/ajax/ajgraph.c EMBOSS-6.1.0/ajax/ajgraph.c
+*** EMBOSS-6.1.0orig/ajax/ajgraph.c Mon Nov 23 16:36:58 2009
+--- EMBOSS-6.1.0/ajax/ajgraph.c Wed Dec 2 12:27:06 2009
+***************
+*** 2831,2836 ****
+--- 2831,2838 ----
+ void ajGraphGetOut(float *xp,float *yp, ajint *xleng, ajint *yleng,
+ ajint *xoff, ajint *yoff)
+ {
++ char devname[128];
++
+ ajDebug("=g= plgpage(&f &f) [&xp, &yp, &xleng, &yleng, &xoff, &yoff]\n");
+
+ if(graphData)
+***************
+*** 2847,2852 ****
+--- 2849,2893 ----
+ plgpage(xp,yp,xleng,yleng,xoff,yoff);
+ ajDebug("returns xp:%.3f yp:%.3f xleng:%d yleng:%d xoff:%d yoff:%d\n",
+ *xp, *yp, *xleng, *yleng, *xoff, *yoff);
++ if(*xleng == 0.0)
++ {
++ plgdev(devname);
++ if(!strcmp(devname, "win3"))
++ {
++ *xleng = 720;
++ *yleng = 540;
++ }
++ else if(!strcmp(devname, "xterm"))
++ {
++ *xleng = 1024;
++ *yleng = 780;
++ }
++ else if(!strcmp(devname, "xwin"))
++ {
++ *xleng = 1440;
++ *yleng = 900;
++ }
++ else if(!strcmp(devname, "ps"))
++ {
++ *xleng = 720;
++ *yleng = 540;
++ }
++ else if(!strcmp(devname, "psc"))
++ {
++ *xleng = 720;
++ *yleng = 540;
++ }
++ else if(!strcmp(devname, "png"))
++ {
++ *xleng = 640;
++ *yleng = 480;
++ }
++ else if(!strcmp(devname, "gif"))
++ {
++ *xleng = 640;
++ *yleng = 480;
++ }
++ }
+ }
+
+ return;
+diff -c -N --recursive EMBOSS-6.1.0orig/ajax/ajmath.c EMBOSS-6.1.0/ajax/ajmath.c
+*** EMBOSS-6.1.0orig/ajax/ajmath.c Mon Sep 28 22:15:17 2009
+--- EMBOSS-6.1.0/ajax/ajmath.c Wed Dec 2 12:27:10 2009
+***************
+*** 671,690 ****
+
+ ajuint ajMathPosI(ajuint len, ajuint imin, ajint ipos)
+ {
+! ajuint jpos;
+
+ if(ipos < 0)
+ jpos = len + ipos;
+ else
+ jpos = ipos;
+
+! if(jpos >= len)
+ jpos = len - 1;
+
+! if(jpos < imin)
+ jpos = imin;
+
+! return jpos;
+ }
+
+
+--- 671,692 ----
+
+ ajuint ajMathPosI(ajuint len, ajuint imin, ajint ipos)
+ {
+! ajint jpos;
+! ajint jmin = imin;
+! ajint jlen = len;
+
+ if(ipos < 0)
+ jpos = len + ipos;
+ else
+ jpos = ipos;
+
+! if(jpos >= jlen)
+ jpos = len - 1;
+
+! if(jpos < jmin)
+ jpos = imin;
+
+! return (ajuint) jpos;
+ }
+
+
diff -c -N --recursive EMBOSS-6.1.0orig/ajax/ajmem.h EMBOSS-6.1.0/ajax/ajmem.h
-*** EMBOSS-6.1.0orig/ajax/ajmem.h 2007-12-12 12:46:19.000000000 +0000
---- EMBOSS-6.1.0/ajax/ajmem.h 2009-08-25 09:31:44.000000000 +0100
+*** EMBOSS-6.1.0orig/ajax/ajmem.h Mon Sep 28 22:15:17 2009
+--- EMBOSS-6.1.0/ajax/ajmem.h Mon Sep 28 22:14:48 2009
***************
*** 71,77 ****
#define AJFREE(ptr) ((void)(ajMemFree(ptr), (ptr) = 0))
@@ -61,9 +894,48 @@ diff -c -N --recursive EMBOSS-6.1.0orig/ajax/ajmem.h EMBOSS-6.1.0/ajax/ajmem.h
(oldbytes), (nbytes), __FILE__, __LINE__, AJFALSE))
#define AJCRESIZE(ptr, nbytes) ((ptr) = ajMemResize((ptr), \
(nbytes)*sizeof *(ptr), __FILE__, __LINE__, AJFALSE))
+diff -c -N --recursive EMBOSS-6.1.0orig/ajax/ajseq.c EMBOSS-6.1.0/ajax/ajseq.c
+*** EMBOSS-6.1.0orig/ajax/ajseq.c Mon Sep 28 22:15:17 2009
+--- EMBOSS-6.1.0/ajax/ajseq.c Wed Dec 2 12:27:15 2009
+***************
+*** 2574,2580 ****
+--- 2574,2584 ----
+ {
+ ajint ibegin;
+ ajint iend;
++ ajuint ilen;
+ ajint itemp;
++ ajuint i;
++ ajuint j;
++ float atemp;
+
+ ajDebug("ajSeqReverse len: %d Begin: %d End: %d Rev: %B Reversed: %B\n",
+ ajSeqGetLen(seq), seq->Begin, seq->End,
+***************
+*** 2608,2613 ****
+--- 2612,2630 ----
+ if(seq->Fttable)
+ ajFeattableReverse(seq->Fttable);
+
++ if(seq->Accuracy)
++ {
++ ilen = ajSeqGetLen(seq);
++ j = ilen;
++ for(i=0;i<ilen;i++)
++ {
++ if(--j <= i) break;
++ atemp = seq->Accuracy[j];
++ seq->Accuracy[j] = seq->Accuracy[i];
++ seq->Accuracy[i] = atemp;
++ }
++ }
++
+ return;
+ }
+
diff -c -N --recursive EMBOSS-6.1.0orig/ajax/ajseqread.c EMBOSS-6.1.0/ajax/ajseqread.c
-*** EMBOSS-6.1.0orig/ajax/ajseqread.c 2009-07-07 00:08:26.000000000 +0100
---- EMBOSS-6.1.0/ajax/ajseqread.c 2009-07-30 15:27:39.000000000 +0100
+*** EMBOSS-6.1.0orig/ajax/ajseqread.c Mon Sep 28 22:15:16 2009
+--- EMBOSS-6.1.0/ajax/ajseqread.c Wed Dec 2 12:27:18 2009
***************
*** 689,695 ****
AJTRUE, AJTRUE, seqReadSwiss, AJFALSE, 0},
@@ -212,6 +1084,35 @@ diff -c -N --recursive EMBOSS-6.1.0orig/ajax/ajseqread.c EMBOSS-6.1.0/ajax/ajseq
AJFALSE, AJTRUE, AJTRUE, AJTRUE,
AJFALSE, AJTRUE, seqReadFitch, AJFALSE, 0},
***************
+*** 1739,1745 ****
+ else
+ ajSeqSetRange(seq, thys->Begin, thys->End);
+
+! ajDebug ("ajSeqsetRead read sequence %d %x '%s' %d..%d (%d) "
+ "Rev:%B Reversed:%B\n",
+ iseq, seq, ajSeqGetNameS(seq),
+ seq->Begin, seq->End, ajSeqGetLen(seq),
+--- 1739,1745 ----
+ else
+ ajSeqSetRange(seq, thys->Begin, thys->End);
+
+! ajDebug ("ajSeqsetRead read sequence %d %x '%S' %d..%d (%d) "
+ "Rev:%B Reversed:%B\n",
+ iseq, seq, ajSeqGetNameS(seq),
+ seq->Begin, seq->End, ajSeqGetLen(seq),
+***************
+*** 2104,2109 ****
+--- 2104,2112 ----
+
+ if(ajSeqTypeCheckIn(thys, seqin))
+ {
++ if (!ajStrGetLen(thys->Seq)) /* removed all remaining chars */
++ return FMT_EMPTY;
++
+ /* ajSeqinTrace(seqin); */
+ if(seqin->Upper)
+ ajSeqFmtUpper(thys);
+***************
*** 2627,2634 ****
seqin->Text, &thys->TextPtr);
@@ -221,7 +1122,7 @@ diff -c -N --recursive EMBOSS-6.1.0orig/ajax/ajseqread.c EMBOSS-6.1.0/ajax/ajseq
{
seqqualAppendWarn(&qualstr, seqReadLine);
---- 2627,2634 ----
+--- 2630,2637 ----
seqin->Text, &thys->TextPtr);
while(ok &&
@@ -240,7 +1141,7 @@ diff -c -N --recursive EMBOSS-6.1.0orig/ajax/ajseqread.c EMBOSS-6.1.0/ajax/ajseq
{
seqqualAppendWarn(&qualstr, seqReadLine);
---- 2790,2797 ----
+--- 2793,2800 ----
seqin->Text, &thys->TextPtr);
while(ok &&
@@ -259,7 +1160,7 @@ diff -c -N --recursive EMBOSS-6.1.0orig/ajax/ajseqread.c EMBOSS-6.1.0/ajax/ajseq
{
seqqualAppendWarn(&qualstr, seqReadLine);
---- 3157,3164 ----
+--- 3160,3167 ----
seqin->Text, &thys->TextPtr);
while(ok &&
@@ -278,7 +1179,7 @@ diff -c -N --recursive EMBOSS-6.1.0orig/ajax/ajseqread.c EMBOSS-6.1.0/ajax/ajseq
{
seqqualAppendWarn(&qualstr, seqReadLine);
---- 3352,3359 ----
+--- 3355,3362 ----
seqin->Text, &thys->TextPtr);
while(ok &&
@@ -297,7 +1198,7 @@ diff -c -N --recursive EMBOSS-6.1.0orig/ajax/ajseqread.c EMBOSS-6.1.0/ajax/ajseq
bufflines++;
while(ajBuffreadLineStore(buff, &seqReadLine,
---- 5254,5260 ----
+--- 5257,5263 ----
return ajFalse;
}
@@ -315,7 +1216,7 @@ diff -c -N --recursive EMBOSS-6.1.0orig/ajax/ajseqread.c EMBOSS-6.1.0/ajax/ajseq
bufflines++;
while(ajBuffreadLineStore(buff, &seqReadLine,
---- 5329,5335 ----
+--- 5332,5338 ----
return ajFalse;
}
@@ -325,7 +1226,7 @@ diff -c -N --recursive EMBOSS-6.1.0orig/ajax/ajseqread.c EMBOSS-6.1.0/ajax/ajseq
while(ajBuffreadLineStore(buff, &seqReadLine,
***************
*** 6651,6656 ****
---- 6649,6655 ----
+--- 6652,6658 ----
if(ajStrIsWhite(phyitem->Name) ||
ajTableFetch(phytable, phyitem->Name))
{
@@ -335,7 +1236,7 @@ diff -c -N --recursive EMBOSS-6.1.0orig/ajax/ajseqread.c EMBOSS-6.1.0/ajax/ajseq
phyitem->Name);
***************
*** 6745,6750 ****
---- 6744,6750 ----
+--- 6747,6753 ----
ajDebug("phylip format length mismatch at %d "
"(length %d)\n",
maxlen, ilen);
@@ -345,7 +1246,7 @@ diff -c -N --recursive EMBOSS-6.1.0orig/ajax/ajseqread.c EMBOSS-6.1.0/ajax/ajseq
seqMsfDataDel((SeqPMsfData*) &seqin->Data);
***************
*** 6771,6776 ****
---- 6771,6777 ----
+--- 6774,6780 ----
if(!done)
{
ajDebug("seqReadPhylip read failed, try seqReadPhylipnon\n");
@@ -355,7 +1256,7 @@ diff -c -N --recursive EMBOSS-6.1.0orig/ajax/ajseqread.c EMBOSS-6.1.0/ajax/ajseq
***************
*** 6781,6786 ****
---- 6782,6788 ----
+--- 6785,6791 ----
{
ajDebug("Phylip format %d sequences partly read at end\n",
iseq-jseq);
@@ -364,8 +1265,25 @@ diff -c -N --recursive EMBOSS-6.1.0orig/ajax/ajseqread.c EMBOSS-6.1.0/ajax/ajseq
seqMsfDataDel((SeqPMsfData*) &seqin->Data);
***************
+*** 10621,10627 ****
+
+ if(ajFeattableGetSize(thys->Fttable))
+ {
+! ajFeattableGetXrefs(thys->Fttable, thys->Xreflist, &taxid);
+ if(taxid)
+ seqTaxidSaveI(thys, taxid);
+ }
+--- 10626,10632 ----
+
+ if(ajFeattableGetSize(thys->Fttable))
+ {
+! ajFeattableGetXrefs(thys->Fttable, &thys->Xreflist, &taxid);
+ if(taxid)
+ seqTaxidSaveI(thys, taxid);
+ }
+***************
*** 10973,10978 ****
---- 10975,10982 ----
+--- 10978,10985 ----
if(!ajBuffreadLine(buff, &seqReadLine))
return ajFalse;
@@ -376,7 +1294,7 @@ diff -c -N --recursive EMBOSS-6.1.0orig/ajax/ajseqread.c EMBOSS-6.1.0/ajax/ajseq
ok = ajTrue;
***************
*** 11030,11035 ****
---- 11034,11040 ----
+--- 11037,11043 ----
if(nfields == 9)
{
@@ -386,7 +1304,7 @@ diff -c -N --recursive EMBOSS-6.1.0orig/ajax/ajseqread.c EMBOSS-6.1.0/ajax/ajseq
return seqReadGenpept(thys,seqin);
***************
*** 11053,11062 ****
---- 11058,11070 ----
+--- 11061,11073 ----
case 4:
if(ajStrMatchC(token, "aa"))
{
@@ -401,8 +1319,73 @@ diff -c -N --recursive EMBOSS-6.1.0orig/ajax/ajseqread.c EMBOSS-6.1.0/ajax/ajseq
}
if(!ajStrMatchC(token, "bp"))
***************
+*** 11089,11094 ****
+--- 11100,11106 ----
+ ok = ajBuffreadLineStore(buff, &seqReadLine, seqin->Text, &thys->TextPtr);
+
+ while(ok &&
++ !ajStrPrefixC(seqReadLine, "//") &&
+ !ajStrPrefixC(seqReadLine, "ORIGIN") &&
+ !ajStrPrefixC(seqReadLine, "BASE COUNT"))
+ {
+***************
+*** 11351,11364 ****
+ /* read the sequence and terminator */
+ ajDebug("sequence start at '%S'\n", seqReadLine);
+
+! while(!ajStrPrefixC(seqReadLine,"ORIGIN") &&
+! !ajStrPrefixC(seqReadLine,"BASE COUNT"))
+! if(!ajBuffreadLineStore(buff,&seqReadLine,
+! seqin->Text, &thys->TextPtr))
+! break;
+
+- ok = ajBuffreadLineStore(buff, &seqReadLine,
+- seqin->Text, &thys->TextPtr);
+ ajStrSetRes(&thys->Seq, seqlen+1);
+
+ while(ok && !ajStrPrefixC(seqReadLine, "//"))
+--- 11363,11383 ----
+ /* read the sequence and terminator */
+ ajDebug("sequence start at '%S'\n", seqReadLine);
+
+! while(ok &&
+! !ajStrPrefixC(seqReadLine,"//") &&
+! !ajStrPrefixC(seqReadLine,"ORIGIN") &&
+! !ajStrPrefixC(seqReadLine,"BASE COUNT"))
+! {
+! ok = ajBuffreadLineStore(buff,&seqReadLine,
+! seqin->Text, &thys->TextPtr);
+! if(!ok)
+! break;
+! }
+!
+! if(ok && !ajStrPrefixC(seqReadLine,"//"))
+! ok = ajBuffreadLineStore(buff, &seqReadLine,
+! seqin->Text, &thys->TextPtr);
+
+ ajStrSetRes(&thys->Seq, seqlen+1);
+
+ while(ok && !ajStrPrefixC(seqReadLine, "//"))
+***************
+*** 11381,11387 ****
+
+ if(ajFeattableGetSize(thys->Fttable))
+ {
+! ajFeattableGetXrefs(thys->Fttable, thys->Xreflist, &taxid);
+ if(taxid)
+ seqTaxidSaveI(thys, taxid);
+ }
+--- 11400,11406 ----
+
+ if(ajFeattableGetSize(thys->Fttable))
+ {
+! ajFeattableGetXrefs(thys->Fttable, &thys->Xreflist, &taxid);
+ if(taxid)
+ seqTaxidSaveI(thys, taxid);
+ }
+***************
*** 11521,11526 ****
---- 11529,11535 ----
+--- 11540,11546 ----
if(nfields == 8)
{
@@ -412,7 +1395,7 @@ diff -c -N --recursive EMBOSS-6.1.0orig/ajax/ajseqread.c EMBOSS-6.1.0/ajax/ajseq
return seqReadRefseqp(thys,seqin);
***************
*** 11916,11921 ****
---- 11925,11932 ----
+--- 11936,11943 ----
if(!ajBuffreadLine(buff, &seqReadLine))
return ajFalse;
@@ -431,7 +1414,7 @@ diff -c -N --recursive EMBOSS-6.1.0orig/ajax/ajseqread.c EMBOSS-6.1.0/ajax/ajseq
ajStrTokenDel(&handle);
ajStrDel(&token);
---- 12314,12321 ----
+--- 12325,12332 ----
ok = ajBuffreadLineStore(buff,&seqReadLine,
seqin->Text, &thys->TextPtr);
@@ -440,9 +1423,26 @@ diff -c -N --recursive EMBOSS-6.1.0orig/ajax/ajseqread.c EMBOSS-6.1.0/ajax/ajseq
ajStrTokenDel(&handle);
ajStrDel(&token);
+***************
+*** 13446,13452 ****
+ return;
+
+ if(!seqRegUsaFmt)
+! seqRegUsaFmt = ajRegCompC("^([A-Za-z0-9]*)::(.*)$");
+ /* \1 format letters and numbers only */
+ /* \2 remainder (filename, etc.)*/
+
+--- 13468,13474 ----
+ return;
+
+ if(!seqRegUsaFmt)
+! seqRegUsaFmt = ajRegCompC("^([A-Za-z0-9-]*)::(.*)$");
+ /* \1 format letters and numbers only */
+ /* \2 remainder (filename, etc.)*/
+
diff -c -N --recursive EMBOSS-6.1.0orig/ajax/ajseqwrite.c EMBOSS-6.1.0/ajax/ajseqwrite.c
-*** EMBOSS-6.1.0orig/ajax/ajseqwrite.c 2009-07-06 16:50:31.000000000 +0100
---- EMBOSS-6.1.0/ajax/ajseqwrite.c 2009-07-30 15:27:55.000000000 +0100
+*** EMBOSS-6.1.0orig/ajax/ajseqwrite.c Mon Sep 28 22:15:17 2009
+--- EMBOSS-6.1.0/ajax/ajseqwrite.c Wed Dec 2 12:27:22 2009
***************
*** 231,237 ****
AJFALSE, AJFALSE, AJFALSE, AJTRUE, AJTRUE,
@@ -908,6 +1908,35 @@ diff -c -N --recursive EMBOSS-6.1.0orig/ajax/ajseqwrite.c EMBOSS-6.1.0/ajax/ajse
ajStrDel(&seq);
***************
+*** 6927,6939 ****
+ ajDebug("seqoutUsaProcess\n");
+ if(!seqoutRegFmt)
+ #ifndef WIN32
+! seqoutRegFmt = ajRegCompC("^([A-Za-z0-9]*)::?(.*)$");
+ /* \1 format */
+ /* \2 remainder */
+ #else
+ /* Windows file names can start with e.g.: 'C:\' */
+ /* -> Require that format names have at least 2 letters */
+! seqoutRegFmt = ajRegCompC("^([A-Za-z0-9][A-Za-z0-9][A-Za-z0-9]*)::?(.*)$");
+ /* \1 format */
+ /* \2 remainder */
+ #endif
+--- 6874,6886 ----
+ ajDebug("seqoutUsaProcess\n");
+ if(!seqoutRegFmt)
+ #ifndef WIN32
+! seqoutRegFmt = ajRegCompC("^([A-Za-z0-9-]*)::?(.*)$");
+ /* \1 format */
+ /* \2 remainder */
+ #else
+ /* Windows file names can start with e.g.: 'C:\' */
+ /* -> Require that format names have at least 2 letters */
+! seqoutRegFmt = ajRegCompC("^([A-Za-z0-9][A-Za-z0-9-][A-Za-z0-9-]*)::?(.*)$");
+ /* \1 format */
+ /* \2 remainder */
+ #endif
+***************
*** 7798,7803 ****
--- 7745,7751 ----
@@ -918,8 +1947,8 @@ diff -c -N --recursive EMBOSS-6.1.0orig/ajax/ajseqwrite.c EMBOSS-6.1.0/ajax/ajse
**
** Initialises sequence output formatting parameters.
diff -c -N --recursive EMBOSS-6.1.0orig/ajax/ajstr.c EMBOSS-6.1.0/ajax/ajstr.c
-*** EMBOSS-6.1.0orig/ajax/ajstr.c 2009-06-22 16:51:03.000000000 +0100
---- EMBOSS-6.1.0/ajax/ajstr.c 2009-08-25 09:30:30.000000000 +0100
+*** EMBOSS-6.1.0orig/ajax/ajstr.c Mon Sep 28 22:15:18 2009
+--- EMBOSS-6.1.0/ajax/ajstr.c Mon Sep 28 22:14:49 2009
***************
*** 3,13 ****
**
@@ -1097,8 +2126,8 @@ diff -c -N --recursive EMBOSS-6.1.0orig/ajax/ajstr.c EMBOSS-6.1.0/ajax/ajstr.c
return ajTrue;
}
diff -c -N --recursive EMBOSS-6.1.0orig/ajax/ajstr.h EMBOSS-6.1.0/ajax/ajstr.h
-*** EMBOSS-6.1.0orig/ajax/ajstr.h 2009-06-22 16:51:04.000000000 +0100
---- EMBOSS-6.1.0/ajax/ajstr.h 2009-08-25 09:30:34.000000000 +0100
+*** EMBOSS-6.1.0orig/ajax/ajstr.h Mon Sep 28 22:15:17 2009
+--- EMBOSS-6.1.0/ajax/ajstr.h Mon Sep 28 22:14:48 2009
***************
*** 65,70 ****
--- 65,73 ----
@@ -1131,9 +2160,809 @@ diff -c -N --recursive EMBOSS-6.1.0orig/ajax/ajstr.h EMBOSS-6.1.0/ajax/ajstr.h
AjBool ajStrTruncateLen(AjPStr* Pstr, ajuint len);
AjBool ajStrTruncatePos(AjPStr* Pstr, ajint pos);
+diff -c -N --recursive EMBOSS-6.1.0orig/emboss/coderet.c EMBOSS-6.1.0/emboss/coderet.c
+*** EMBOSS-6.1.0orig/emboss/coderet.c Mon Sep 28 22:15:20 2009
+--- EMBOSS-6.1.0/emboss/coderet.c Wed Dec 2 12:28:05 2009
+***************
+*** 137,143 ****
+ if(seqoutcds && ajFeatTypeMatchC(gf, "CDS"))
+ {
+ icds++;
+! ret = ajFeatGetSeq(gf, feat, seq, &cds);
+ if(!ret)
+ {
+ ajWarn("Cannot extract %S\n",ajSeqGetNameS(seq));
+--- 137,143 ----
+ if(seqoutcds && ajFeatTypeMatchC(gf, "CDS"))
+ {
+ icds++;
+! ret = ajFeatGetSeqJoin(gf, feat, seq, &cds);
+ if(!ret)
+ {
+ ajWarn("Cannot extract %S\n",ajSeqGetNameS(seq));
+***************
+*** 149,155 ****
+ if(seqoutmrna && ajFeatTypeMatchC(gf, "mRNA"))
+ {
+ imrna++;
+! ret = ajFeatGetSeq(gf, feat, seq, &mrna);
+ if(!ret)
+ {
+ ajWarn("Cannot extract %s",ajSeqGetNameC(seq));
+--- 149,155 ----
+ if(seqoutmrna && ajFeatTypeMatchC(gf, "mRNA"))
+ {
+ imrna++;
+! ret = ajFeatGetSeqJoin(gf, feat, seq, &mrna);
+ if(!ret)
+ {
+ ajWarn("Cannot extract %s",ajSeqGetNameC(seq));
+***************
+*** 165,175 ****
+ if(ajFeatTypeMatchC(gf, "CDS") ||
+ ajFeatTypeMatchC(gf, "mRNA") ||
+ ajFeatTypeMatchC(gf, "exon"))
+- {
+- irest++;
+ ajFeatLocMark(gf, feat, ©seq);
+! }
+!
+ }
+
+ if(seqoutprot && ajFeatTypeMatchC(gf, "CDS"))
+--- 165,173 ----
+ if(ajFeatTypeMatchC(gf, "CDS") ||
+ ajFeatTypeMatchC(gf, "mRNA") ||
+ ajFeatTypeMatchC(gf, "exon"))
+ ajFeatLocMark(gf, feat, ©seq);
+! else
+! irest++;
+ }
+
+ if(seqoutprot && ajFeatTypeMatchC(gf, "CDS"))
+***************
+*** 196,202 ****
+ ajFmtPrintF(logf, "%6d", itran);
+
+ ajFmtPrintF(logf, "%6d %s\n",
+! icds+imrna+irest+itran, ajSeqGetNameC(seq));
+ }
+
+
+--- 194,200 ----
+ ajFmtPrintF(logf, "%6d", itran);
+
+ ajFmtPrintF(logf, "%6d %s\n",
+! icds+imrna+irest, ajSeqGetNameC(seq));
+ }
+
+
+diff -c -N --recursive EMBOSS-6.1.0orig/emboss/extractfeat.c EMBOSS-6.1.0/emboss/extractfeat.c
+*** EMBOSS-6.1.0orig/emboss/extractfeat.c Mon Sep 28 22:15:18 2009
+--- EMBOSS-6.1.0/emboss/extractfeat.c Thu Dec 10 11:46:28 2009
+***************
+*** 205,214 ****
+ ajint firstpos;
+ ajint lastpos; /* bounds of feature in sequence */
+ AjPStr describeout = NULL; /* tag names/values to add to descriptions */
+!
+
+ /* For all features... */
+! if(featab && ajFeattableSize(featab))
+ {
+ /* initialise details of a feature */
+ featseq = ajStrNew();
+--- 205,214 ----
+ ajint firstpos;
+ ajint lastpos; /* bounds of feature in sequence */
+ AjPStr describeout = NULL; /* tag names/values to add to descriptions */
+! ajuint count = 0;
+
+ /* For all features... */
+! if(featab && ajFeattableGetSize(featab))
+ {
+ /* initialise details of a feature */
+ featseq = ajStrNew();
+***************
+*** 267,278 ****
+ ajDebug("feature %S %d-%d is parent %B, child %B, single %B\n",
+ ajFeatGetType(gf), ajFeatGetStart(gf), ajFeatGetEnd(gf),
+ parent, child, single);
+!
+ /*
+ ** If single or parent, write out any stored previous feature
+ ** sequence
+ */
+! if(!child)
+ {
+ extractfeat_WriteOut(seqout, &featseq, compall, sense,
+ firstpos, lastpos, before, after, seq,
+--- 267,282 ----
+ ajDebug("feature %S %d-%d is parent %B, child %B, single %B\n",
+ ajFeatGetType(gf), ajFeatGetStart(gf), ajFeatGetEnd(gf),
+ parent, child, single);
+! /*
+! ajUser("feature %S %d-%d is parent %B, child %B, single %B",
+! ajFeatGetType(gf), ajFeatGetStart(gf), ajFeatGetEnd(gf),
+! parent, child, single);
+! */
+ /*
+ ** If single or parent, write out any stored previous feature
+ ** sequence
+ */
+! if(count++ && !child)
+ {
+ extractfeat_WriteOut(seqout, &featseq, compall, sense,
+ firstpos, lastpos, before, after, seq,
+***************
+*** 333,340 ****
+ /* get feature sequence(complement if required) */
+ if(!child)
+ {
+! ajFeatGetSeq(gf, featab, seq, &tmpseq);
+ ajDebug("extracted feature = %d bases\n", ajStrGetLen(tmpseq));
+ ajStrAssignS(&featseq, tmpseq);
+ }
+ }
+--- 337,348 ----
+ /* get feature sequence(complement if required) */
+ if(!child)
+ {
+! if(join)
+! ajFeatGetSeqJoin(gf, featab, seq, &tmpseq);
+! else
+! ajFeatGetSeq(gf, seq, &tmpseq);
+ ajDebug("extracted feature = %d bases\n", ajStrGetLen(tmpseq));
++ /*ajUser("extracted feature = %d bases", ajStrGetLen(tmpseq));*/
+ ajStrAssignS(&featseq, tmpseq);
+ }
+ }
+***************
+*** 375,381 ****
+ ** @param [r] before [ajint] region before feature to get
+ ** @param [r] after [ajint] region after feature to get
+ ** @param [r] seq [const AjPSeq] input sequence
+! ** @param [r] remote [AjBool] TRUE if must abort becuase it includes Remote IDs
+ ** @param [r] type [const AjPStr] type of feature
+ ** @param [r] featinname [AjBool] TRUE if want the type to be part of the name
+ ** @param [r] describestr [const AjPStr] tag names/values for description line
+--- 383,389 ----
+ ** @param [r] before [ajint] region before feature to get
+ ** @param [r] after [ajint] region after feature to get
+ ** @param [r] seq [const AjPSeq] input sequence
+! ** @param [r] remote [AjBool] TRUE if must abort because it includes Remote IDs
+ ** @param [r] type [const AjPStr] type of feature
+ ** @param [r] featinname [AjBool] TRUE if want the type to be part of the name
+ ** @param [r] describestr [const AjPStr] tag names/values for description line
+***************
+*** 395,404 ****
+--- 403,423 ----
+ AjPStr value = NULL; /* string value of start or end position */
+ AjPStr desc = NULL; /* sequence description */
+ ajint tmp;
++ AjBool forward = sense;
++
++ if(compall)
++ forward = ajFalse;
+
++ ajDebug("WriteOut %S_%d_%d [%S] %d all:%B fwd:%B remote:%B\n",
++ ajSeqGetNameS(seq), firstpos+1, lastpos+1, type,
++ ajStrGetLen(*featstr), compall, sense, remote);
++
+ /* see if there is a sequence to be written out */
+ if(!ajStrGetLen(*featstr))
+ {
++ ajWarn("feature %S_%d_%d [%S] "
++ "not written out because it has zero length\n",
++ ajSeqGetNameS(seq), firstpos+1, lastpos+1, type);
+ ajDebug("feature not written out because it has length=0 "
+ "(probably first time round)\n");
+ return;
+***************
+*** 407,439 ****
+ /* see if must abort because there were Remote IDs in the features */
+ if(remote)
+ {
+ ajDebug("feature not written out because it has Remote IDs\n");
+ return;
+ }
+
+- /* if complementing the whole sequence, swap before and after */
+- if(compall)
+- {
+- tmp = before;
+- before = after;
+- after = tmp;
+- }
+-
+ ajDebug("feature = %d bases\n", ajStrGetLen(*featstr));
+
+ /* featstr may be edited, so it is a AjPStr* */
+ extractfeat_BeforeAfter (seq, featstr, firstpos, lastpos, before,
+! after, sense);
+
+ ajDebug("feature+before/after = %d bases\n", ajStrGetLen(*featstr));
+
+- /*
+- ** if join was all in reverse sense, now finally get reverse
+- ** complement
+- */
+- if(compall)
+- ajSeqstrReverse(featstr);
+-
+ /* set the extracted sequence */
+ newseq = ajSeqNew();
+ ajSeqAssignSeqS(newseq, *featstr);
+--- 426,444 ----
+ /* see if must abort because there were Remote IDs in the features */
+ if(remote)
+ {
++ ajWarn("feature not written out because it has Remote IDs\n");
+ ajDebug("feature not written out because it has Remote IDs\n");
+ return;
+ }
+
+ ajDebug("feature = %d bases\n", ajStrGetLen(*featstr));
+
+ /* featstr may be edited, so it is a AjPStr* */
+ extractfeat_BeforeAfter (seq, featstr, firstpos, lastpos, before,
+! after, forward);
+
+ ajDebug("feature+before/after = %d bases\n", ajStrGetLen(*featstr));
+
+ /* set the extracted sequence */
+ newseq = ajSeqNew();
+ ajSeqAssignSeqS(newseq, *featstr);
+***************
+*** 518,524 ****
+ ajint len;
+
+
+-
+ /*
+ ** There is now:
+ ** A complete set of joined features in featstr.
+--- 523,528 ----
+***************
+*** 819,829 ****
+ float maxscore, const AjPStr tag,
+ const AjPStr value, AjBool *tagsmatch)
+ {
+
+! /*
+! ** is this a child of a join() ?
+! ** if it is a child, then we use the previous result of MatchPatternTags
+! */
+ if(!ajFeatIsMultiple(gf) || !ajFeatIsChild(gf))
+ *tagsmatch = extractfeat_MatchPatternTags(gf, tag, value);
+
+--- 823,836 ----
+ float maxscore, const AjPStr tag,
+ const AjPStr value, AjBool *tagsmatch)
+ {
++ AjPStrTok tokens = NULL;
++ AjPStr key = NULL;
++ AjBool val = ajFalse;
+
+! /*
+! ** is this a child of a join() ?
+! ** if it is a child, then we use the previous result of MatchPatternTags
+! */
+ if(!ajFeatIsMultiple(gf) || !ajFeatIsChild(gf))
+ *tagsmatch = extractfeat_MatchPatternTags(gf, tag, value);
+
+***************
+*** 846,862 ****
+
+ ajDebug("extractfeat_MatchFeature\n");
+
+! ajDebug("embMiscMatchPattern(ajFeatGetSource(gf), source) %B\n",
+! embMiscMatchPattern(ajFeatGetSource(gf), source));
+ ajDebug("ajFeatTypeMatchS(gf, type) %B\n",
+! ajFeatTypeMatchS(gf, type));
+ ajDebug("ajFeatGetStrand(gf) '%x' sense %d\n", ajFeatGetStrand(gf), sense);
+ ajDebug("testscore: %B ajFeatGetScore(gf): %f minscore:%f maxscore:%f\n",
+ testscore, ajFeatGetScore(gf), minscore, maxscore);
+! if(!embMiscMatchPattern(ajFeatGetSource(gf), source))
+! return ajFalse;
+! if(ajStrGetLen(type) && !ajFeatTypeMatchS(gf, type))
+ return ajFalse;
+ if(ajFeatGetStrand(gf) == '+' && sense == -1)
+ return ajFalse;
+ if(ajFeatGetStrand(gf) == '-' && sense == +1)
+--- 853,888 ----
+
+ ajDebug("extractfeat_MatchFeature\n");
+
+! ajDebug("embMiscMatchPatternDelim(ajFeatGetSource(gf), source) %B\n",
+! embMiscMatchPatternDelimC(ajFeatGetSource(gf), source, ",;|"));
+ ajDebug("ajFeatTypeMatchS(gf, type) %B\n",
+! ajFeatTypeMatchWildS(gf, type));
+ ajDebug("ajFeatGetStrand(gf) '%x' sense %d\n", ajFeatGetStrand(gf), sense);
+ ajDebug("testscore: %B ajFeatGetScore(gf): %f minscore:%f maxscore:%f\n",
+ testscore, ajFeatGetScore(gf), minscore, maxscore);
+! if(!embMiscMatchPatternDelimC(ajFeatGetSource(gf), source, ",;|"))
+ return ajFalse;
++
++
++ if(ajStrGetLen(type))
++ {
++ val = ajFalse;
++ tokens = ajStrTokenNewC(type, " \t\n\r,;|");
++
++ while (ajStrTokenNextParse( &tokens, &key))
++ {
++ if (ajFeatTypeMatchWildS(gf, key))
++ {
++ val = ajTrue;
++ break;
++ }
++ }
++
++ ajStrTokenDel( &tokens);
++ ajStrDel(&key);
++ if(!val)
++ return ajFalse;
++ }
+ if(ajFeatGetStrand(gf) == '+' && sense == -1)
+ return ajFalse;
+ if(ajFeatGetStrand(gf) == '-' && sense == +1)
+***************
+*** 869,874 ****
+--- 895,901 ----
+ return ajFalse;
+
+ ajDebug("All tests passed, return ajTrue\n");
++ /*ajUser("All tests passed, return ajTrue");*/
+
+ return ajTrue;
+ }
+***************
+*** 914,920 ****
+
+ while(ajFeatTagval(titer, &tagnam, &tagval))
+ {
+! tval = embMiscMatchPattern(tagnam, tpattern);
+
+ /*
+ ** If tag has no value then
+--- 941,947 ----
+
+ while(ajFeatTagval(titer, &tagnam, &tagval))
+ {
+! tval = embMiscMatchPatternDelimC(tagnam, tpattern, ",;|");
+
+ /*
+ ** If tag has no value then
+***************
+*** 929,935 ****
+ vval = ajFalse;
+ }
+ else
+! vval = embMiscMatchPattern(tagval, vpattern);
+
+ if(tval && vval)
+ {
+--- 956,962 ----
+ vval = ajFalse;
+ }
+ else
+! vval = embMiscMatchPatternDelimC(tagval, vpattern, ",;|");
+
+ if(tval && vval)
+ {
+***************
+*** 978,984 ****
+
+ while(ajFeatTagval(titer, &tagnam, &tagval))
+ {
+! if(embMiscMatchPattern(tagnam, describe))
+ {
+ /* There's a match, so write to strout in a pretty format */
+ if(!val)
+--- 1005,1011 ----
+
+ while(ajFeatTagval(titer, &tagnam, &tagval))
+ {
+! if(embMiscMatchPatternDelimC(tagnam, describe, ",;|"))
+ {
+ /* There's a match, so write to strout in a pretty format */
+ if(!val)
+diff -c -N --recursive EMBOSS-6.1.0orig/emboss/notseq.c EMBOSS-6.1.0/emboss/notseq.c
+*** EMBOSS-6.1.0orig/emboss/notseq.c Mon Sep 28 22:15:18 2009
+--- EMBOSS-6.1.0/emboss/notseq.c Wed Dec 2 12:28:15 2009
+***************
+*** 62,69 ****
+ ajStrAssignS(&name, ajSeqGetNameS(seq));
+ ajStrAssignS(&acc, ajSeqGetAccS(seq));
+
+! if(embMiscMatchPattern(name, pattern) ||
+! embMiscMatchPattern(acc, pattern))
+ ajSeqoutWriteSeq(junkout, seq);
+ else
+ /* no match, so not excluded */
+--- 62,69 ----
+ ajStrAssignS(&name, ajSeqGetNameS(seq));
+ ajStrAssignS(&acc, ajSeqGetAccS(seq));
+
+! if(embMiscMatchPatternDelimC(name, pattern, ",;") ||
+! embMiscMatchPatternDelimC(acc, pattern, ",;"))
+ ajSeqoutWriteSeq(junkout, seq);
+ else
+ /* no match, so not excluded */
+diff -c -N --recursive EMBOSS-6.1.0orig/emboss/prettyplot.c EMBOSS-6.1.0/emboss/prettyplot.c
+*** EMBOSS-6.1.0orig/emboss/prettyplot.c Mon Sep 28 22:15:18 2009
+--- EMBOSS-6.1.0/emboss/prettyplot.c Wed Dec 2 12:28:21 2009
+***************
+*** 201,206 ****
+--- 201,207 ----
+ ajint newILend = 0;
+ ajint newILstart;
+ void *freeptr;
++ ajint itmp;
+
+ ajGraphInit("prettyplot", argc, argv);
+
+***************
+*** 427,442 ****
+ if(ixlen == 0.0)
+ {
+ /* for postscript these are 0.0 ????? */
+- if(portrait)
+- {
+- ixlen = 768;
+- iylen = 960;
+- }
+- else
+- {
+ ixlen = 960;
+ iylen = 768;
+! }
+ }
+
+ ajGraphGetCharSize(&defheight,¤theight);
+--- 428,442 ----
+ if(ixlen == 0.0)
+ {
+ /* for postscript these are 0.0 ????? */
+ ixlen = 960;
+ iylen = 768;
+! }
+!
+! if(portrait)
+! {
+! itmp = ixlen;
+! ixlen = iylen;
+! iylen = itmp;
+ }
+
+ ajGraphGetCharSize(&defheight,¤theight);
+diff -c -N --recursive EMBOSS-6.1.0orig/emboss/seqmatchall.c EMBOSS-6.1.0/emboss/seqmatchall.c
+*** EMBOSS-6.1.0orig/emboss/seqmatchall.c Mon Sep 28 22:15:18 2009
+--- EMBOSS-6.1.0/emboss/seqmatchall.c Wed Dec 2 12:28:27 2009
+***************
+*** 76,82 ****
+ for(j=i+1;j<ajSeqsetGetSize(seqset);j++)
+ {
+ iseq2 = j;
+! if(ajSeqGetLen(seqs[j]) > statwordlen)
+ {
+ matchlist = embWordBuildMatchTable(seq1MatchTable,
+ seqs[j], ajTrue);
+--- 76,82 ----
+ for(j=i+1;j<ajSeqsetGetSize(seqset);j++)
+ {
+ iseq2 = j;
+! if(ajSeqGetLen(seqs[j]) >= statwordlen)
+ {
+ matchlist = embWordBuildMatchTable(seq1MatchTable,
+ seqs[j], ajTrue);
+diff -c -N --recursive EMBOSS-6.1.0orig/emboss/showfeat.c EMBOSS-6.1.0/emboss/showfeat.c
+*** EMBOSS-6.1.0orig/emboss/showfeat.c Mon Sep 28 22:15:18 2009
+--- EMBOSS-6.1.0/emboss/showfeat.c Wed Dec 2 12:28:34 2009
+***************
+*** 286,291 ****
+--- 286,294 ----
+ AjBool want_multiple_line = ajFalse; /* true if want a join()s line */
+ AjBool in_multiple_line = ajFalse; /* true if this is a join()s line */
+ AjBool child; /* true if multiple's child */
++ AjPStrTok tokens = NULL;
++ AjPStr key = NULL;
++ AjBool val = ajFalse;
+
+ /* get the feature table of the sequence */
+ feat = ajSeqGetFeatCopy(seq);
+***************
+*** 355,366 ****
+ continue;
+
+ /* check that we want to output this match of source, type */
+! if(!embMiscMatchPattern(ajFeatGetSource(gf), matchsource) ||
+! !embMiscMatchPattern(ajFeatGetType(gf), matchtype) ||
+ !showfeat_MatchPatternTags(gf, matchtag, matchvalue,
+ stricttags, &tagstmp, values))
+ continue;
+
+ /*
+ ** Starting a new line?
+ ** Don't start a new line if:
+--- 358,390 ----
+ continue;
+
+ /* check that we want to output this match of source, type */
+! if(!embMiscMatchPatternDelimC(ajFeatGetSource(gf),
+! matchsource,",;|") ||
+ !showfeat_MatchPatternTags(gf, matchtag, matchvalue,
+ stricttags, &tagstmp, values))
+ continue;
+
++ if(ajStrGetLen(matchtype))
++ {
++ val = ajFalse;
++ tokens = ajStrTokenNewC(matchtype, " \t\n\r,;|");
++
++ while (ajStrTokenNextParse( &tokens, &key))
++ {
++ if (ajFeatTypeMatchWildS(gf, key))
++ {
++ val = ajTrue;
++ break;
++ }
++ }
++
++ ajStrTokenDel( &tokens);
++ ajStrDel(&key);
++ if(!val)
++ continue;
++ }
++
++
+ /*
+ ** Starting a new line?
+ ** Don't start a new line if:
+***************
+*** 852,858 ****
+ titer = ajFeatTagIter(feat);
+ while(ajFeatTagval(titer, &tagnam, &tagval))
+ {
+! tval = embMiscMatchPattern(tagnam, tpattern);
+
+ /*
+ ** If tag has no value then
+--- 876,882 ----
+ titer = ajFeatTagIter(feat);
+ while(ajFeatTagval(titer, &tagnam, &tagval))
+ {
+! tval = embMiscMatchPatternDelimC(tagnam, tpattern,",;|");
+
+ /*
+ ** If tag has no value then
+***************
+*** 878,884 ****
+ ** without spitting it up into words.
+ */
+ vval = (ajStrMatchS(tagval, vpattern) ||
+! embMiscMatchPattern(tagval, vpattern));
+ }
+
+ if(tval && vval)
+--- 902,908 ----
+ ** without spitting it up into words.
+ */
+ vval = (ajStrMatchS(tagval, vpattern) ||
+! embMiscMatchPatternDelimC(tagval, vpattern,",;|"));
+ }
+
+ if(tval && vval)
+diff -c -N --recursive EMBOSS-6.1.0orig/emboss/showpep.c EMBOSS-6.1.0/emboss/showpep.c
+*** EMBOSS-6.1.0orig/emboss/showpep.c Mon Sep 28 22:15:18 2009
+--- EMBOSS-6.1.0/emboss/showpep.c Wed Dec 2 12:28:38 2009
+***************
+*** 438,445 ****
+ ** for sense, 0
+ ** for score, maxscore <= minscore
+ */
+! if(!embMiscMatchPattern(ajFeatGetSource(gf), source) ||
+! !embMiscMatchPattern(ajFeatGetType(gf), type) ||
+ (testscore && ajFeatGetScore(gf) < minscore) ||
+ (testscore && ajFeatGetScore(gf) > maxscore) ||
+ !*tagsmatch)
+--- 438,444 ----
+ ** for sense, 0
+ ** for score, maxscore <= minscore
+ */
+! if(!embMiscMatchPatternDelimC(ajFeatGetSource(gf), source,",;|") ||
+ (testscore && ajFeatGetScore(gf) < minscore) ||
+ (testscore && ajFeatGetScore(gf) > maxscore) ||
+ !*tagsmatch)
+***************
+*** 495,501 ****
+ titer = ajFeatTagIter(gf);
+ while(ajFeatTagval(titer, &tagnam, &tagval))
+ {
+! tval = embMiscMatchPattern(tagnam, tpattern);
+ /*
+ ** If tag has no value then
+ ** If vpattern is '*' the value pattern is a match
+--- 494,500 ----
+ titer = ajFeatTagIter(gf);
+ while(ajFeatTagval(titer, &tagnam, &tagval))
+ {
+! tval = embMiscMatchPatternDelimC(tagnam, tpattern,",;|");
+ /*
+ ** If tag has no value then
+ ** If vpattern is '*' the value pattern is a match
+***************
+*** 516,522 ****
+ ** of the whole of vpattern without spitting it up into words.
+ */
+ vval = (ajStrMatchS(tagval, vpattern) ||
+! embMiscMatchPattern(tagval, vpattern));
+
+
+ if(tval && vval)
+--- 515,521 ----
+ ** of the whole of vpattern without spitting it up into words.
+ */
+ vval = (ajStrMatchS(tagval, vpattern) ||
+! embMiscMatchPatternDelimC(tagval, vpattern,",;|"));
+
+
+ if(tval && vval)
+diff -c -N --recursive EMBOSS-6.1.0orig/emboss/showseq.c EMBOSS-6.1.0/emboss/showseq.c
+*** EMBOSS-6.1.0orig/emboss/showseq.c Mon Sep 28 22:15:18 2009
+--- EMBOSS-6.1.0/emboss/showseq.c Wed Dec 2 12:28:42 2009
+***************
+*** 722,729 ****
+ ** for sense, 0
+ ** for score, maxscore <= minscore
+ */
+! if(!embMiscMatchPattern(ajFeatGetSource(gf), source) ||
+! !embMiscMatchPattern(ajFeatGetType(gf), type) ||
+ (ajFeatGetStrand(gf) == '+' && sense == -1) ||
+ (ajFeatGetStrand(gf) == '-' && sense == +1) ||
+ (testscore && ajFeatGetScore(gf) < minscore) ||
+--- 722,728 ----
+ ** for sense, 0
+ ** for score, maxscore <= minscore
+ */
+! if(!embMiscMatchPatternDelimC(ajFeatGetSource(gf), source,",;|") ||
+ (ajFeatGetStrand(gf) == '+' && sense == -1) ||
+ (ajFeatGetStrand(gf) == '-' && sense == +1) ||
+ (testscore && ajFeatGetScore(gf) < minscore) ||
+***************
+*** 781,787 ****
+ titer = ajFeatTagIter(gf);
+ while(ajFeatTagval(titer, &tagnam, &tagval))
+ {
+! tval = embMiscMatchPattern(tagnam, tpattern);
+ /*
+ ** If tag has no value then
+ ** If vpattern is '*' the value pattern is a match
+--- 780,786 ----
+ titer = ajFeatTagIter(gf);
+ while(ajFeatTagval(titer, &tagnam, &tagval))
+ {
+! tval = embMiscMatchPatternDelimC(tagnam, tpattern,",;|");
+ /*
+ ** If tag has no value then
+ ** If vpattern is '*' the value pattern is a match
+***************
+*** 802,808 ****
+ ** of the whole of vpattern without spitting it up into words.
+ */
+ vval = (ajStrMatchS(tagval, vpattern) ||
+! embMiscMatchPattern(tagval, vpattern));
+
+
+ if(tval && vval)
+--- 801,807 ----
+ ** of the whole of vpattern without spitting it up into words.
+ */
+ vval = (ajStrMatchS(tagval, vpattern) ||
+! embMiscMatchPatternDelimC(tagval, vpattern,",;|"));
+
+
+ if(tval && vval)
+diff -c -N --recursive EMBOSS-6.1.0orig/emboss/twofeat.c EMBOSS-6.1.0/emboss/twofeat.c
+*** EMBOSS-6.1.0orig/emboss/twofeat.c Mon Sep 28 22:15:18 2009
+--- EMBOSS-6.1.0/emboss/twofeat.c Wed Dec 2 12:28:48 2009
+***************
+*** 612,617 ****
+--- 612,620 ----
+ const AjPStr tag, const AjPStr value,
+ AjBool *tagsmatch)
+ {
++ AjPStrTok tokens = NULL;
++ AjPStr key = NULL;
++ AjBool val = ajFalse;
+ AjBool scoreok;
+
+ scoreok = (minscore < maxscore);
+***************
+*** 634,641 ****
+ ** for score, maxscore <= minscore
+ */
+
+! if(!embMiscMatchPattern(ajFeatGetSource(gf), source) ||
+! !embMiscMatchPattern(ajFeatGetType(gf), type) ||
+ (ajFeatGetStrand(gf) == '+' && sense == -1) ||
+ (ajFeatGetStrand(gf) == '-' && sense == +1) ||
+ (scoreok && ajFeatGetScore(gf) < minscore) ||
+--- 637,643 ----
+ ** for score, maxscore <= minscore
+ */
+
+! if(!embMiscMatchPatternDelimC(ajFeatGetSource(gf), source,",;|") ||
+ (ajFeatGetStrand(gf) == '+' && sense == -1) ||
+ (ajFeatGetStrand(gf) == '-' && sense == +1) ||
+ (scoreok && ajFeatGetScore(gf) < minscore) ||
+***************
+*** 643,648 ****
+--- 645,670 ----
+ !*tagsmatch)
+ return ajFalse;
+
++ if(ajStrGetLen(type))
++ {
++ val = ajFalse;
++ tokens = ajStrTokenNewC(type, " \t\n\r,;|");
++
++ while (ajStrTokenNextParse( &tokens, &key))
++ {
++ if (ajFeatTypeMatchWildS(gf, key))
++ {
++ val = ajTrue;
++ break;
++ }
++ }
++
++ ajStrTokenDel( &tokens);
++ ajStrDel(&key);
++ if(!val)
++ return ajFalse;
++ }
++
+ return ajTrue;
+ }
+
+***************
+*** 686,692 ****
+ titer = ajFeatTagIter(feat);
+ while(ajFeatTagval(titer, &tagnam, &tagval))
+ {
+! tval = embMiscMatchPattern(tagnam, tpattern);
+ /*
+ ** If tag has no value then
+ ** If vpattern is '*' the value pattern is a match
+--- 708,714 ----
+ titer = ajFeatTagIter(feat);
+ while(ajFeatTagval(titer, &tagnam, &tagval))
+ {
+! tval = embMiscMatchPatternDelimC(tagnam, tpattern,",;|");
+ /*
+ ** If tag has no value then
+ ** If vpattern is '*' the value pattern is a match
+***************
+*** 701,707 ****
+ vval = ajFalse;
+ }
+ else
+! vval = embMiscMatchPattern(tagval, vpattern);
+
+ if(tval && vval)
+ {
+--- 723,729 ----
+ vval = ajFalse;
+ }
+ else
+! vval = embMiscMatchPatternDelimC(tagval, vpattern,",;|");
+
+ if(tval && vval)
+ {
diff -c -N --recursive EMBOSS-6.1.0orig/jemboss/org/emboss/jemboss/gui/Browser.java EMBOSS-6.1.0/jemboss/org/emboss/jemboss/gui/Browser.java
-*** EMBOSS-6.1.0orig/jemboss/org/emboss/jemboss/gui/Browser.java 2009-06-30 17:18:26.000000000 +0100
---- EMBOSS-6.1.0/jemboss/org/emboss/jemboss/gui/Browser.java 2009-07-30 15:29:18.000000000 +0100
+*** EMBOSS-6.1.0orig/jemboss/org/emboss/jemboss/gui/Browser.java Mon Sep 28 22:15:15 2009
+--- EMBOSS-6.1.0/jemboss/org/emboss/jemboss/gui/Browser.java Mon Sep 28 22:14:46 2009
***************
*** 68,74 ****
--- 68,77 ----
@@ -1205,8 +3034,8 @@ diff -c -N --recursive EMBOSS-6.1.0orig/jemboss/org/emboss/jemboss/gui/Browser.j
if(loc != null)
{
diff -c -N --recursive EMBOSS-6.1.0orig/jemboss/org/emboss/jemboss/gui/BuildProgramMenu.java EMBOSS-6.1.0/jemboss/org/emboss/jemboss/gui/BuildProgramMenu.java
-*** EMBOSS-6.1.0orig/jemboss/org/emboss/jemboss/gui/BuildProgramMenu.java 2009-07-08 09:45:48.000000000 +0100
---- EMBOSS-6.1.0/jemboss/org/emboss/jemboss/gui/BuildProgramMenu.java 2009-07-30 15:29:31.000000000 +0100
+*** EMBOSS-6.1.0orig/jemboss/org/emboss/jemboss/gui/BuildProgramMenu.java Mon Sep 28 22:15:15 2009
+--- EMBOSS-6.1.0/jemboss/org/emboss/jemboss/gui/BuildProgramMenu.java Mon Sep 28 22:14:46 2009
***************
*** 141,146 ****
--- 141,162 ----
@@ -1411,8 +3240,8 @@ diff -c -N --recursive EMBOSS-6.1.0orig/jemboss/org/emboss/jemboss/gui/BuildProg
int npG = progs.getNumPrimaryGroups();
menuBar.setLayout(new GridLayout(npG,1));
diff -c -N --recursive EMBOSS-6.1.0orig/jemboss/org/emboss/jemboss/gui/form/BuildJembossForm.java EMBOSS-6.1.0/jemboss/org/emboss/jemboss/gui/form/BuildJembossForm.java
-*** EMBOSS-6.1.0orig/jemboss/org/emboss/jemboss/gui/form/BuildJembossForm.java 2009-07-13 17:24:04.000000000 +0100
---- EMBOSS-6.1.0/jemboss/org/emboss/jemboss/gui/form/BuildJembossForm.java 2009-07-30 15:29:52.000000000 +0100
+*** EMBOSS-6.1.0orig/jemboss/org/emboss/jemboss/gui/form/BuildJembossForm.java Mon Sep 28 22:15:15 2009
+--- EMBOSS-6.1.0/jemboss/org/emboss/jemboss/gui/form/BuildJembossForm.java Mon Sep 28 22:14:46 2009
***************
*** 100,107 ****
private boolean withSoap;
@@ -1487,8 +3316,8 @@ diff -c -N --recursive EMBOSS-6.1.0orig/jemboss/org/emboss/jemboss/gui/form/Buil
options = options.concat(" -" + val + " " + textFloat[h].getValue());
optionsA.add("-"+val);
diff -c -N --recursive EMBOSS-6.1.0orig/jemboss/org/emboss/jemboss/gui/sequenceChooser/InputSequenceAttributes.java EMBOSS-6.1.0/jemboss/org/emboss/jemboss/gui/sequenceChooser/InputSequenceAttributes.java
-*** EMBOSS-6.1.0orig/jemboss/org/emboss/jemboss/gui/sequenceChooser/InputSequenceAttributes.java 2009-07-13 17:23:30.000000000 +0100
---- EMBOSS-6.1.0/jemboss/org/emboss/jemboss/gui/sequenceChooser/InputSequenceAttributes.java 2009-07-30 15:30:07.000000000 +0100
+*** EMBOSS-6.1.0orig/jemboss/org/emboss/jemboss/gui/sequenceChooser/InputSequenceAttributes.java Mon Sep 28 22:15:15 2009
+--- EMBOSS-6.1.0/jemboss/org/emboss/jemboss/gui/sequenceChooser/InputSequenceAttributes.java Mon Sep 28 22:14:46 2009
***************
*** 281,287 ****
// bx.add(Box.createHorizontalGlue());
@@ -1559,9 +3388,192 @@ diff -c -N --recursive EMBOSS-6.1.0orig/jemboss/org/emboss/jemboss/gui/sequenceC
optionsA.add(UFO.getText());
}
+diff -c -N --recursive EMBOSS-6.1.0orig/jemboss/org/emboss/jemboss/server/AppendToLogFileThread.java EMBOSS-6.1.0/jemboss/org/emboss/jemboss/server/AppendToLogFileThread.java
+*** EMBOSS-6.1.0orig/jemboss/org/emboss/jemboss/server/AppendToLogFileThread.java Mon Sep 28 22:15:16 2009
+--- EMBOSS-6.1.0/jemboss/org/emboss/jemboss/server/AppendToLogFileThread.java Mon Dec 7 16:28:03 2009
+***************
+*** 72,79 ****
+ try
+ {
+ File logFile = new File(logFileName);
+- if (!logFile.exists())
+- logFile.mkdirs();
+ bw = new BufferedWriter(new FileWriter(logFile, true));
+ bw.write(logEntry);
+ bw.newLine();
+--- 72,77 ----
+diff -c -N --recursive EMBOSS-6.1.0orig/jemboss/org/emboss/jemboss/server/JembossAuthServer.java EMBOSS-6.1.0/jemboss/org/emboss/jemboss/server/JembossAuthServer.java
+*** EMBOSS-6.1.0orig/jemboss/org/emboss/jemboss/server/JembossAuthServer.java Mon Sep 28 22:15:16 2009
+--- EMBOSS-6.1.0/jemboss/org/emboss/jemboss/server/JembossAuthServer.java Thu Dec 10 13:57:58 2009
+***************
+*** 46,52 ****
+ private final String fs = new String(System.getProperty("file.separator"));
+ /** path separator */
+ private final String ps = new String(System.getProperty("path.separator"));
+! /** line seperator */
+ private final String ls = System.getProperty("line.separator");
+
+ //get paths to EMBOSS
+--- 46,52 ----
+ private final String fs = new String(System.getProperty("file.separator"));
+ /** path separator */
+ private final String ps = new String(System.getProperty("path.separator"));
+! /** line separator */
+ private final String ls = System.getProperty("line.separator");
+
+ //get paths to EMBOSS
+***************
+*** 80,85 ****
+--- 80,102 ----
+ // FIX FOR SOME SUNOS
+
+
++
++ public JembossAuthServer(){
++ File logDir = new File(tmproot);
++ if (!tmproot.endsWith(fs))
++ tmproot += fs;
++ if (!logDir.exists())
++ {
++ logDir.mkdirs();
++ try {
++ Runtime.getRuntime().exec("chmod 1777 " + tmproot);
++ } catch (IOException e) {
++ e.printStackTrace();
++ }
++ }
++ }
++
++
+ /**
+ *
+ * Retrieves the ACD file of an application.
+***************
+*** 376,386 ****
+ {
+ // System.out.println("STATUS OK");
+ vans.add("length");
+! vans.add(new Integer(aj.length));
+ vans.add("protein");
+! vans.add(new Boolean(aj.protein));
+ vans.add("weight");
+! vans.add(new Float(aj.weight));
+ vans.add("status");
+ vans.add("0");
+ }
+--- 393,403 ----
+ {
+ // System.out.println("STATUS OK");
+ vans.add("length");
+! vans.add(new Integer(Ajax.length));
+ vans.add("protein");
+! vans.add(new Boolean(Ajax.protein));
+ vans.add("weight");
+! vans.add(new Float(Ajax.weight));
+ vans.add("status");
+ vans.add("0");
+ }
+***************
+*** 610,616 ****
+ project+fs+thiskey,userName);
+ }
+
+! //write decription file to project directory
+ ok = false;
+ try
+ {
+--- 627,633 ----
+ project+fs+thiskey,userName);
+ }
+
+! //write description file to project directory
+ ok = false;
+ try
+ {
+***************
+*** 673,680 ****
+ {
+
+ // COMMENT THIS LINE TO USE QUEUEING SOFTWARE
+! boolean lforkB = aj.forkBatch(userName,passwd,environ,
+! embossCommand,project);
+
+ // UNCOMMENT ONE OF THESE LINE TO USE QUEUEING SOFTWARE
+ // runAsBatch(aj,userName,passwd,project,quoteMe(embossCommand));
+--- 690,696 ----
+ {
+
+ // COMMENT THIS LINE TO USE QUEUEING SOFTWARE
+! aj.forkBatch(userName, passwd, environ, embossCommand, project);
+
+ // UNCOMMENT ONE OF THESE LINE TO USE QUEUEING SOFTWARE
+ // runAsBatch(aj,userName,passwd,project,quoteMe(embossCommand));
+***************
+*** 1070,1076 ****
+ lsr.add("OK");
+
+ aj.setErrStd();
+! boolean lsd = aj.listDirs(userName,passwd,environ,tmproot);
+
+ String outStd = aj.getOutStd();
+
+--- 1086,1092 ----
+ lsr.add("OK");
+
+ aj.setErrStd();
+! /*boolean lsd =*/ aj.listDirs(userName,passwd,environ,tmproot);
+
+ String outStd = aj.getOutStd();
+
+***************
+*** 1123,1139 ****
+ BufferedWriter bw = null;
+ try
+ {
+! File logFile = new File(logFileName);
+! if (logFile.exists())
+! logFile.mkdirs();
+! bw = new BufferedWriter(new FileWriter(logFile, true));
+ bw.write(logEntry);
+ bw.newLine();
+ bw.flush();
+ }
+ catch (Exception ioe)
+ {
+! System.out.println("Error writing to log file "+logFile);
+ ioe.printStackTrace();
+ }
+ finally // always close the file
+--- 1139,1152 ----
+ BufferedWriter bw = null;
+ try
+ {
+! bw = new BufferedWriter(new FileWriter(logFileName, true));
+ bw.write(logEntry);
+ bw.newLine();
+ bw.flush();
+ }
+ catch (Exception ioe)
+ {
+! System.out.println("Error writing to log file "+logFileName);
+ ioe.printStackTrace();
+ }
+ finally // always close the file
+***************
+*** 1315,1320 ****
+--- 1328,1336 ----
+ }
+ catch(Exception exp)
+ {
++ appendToLogFile(userName+":: "+new Date().toString().replace(':','_')+
++ " Failed Authorisation call "+userName+"\n"+
++ "Error message: "+exp.getMessage(),errorLog);
+ ok = false;
+ }
+
diff -c -N --recursive EMBOSS-6.1.0orig/jemboss/org/emboss/jemboss/soap/GetVersion.java EMBOSS-6.1.0/jemboss/org/emboss/jemboss/soap/GetVersion.java
-*** EMBOSS-6.1.0orig/jemboss/org/emboss/jemboss/soap/GetVersion.java 1970-01-01 01:00:00.000000000 +0100
---- EMBOSS-6.1.0/jemboss/org/emboss/jemboss/soap/GetVersion.java 2009-07-30 15:30:24.000000000 +0100
+*** EMBOSS-6.1.0orig/jemboss/org/emboss/jemboss/soap/GetVersion.java Thu Jan 1 01:00:00 1970
+--- EMBOSS-6.1.0/jemboss/org/emboss/jemboss/soap/GetVersion.java Mon Sep 28 22:14:46 2009
***************
*** 0 ****
--- 1,82 ----
@@ -1648,8 +3660,8 @@ diff -c -N --recursive EMBOSS-6.1.0orig/jemboss/org/emboss/jemboss/soap/GetVersi
+
+ }
diff -c -N --recursive EMBOSS-6.1.0orig/jemboss/org/emboss/jemboss/soap/ShowDB.java EMBOSS-6.1.0/jemboss/org/emboss/jemboss/soap/ShowDB.java
-*** EMBOSS-6.1.0orig/jemboss/org/emboss/jemboss/soap/ShowDB.java 2008-06-12 09:19:07.000000000 +0100
---- EMBOSS-6.1.0/jemboss/org/emboss/jemboss/soap/ShowDB.java 2009-07-30 15:30:32.000000000 +0100
+*** EMBOSS-6.1.0orig/jemboss/org/emboss/jemboss/soap/ShowDB.java Mon Sep 28 22:15:15 2009
+--- EMBOSS-6.1.0/jemboss/org/emboss/jemboss/soap/ShowDB.java Mon Sep 28 22:14:46 2009
***************
*** 50,64 ****
* @param mysettings jemboss properties
@@ -1681,8 +3693,8 @@ diff -c -N --recursive EMBOSS-6.1.0orig/jemboss/org/emboss/jemboss/soap/ShowDB.j
statusmsg = dbReq.getVal("msg");
status = dbReq.getVal("status");
diff -c -N --recursive EMBOSS-6.1.0orig/jemboss/utils/install-jemboss-server.sh EMBOSS-6.1.0/jemboss/utils/install-jemboss-server.sh
-*** EMBOSS-6.1.0orig/jemboss/utils/install-jemboss-server.sh 2009-06-30 09:31:50.000000000 +0100
---- EMBOSS-6.1.0/jemboss/utils/install-jemboss-server.sh 2009-07-30 15:30:59.000000000 +0100
+*** EMBOSS-6.1.0orig/jemboss/utils/install-jemboss-server.sh Mon Sep 28 22:15:12 2009
+--- EMBOSS-6.1.0/jemboss/utils/install-jemboss-server.sh Thu Dec 10 11:56:58 2009
***************
*** 694,718 ****
echo " EMBOSS and Jemboss Server installation script"
@@ -1788,9 +3800,44 @@ diff -c -N --recursive EMBOSS-6.1.0orig/jemboss/utils/install-jemboss-server.sh
#
--- 1261,1266 ----
+***************
+*** 1413,1419 ****
+ cp $JEMBOSS/lib/mail.jar $TOMCAT_ROOT/webapps/axis/WEB-INF/lib
+ cp $JEMBOSS/lib/activation.jar $TOMCAT_ROOT/webapps/axis/WEB-INF/lib
+
+- mv $JEMBOSS/org $TOMCAT_ROOT/webapps/axis/WEB-INF/classes/org
+ cp -R $JEMBOSS/resources $TOMCAT_ROOT/webapps/axis/WEB-INF/classes/
+
+ cp -R $EMBOSS_DOWNLOAD/jemboss/lib/axis $JEMBOSS/lib
+--- 1392,1397 ----
+***************
+*** 1429,1438 ****
+ jar -cvf ../lib/ajax.jar org
+ jar -xvf ../lib/client.jar
+ rm org/emboss/jemboss/parser/Ajax.class org/emboss/jemboss/parser/AjaxUtil.class
+- jar -cvf ../lib/jemboss.jar .
+ cd ..;
+ rm -rf tmp;
+- cp lib/jemboss.jar $TOMCAT_ROOT/webapps/axis/WEB-INF/lib/
+
+ if [ -d "$TOMCAT_ROOT/shared/lib" ]; then
+ #tomcat 4.1.x and 5.5.x
+--- 1407,1418 ----
+ jar -cvf ../lib/ajax.jar org
+ jar -xvf ../lib/client.jar
+ rm org/emboss/jemboss/parser/Ajax.class org/emboss/jemboss/parser/AjaxUtil.class
+ cd ..;
++ javac org/emboss/jemboss/server/AppendToLogFileThread.java -d tmp
++ javac org/emboss/jemboss/server/JembossAuthServer.java -d tmp
++ javac org/emboss/jemboss/server/JembossFileAuthServer.java -d tmp
++ cp -R tmp/org $TOMCAT_ROOT/webapps/axis/WEB-INF/classes/
+ rm -rf tmp;
+
+ if [ -d "$TOMCAT_ROOT/shared/lib" ]; then
+ #tomcat 4.1.x and 5.5.x
diff -c -N --recursive EMBOSS-6.1.0orig/nucleus/embaln.c EMBOSS-6.1.0/nucleus/embaln.c
-*** EMBOSS-6.1.0orig/nucleus/embaln.c 2009-06-12 19:02:30.000000000 +0100
---- EMBOSS-6.1.0/nucleus/embaln.c 2009-08-25 09:31:28.000000000 +0100
+*** EMBOSS-6.1.0orig/nucleus/embaln.c Mon Sep 28 22:15:07 2009
+--- EMBOSS-6.1.0/nucleus/embaln.c Mon Sep 28 22:14:38 2009
***************
*** 2091,2096 ****
--- 2091,2098 ----
@@ -1802,3 +3849,104 @@ diff -c -N --recursive EMBOSS-6.1.0orig/nucleus/embaln.c EMBOSS-6.1.0/nucleus/em
if(path[(row)*seqlen+(column)]<=0.)
break;
+diff -c -N --recursive EMBOSS-6.1.0orig/nucleus/embmisc.c EMBOSS-6.1.0/nucleus/embmisc.c
+*** EMBOSS-6.1.0orig/nucleus/embmisc.c Mon Sep 28 22:15:07 2009
+--- EMBOSS-6.1.0/nucleus/embmisc.c Wed Dec 2 12:27:39 2009
+***************
+*** 20,49 ****
+
+
+
+! /* @func embMiscMatchPattern **************************************************
+ **
+ ** Does a simple OR'd test of matches to (possibly wildcarded) words.
+ ** The words are tested one at a time until a match is found.
+! ** Whitespace and , ; | characters can separate the words in the pattern.
+ **
+ ** @param [r] str [const AjPStr] string to test
+ ** @param [r] pattern [const AjPStr] pattern to match with
+ **
+ ** @return [AjBool] ajTrue = found a match
+ ** @@
+ ******************************************************************************/
+
+! AjBool embMiscMatchPattern (const AjPStr str, const AjPStr pattern)
+ {
+
+! /* pmr: allow '|' which can appear in NCBI style IDs */
+!
+! char whiteSpace[] = " \t\n\r,;"; /* skip whitespace and , ; */
+ AjPStrTok tokens;
+ AjPStr key = NULL;
+ AjBool val = ajFalse;
+
+! tokens = ajStrTokenNewC(pattern, whiteSpace);
+
+ while (ajStrTokenNextParse( &tokens, &key))
+ if (ajStrMatchWildCaseS(str, key))
+--- 20,53 ----
+
+
+
+! /* @func embMiscMatchPatternDelimC *********************************************
+ **
+ ** Does a simple OR'd test of matches to (possibly wildcarded) words.
+ ** The words are tested one at a time until a match is found.
+! ** Whitespace and additional delimiter characters can separate the
+! ** words in the pattern.
+ **
+ ** @param [r] str [const AjPStr] string to test
+ ** @param [r] pattern [const AjPStr] pattern to match with
++ ** @param [r] delim [const char*] additional delimiters
+ **
+ ** @return [AjBool] ajTrue = found a match
+ ** @@
+ ******************************************************************************/
+
+! AjBool embMiscMatchPatternDelimC (const AjPStr str, const AjPStr pattern,
+! const char* delim)
+ {
+
+! char whiteSpace[] = " \t\n\r"; /* skip whitespace */
+ AjPStrTok tokens;
++ AjPStr delimstr = NULL;
+ AjPStr key = NULL;
+ AjBool val = ajFalse;
+
+! delimstr = ajStrNewC(whiteSpace);
+! ajStrAppendC(&delimstr, delim);
+! tokens = ajStrTokenNewS(pattern, delimstr);
+
+ while (ajStrTokenNextParse( &tokens, &key))
+ if (ajStrMatchWildCaseS(str, key))
+***************
+*** 54,59 ****
+--- 58,64 ----
+
+ ajStrTokenDel( &tokens);
+ ajStrDel(&key);
++ ajStrDel(&delimstr);
+
+ return val;
+
+diff -c -N --recursive EMBOSS-6.1.0orig/nucleus/embmisc.h EMBOSS-6.1.0/nucleus/embmisc.h
+*** EMBOSS-6.1.0orig/nucleus/embmisc.h Mon Sep 28 22:15:07 2009
+--- EMBOSS-6.1.0/nucleus/embmisc.h Wed Dec 2 12:27:42 2009
+***************
+*** 13,19 ****
+ ** Prototype definitions
+ */
+
+! AjBool embMiscMatchPattern (const AjPStr str, const AjPStr pattern);
+
+ /*
+ ** End of prototype definitions
+--- 13,20 ----
+ ** Prototype definitions
+ */
+
+! AjBool embMiscMatchPatternDelimC (const AjPStr str, const AjPStr pattern,
+! const char* delim);
+
+ /*
+ ** End of prototype definitions
--
The European Molecular Biology Open Software Suite.
More information about the Debian-med-packaging
mailing list