********************************************************************/
/*
- * RCS $Id: hhutil-C.h 246 2011-06-15 12:41:04Z fabian $
+ * RCS $Id: hhutil-C.h 315 2016-12-15 17:18:30Z fabian $
*/
+#define PARAMETERSFROMFILE 0
+
+extern bool nucleomode;
+
//////////////////////////////////////////////////////////////////////////////
// Transform a character to lower case and '.' to '-' and vice versa
//////////////////////////////////////////////////////////////////////////////
-
inline char
MatchChr(char c) {return ((c>='a' && c<='z')? c-'a'+'A' : (c=='.'? '-':c) );}
inline char
aa2i(char c)
{
- //A R N D C Q E G H I L K M F P S T W Y V
if (c>='a' && c<='z') c+='A'-'a';
- switch (c)
- {
+ if(!nucleomode)
+ {
+ // proteins!
+ // A R N D C Q E G H I L K M F P S T W Y V
+ switch (c)
+ {
+ case 'A': return 0;
+ case 'R': return 1;
+ case 'N': return 2;
+ case 'D': return 3;
+ case 'C': return 4;
+ case 'Q': return 5;
+ case 'E': return 6;
+ case 'G': return 7;
+ case 'H': return 8;
+ case 'I': return 9;
+ case 'L': return 10;
+ case 'K': return 11;
+ case 'M': return 12;
+ case 'F': return 13;
+ case 'P': return 14;
+ case 'S': return 15;
+ case 'T': return 16;
+ case 'W': return 17;
+ case 'Y': return 18;
+ case 'V': return 19;
+ case 'X': return ANY;
+ case 'J': return ANY;
+ case 'O': return ANY;
+ case 'U': return 4; //Selenocystein -> Cystein
+ case 'B': return 3; //D (or N)
+ case 'Z': return 6; //E (or Q)
+ case '-': return GAP;
+ case '.': return GAP;
+ case '_': return GAP;
+ }
+ }
+ else
+ {
+ // nucleotides!
+ switch(c)
+ {
case 'A': return 0;
- case 'R': return 1;
- case 'N': return 2;
- case 'D': return 3;
- case 'C': return 4;
- case 'Q': return 5;
- case 'E': return 6;
- case 'G': return 7;
- case 'H': return 8;
- case 'I': return 9;
- case 'L': return 10;
- case 'K': return 11;
- case 'M': return 12;
- case 'F': return 13;
- case 'P': return 14;
- case 'S': return 15;
- case 'T': return 16;
- case 'W': return 17;
- case 'Y': return 18;
- case 'V': return 19;
- case 'X': return ANY;
- case 'J': return ANY;
- case 'O': return ANY;
- case 'U': return 4; //Selenocystein -> Cystein
- case 'B': return 3; //D (or N)
- case 'Z': return 6; //E (or Q)
+ case 'C': return 1;
+ case 'G': return 2;
+ case 'T': return 3;
+ case 'U': return 4;
+ case 'N': return ANY;
case '-': return GAP;
case '.': return GAP;
case '_': return GAP;
- }
+ default: return ANY;
+ }
+ }
if (c>=0 && c<=32) return -1; // white space and control characters
return -2;
}
i2aa(char c)
{
//A R N D C Q E G H I L K M F P S T W Y V
+ if(!nucleomode)
+ {
switch (c)
{
case 0: return 'A';
case GAP: return '-';
case ENDGAP: return '-';
}
+ }
+ else
+ {
+ // DNA/RNA
+ switch(c)
+ {
+ case 0: return 'A';
+ case 1: return 'C';
+ case 2: return 'G';
+ case 3: return 'T';
+ case 4: return 'U';
+ case ANY: return 'N';
+ case GAP: return '-';
+ case ENDGAP: return '-';
+ }
+ }
return '?';
}
if (*c=='\0' || *c=='\n' || *c=='#') //Is end of line reached?
{
*c='\0';
- argv_conf[argc_conf]=new(char[strlen(c_first)+1]);
+ argv_conf[argc_conf]=new char[strlen(c_first)+1];
strcpy(argv_conf[argc_conf++],c_first);
break;
}
*c='\0';
- argv_conf[argc_conf]=new(char[strlen(c_first)+1]);
+ argv_conf[argc_conf]=new char[strlen(c_first)+1];
strcpy(argv_conf[argc_conf++],c_first);
printf("Argument: %s\n",c_first);
c++;
* @brief Set default parameter values
*/
void
-SetDefaults()
+SetDefaults(hhalign_para rHhalignPara)
{
par.append=0; // overwrite output file
par.matrix=0; // Subst.matrix 0: Gonnet, 1: HSDM, 2: BLOSUM50 3: BLOSUM62
par.pcm=2; // pseudocount mode: default=divergence-dependent (but not column-specific)
-#if 1 /* Nelder-Meade on Baliscore */
+#if 1 /* Nelder-Meade on Baliscore*/
par.pca=1.712190f; // default values for substitution matrix pseudocounts
par.pcb=1.039640f; // significant reduction of pcs by Neff_M starts around Neff_M-1=pcb
par.pcc=0.878067f; // pcs are reduced prop. to 1/Neff^pcc
par.gapfV=0.151634; // factor for increasing gap open penalty for deletes
par.gapgV=0.641516; // factor for increasing gap open penalty for inserts
par.gaphV=0.266434; // factor for increasing gap extension penalty for deletes
- par.gapiV=0.598414; // factor for increasing gap extension penalty for inserts
+ par.gapiV=0.598414; // factor for increasing gap extension penalty for inserts
#else /* Soeding default*/
par.pcaV=1.0f; // default values for substitution matrix pseudocounts
par.pcbV=1.5f; // significant reduction of pcs by Neff_M starts around Neff_M-1=pcb
strcpy(par.psifile,"");
par.exclstr=NULL;
-#if 0 /* read parameter file from home-dir */
-#include "hhutil-C-help.h"
-#endif /* read parameter file from home-dir */
+
+ //#if PARAMETERSFROMFILE /* read parameter file from home-dir */
+ //#include "hhutil-C-help.h"
+ //#endif /* read parameter file from home-dir */
+ if (rHhalignPara.pca >= 0.00){ par.pca = rHhalignPara.pca; }
+ if (rHhalignPara.pcb >= 0.00){ par.pcb = rHhalignPara.pcb; }
+ if (rHhalignPara.pcc >= 0.00){ par.pcc = rHhalignPara.pcc; }
+ if (rHhalignPara.pcw >= 0.00){ par.pcw = rHhalignPara.pcw; }
+ if (rHhalignPara.gapb >= 0.00){ par.gapb = rHhalignPara.gapb; }
+ if (rHhalignPara.gapd >= 0.00){ par.gapd = rHhalignPara.gapd; }
+ if (rHhalignPara.gape >= 0.00){ par.gape = rHhalignPara.gape; }
+ if (rHhalignPara.gapf >= 0.00){ par.gapf = rHhalignPara.gapf; }
+ if (rHhalignPara.gapg >= 0.00){ par.gapg = rHhalignPara.gapg; }
+ if (rHhalignPara.gaph >= 0.00){ par.gaph = rHhalignPara.gaph; }
+ if (rHhalignPara.gapi >= 0.00){ par.gapi = rHhalignPara.gapi; }
+ if (rHhalignPara.pcaV >= 0.00){ par.pcaV = rHhalignPara.pcaV; }
+ if (rHhalignPara.pcbV >= 0.00){ par.pcbV = rHhalignPara.pcbV; }
+ if (rHhalignPara.pccV >= 0.00){ par.pccV = rHhalignPara.pccV; }
+ if (rHhalignPara.pcwV >= 0.00){ par.pcwV = rHhalignPara.pcwV; }
+ if (rHhalignPara.gapbV >= 0.00){ par.gapbV = rHhalignPara.gapbV; }
+ if (rHhalignPara.gapdV >= 0.00){ par.gapdV = rHhalignPara.gapdV; }
+ if (rHhalignPara.gapeV >= 0.00){ par.gapeV = rHhalignPara.gapeV; }
+ if (rHhalignPara.gapfV >= 0.00){ par.gapfV = rHhalignPara.gapfV; }
+ if (rHhalignPara.gapgV >= 0.00){ par.gapgV = rHhalignPara.gapgV; }
+ if (rHhalignPara.gaphV >= 0.00){ par.gaphV = rHhalignPara.gaphV; }
+ if (rHhalignPara.gapiV >= 0.00){ par.gapiV = rHhalignPara.gapiV; }
return;
} /** this is the end of SetDefaults() **/
+void SetRnaDefaults(hhalign_para rHhalignPara)
+{
+ par.pca=1.28f; // default values for substitution matrix pseudocounts
+ par.pcb=1.75f; // significant reduction of pcs by Neff_M starts around Neff_M-1=pcb
+ par.pcc=0.87f; // pcs are reduced prop. to 1/Neff^pcc
+ par.pcw=0.0f; // wc>0 weighs columns according to their intra-clomun similarity
+
+ par.gapb=0.80; // default values for transition pseudocounts
+ par.gapd=0.34; // gap open penalty pseudocount; 0.25 corresponds to 7.1*gapf bits
+ par.gape=2.25; // gap extension penalty pseudocount
+ par.gapf=0.51; // factor for increasing gap open penalty for deletes
+ par.gapg=1.01; // factor for increasing gap open penalty for inserts
+ par.gaph=1.24; // factor for increasing gap extension penalty for deletes
+ par.gapi=0.45; // factor for increasing gap extension penalty for inserts
+
+#if 0 /* these are the parameters determined by Dave (pre r274) */
+ par.pcaV=2.57f; // default values for substitution matrix pseudocounts
+ par.pcbV=2.34f; // significant reduction of pcs by Neff_M starts around Neff_M-1=pcb
+ par.pccV=0.88f; // pcs are reduced prop. to 1/Neff^pcc
+ par.pcwV=0.0f; // wc>0 weighs columns according to their intra-clomun similarity
+
+ par.gapbV=1.41; // default values for transition pseudocounts
+ par.gapdV=1.8; // gap open penalty pseudocount; 0.25 corresponds to 7.1*gapf bits
+ par.gapeV=1.5; // gap extension penalty pseudocount
+ par.gapfV=1.03; // factor for increasing gap open penalty for deletes
+ par.gapgV=0.89; // factor for increasing gap open penalty for inserts
+ par.gaphV=0.54; // factor for increasing gap extension penalty for deletes
+ par.gapiV=0.86; // factor for increasing gap extension penalty for inserts
+#else /* parameters determined for r274, using Bralibase, FS */
+ par.pcaV=1.655620f; // default values for substitution matrix pseudocounts
+ par.pcbV=0.438399f; // significant reduction of pcs by Neff_M starts around Neff_M-1=pcb
+ par.pccV=0.371491f; // pcs are reduced prop. to 1/Neff^pcc
+ par.pcwV=0.0f; // wc>0 weighs columns according to their intra-clomun similarity
+
+ par.gapbV=1.914490; // default values for transition pseudocounts
+ par.gapdV=0.104278; // gap open penalty pseudocount; 0.25 corresponds to 7.1*gapf bits
+ par.gapeV=1.100210; // gap extension penalty pseudocount
+ par.gapfV=0.335152; // factor for increasing gap open penalty for deletes
+ par.gapgV=0.786688; // factor for increasing gap open penalty for inserts
+ par.gaphV=0.667143; // factor for increasing gap extension penalty for deletes
+ par.gapiV=0.711993; // factor for increasing gap extension penalty for inserts
+#endif
+
+ //#if PARAMETERSFROMFILE /* read parameter file from home-dir */
+ //#include "hhutil-C-help.h"
+ //#endif /* read parameter file from home-dir */
+ if (rHhalignPara.pca >= 0.00){ par.pca = rHhalignPara.pca; }
+ if (rHhalignPara.pcb >= 0.00){ par.pcb = rHhalignPara.pcb; }
+ if (rHhalignPara.pcc >= 0.00){ par.pcc = rHhalignPara.pcc; }
+ if (rHhalignPara.pcw >= 0.00){ par.pcw = rHhalignPara.pcw; }
+ if (rHhalignPara.gapb >= 0.00){ par.gapb = rHhalignPara.gapb; }
+ if (rHhalignPara.gapd >= 0.00){ par.gapd = rHhalignPara.gapd; }
+ if (rHhalignPara.gape >= 0.00){ par.gape = rHhalignPara.gape; }
+ if (rHhalignPara.gapf >= 0.00){ par.gapf = rHhalignPara.gapf; }
+ if (rHhalignPara.gapg >= 0.00){ par.gapg = rHhalignPara.gapg; }
+ if (rHhalignPara.gaph >= 0.00){ par.gaph = rHhalignPara.gaph; }
+ if (rHhalignPara.gapi >= 0.00){ par.gapi = rHhalignPara.gapi; }
+ if (rHhalignPara.pcaV >= 0.00){ par.pcaV = rHhalignPara.pcaV; }
+ if (rHhalignPara.pcbV >= 0.00){ par.pcbV = rHhalignPara.pcbV; }
+ if (rHhalignPara.pccV >= 0.00){ par.pccV = rHhalignPara.pccV; }
+ if (rHhalignPara.pcwV >= 0.00){ par.pcwV = rHhalignPara.pcwV; }
+ if (rHhalignPara.gapbV >= 0.00){ par.gapbV = rHhalignPara.gapbV; }
+ if (rHhalignPara.gapdV >= 0.00){ par.gapdV = rHhalignPara.gapdV; }
+ if (rHhalignPara.gapeV >= 0.00){ par.gapeV = rHhalignPara.gapeV; }
+ if (rHhalignPara.gapfV >= 0.00){ par.gapfV = rHhalignPara.gapfV; }
+ if (rHhalignPara.gapgV >= 0.00){ par.gapgV = rHhalignPara.gapgV; }
+ if (rHhalignPara.gaphV >= 0.00){ par.gaphV = rHhalignPara.gaphV; }
+ if (rHhalignPara.gapiV >= 0.00){ par.gapiV = rHhalignPara.gapiV; }
+
+} /* this is the end of SetRnaDefaults() */
+
+void SetDnaDefaults(hhalign_para rHhalignPara)
+{
+ par.pca=2.89f; // default values for substitution matrix pseudocounts
+ par.pcb=1.17f; // significant reduction of pcs by Neff_M starts around Neff_M-1=pcb
+ par.pcc=0.88f; // pcs are reduced prop. to 1/Neff^pcc
+ par.pcw=0.0f; // wc>0 weighs columns according to their intra-clomun similarity
+
+ par.gapb=0.80; // default values for transition pseudocounts
+ par.gapd=0.34; // gap open penalty pseudocount; 0.25 corresponds to 7.1*gapf bits
+ par.gape=2.25; // gap extension penalty pseudocount
+ par.gapf=0.78; // factor for increasing gap open penalty for deletes
+ par.gapg=1.01; // factor for increasing gap open penalty for inserts
+ par.gaph=1.24; // factor for increasing gap extension penalty for deletes
+ par.gapi=0.45; // factor for increasing gap extension penalty for inserts
+
+#if 0 /* these are the parameters determined by Dave (pre r274) */
+ par.pcaV=1.712f; // default values for substitution matrix pseudocounts
+ par.pcbV=1.039f; // significant reduction of pcs by Neff_M starts around Neff_M-1=pcb
+ par.pccV=0.266f; // pcs are reduced prop. to 1/Neff^pcc
+ par.pcwV=0.0f; // wc>0 weighs columns according to their intra-clomun similarity
+
+ par.gapbV=1.405; // default values for transition pseudocounts
+ par.gapdV=1.8; // gap open penalty pseudocount; 0.25 corresponds to 7.1*gapf bits
+ par.gapeV=2.25; // gap extension penalty pseudocount
+ par.gapfV=1.034; // factor for increasing gap open penalty for deletes
+ par.gapgV=2.025; // factor for increasing gap open penalty for inserts
+ par.gaphV=0.544; // factor for increasing gap extension penalty for deletes
+ par.gapiV=1.35; // factor for increasing gap extension penalty for inserts }
+#else /* parameters determined for r274, using mdsa, FS */
+ par.pcaV=2.196; // default values for substitution matrix pseudocounts
+ par.pcbV=0.329; // significant reduction of pcs by Neff_M starts around Neff_M-1=pcb
+ par.pccV=0.393; // pcs are reduced prop. to 1/Neff^pcc
+ par.pcwV=0.0f; // wc>0 weighs columns according to their intra-clomun similarity
+
+ par.gapbV=0.570; // default values for transition pseudocounts
+ par.gapdV=0.048; // gap open penalty pseudocount; 0.25 corresponds to 7.1*gapf bits
+ par.gapeV=1.692; // gap extension penalty pseudocount
+ par.gapfV=0.398; // factor for increasing gap open penalty for deletes
+ par.gapgV=0.121; // factor for increasing gap open penalty for inserts
+ par.gaphV=0.012; // factor for increasing gap extension penalty for deletes
+ par.gapiV=0.645; // factor for increasing gap extension penalty for inserts }
+#endif
+
+ //#if PARAMETERSFROMFILE /* read parameter file from home-dir */
+ //#include "hhutil-C-help.h"
+ //#endif /* read parameter file from home-dir */
+ if (rHhalignPara.pca >= 0.00){ par.pca = rHhalignPara.pca; }
+ if (rHhalignPara.pcb >= 0.00){ par.pcb = rHhalignPara.pcb; }
+ if (rHhalignPara.pcc >= 0.00){ par.pcc = rHhalignPara.pcc; }
+ if (rHhalignPara.pcw >= 0.00){ par.pcw = rHhalignPara.pcw; }
+ if (rHhalignPara.gapb >= 0.00){ par.gapb = rHhalignPara.gapb; }
+ if (rHhalignPara.gapd >= 0.00){ par.gapd = rHhalignPara.gapd; }
+ if (rHhalignPara.gape >= 0.00){ par.gape = rHhalignPara.gape; }
+ if (rHhalignPara.gapf >= 0.00){ par.gapf = rHhalignPara.gapf; }
+ if (rHhalignPara.gapg >= 0.00){ par.gapg = rHhalignPara.gapg; }
+ if (rHhalignPara.gaph >= 0.00){ par.gaph = rHhalignPara.gaph; }
+ if (rHhalignPara.gapi >= 0.00){ par.gapi = rHhalignPara.gapi; }
+ if (rHhalignPara.pcaV >= 0.00){ par.pcaV = rHhalignPara.pcaV; }
+ if (rHhalignPara.pcbV >= 0.00){ par.pcbV = rHhalignPara.pcbV; }
+ if (rHhalignPara.pccV >= 0.00){ par.pccV = rHhalignPara.pccV; }
+ if (rHhalignPara.pcwV >= 0.00){ par.pcwV = rHhalignPara.pcwV; }
+ if (rHhalignPara.gapbV >= 0.00){ par.gapbV = rHhalignPara.gapbV; }
+ if (rHhalignPara.gapdV >= 0.00){ par.gapdV = rHhalignPara.gapdV; }
+ if (rHhalignPara.gapeV >= 0.00){ par.gapeV = rHhalignPara.gapeV; }
+ if (rHhalignPara.gapfV >= 0.00){ par.gapfV = rHhalignPara.gapfV; }
+ if (rHhalignPara.gapgV >= 0.00){ par.gapgV = rHhalignPara.gapgV; }
+ if (rHhalignPara.gaphV >= 0.00){ par.gaphV = rHhalignPara.gaphV; }
+ if (rHhalignPara.gapiV >= 0.00){ par.gapiV = rHhalignPara.gapiV; }
+
+
+} /* this is the end of SetDnaDefaults() */
+
+
/*
* EOF hhutil-C.h
*/