[med-svn] [Git][med-team/mafft][upstream] New upstream version 7.525
Michael R. Crusoe (@crusoe)
gitlab at salsa.debian.org
Fri Sep 5 09:57:07 BST 2025
Michael R. Crusoe pushed to branch upstream at Debian Med / mafft
Commits:
cf82eb12 by Michael R. Crusoe at 2025-09-05T10:32:45+02:00
New upstream version 7.525
- - - - -
25 changed files:
- + README.md
- core/Falign.c
- core/MSalignmm.c
- core/Makefile
- core/addsingle.c
- core/blosum.c
- core/constants.c
- core/defs.c
- core/disttbfast.c
- core/dndpre.c
- core/f2cl.c
- core/functions.h
- core/io.c
- core/mafft-distance.c
- core/mafft.tmpl
- core/makedirectionlist.c
- core/mltaln.h
- core/mltaln9.c
- core/pairlocalalign.c
- core/sextet5.c
- core/splittbfast.c
- core/tbfast.c
- core/tditeration.c
- readme → readme.bk
- + test/x
Changes:
=====================================
README.md
=====================================
@@ -0,0 +1,121 @@
+# MAFFT version 7.525
+Multiple sequence alignment program
+<br>
+https://mafft.cbrc.jp/alignment/software/
+
+## COMPILE
+ % cd core
+ % make clean
+ % make
+ % cd ..
+
+If you have the `./extensions` directory, which is for RNA alignments,
+
+ % cd extensions
+ % make clean
+ % make
+ % cd ..
+
+
+## INSTALL (select a or b below)
+### a. Install to /usr/local/ using root account
+ # cd core
+ # make install
+ # cd ..
+
+If you have the `./extensions` directory,
+
+ # cd extensions
+ # make install
+ # cd ..
+
+By this procedure (a), programs are installed into `/usr/local/bin/`. Some binaries, which are not directly used by a user, are installed into `/usr/local/libexec/mafft/`.
+
+If the MAFFT_BINARIES environment variable is set to `/somewhare/else/`, the binaries in this directory are used, instead of those in `/usr/local/libexec/mafft/`.
+
+### b. Install to non-default location (root account is not necessary)
+ % cd core/
+ Edit the first line of Makefile
+ From:
+ PREFIX = /usr/local
+ To:
+ PREFIX = /home/your_home/somewhere
+
+ Edit the third line of Makefile
+ From:
+ BINDIR = $(PREFIX)/bin
+ To:
+ BINDIR = /home/your_home/bin
+ (or elsewhere in your command-search path)
+ % make clean
+ % make
+ % make install
+
+If you have the `./extensions` directory,
+
+ % cd ../extensions/
+ Edit the first line of Makefile
+ From:
+ PREFIX = /usr/local
+ To:
+ PREFIX = /home/your_home/somewhere
+ % make clean
+ % make
+ % make install
+
+The `MAFFT_BINARIES` environment variable *must not be* set.
+
+If the `MAFFT_BINARIES` environment variable is set to `/somewhare/else/`, it overrides the setting of `PREFIX` (`/home/your_home/somewhere/` in the above example) in Makefile.
+
+## CHECK
+ % cd test
+ % rehash # if necessary
+ % mafft sample > test.fftns2 # FFT-NS-2
+ % mafft --maxiterate 100 sample > test.fftnsi # FFT-NS-i
+ % mafft --globalpair sample > test.gins1 # G-INS-1
+ % mafft --globalpair --maxiterate 100 sample > test.ginsi # G-INS-i
+ % mafft --localpair sample > test.lins1 # L-INS-1
+ % mafft --localpair --maxiterate 100 sample > test.linsi # L-INS-i
+ % diff test.fftns2 sample.fftns2
+ % diff test.fftnsi sample.fftnsi
+ % diff test.gins1 sample.gins1
+ % diff test.ginsi sample.ginsi
+ % diff test.lins1 sample.lins1
+
+If you have the `./extensions` directory,
+
+ % mafft-qinsi samplerna > test.qinsi # Q-INS-i
+ % mafft-xinsi samplerna > test.xinsi # X-INS-i
+ % diff test.qinsi samplerna.qinsi
+ % diff test.xinsi samplerna.xinsi
+
+If you use the multithread version, the results of iterative refinement methods (`*-*-i`) are not always identical. So try this test in the single-thread mode (`--thread 0`).
+
+
+## INPUT FORMAT
+Fasta format.
+
+The type of input sequences (nucleotide or amino acid) is automatically recognized based on the frequency of A, T, G, C, U and N.
+
+
+## USAGE
+ % /usr/local/bin/mafft input > output
+
+See also https://mafft.cbrc.jp/alignment/software/
+
+
+## UNINSTALL
+ # rm -r /usr/local/libexec/mafft
+ # rm /usr/local/bin/mafft
+ # rm /usr/local/bin/fftns
+ # rm /usr/local/bin/fftnsi
+ # rm /usr/local/bin/nwns
+ # rm /usr/local/bin/nwnsi
+ # rm /usr/local/bin/linsi
+ # rm /usr/local/bin/ginsi
+ # rm /usr/local/bin/mafft-*
+ # rm /usr/local/share/man/man1/mafft*
+
+
+## LICENSE
+See `./license` and `./license.extensions`.
=====================================
core/Falign.c
=====================================
@@ -1834,9 +1834,9 @@ static double estimategapfreq( int n, char **s )
return( fv/(double)n );
}
-static int terminalmargin( int lshorter, double groupsizefac )
+static int getterminalmargin( int lshorter, double groupsizefac )
{
- return ( lshorter * 2.0 + 100 ) * groupsizefac;
+ return ( lshorter * 2.0 + terminalmargin ) * groupsizefac;
// return ( lshorter * 1.1 + 10 ) * groupsizefac;
}
@@ -2061,9 +2061,9 @@ double Falign_givenanchors( ExtAnch *pairanch,
sgap2 = AllocateCharVec( njob );
egap2 = AllocateCharVec( njob );
//kouho = AllocateIntVec( NKOUHO_LONG );
- alignorcopy = AllocateIntVec( MAXSEG );
- cut1 = AllocateIntVec( MAXSEG );
- cut2 = AllocateIntVec( MAXSEG );
+ alignorcopy = AllocateIntVec( MAXSEG_GIVENANCHORS );
+ cut1 = AllocateIntVec( MAXSEG_GIVENANCHORS );
+ cut2 = AllocateIntVec( MAXSEG_GIVENANCHORS );
//tmpptr1 = AllocateCharMtx( njob, 0 );
//tmpptr2 = AllocateCharMtx( njob, 0 );
//segment = (Segment *)calloc( MAXSEG, sizeof( Segment ) );
@@ -2123,359 +2123,6 @@ double Falign_givenanchors( ExtAnch *pairanch,
localalloclen = nlen;
}
-#if 0
- for( j=0; j<clus1; j++ ) strcpy( tmpseq1[j], seq1[j] );
- for( j=0; j<clus2; j++ ) strcpy( tmpseq2[j], seq2[j] );
-
- if( !kobetsubunkatsu )
- {
- if( fftkeika ) fprintf( stderr, " FFT ... " );
-
- for( j=0; j<n20or4or2; j++ ) vec_init( seqVector1[j], nlen );
- if( scoremtx == -1 )
- {
- for( i=0; i<clus1; i++ )
- seq_vec_4( seqVector1[0], eff1[i], tmpseq1[i] );
- }
- else if( fftscore )
- {
- for( i=0; i<clus1; i++ )
- {
-#if 0
- seq_vec_2( seqVector1[0], polarity, eff1[i], tmpseq1[i] );
- seq_vec_2( seqVector1[1], volume, eff1[i], tmpseq1[i] );
-#else
- seq_vec_5( seqVector1[0], polarity, volume, eff1[i], tmpseq1[i] );
-#endif
- }
- }
- else
- {
- for( i=0; i<clus1; i++ )
- seq_vec_3( seqVector1, eff1[i], tmpseq1[i] );
- }
-#if RND
- for( i=0; i<clus1; i++ )
- {
- vec_init2( seqVector1, rndseq1[i], eff1[i], len1, nlen );
- }
-#endif
-
- for( j=0; j<n20or4or2; j++ ) vec_init( seqVector2[j], nlen );
- if( scoremtx == -1 )
- {
- for( i=0; i<clus2; i++ )
- seq_vec_4( seqVector2[0], eff2[i], tmpseq2[i] );
- }
- else if( fftscore )
- {
- for( i=0; i<clus2; i++ )
- {
-#if 0
- seq_vec_2( seqVector2[0], polarity, eff2[i], tmpseq2[i] );
- seq_vec_2( seqVector2[1], volume, eff2[i], tmpseq2[i] );
-#else
- seq_vec_5( seqVector2[0], polarity, volume, eff2[i], tmpseq2[i] );
-#endif
- }
- }
- else
- {
- for( i=0; i<clus2; i++ )
- seq_vec_3( seqVector2, eff2[i], tmpseq2[i] );
- }
-#if RND
- for( i=0; i<clus2; i++ )
- {
- vec_init2( seqVector2, rndseq2[i], eff2[i], len2, nlen );
- }
-#endif
-
-
- for( j=0; j<n20or4or2; j++ )
- {
- fft( nlen, seqVector2[j], 0 );
- fft( nlen, seqVector1[j], 0 );
- }
-
- for( k=0; k<n20or4or2; k++ )
- {
- for( l=0; l<nlen; l++ )
- calcNaiseki( naiseki[k]+l, seqVector1[k]+l, seqVector2[k]+l );
- }
- for( l=0; l<nlen; l++ )
- {
- naisekiNoWa[l].R = 0.0;
- naisekiNoWa[l].I = 0.0;
- for( k=0; k<n20or4or2; k++ )
- {
- naisekiNoWa[l].R += naiseki[k][l].R;
- naisekiNoWa[l].I += naiseki[k][l].I;
- }
- }
-
-
- fft( -nlen, naisekiNoWa, 0 );
-
- for( m=0; m<=nlen2; m++ )
- soukan[m] = naisekiNoWa[nlen2-m].R;
- for( m=nlen2+1; m<nlen; m++ )
- soukan[m] = naisekiNoWa[nlen+nlen2-m].R;
-
-
- nkouho = getKouho( kouho, NKOUHO_LONG, soukan, nlen );
-
-#if 0
- for( i=0; i<nkouho; i++ )
- {
- fprintf( stderr, "kouho[%d] = %d\n", i, kouho[i] );
- }
-#endif
- }
-
-#if KEIKA
- fprintf( stderr, "Searching anchors ... " );
-#endif
- count = 0;
-
-
-
- if( kobetsubunkatsu )
- {
- maxk = 1;
- kouho[0] = 0;
- }
- else
- {
- maxk = nkouho;
- }
-
- for( k=0; k<maxk; k++ )
- {
- lag = kouho[k];
- if( lag <= -len1 || len2 <= lag ) continue;
-// fprintf( stderr, "k=%d, lag=%d\n", k, lag );
- zurasu2( lag, clus1, clus2, seq1, seq2, tmpptr1, tmpptr2 );
-
-// fprintf( stderr, "lag = %d\n", lag );
- tmpint = alignableReagion( clus1, clus2, tmpptr1, tmpptr2, eff1, eff2, segment+count );
-// fprintf( stderr, "lag = %d, %d found\n", lag, tmpint );
-
-// if( lag == -50 ) exit( 1 );
-
- if( count+tmpint > MAXSEG -3 ) ErrorExit( "TOO MANY SEGMENTS.\n" );
-
-// fprintf( stderr, "##### k=%d / %d\n", k, maxk );
-// if( tmpint == 0 ) break; // 060430 iinoka ? // 090530 yameta
- while( tmpint-- > 0 )
- {
-#if 0
- if( segment[count].end - segment[count].start < fftWinSize )
- {
- count++;
- continue;
- }
-#endif
- if( lag > 0 )
- {
- segment1[count].start = segment[count].start ;
- segment1[count].end = segment[count].end ;
- segment1[count].center = segment[count].center;
- segment1[count].score = segment[count].score;
-
- segment2[count].start = segment[count].start + lag;
- segment2[count].end = segment[count].end + lag;
- segment2[count].center = segment[count].center + lag;
- segment2[count].score = segment[count].score ;
- }
- else
- {
- segment1[count].start = segment[count].start - lag;
- segment1[count].end = segment[count].end - lag;
- segment1[count].center = segment[count].center - lag;
- segment1[count].score = segment[count].score ;
-
- segment2[count].start = segment[count].start ;
- segment2[count].end = segment[count].end ;
- segment2[count].center = segment[count].center;
- segment2[count].score = segment[count].score ;
- }
-#if 0
- fprintf( stderr, "##### k=%d / %d\n", k, maxk );
- fprintf( stderr, "anchor %d, score = %f\n", count, segment1[count].score );
- fprintf( stderr, "in 1 %d\n", segment1[count].center );
- fprintf( stderr, "in 2 %d\n", segment2[count].center );
-#endif
- segment1[count].pair = &segment2[count];
- segment2[count].pair = &segment1[count];
- count++;
-#if 0
- fprintf( stderr, "count=%d\n", count );
-#endif
- }
- }
-#if 1
- if( !kobetsubunkatsu )
- if( fftkeika ) fprintf( stderr, "done. (%d anchors) ", count );
-#endif
- if( !count && fftNoAnchStop )
- ErrorExit( "Cannot detect anchor!" );
-#if 0
- fprintf( stderr, "RESULT before sort:\n" );
- for( l=0; l<count+1; l++ )
- {
- fprintf( stderr, "cut[%d]=%d, ", l, segment1[l].center );
- fprintf( stderr, "%d score = %f\n", segment2[l].center, segment1[l].score );
- }
-#endif
-
- for( i=0; i<count; i++ )
- {
- sortedseg1[i] = &segment1[i];
- sortedseg2[i] = &segment2[i];
- }
-#if 0
- tmpsort( count, sortedseg1 );
- tmpsort( count, sortedseg2 );
- qsort( sortedseg1, count, sizeof( Segment * ), segcmp );
- qsort( sortedseg2, count, sizeof( Segment * ), segcmp );
-#else
- mymergesort( 0, count-1, sortedseg1 );
- mymergesort( 0, count-1, sortedseg2 );
-#endif
- for( i=0; i<count; i++ ) sortedseg1[i]->number = i;
- for( i=0; i<count; i++ ) sortedseg2[i]->number = i;
-
-
-
- if( kobetsubunkatsu )
- {
- for( i=0; i<count; i++ )
- {
- cut1[i+1] = sortedseg1[i]->center;
- cut2[i+1] = sortedseg2[i]->center;
- }
- cut1[0] = 0;
- cut2[0] = 0;
- cut1[count+1] = len1;
- cut2[count+1] = len2;
- count += 2;
- }
-
- else
- {
- if( count < 5000 )
- {
- if( crossscoresize < count+2 )
- {
- crossscoresize = count+2;
-#if 1
- if( fftkeika ) fprintf( stderr, "######allocating crossscore, size = %d\n", crossscoresize );
-#endif
- if( crossscore ) FreeDoubleMtx( crossscore );
- crossscore = AllocateDoubleMtx( crossscoresize, crossscoresize );
- }
- for( i=0; i<count+2; i++ ) for( j=0; j<count+2; j++ )
- crossscore[i][j] = 0.0;
- for( i=0; i<count; i++ )
- {
- crossscore[segment1[i].number+1][segment1[i].pair->number+1] = segment1[i].score;
- cut1[i+1] = sortedseg1[i]->center;
- cut2[i+1] = sortedseg2[i]->center;
- }
-
-#if 0
- fprintf( stderr, "AFTER SORT\n" );
- for( i=0; i<count+1; i++ ) fprintf( stderr, "%d, %d\n", cut1[i], cut2[i] );
- fprintf( stderr, "crossscore = \n" );
- for( i=0; i<count+1; i++ )
- {
- for( j=0; j<count+1; j++ )
- fprintf( stderr, "%.0f ", crossscore[i][j] );
- fprintf( stderr, "\n" );
- }
-#endif
-
- crossscore[0][0] = 10000000.0;
- cut1[0] = 0;
- cut2[0] = 0;
- crossscore[count+1][count+1] = 10000000.0;
- cut1[count+1] = len1;
- cut2[count+1] = len2;
- count += 2;
- count0 = count;
-
-// fprintf( stderr, "\n\n\ncalling blockAlign2\n\n\n\n" );
- blockAlign2( cut1, cut2, sortedseg1, sortedseg2, crossscore, &count );
-
-// if( count-count0 )
-// fprintf( stderr, "%d unused anchors\n", count0-count );
-
- if( !kobetsubunkatsu && fftkeika )
- fprintf( stderr, "%d anchors found\n", count );
- if( fftkeika )
- {
- if( count0 > count )
- {
-#if 0
- fprintf( stderr, "\7 REPEAT!? \n" );
-#else
- fprintf( stderr, "REPEAT!? \n" );
-#endif
- if( fftRepeatStop ) exit( 1 );
- }
-#if KEIKA
- else fprintf( stderr, "done\n" );
-#endif
- }
- }
-
-
- else
- {
- fprintf( stderr, "\nMany anchors were found. The upper-level DP is skipped.\n\n" );
-
- cut1[0] = 0;
- cut2[0] = 0;
- count0 = 0;
- for( i=0; i<count; i++ )
- {
-// fprintf( stderr, "i=%d, %d-%d ?\n", i, sortedseg1[i]->center, sortedseg1[i]->pair->center );
- if( sortedseg1[i]->center > cut1[count0]
- && sortedseg1[i]->pair->center > cut2[count0] )
- {
- count0++;
- cut1[count0] = sortedseg1[i]->center;
- cut2[count0] = sortedseg1[i]->pair->center;
- }
- else
- {
- if( i && sortedseg1[i]->score > sortedseg1[i-1]->score )
- {
- if( sortedseg1[i]->center > cut1[count0-1]
- && sortedseg1[i]->pair->center > cut2[count0-1] )
- {
- cut1[count0] = sortedseg1[i]->center;
- cut2[count0] = sortedseg1[i]->pair->center;
- }
- else
- {
-// count0--;
- }
- }
- }
- }
-// if( count-count0 )
-// fprintf( stderr, "%d anchors unused\n", count-count0 );
- cut1[count0+1] = len1;
- cut2[count0+1] = len2;
- count = count0 + 2;
- count0 = count;
-
- }
- }
- //uwagaki!
-#endif
marginfac1 = 1.0 + estimategapfreq( clus1, seq1 );
marginfac2 = 1.0 + estimategapfreq( clus2, seq2 );
@@ -2499,20 +2146,20 @@ double Falign_givenanchors( ExtAnch *pairanch,
count0++;
continue;
}
- if( count+2 > MAXSEG -3 ) ErrorExit( "TOO MANY SEGMENTS.\n" );
+ if( count+2 > MAXSEG_GIVENANCHORS -3 ) ErrorExit( "TOO MANY SEGMENTS.\n" );
#if 1 // mattan no tansaku hann'i wo seigen
if( count == 0 )
{
// if( pairanch[count0].starti - pairanch[count0].startj > TERMINALSEGMENTLENGTH ) // you kentou
// nogaplen1 = estimatenogaplen( clus1, seq1, pairanch[count0].starti, 0 );
// nogaplen2 = estimatenogaplen( clus2, seq2, pairanch[count0].startj, 0 );
- if( pairanch[count0].starti > terminalmargin(pairanch[count0].startj,marginfac1) )
+ if( pairanch[count0].starti > getterminalmargin(pairanch[count0].startj,marginfac1) )
{
// alignorcopy[1] = 'A';
-// reporterr( "check 1, because starti=%d > startj=%d -> %d (clus1=%d)\n", pairanch[count0].starti, pairanch[count0].startj, terminalmargin(pairanch[count0].startj,marginfac1), clus1 );
- cutadd = pairanch[count0].starti - terminalmargin(pairanch[count0].startj,marginfac1);
-// reporterr( "cutadd(1)=%d\n", cutadd );
-// if( 1 || cutadd > TERMINALMARGIN(0) ) // iranai
+ reporterr( "check 1, because starti=%d > startj=%d -> %d (clus1=%d)\n", pairanch[count0].starti, pairanch[count0].startj, getterminalmargin(pairanch[count0].startj,marginfac1), clus1 );
+ cutadd = pairanch[count0].starti - getterminalmargin(pairanch[count0].startj,marginfac1);
+ reporterr( "cutadd(1)=%d\n", cutadd );
+// if( 0 || cutadd > TERMINALMARGIN(0) ) // iranai
{
cut1[1] = cutadd;
cut2[1] = 0;
@@ -2521,12 +2168,12 @@ double Falign_givenanchors( ExtAnch *pairanch,
starttermcut1 = 1;
}
}
- else if( pairanch[count0].startj > terminalmargin(pairanch[count0].starti, marginfac2) )
+ else if( pairanch[count0].startj > getterminalmargin(pairanch[count0].starti, marginfac2) )
{
// alignorcopy[1] = 'A';
-// reporterr( "check 2, because startj=%d > starti=%d -> %d (clus2=%d)\n", pairanch[count0].startj, pairanch[count0].starti, terminalmargin(pairanch[count0].starti,marginfac2), clus2 );
- cutadd = pairanch[count0].startj - terminalmargin( pairanch[count0].starti, marginfac2 );
-// reporterr( "cutadd(2)=%d\n", cutadd );
+ reporterr( "check 2, because startj=%d > starti=%d -> %d (clus2=%d)\n", pairanch[count0].startj, pairanch[count0].starti, getterminalmargin(pairanch[count0].starti,marginfac2), clus2 );
+ cutadd = pairanch[count0].startj - getterminalmargin( pairanch[count0].starti, marginfac2 );
+ reporterr( "cutadd(2)=%d\n", cutadd );
{
cut1[1] = 0;
cut2[1] = cutadd;
@@ -2545,12 +2192,13 @@ double Falign_givenanchors( ExtAnch *pairanch,
count += 1;
#if 1
+#define DIVIDEANCHOR 100
if( pairanch[count0].endi - cut1[count] == pairanch[count0].endj - cut2[count] )
- while( pairanch[count0].endi+1 - cut1[count] > 100 && pairanch[count0].endj+1 - cut2[count] > 100 )
+ while( pairanch[count0].endi+1 - cut1[count] > DIVIDEANCHOR && pairanch[count0].endj+1 - cut2[count] > DIVIDEANCHOR )
{
- reporterr( "added an anchor, because the length is %d,%d > 100\n", pairanch[count0].endi+1 - cut1[count], pairanch[count0].endj+1 - cut2[count] );
- cut1[count+1] = cut1[count] + 100;
- cut2[count+1] = cut2[count] + 100;
+ reporterr( "added an anchor, because the length is %d,%d > DIVIDEANCHOR. \r", pairanch[count0].endi+1 - cut1[count], pairanch[count0].endj+1 - cut2[count] );
+ cut1[count+1] = cut1[count] + DIVIDEANCHOR;
+ cut2[count+1] = cut2[count] + DIVIDEANCHOR;
alignorcopy[count+1] = 'c';
count += 1;
}
@@ -2565,11 +2213,12 @@ double Falign_givenanchors( ExtAnch *pairanch,
count += 1;
count0++;
}
+ reporterr( "\n" );
#if 1 // mattan no tansaku hanni wo seigen
alignorcopy[count] = 'a';
// if( count > 1 && (len1-cut1[count]) > (len2-cut2[count]) + 2*TERMINALSEGMENTLENGTH ) // 2 ha tekitou
- if( count > 1 && (len1-cut1[count]) > terminalmargin(len2-cut2[count],marginfac1) )
+ if( count > 1 && (len1-cut1[count]) > getterminalmargin(len2-cut2[count],marginfac1) )
{
// reporterr( "last\n" );
// alignorcopy[count] = 'A'; // mae no wo uwagaki
@@ -2578,7 +2227,7 @@ double Falign_givenanchors( ExtAnch *pairanch,
// cut1[count+1] = cut1[count] + TERMINALSEGMENTLENGTH;
// cut1[count+1] = cut1[count] + (len2-cut2[count]) + TERMINALSEGMENTLENGTH;
- cutadd = len1 - 1 - ( (len1-cut1[count]) - terminalmargin(len2-cut2[count], marginfac1) ); // wakarinikuikedo
+ cutadd = len1 - 1 - ( (len1-cut1[count]) - getterminalmargin(len2-cut2[count], marginfac1) ); // wakarinikuikedo
// if( 1 || len1-1 - cutadd > TERMINALMARGIN(0) )
{
@@ -2594,13 +2243,13 @@ double Falign_givenanchors( ExtAnch *pairanch,
}
}
// else if( count > 1 && (len2-cut2[count]) > (len1-cut1[count]) + 2*TERMINALSEGMENTLENGTH ) // 2 ha tekitou
- else if( count > 1 && (len2-cut2[count]) > terminalmargin(len1-cut1[count],marginfac2) )
+ else if( count > 1 && (len2-cut2[count]) > getterminalmargin(len1-cut1[count],marginfac2) )
{
// reporterr( "last\n" );
// alignorcopy[count] = 'A'; // mae no wo uwagaki
//reporterr( "insert one anchor to restrict terminal gap length, 2, cut1[count]=%d, cut2[count]=%d\n", cut1[count], cut2[count] );
//alignorcopy[count] = 'A'; // mae no wo uwagaki
- cutadd = len2 - 1 - ( (len2-cut2[count]) - terminalmargin(len1-cut1[count], marginfac2) );
+ cutadd = len2 - 1 - ( (len2-cut2[count]) - getterminalmargin(len1-cut1[count], marginfac2) );
// if( 1 || len2-1 - cutadd > TERMINALMARGIN(0) ) // iranai
{
@@ -2659,7 +2308,7 @@ double Falign_givenanchors( ExtAnch *pairanch,
//exit( 1 );
for( i=0; i<count-1; i++ )
{
- //reporterr( "\ni=%d / %d \n\n", i, count );
+// reporterr( "\ni=%d / %d \n\n", i, count );
*fftlog += 1;
if( i == 0 || ( i == 1 && alignorcopy[1] == 'A' ) ) headgp = outgap; else headgp = 1;
if( i == count-2 || ( i == count-3 && alignorcopy[count-3] == 'A' ) ) tailgp = outgap; else tailgp = 1;
@@ -2715,7 +2364,7 @@ double Falign_givenanchors( ExtAnch *pairanch,
fprintf( stderr, "DP %03d / %03d %4d to ", i+1, count-1, totallen );
#else
#if 1
- if( 1 || fftkeika ) fprintf( stderr, "DP %05d / %05d \b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b", i+1, count-1 );
+ if( 1 || fftkeika ) fprintf( stderr, "DP %05d / %05d \r", i+1, count-1 );
#endif
#endif
for( j=0; j<clus1; j++ )
@@ -2843,12 +2492,12 @@ double Falign_givenanchors( ExtAnch *pairanch,
if( starttermcut1 )
{
for( j=0; j<clus2; j++ ) if( tmpres2[j][0] != '-' ) break;
- if( j<clus2 ) reporterr( "There may be a problem in a hard-coded parameter (1). Please contact katoh at ifrec.osaka-u.ac.jp\n" );
+ if( j<clus2 ) reporterr( "There may be a problem at the 5' end (1). Please contact katoh at ifrec.osaka-u.ac.jp\n", tmpres2[j] );
}
else if( starttermcut2 )
{
for( j=0; j<clus1; j++ ) if( tmpres1[j][0] != '-' ) break;
- if( j<clus1 ) reporterr( "There may be a problem in a hard-coded parameter (2). Please contact katoh at ifrec.osaka-u.ac.jp\n" );
+ if( j<clus1 ) reporterr( "There may be a problem at the 5' end (2). Please contact katoh at ifrec.osaka-u.ac.jp\n" );
}
else
break;
@@ -2860,13 +2509,13 @@ double Falign_givenanchors( ExtAnch *pairanch,
{
tmplen = strlen( tmpres2[0] );
for( j=0; j<clus2; j++ ) if( tmpres2[j][tmplen-1] != '-' ) break;
- if( j<clus2 ) reporterr( "There may be a problem in a hard-coded parameter (3). Please contact katoh at ifrec.osaka-u.ac.jp\n" );
+ if( j<clus2 ) reporterr( "There may be a problem at the 3' end (3). Please contact katoh at ifrec.osaka-u.ac.jp\n" );
}
else if( endtermcut2 )
{
tmplen = strlen( tmpres1[0] );
for( j=0; j<clus1; j++ ) if( tmpres1[j][tmplen-1] != '-' ) break;
- if( j<clus1 ) reporterr( "There may be a problem in a hard-coded parameter (4). Please contact katoh at ifrec.osaka-u.ac.jp\n" );
+ if( j<clus1 ) reporterr( "There may be a problem at the 3' end (4). Please contact katoh at ifrec.osaka-u.ac.jp\n" );
}
else
break;
@@ -2879,8 +2528,13 @@ double Falign_givenanchors( ExtAnch *pairanch,
fprintf( stderr, "totallen=%d + nlen=%d > alloclen = %d\n", totallen, nlen, alloclen );
ErrorExit( "LENGTH OVER in Falign\n " );
}
+#if 0
for( j=0; j<clus1; j++ ) strcat( result1[j], tmpres1[j] );
for( j=0; j<clus2; j++ ) strcat( result2[j], tmpres2[j] );
+#else
+ for( j=0; j<clus1; j++ ) strcat( result1[j]+totallen, tmpres1[j] );
+ for( j=0; j<clus2; j++ ) strcat( result2[j]+totallen, tmpres2[j] );
+#endif
totallen += nlen;
#if 0
fprintf( stderr, "i=%d", i );
=====================================
core/MSalignmm.c
=====================================
@@ -1920,7 +1920,7 @@ static double MSalignmm_rec( double **n_dynamicmtx, int icyc, int jcyc, double *
mseq2[j][len+l] = 0;
}
for( i=0,j=len; i<l; i++,j++ ) mgt1[j] = '-'; mgt1[j] = 0;
- for( i=0,j=len; i<l; i++,j++ ) mgt2[j] = 'o'; mgt1[j] = 0;
+ for( i=0,j=len; i<l; i++,j++ ) mgt2[j] = 'o'; mgt2[j] = 0;
// fprintf( stderr, "penalizing (2) .. %f(%d), %f(%d)\n", ogcp2[jumpj+1], jumpj+1, fgcp2[jmid-1], jmid-1 );
value += ( ogcp2[jumpj+1] + fgcp2[jmid-1] );
// value += fpenalty;
@@ -1943,7 +1943,7 @@ static double MSalignmm_rec( double **n_dynamicmtx, int icyc, int jcyc, double *
mseq2[j][len+l] = 0;
}
for( i=0,j=len; i<l; i++,j++ ) mgt1[j] = 'o'; mgt1[j] = 0;
- for( i=0,j=len; i<l; i++,j++ ) mgt2[j] = '-'; mgt1[j] = 0;
+ for( i=0,j=len; i<l; i++,j++ ) mgt2[j] = '-'; mgt2[j] = 0;
// for( i=0; i<lgth1; i++ ) fprintf( stderr, "ogcp1[%d] = %f\n", i, ogcp1[i] );
// for( i=0; i<lgth1; i++ ) fprintf( stderr, "fgcp1[%d] = %f\n", i, fgcp1[i] );
=====================================
core/Makefile
=====================================
@@ -125,12 +125,8 @@ OBJGETLAG = mtxutl.o io.o mltaln9.o tddis.o constants.o partSalignmm.o Lalignmm.
Falign.o Falign_localhom.o Galign11.o Lalign11.o genalign11.o SAalignmm.o MSalignmm.o Dalignmm.o \
getlag.o defs.o fft.o fftFunctions.o
OBJGAPFILL = mtxutl.o io.o constants.o gapfill.o defs.o
-OBJDNDFAST5 = dndfast5.o io.o constants.o mtxutl.o mltaln9.o tddis.o defs.o
-OBJDNDBLAST = dndblast.o io.o constants.o mtxutl.o mltaln9.o tddis.o defs.o Galign11.o Lalign11.o genalign11.o
OBJDNDFAST7 = dndfast7.o io.o constants.o mtxutl.o mltaln9.o tddis.o defs.o Galign11.o Lalign11.o genalign11.o
-OBJDNDFAST6 = dndfast6.o io.o constants.o mtxutl.o mltaln9.o tddis.o defs.o
-OBJDNDFAST4 = dndfast4.o io.o constants.o mtxutl.o mltaln9.o tddis.o defs.o
-OBJDNDFAST6 = dndfast6.o io.o constants.o mtxutl.o mltaln9.o tddis.o defs.o
+OBJDNDBLAST = dndblast.o io.o constants.o mtxutl.o mltaln9.o tddis.o defs.o Galign11.o Lalign11.o genalign11.o
OBJSEXTET5 = io.o constants.o mtxutl.o mltaln9.o tddis.o sextet5.o defs.o Galign11.o Lalign11.o genalign11.o
OBJDISTANCE = io.o constants.o mtxutl.o mltaln9.o tddis.o mafft-distance.o defs.o Galign11.o Lalign11.o genalign11.o
OBJTRIPLET6 = io.o constants.o mtxutl.o mltaln9.o tddis.o triplet6.o defs.o
@@ -154,7 +150,7 @@ all : $(PERLPROGS) $(PROGS) $(SCRIPTS)
chmod 755 ../scripts/*
cp $(PERLPROGS) $(PROGS) ../binaries
chmod 755 ../binaries/*
- cp $(MANPAGES) ../binaries
+# cp $(MANPAGES) ../binaries
@echo done.
sos : $(SOS)
@@ -282,24 +278,12 @@ mafft-profile : $(OBJGALN)
gapfill : $(OBJGAPFILL)
$(CC) -o $@ $(OBJGAPFILL) $(MYCFLAGS) $(LDFLAGS) $(LIBS)
-dndfast4 : $(OBJDNDFAST4)
- $(CC) -o $@ $(OBJDNDFAST4) $(MYCFLAGS) $(LDFLAGS) $(LIBS)
-
-dndfast5 : $(OBJDNDFAST5)
- $(CC) -o $@ $(OBJDNDFAST5) $(MYCFLAGS) $(LDFLAGS) $(LIBS)
-
-dndfast6 : $(OBJDNDFAST6)
- $(CC) -o $@ $(OBJDNDFAST6) $(MYCFLAGS) $(LDFLAGS) $(LIBS)
-
dndfast7 : $(OBJDNDFAST7)
$(CC) -o $@ $(OBJDNDFAST7) $(MYCFLAGS) $(LDFLAGS) $(LIBS)
dndblast : $(OBJDNDBLAST)
$(CC) -o $@ $(OBJDNDBLAST) $(MYCFLAGS) $(LDFLAGS) $(LIBS)
-dndfast3 : $(OBJDNDFAST3)
- $(CC) -o $@ $(OBJDNDFAST3) $(MYCFLAGS) $(LDFLAGS) $(LIBS)
-
triplet : $(OBJTRIPLET)
$(CC) -o $@ $(OBJTRIPLET) $(MYCFLAGS) $(LDFLAGS) $(LIBS)
@@ -448,24 +432,9 @@ tditeration.o : tditeration.c $(HEADER)
mafft-profile.o : mafft-profile.c $(HEADER) $(MTXHEADER)
$(CC) $(MYCFLAGS) -c mafft-profile.c
-dndfast4.o : dndfast4.c $(HEADER) $(MTXHEADER)
- $(CC) $(MYCFLAGS) -c dndfast4.c
-
-dndfast5.o : dndfast5.c $(HEADER) $(MTXHEADER)
- $(CC) $(MYCFLAGS) -c dndfast5.c
-
-dndfast6.o : dndfast6.c $(HEADER) $(MTXHEADER)
- $(CC) $(MYCFLAGS) -c dndfast6.c
-
dndfast7.o : dndfast7.c $(HEADER) $(MTXHEADER)
$(CC) $(MYCFLAGS) -c dndfast7.c
-dndblast.o : dndblast.c $(HEADER) $(MTXHEADER)
- $(CC) $(MYCFLAGS) -c dndblast.c
-
-dndfast3.o : dndfast3.c $(HEADER) $(MTXHEADER)
- $(CC) $(MYCFLAGS) -c dndfast3.c
-
dndpre.o : dndpre.c $(HEADER)
$(CC) $(MYCFLAGS) -c dndpre.c
@@ -569,7 +538,7 @@ install : all
$(STRIP) $(PROGS) ||: # may fail for dash_client on mac.
$(INSTALL) $(PROGS) $(DESTDIR)$(LIBDIR)
$(INSTALL) $(PERLPROGS) $(DESTDIR)$(LIBDIR)
- $(INSTALL) -m 644 $(MANPAGES) $(DESTDIR)$(LIBDIR)
+# $(INSTALL) -m 644 $(MANPAGES) $(DESTDIR)$(LIBDIR)
( cd $(DESTDIR)$(BINDIR); \
rm -f linsi ginsi einsi fftns fftnsi nwns nwnsi xinsi qinsi; \
=====================================
core/addsingle.c
=====================================
@@ -9,7 +9,6 @@
static int treein;
static int topin;
static int treeout;
-static int distout;
static int noalign;
static int multidist;
static int maxdist = 2; // scale -> 2bai
@@ -979,8 +978,15 @@ void arguments( int argc, char *argv[] )
addprofile = 0;
break;
case 'y':
- distout = 1;
- break;
+ distout = *(*++argv);
+ reporterr( "distout=%c\n", distout );
+ if( distout != 'c' && distout != 'h' )
+ {
+ reporterr( "Set -y c or -y h in v>=7.521.\n" );
+ exit( 1 );
+ }
+ --argc;
+ goto nextoption;
case '^':
hitout = atof( *++argv );
--argc;
@@ -1070,6 +1076,9 @@ void arguments( int argc, char *argv[] )
case 'U':
treein = 1;
break;
+ case 's':
+ addtotop = 2;
+ break;
case 'x':
addtotop = 1;
break;
@@ -1838,8 +1847,10 @@ static void *addsinglethread( void *arg )
// }
// fixed_musclesupg_double_realloc_nobk_halfmtx( njobc, iscorec, topolc, lenc, depc, 0, 1 );
- if( addtotop )
- neighbor = addonetip2top( njobc, topolc, lenc, iscorec, topol, len, dep, treeout, addtree, iadd, name, alnleninnode, nogaplenjusttodecideaddhereornot, noalign );
+ if( addtotop == 2 ) // root
+ neighbor = addonetip2fixedpos( njobc, topolc, lenc, iscorec, topol, len, dep, treeout, addtree, iadd, name, alnleninnode, nogaplenjusttodecideaddhereornot, noalign, 'r' );
+ else if( addtotop == 1 ) // top
+ neighbor = addonetip2fixedpos( njobc, topolc, lenc, iscorec, topol, len, dep, treeout, addtree, iadd, name, alnleninnode, nogaplenjusttodecideaddhereornot, noalign, 't' );
else
neighbor = addonetip( njobc, topolc, lenc, iscorec, topol, len, dep, treeout, addtree, iadd, name, alnleninnode, nogaplenjusttodecideaddhereornot, noalign );
@@ -2107,7 +2118,16 @@ void makecompositiontable_p( int *table, int *pointt )
int point;
while( ( point = *pointt++ ) != END_OF_VEC )
+ {
table[point]++;
+#if 0 // kakunin shinai
+ if( (unsigned int)table[point]++ >= INT_MAX )
+ {
+ reporterr( "Overflow. table[point]=%d>INT_MAX(%d).\n", table[point], INT_MAX );
+ exit( 1 );
+ }
+#endif
+ }
}
=====================================
core/blosum.c
=====================================
@@ -347,7 +347,7 @@ static int checkchar( int i )
return( 0 );
}
-static void overridematrix( double **matrix )
+static int overridematrix( double **matrix )
{
char buf[500];
FILE *fp;
@@ -355,6 +355,7 @@ static void overridematrix( double **matrix )
double v;
char *bpt;
int nread;
+ int userdefined;
fp = fopen( "_aamtx", "r" );
if( fp == NULL )
@@ -362,9 +363,10 @@ static void overridematrix( double **matrix )
fprintf( stderr, "warning: cannot open scorematrix. Use the default one.\n" );
// f2cl.c de tomaranai youni
// exit( 1 );
- return;
+ return 0;
}
+ userdefined = 0;
while( 1 )
{
fgets( buf, 499, fp );
@@ -393,17 +395,20 @@ static void overridematrix( double **matrix )
reporterr( "%c=0x%x cannot be used (2)\n", i2, i2 );
exit( 1 );
}
- reporterr( "Score(%c=0x%x,%c=0x%x)=%f\n", i1, i1, i2, i2, v );
+// reporterr( "Score(%c=0x%x,%c=0x%x)=%f\n", i1, i1, i2, i2, v );
matrix[i1][i2] = v;
matrix[i2][i1] = v; // 2018/May/11
+ userdefined = 1;
}
fclose( fp );
+ return userdefined;
}
-void extendedmtx( double **matrix, double *freq, unsigned char *amino, char *amino_grp )
+int extendedmtx( double **matrix, double *freq, unsigned char *amino, char *amino_grp )
{
int i;
int j;
+ int userdefined;
for( i=0; i<nalphabets; i++ )
{
@@ -423,7 +428,8 @@ void extendedmtx( double **matrix, double *freq, unsigned char *amino, char *ami
for( i=0; i<nalphabets; i++ )
matrix[i][i] = matrix[i][i] = (double)1.0;
- overridematrix( matrix );
+ userdefined = overridematrix( matrix );
+
#if 0 // user-defined matrix + user-defined freqency ga aru toki fukkatsu saseru.
if( tmpmtx[400] != -1.0 )
{
@@ -441,4 +447,5 @@ void extendedmtx( double **matrix, double *freq, unsigned char *amino, char *ami
fprintf( stderr, "%d: %c, %d, %f\n", i, amino[i], amino_grp[amino[i]], freq[i] );
}
#endif
+ return userdefined;
}
=====================================
core/constants.c
=====================================
@@ -161,6 +161,47 @@ static void calcfreq( int nseq, char **seq, double *datafreq )
for( i=0; i<nscoredalphabets; i++ ) datafreq[i] /= (double)total;
}
+
+void calcfreq_from_scoremtx( double **n_distmp, double *datafreq )
+{
+ int i, j;
+ int nused = 0;
+ for( i=0; i<nalphabets; i++ ) datafreq[i] = 0.0;
+ for( i=0; i<nalphabets; i++ ) for( j=0; j<i; j++ )
+ {
+ if( n_distmp[i][j] != -1 )
+ {
+ if( datafreq[i] == 0.0 ) nused += 1;
+ if( datafreq[j] == 0.0 ) nused += 1;
+ datafreq[i] = datafreq[j] = 1.0;
+ }
+ }
+ for( i=0; i<nalphabets; i++ ) datafreq[i] /= (double)nused;
+ reporterr( "nused=\n", nused );
+// for( i=0; i<nalphabets; i++ ) reporterr( "%f\n", datafreq[i] );
+}
+
+static int checkscoremtx( double **n_distmp, int nseq, char **seq )
+{
+ int i, j, l, k;
+ int aan;
+ for( i=0; i<nseq; i++ )
+ {
+ l = strlen( seq[i] );
+ for( j=0; j<l; j++ )
+ {
+ aan = amino_n[(unsigned char)seq[i][j]];
+ for( k=0; k<nalphabets; k++ )
+ {
+// if( n_distmp[k][aan] != -1.0 && k != aan ) break;
+ if( n_distmp[k][aan] != -1.0 ) break;
+ }
+ if( k == nalphabets ) return aan;
+ }
+ }
+ return 0;
+}
+
static void calcfreq_extended( int nseq, char **seq, double *datafreq )
{
int i, j, l;
@@ -606,6 +647,7 @@ void constants( int nseq, char **seq )
double average;
// double tmp;
double **n_distmp;
+ int userdefined;
nalphabets = 0x100;
nscoredalphabets = 0x100;
@@ -639,7 +681,7 @@ void constants( int nseq, char **seq )
penaltyLN = (int)( 600.0 / 1000.0 * -2000 + 0.5);
penalty_exLN = (int)( 600.0 / 1000.0 * -100 + 0.5);
- extendedmtx( n_distmp, freq, amino, amino_grp );
+ userdefined = extendedmtx( n_distmp, freq, amino, amino_grp );
if( trywarp ) sprintf( shiftmodel, "%4.2f", -(double)penalty_shift/600 );
else sprintf( shiftmodel, "noshift" );
@@ -663,7 +705,18 @@ void constants( int nseq, char **seq )
freq1 = datafreq;
}
else
- freq1 = freq;
+ {
+ calcfreq_from_scoremtx( n_distmp, datafreq );
+ freq1 = datafreq;
+ }
+#if 1
+ if( userdefined ) if( i=checkscoremtx( n_distmp, nseq, seq ) )
+ {
+ reporterr( "\n\nAlphabet %c (0x%x) is used in the sequence file but no score involving this alphabet is given in the matrix file.\n", i, i );
+ reporterr( "Check if the data is as intended.\n\n\n" );
+ exit( 1 );
+ }
+#endif
#if TEST
reporterr( "raw scoreing matrix : \n" );
@@ -680,37 +733,43 @@ void constants( int nseq, char **seq )
average = 0.0;
else
{
- for( i=0; i<nalphabets; i++ )
#if TEST
+ for( i=0; i<nalphabets; i++ )
fprintf( stdout, "freq[%c] = %f, datafreq[%c] = %f, freq1[] = %f\n", amino[i], freq[i], amino[i], datafreq[i], freq1[i] );
#endif
average = 0.0;
for( i=0; i<nalphabets; i++ ) for( j=0; j<nalphabets; j++ )
average += n_distmp[i][j] * freq1[i] * freq1[j];
}
-#if 1
+#if 0
if( disp ) fprintf( stdout, "####### average2 = %f\n", average );
#endif
for( i=0; i<nalphabets; i++ ) for( j=0; j<nalphabets; j++ )
- n_distmp[i][j] -= average;
-#if TEST
- fprintf( stdout, "average2 = %f\n", average );
- fprintf( stdout, "after average substruction : \n" );
+ {
+ if( n_distmp[i][j] == -1.0 )
+ n_distmp[i][j] = -average;
+ else
+ n_distmp[i][j] -= average;
+ }
+#if 0
+ fprintf( stderr, "average2 = %f\n", average );
+ fprintf( stderr, "after average subtruction : \n" );
for( i=0; i<nalphabets; i++ )
{
+ fprintf( stderr, "i=%d, %x\n", i, i );
for( j=0; j<nalphabets; j++ )
{
- fprintf( stdout, "%6.2f", n_distmp[i][j] );
+ fprintf( stderr, "%6.2f", n_distmp[i][j] );
}
- fprintf( stdout, "\n" );
+ fprintf( stderr, "\n" );
}
#endif
average = 0.0;
for( i=0; i<nalphabets; i++ )
average += n_distmp[i][i] * freq1[i];
-#if 1
+#if 0
if( disp ) fprintf( stdout, "####### average1 = %f\n", average );
#endif
@@ -723,28 +782,30 @@ void constants( int nseq, char **seq )
for( i=0; i<nalphabets; i++ ) for( j=0; j<nalphabets; j++ )
n_distmp[i][j] *= 600.0 / average;
#if TEST
- fprintf( stdout, "after average division : \n" );
+ fprintf( stderr, "after average division : \n" );
for( i=0; i<nalphabets; i++ )
{
+ fprintf( stderr, "i=%d, %x\n", i, i );
for( j=0; j<=i; j++ )
{
- fprintf( stdout, "%7.1f", n_distmp[i][j] );
+ fprintf( stderr, "%7.1f", n_distmp[i][j] );
}
- fprintf( stdout, "\n" );
+ fprintf( stderr, "\n" );
}
#endif
for( i=0; i<nalphabets; i++ ) for( j=0; j<nalphabets; j++ )
n_distmp[i][j] -= offset;
#if TEST
- fprintf( stdout, "after offset substruction (offset = %d): \n", offset );
+ fprintf( stderr, "after offset subtruction (offset = %d): \n", offset );
for( i=0; i<nalphabets; i++ )
{
+ fprintf( stderr, "i=%d, %x\n", i, i );
for( j=0; j<=i; j++ )
{
- fprintf( stdout, "%7.1f", n_distmp[i][j] );
+ fprintf( stderr, "%30.10f", n_distmp[i][j] );
}
- fprintf( stdout, "\n" );
+ fprintf( stderr, "\n" );
}
#endif
#if 0
@@ -789,7 +850,7 @@ void constants( int nseq, char **seq )
for( i=0; i<nalphabets; i++ ) for( j=0; j<nalphabets; j++ ) n_dis[i][j] = 0;
for( i=0; i<nalphabets; i++ ) for( j=0; j<nalphabets; j++ ) n_dis[i][j] = (int)n_distmp[i][j];
- for( i=0; i<nalphabets; i++ ) for( j=0; j<nalphabets; j++ ) n_dis[i][amino_n['-']] = n_dis[amino_n['-']][i] = 0.0;
+ for( i=0; i<nalphabets; i++ ) for( j=0; j<nalphabets; j++ ) n_dis[i][amino_n['-']] = n_dis[amino_n['-']][i] = 0;
FreeDoubleMtx( n_distmp );
FreeDoubleVec( datafreq );
@@ -900,7 +961,7 @@ void constants( int nseq, char **seq )
for( i=0; i<20; i++ ) for( j=0; j<20; j++ )
average += n_distmp[i][j] * freq1[i] * freq1[j];
}
-#if 1
+#if TEST
if( disp ) fprintf( stdout, "####### average2 = %f\n", average );
#endif
@@ -925,7 +986,7 @@ void constants( int nseq, char **seq )
average = 0.0;
for( i=0; i<20; i++ )
average += n_distmp[i][i] * freq1[i];
-#if 1
+#if TEST
if( disp ) fprintf( stdout, "####### average1 = %f\n", average );
#endif
=====================================
core/defs.c
=====================================
@@ -134,6 +134,10 @@ int maxl, tsize;
char codonpos = 0;
char codonscore = 0;
+char distout = 0;
+
+int terminalmargin = 100;
+
void initglobalvariables()
{
@@ -175,3 +179,4 @@ int specifictarget = 0;
int nadd = 0; // <- static in tbfast.c, pairlocalalign.c
int usenaivescoreinsteadofalignmentscore = 0;
int nthreadreadlh = 1;
+int LineLengthInFASTA = -1;
=====================================
core/disttbfast.c
=====================================
@@ -16,7 +16,6 @@ static int treein;
static int topin;
static int treeout;
static int noalign;
-static int distout;
static int tuplesize;
static int subalignment;
static int subalignmentoffset;
@@ -30,7 +29,6 @@ static double maxdistmtxsize;
static int nthreadtb;
static int useexternalanchors;
static int oneiteration;
-static double maxanchorseparation;
#if 0
#define PLENFACA 0.0123
@@ -222,7 +220,6 @@ void arguments( int argc, char *argv[] )
mapout = 0;
smoothing = 0;
nwildcard = 0;
- maxanchorseparation = 1000.0;
while( --argc > 0 && (*++argv)[0] == '-' )
{
@@ -314,8 +311,15 @@ void arguments( int argc, char *argv[] )
addprofile = 0;
break;
case 'y':
- distout = 1;
- break;
+ distout = *(*++argv);
+ reporterr( "distout=%c\n", distout );
+ if( distout != 'c' && distout != 'h' )
+ {
+ reporterr( "Set -y c or -y h in v>=7.521.\n" );
+ exit( 1 );
+ }
+ --argc;
+ goto nextoption;
case 't':
treeout = 1;
break;
@@ -341,7 +345,7 @@ void arguments( int argc, char *argv[] )
fftscore = 0;
break;
case 'x':
- maxanchorseparation = myatof( *++argv );
+ terminalmargin = myatoi( *++argv );
--argc;
goto nextoption;
case 'H':
@@ -719,7 +723,17 @@ void makecompositiontable_p( int *table, int *pointt )
int point;
while( ( point = *pointt++ ) != END_OF_VEC )
+ {
+#if 1
table[point]++;
+#else // kakunin shinai
+ if( (unsigned int)table[point]++ >= INT_MAX )
+ {
+ reporterr( "Overflow. table[point]=%d>INT_MAX(%d).\n", table[point], INT_MAX );
+ exit( 1 );
+ }
+#endif
+ }
}
@@ -1354,6 +1368,7 @@ static void *distancematrixthread( void *arg )
free( table1 );
}
}
+#endif // enablemultithread
static void recountpositions( ExtAnch *pairanch, int n1, int n2, char **seq1, char **seq2 ) // loop no junban kentou
{
@@ -1457,191 +1472,15 @@ static void indexanchors( ExtAnch *a, int **idx )
#endif
}
-
-#if 0
-static void checkanchors_internal( ExtAnch *a )
-{
- int p, q, r, s;
- int i, j;
- int consistent;
- int m;
-#if 0
- reporterr( "before sortscore\n" );
- for( p=0; a[p].i>-1; p++ )
- {
- reporterr( "a[%d].starti,j=%d,%d, score=%d\n", p, a[p].starti, a[p].startj, a[p].score );
- }
-#endif
-
-
- for( r=0; a[r].i>-1; )
- {
- i = a[r].i;
- j = a[r].j;
- s = r;
- for( ; i==a[r].i && j==a[r].j; r++ )
- ;
-// reporterr( "s=%d, r=%d\n", s, r );
-
- qsort( a+s, r-s, sizeof( ExtAnch ), anchscorecomp );
-#if 0
- reporterr( "after sortscore, r=%d\n", r );
- for( p=s; p<r; p++ )
- {
- reporterr( "a[%d].starti,j=%d,%d, score=%d\n", p, a[p].starti, a[p].startj, a[p].score );
- }
- exit( 1 );
-#endif
-
- for( p=s; p<r; p++ )
- {
- if( a[p].starti == -1 ) continue;
- consistent = 1;
- m = 0;
- for( q=p+1; q<r; q++ )
- {
- if( a[q].starti == -1 ) continue;
-#if 0
- reporterr( "p=%d, q=%d\n", p, q );
- reporterr( "p: a[%d].starti,j=%d,%d, score=%d\n", p, a[p].starti, a[p].startj, a[p].score );
- reporterr( "q: a[%d].starti,j=%d,%d, score=%d\n", q, a[q].starti, a[q].startj, a[q].score );
-#endif
-
- if( a[p].endi == a[q].endi && a[p].starti == a[q].starti && a[p].endj == a[q].endj && a[p].startj == a[q].startj )
- {
-// reporterr( "identical\n" );
-// reporterr( "p: a[%d].regi,regj=%d-%d,%d-%d, score=%d\n", p, a[p].starti, a[p].endi, a[p].startj, a[p].endj, a[p].score );
-// reporterr( "q: a[%d].regi,regj=%d-%d,%d-%d, score=%d\n", q, a[q].starti, a[q].endi, a[q].startj, a[q].endj, a[q].score );
- ;
- }
- else if( a[p].endi < a[q].starti && a[p].endj < a[q].startj )
- {
-// reporterr( "consistent\n" );
- ;
- }
-// else if( a[p].endi == a[q].starti && a[p].endj < a[q].startj && a[q].starti<a[q].endi )
-// {
-// a[q].starti += 1; // 1 zai overlap
-// }
-// else if( a[p].endi < a[q].starti && a[p].endj == a[q].startj && a[q].startj<a[q].endj )
-// {
-// a[q].startj += 1; // 1 zai overlap
-// }
- else if( a[q].endi < a[p].starti && a[q].endj < a[p].startj )
- {
-// reporterr( "consistent\n" );
- ;
- }
-// else if( a[q].endi == a[p].starti && a[q].endj < a[p].startj && a[q].starti<a[q].endi ) // bug in v7.442
-// {
-// a[q].endi -= 1; // 1 zai overlap
-// }
-// else if( a[q].endi < a[p].starti && a[q].endj == a[p].startj && a[q].startj<a[q].endj )
-// {
-// a[q].endj -= 1; // 1 zai overlap
-// }
- else
- {
- consistent = 0;
- if( a[q].score > m ) m = a[q].score;
-// reporterr( "INconsistent\n" );
-// reporterr( "p=%d, q=%d\n", p, q );
-// reporterr( "p: a[%d].regi,regj=%d-%d,%d-%d, score=%d\n", p, a[p].starti, a[p].endi, a[p].startj, a[p].endj, a[p].score );
-// reporterr( "q: a[%d].regi,regj=%d-%d,%d-%d, score=%d\n", q, a[q].starti, a[q].endi, a[q].startj, a[q].endj, a[q].score );
-// a[q].starti = a[q].startj = a[q].startj = a[q].endj = -1;
-// a[q].score = a[p].score - a[q].score; // ??
-// a[q].score = ( a[p].score + a[q].score ) / 2; // ??
- a[q].score = 0;
- }
- }
- if( !consistent )
-// a[p].score = ( a[p].score + m ) / 2; // >= 0
- a[p].score -= m; // >= 0
-// a[p].score = 0;
- }
- }
-
-#if 0
- reporterr( "after filtering\n" );
- for( p=0; a[p].i>-1; p++ )
- {
- reporterr( "a[%d].starti,j=%d,%d, score=%d\n", p, a[p].starti, a[p].startj, a[p].score );
- }
- exit( 1 );
-#endif
-}
-#endif
-
-static void checkanchors_strongestfirst( ExtAnch *a, int s, double gapratio1, double gapratio2 )
+static void checkanchors_strongestfirst( ExtAnch *a, int s )
{
int p, q;
- double zureij;
- double nogaplenestimation1;
- double nogaplenestimation2;
-#if 0
- reporterr( "before sortscore\n" );
- for( p=0; a[p].i>-1; p++ )
- {
- reporterr( "a[%d].starti,j=%d,%d, score=%d\n", p, a[p].starti, a[p].startj, a[p].score );
- }
-#endif
qsort( a, s, sizeof( ExtAnch ), anchscorecomp );
- nogaplenestimation1 = (double)a[0].starti / (1.0+gapratio1);
- nogaplenestimation2 = (double)a[0].startj / (1.0+gapratio2);
- zureij = nogaplenestimation1 - nogaplenestimation2;
-
for( p=0; a[p].i>-1; p++ )
{
if( a[p].starti == -1 ) continue;
-#if 0
- nogaplenestimation1 = (double)a[p].starti / (1.0+gapratio1);
- nogaplenestimation2 = (double)a[p].startj / (1.0+gapratio2);
- if( fabs( zureij - ( nogaplenestimation1 - nogaplenestimation2 ) ) > maxanchorseparation )
- {
-// reporterr( "warning: long internal gaps in %d-%d, |%5.2f-%5.2f - %5.2f| = %5.2f > %5.2f\n", a[p].i, a[p].j, nogaplenestimation1, nogaplenestimation2, zureij, fabs( zureij - ( nogaplenestimation1, nogaplenestimation2 ) ), maxanchorseparation );
- a[p].starti = a[p].startj = a[p].startj = a[p].endj = -1;
- continue;
- }
-#else
- int nearest, mindist;
- double zurei, zurej;
- if( p )
- {
- mindist = 999999999;
- for( q=0; q<p; q++ )
- {
- if( a[q].starti == -1 ) continue;
- if( abs( a[p].starti - a[q].starti ) < mindist )
- {
- nearest = q;
- mindist = abs( a[p].starti - a[q].starti );
- }
- }
- //reporterr( "nearest=%d\n", nearest );
- if( a[nearest].starti < a[p].starti )
- {
- zurei = (double)( a[p].starti - a[nearest].endi )/(1.0+gapratio1);
- zurej = (double)( a[p].startj - a[nearest].endj )/(1.0+gapratio2);
- }
- else
- {
- zurei = (double)( a[nearest].starti - a[p].endi )/(1.0+gapratio1);
- zurej = (double)( a[nearest].startj - a[p].endj )/(1.0+gapratio2);
- }
- }
- else
- zurei = zurej = 0.0;
- if( fabs( zurei - zurej ) > maxanchorseparation )
-// if( fabs( zurei - zurej ) > maxanchorseparation || zurei > maxanchorseparation || zurej > maxanchorseparation ) // test
- {
-// reporterr( "warning: long internal gaps in %d-%d, |%5.2f-%5.2f - %5.2f| = %5.2f > %5.2f\n", a[p].i, a[p].j, nogaplenestimation1, nogaplenestimation2, zureij, fabs( zureij - ( nogaplenestimation1, nogaplenestimation2 ) ), maxanchorseparation );
- a[p].starti = a[p].startj = a[p].startj = a[p].endj = -1;
- continue;
- }
-#endif
-
// reporterr( "P score=%d, %d-%d, %d-%d\n", a[p].score, a[p].starti, a[p].endi, a[p].startj, a[p].endj );
for( q=p+1; a[q].i>-1; q++ )
{
@@ -1681,6 +1520,7 @@ static void checkanchors_strongestfirst( ExtAnch *a, int s, double gapratio1, do
a[q].starti = a[q].startj = a[q].startj = a[q].endj = -1;
}
}
+ if( p % 1000 == 0 ) reporterr( "%d/%d\r", p, s );
}
qsort( a, s, sizeof( ExtAnch ), anchcomp );
@@ -1693,41 +1533,6 @@ static void checkanchors_strongestfirst( ExtAnch *a, int s, double gapratio1, do
#endif
}
-
-static double gapnongapratio( int n, char **s )
-{
- int i, j, len;
- char *seq, *pt1, *pt2;
- double fv, ng;
-
- len = strlen( s[0] );
- seq = calloc( len+1, sizeof( char ) );
-
- fv = 0.0;
- ng = 0.0;
- for( i=0; i<n; i++ )
- {
- pt1 = s[i];
- while( *pt1 == '-' ) pt1++;
- pt2 = seq;
- while( *pt1 != 0 ) *pt2++ = *pt1++;
- *pt2 = *pt1; // 0
- pt1 = pt2-1;
- while( *pt1 == '-' ) pt1--;
- *(pt1+1) = 0;
-// reporterr( "seq[i]=%s\n", s[i] );
-// reporterr( "seq=%s\n", seq );
- len = pt1-seq+1;
- for( j=0; j<len; j++ )
- if( seq[j] == '-' )
- fv+=1.0;
- else
- ng+=1.0;
- }
- free( seq );
- return( fv/ng );
-}
-
static void pickpairanch( ExtAnch **pairanch, ExtAnch *extanch, int **anchindex, int n1, int n2, int *m1, int *m2, char **seq1, char **seq2 ) // loop no junban wo kaeta hou ga iikamo
{
int i, j, k, s;
@@ -1876,12 +1681,10 @@ static void pickpairanch( ExtAnch **pairanch, ExtAnch *extanch, int **anchindex,
reporterr( "\n" );
#endif
- checkanchors_strongestfirst( *pairanch, s, gapnongapratio( n1, seq1 ), gapnongapratio( n2, seq2 ) );
+ reporterr( "Checking external anchors\n" );
+ checkanchors_strongestfirst( *pairanch, s );
-// qsort( *pairanch, s, sizeof( ExtAnch ), anchcomp );
-// checkanchors_new( *pairanch );
-
#if 0
reporterr( "After check\n" );
for( k=0; (*pairanch)[k].i>-1; k++ )
@@ -1892,6 +1695,7 @@ static void pickpairanch( ExtAnch **pairanch, ExtAnch *extanch, int **anchindex,
#endif
}
+#ifdef enablemultithread
static void *treebasethread( void *arg )
{
treebasethread_arg_t *targ = (treebasethread_arg_t *)arg;
@@ -2407,7 +2211,7 @@ static void *treebasethread( void *arg )
reporterr( "totalscore = %10.2f\n\n", tscore );
#endif
}
-#endif
+#endif // enablemultithread
static int dooneiteration( int *nlen, char **aseq, int nadd, char *mergeoralign, char **mseq1, char **mseq2, int ***topol, Treedep *dep, int **memhist, double ***cpmxhist, double *effarr, double **newdistmtx, int *selfscore, ExtAnch *extanch, int **anchindex, int *alloclen, int (*callback)(int, int, char*) )
{
@@ -3538,10 +3342,10 @@ int disttbfast( int ngui, int lgui, char **namegui, char **seqgui, int argc, cha
rewind( infp );
}
- if( njob > 1000000 )
+ if( njob > 10000000 )
{
- reporterr( "The number of sequences must be < %d\n", 1000000 );
- reporterr( "Please try the --parttree option for such large data.\n" );
+ reporterr( "The number of sequences must be < %d\n", 10000000 );
+// reporterr( "Please try the --parttree option for such large data.\n" );
exit( 1 );
}
=====================================
core/dndpre.c
=====================================
@@ -215,6 +215,16 @@ void arguments( int argc, char *argv[] )
{
switch( c )
{
+ case 'y':
+ distout = *(*++argv);
+ reporterr( "distout=%c\n", distout );
+ if( distout != 'c' && distout != 'h' )
+ {
+ reporterr( "Set -y c or -y h in v>=7.521.\n" );
+ exit( 1 );
+ }
+ --argc;
+ goto nextoption;
case 'Z':
usenaivescoreinsteadofalignmentscore = 1;
break;
=====================================
core/f2cl.c
=====================================
@@ -171,6 +171,7 @@ void arguments( int argc, char *argv[] )
namelen = -1;
scoremtx = 1;
nblosum = 62;
+ LineLengthInFASTA = -1;
dorp = NOTSPECIFIED;
kimuraR = NOTSPECIFIED;
pamN = NOTSPECIFIED;
@@ -206,6 +207,15 @@ void arguments( int argc, char *argv[] )
fprintf( stderr, "namelen = %d\n", namelen );
--argc;
goto nextoption;
+ case 'l':
+ LineLengthInFASTA = myatoi( *++argv );
+ if( LineLengthInFASTA == 0 )
+ {
+ reporterr( "LineLengthInFASTA = 0 ??\n" );
+ exit( 1 );
+ }
+ --argc;
+ goto nextoption;
case 'f':
format = 'f';
break;
=====================================
core/functions.h
=====================================
@@ -180,7 +180,7 @@ extern void reduc( double **mtx, int nseq, int im, int jm );
extern void nj( int nseq, double **omtx, int ***topol, double **dis );
extern void JTTmtx( double **rsr, double *freq, unsigned char locamino[0x80], char locgrp[0x80], int isTM );
extern void BLOSUMmtx( int n, double **matrix, double *freq, unsigned char *amino, char *amino_grp, int *rescale );
-extern void extendedmtx( double **matrix, double *freq, unsigned char *amino, char *amino_grp );
+extern int extendedmtx( double **matrix, double *freq, unsigned char *amino, char *amino_grp );
extern void putlocalhom2( char *al1, char *al2, LocalHom *localhompt, int off1, int off2, int opt, int overlapaa, char korh );
extern void putlocalhom_str( char *al1, char *al2, double *equiv, double scale, LocalHom *localhompt, int off1, int off2, int opt, int overlapaa, char korh );
extern void putlocalhom_ext( char *al1, char *al2, LocalHom *localhompt, int off1, int off2, int opt, int overlapaa, char korh );
@@ -362,7 +362,7 @@ extern int overlapmember( int *mem1, int *mem2 );
extern void profilealignment2( int n0, int n2, char **aln0, char **aln2, int alloclen, char alg );
extern void sreverse( char *r, char *s );
extern int addonetip( int njobc, int ***topolc, double **lenc, double **iscorec, int ***topol, double **len, Treedep *dep, int treeout, Addtree *addtree, int iadd, char **name, int *alnleninnode, int *nogaplen, int noalign );
-extern int addonetip2top( int njobc, int ***topolc, double **lenc, double **iscorec, int ***topol, double **len, Treedep *dep, int treeout, Addtree *addtree, int iadd, char **name, int *alnleninnode, int *nogaplen, int noalign );
+extern int addonetip2fixedpos( int njobc, int ***topolc, double **lenc, double **iscorec, int ***topol, double **len, Treedep *dep, int treeout, Addtree *addtree, int iadd, char **name, int *alnleninnode, int *nogaplen, int noalign, int toporroot );
extern void intcpy( int *s1, int *s2 );
extern void intncpy( int *s1, int *s2, int n );
extern void fltncpy( double *s1, double *s2, int n );
=====================================
core/io.c
=====================================
@@ -2650,17 +2650,18 @@ void writeData_pointer( FILE *fp, int locnjob, char **name, int *nlen, char **as
#if DEBUG
fprintf( stderr, "i = %d in writeData\n", i );
#endif
- nalen = strlen( aseq[i] );
fprintf( fp, ">%s\n", name[i]+1 );
- for( j=0; j<nalen; j=j+C )
+#if 1
+ if( LineLengthInFASTA < 0 )
+ fprintf( fp, "%s\n", aseq[i] );
+ else // V7.510 deha tsukawanai
{
-#if 0
- strncpy( b, aseq[i]+j, C ); b[C] = 0;
- fprintf( fp, "%s\n",b );
+ nalen = strlen( aseq[i] );
+ for( j=0; j<nalen; j=j+LineLengthInFASTA ) fprintf( fp, "%.*s\n", LineLengthInFASTA, aseq[i]+j );
+ }
#else
- fprintf( fp, "%.*s\n", C, aseq[i]+j );
+ fprintf( fp, "%s\n", aseq[i] );
#endif
- }
}
}
@@ -2923,6 +2924,53 @@ void readhat2( FILE *fp, int nseq, char name[M][B], double **mtx )
}
}
+static void WriteHat2_pointer_clustaloformat( int locnjob, char **name, double **mtx )
+{
+ int i, j;
+ FILE *fp = fopen( "clodist", "w" );
+ fprintf( fp, "%d\n", locnjob );
+
+ for( i=0; i<locnjob; i++ )
+ {
+ fprintf( fp, "%-5.5s ", name[i]+1 );
+ for( j=0; j<i; j++ )
+ {
+ fprintf( fp, "%10.8f ", mtx[j][i] );
+ }
+ fprintf( fp, "%10.8f ", 0.0 );
+ for( j=i+1; j<locnjob; j++ )
+ {
+ fprintf( fp, "%10.8f ", mtx[i][j] );
+ }
+ fprintf( fp, "\n" );
+
+ }
+ fclose( fp );
+}
+static void WriteFloatHat2_pointer_halfmtx_clustaloformat( int locnjob, char **name, double **mtx )
+{
+ int i, j;
+ FILE *fp = fopen( "clodist", "w" );
+ fprintf( fp, "%d\n", locnjob );
+
+ for( i=0; i<locnjob; i++ )
+ {
+ fprintf( fp, "%-5.5s ", name[i]+1 );
+ for( j=0; j<i; j++ )
+ {
+ fprintf( fp, "%10.8f ", mtx[j][i-j] );
+ }
+ fprintf( fp, "%10.8f ", 0.0 );
+ for( j=i+1; j<locnjob; j++ )
+ {
+ fprintf( fp, "%10.8f ", mtx[i][j-i] );
+ }
+ fprintf( fp, "\n" );
+
+ }
+ fclose( fp );
+}
+
void WriteFloatHat2_pointer_halfmtx( FILE *hat2p, int locnjob, char **name, double **mtx )
{
int i, j, ijsa;
@@ -2936,15 +2984,18 @@ void WriteFloatHat2_pointer_halfmtx( FILE *hat2p, int locnjob, char **name, doub
for( i=0; i<locnjob; i++ ) fprintf( hat2p, "%4d. %s\n", i+1, name[i] );
for( i=0; i<locnjob; i++ )
{
- for( j=i+1; j<njob; j++ )
+ for( j=i+1; j<locnjob; j++ )
{
fprintf( hat2p, DFORMAT, mtx[i][j-i] );
ijsa = j-i;
if( ijsa % 12 == 0 || ijsa == locnjob-i-1 ) fprintf( hat2p, "\n" );
}
}
+ if( distout == 'c' )
+ WriteFloatHat2_pointer_halfmtx_clustaloformat( locnjob, name, mtx );
}
+#if 0
void WriteFloatHat2_pointer( FILE *hat2p, int locnjob, char **name, double **mtx )
{
int i, j;
@@ -3008,6 +3059,7 @@ void WriteHat2_int( FILE *hat2p, int locnjob, char name[M][B], int **mtx )
}
}
}
+#endif
void WriteHat2_part_pointer( FILE *hat2p, int locnjob, int nadd, char **name, double **mtx )
{
@@ -3029,6 +3081,8 @@ void WriteHat2_part_pointer( FILE *hat2p, int locnjob, int nadd, char **name, do
if( (j+1) % 12 == 0 || j == nadd-1 ) fprintf( hat2p, "\n" );
}
}
+ if( distout == 'c' )
+ WriteHat2_pointer_clustaloformat( locnjob, name, mtx );
}
void WriteHat2_pointer( FILE *hat2p, int locnjob, char **name, double **mtx )
@@ -3050,6 +3104,8 @@ void WriteHat2_pointer( FILE *hat2p, int locnjob, char **name, double **mtx )
if( (j-i) % 12 == 0 || j == locnjob-1 ) fprintf( hat2p, "\n" );
}
}
+ if( distout == 'c' )
+ WriteHat2_pointer_clustaloformat( locnjob, name, mtx );
}
void WriteHat2( FILE *hat2p, int locnjob, char name[M][B], double **mtx )
@@ -5411,17 +5467,18 @@ void writeData_reorder_pointer( FILE *fp, int locnjob, char **name, int *nlen, c
#if DEBUG
fprintf( stderr, "i = %d in writeData\n", i );
#endif
- nalen = strlen( aseq[k] );
fprintf( fp, ">%s\n", name[k]+1 );
- for( j=0; j<nalen; j=j+C )
+#if 1
+ if( LineLengthInFASTA < 0 )
+ fprintf( fp, "%s\n", aseq[k] );
+ else
{
-#if 0
- strncpy( b, aseq[k]+j, C ); b[C] = 0;
- fprintf( fp, "%s\n",b );
+ nalen = strlen( aseq[k] );
+ for( j=0; j<nalen; j=j+LineLengthInFASTA ) fprintf( fp, "%.*s\n", LineLengthInFASTA, aseq[k]+j );
+ }
#else
- fprintf( fp, "%.*s\n", C, aseq[k]+j );
+ fprintf( fp, "%s\n", aseq[k] );
#endif
- }
}
}
void writeData_reorder( FILE *fp, int locnjob, char name[][B], int nlen[], char **aseq, int *order )
=====================================
core/mafft-distance.c
=====================================
@@ -121,20 +121,30 @@ void seq_grp( int *grp, char *seq )
}
}
-void makecompositiontable_p( short *table, int *pointt )
+void makecompositiontable_p( int *table, int *pointt )
{
int point;
while( ( point = *pointt++ ) != END_OF_VEC )
+ {
+#if 1
table[point]++;
+#else
+ if( (unsigned int)table[point]++ >= INT_MAX )
+ {
+ reporterr( "Overflow. table[point]=%d>INT_MAX(%d).\n", table[point], INT_MAX );
+ exit( 1 );
+ }
+#endif
+ }
}
-static int localcommonsextet_p( short *table, int *pointt )
+static int localcommonsextet_p( int *table, int *pointt )
{
int value = 0;
- short tmp;
+ unsigned int tmp;
int point;
- static short *memo = NULL;
+ static int *memo = NULL;
static int *ct = NULL;
static int *cp;
@@ -143,7 +153,7 @@ static int localcommonsextet_p( short *table, int *pointt )
if( !memo )
{
- memo = (short *)calloc( tsize, sizeof( short ) );
+ memo = (int *)calloc( tsize, sizeof( int ) );
if( !memo ) ErrorExit( "Cannot allocate memo\n" );
ct = (int *)calloc( MIN( maxl, tsize)+1, sizeof( int ) );
if( !ct ) ErrorExit( "Cannot allocate memo\n" );
@@ -157,6 +167,14 @@ static int localcommonsextet_p( short *table, int *pointt )
value++;
if( tmp == 0 ) *cp++ = point;
// fprintf( stderr, "cp - ct = %d (tsize = %d)\n", cp - ct, tsize );
+ #if 0
+ if( tmp >= INT_MAX )
+ {
+ reporterr( "overflow\n" );
+ reporterr( "cp-ct=%d, point=%d, tmp=%d, memo[point]=%d>INT_MAX(%d)\n", cp-ct, point, tmp, memo[point], INT_MAX );
+ exit( 1 );
+ }
+#endif
}
*cp = END_OF_VEC;
@@ -239,7 +257,7 @@ int main( int argc, char **argv )
static int *nlen;
double *mtxself;
double score;
- static short *table1;
+ static int *table1;
double longer, shorter;
double lenfac;
double bunbo;
@@ -339,7 +357,7 @@ int main( int argc, char **argv )
fprintf( stderr, "\nCalculating i-i scores ... " );
for( i=0; i<njob; i++ )
{
- table1 = (short *)calloc( tsize, sizeof( short ) );
+ table1 = (int *)calloc( tsize, sizeof( int ) );
if( !table1 ) ErrorExit( "Cannot allocate table1\n" );
makecompositiontable_p( table1, pointt[i] );
@@ -354,7 +372,7 @@ int main( int argc, char **argv )
for( i=0; i<norg; i++ )
{
if( outputformat == 'p' ) fprintf( stdout, "\n%-9d ", i+1 );
- table1 = (short *)calloc( tsize, sizeof( short ) );
+ table1 = (int *)calloc( tsize, sizeof( int ) );
if( !table1 ) ErrorExit( "Cannot allocate table1\n" );
if( i % 10 == 0 )
{
=====================================
core/mafft.tmpl
=====================================
@@ -1,7 +1,7 @@
#! /bin/bash
er=0;
myself=`dirname "$0"`/`basename "$0"`; export myself
-version="v7.505 (2022/Apr/10)"; export version
+version="v7.525 (2024/Mar/13)"; export version
LANG=C; export LANG
os=`uname`
progname=`basename "$0"`
@@ -175,6 +175,7 @@ elif [ $progname = "nwnsi" -o $progname = "mafft-nwnsi" ]; then
fi
outputfile=""
namelength=-1
+linelength=60 # Will change to -1 in the future
anysymbol=0
parallelizationstrategy="BAATARI2"
kappa=$defaultkappa
@@ -216,7 +217,9 @@ contrafold=$defaultcontrafold
progressfile="/dev/stderr"
anchorfile="/dev/null"
anchoropt=""
-maxanchorseparation=1000
+#maxanchorseparation=1000
+#maxanchorseparation=-1 # 2023/Jan/11
+terminalmargin=100 # 2024/Mar
debug=0
sw=0
algopt=$defaultalgopt
@@ -241,6 +244,7 @@ partorderopt=" -x "
treeout=0
nodeout=0
distout=0
+distformat="hat2"
treein=0
topin=0
treeinopt=" "
@@ -355,6 +359,13 @@ if [ $# -gt 0 ]; then
echo "" 1>&2
exit 1;
# algspecified=1
+ elif [ "$1" = "--linelength" ]; then
+ shift
+ linelength=`expr "$1" - 0`
+ if [ $linelength -eq 0 ]; then
+ echo "Line length = 0 ?" 1>&2
+ exit
+ fi
elif [ "$1" = "--namelength" ]; then
shift
namelength=`expr "$1" - 0`
@@ -392,6 +403,10 @@ if [ $# -gt 0 ]; then
treeout=1
elif [ "$1" = "--distout" ]; then
distout=1
+ distformat="hat2"
+ elif [ "$1" = "--distoutclustalo" ]; then
+ distout=1
+ distformat="clodist"
elif [ "$1" = "--fastswpair" ]; then
distance="fasta"
pairspecified=1
@@ -566,13 +581,13 @@ if [ $# -gt 0 ]; then
elif [ "$1" = "--out" ]; then
shift
outputfile="$1"
- elif [ "$1" = "--skipanchorsremoterthan" ]; then
+ elif [ "$1" = "--terminalmargin" ]; then
shift
if ! expr "$1" : "[0-9]" > /dev/null ; then
- echo "Specify maximum gap length between anchors." 1>&2
+ echo "set --terminalmargin (int)." 1>&2
exit
fi
- maxanchorseparation=`expr "$1" - 0`
+ terminalmargin=`expr "$1" - 0`
elif [ "$1" = "--anchors" ]; then
shift
anchorfile="$1"
@@ -672,6 +687,11 @@ if [ $# -gt 0 ]; then
addarg0="-K -I"
addfile="$1"
fragment=-3
+ elif [ "$1" = "--addtoroot" ]; then
+ shift
+ addarg0="-K -I"
+ addfile="$1"
+ fragment=-4
elif [ "$1" = "--smoothing" ]; then
add2ndhalfarg=$add2ndhalfarg" -p "
elif [ "$1" = "--keeplength" ]; then
@@ -717,7 +737,8 @@ if [ $# -gt 0 ]; then
f2clext="-E"
seqtype="-P"
fft=0
- sbstmodel=" -b -2 -a "
+# sbstmodel=" -b -2 -a "
+ sbstmodel=" -b -2 " # 2022/Jul, hauretsu no kawari ni scoremtx wo miru
scorematrix="$1"
if [ ! -e "$scorematrix" ]; then
echo "Cannot open $scorematrix" 1>&2
@@ -1777,7 +1798,7 @@ $ownlist"
parttreeoutopt=" "
fi
if [ $distout -eq 1 ]; then
- distoutopt="-y -T"
+ distoutopt="-y ${distformat} -T"
if [ $treeout -eq 0 ]; then
treeoutopt=""
fi
@@ -1798,7 +1819,7 @@ $ownlist"
treeoutopt=" "
fi
if [ $distout -eq 1 ]; then
- distoutopt="-y"
+ distoutopt="-y ${distformat}"
fi
fi
#
@@ -2043,6 +2064,11 @@ $ownlist"
addsinglearg="-x" # add to top, 2021/12/31
cycle=1 # chuui 2014Aug25
iterate=0
+ elif [ $fragment -eq "-4" ]; then
+ addarg="$addarg0 $nadd"
+ addsinglearg="-s" # add to root, 2023/2/11
+ cycle=1 # chuui 2014Aug25
+ iterate=0
else
addarg="$addarg0 $nadd"
addsinglearg=""
@@ -2254,9 +2280,9 @@ $ownlist"
elif [ $outputformat = "phylip" -a $outorder = "input" ]; then
outputopt=" -y "
elif [ $outputformat = "pir" -a $outorder = "aligned" ]; then
- outputopt=" -f -r $TMPFILE/order "
+ outputopt=" -f -l $linelength -r $TMPFILE/order "
else
- outputopt="-f"
+ outputopt="-f -l $linelength"
fi
if [ $newdash_originalsequenceonly -eq 1 ]; then
@@ -2587,7 +2613,7 @@ $ownlist"
"$prefix/tbfast" -W $minimumweight -V "-"$gopdist -s $unalignlevel $legacygapopt $mergearg $termgapopt $outnum $addarg $add2ndhalfarg -C $numthreadstb $rnaopt $weightopt $treeinopt $treeoutopt $distoutopt $seqtype $model -f "-"$gop -Q $spfactor -h $aof $param_fft $localparam $algopt $treealg $scoreoutarg < infile > /dev/null 2>>"$progressfile" || exit 1
fi
elif [ $distance = "lastmulti" ]; then
- "$prefix/dndpre" $model -M 2 $addarg -C $numthreads $seqtype $model -g $lexp -f $lgop -Q $spfactor -h $laof < infile > /dev/null 2>>"$progressfile" || exit 1
+ "$prefix/dndpre" -y $distformat $model -M 2 $addarg -C $numthreads $seqtype $model -g $lexp -f $lgop -Q $spfactor -h $laof < infile > /dev/null 2>>"$progressfile" || exit 1
mv hat2 hat2i
"$prefix/pairlocalalign" $addarg -C $numthreads $seqtype $model -e $last_e -w $last_m -g $lexp -f $lgop -Q $spfactor -h $laof -r $last_subopt $last_once -d "$prefix" < infile > /dev/null 2>>"$progressfile" || exit 1
cat hat3.seed hat3 > hatx
@@ -2600,7 +2626,7 @@ $ownlist"
exit 1
fi
elif [ $distance = "multi" ]; then
- "$prefix/dndpre" $model -M 2 $addarg -C $numthreads $seqtype $model -g $lexp -f $lgop -h $laof $usenaivepairscore < infile > /dev/null 2>>"$progressfile" || exit 1
+ "$prefix/dndpre" -y $distformat $model -M 2 $addarg -C $numthreads $seqtype $model -g $lexp -f $lgop -h $laof $usenaivepairscore < infile > /dev/null 2>>"$progressfile" || exit 1
mv hat2 hat2i
"$prefix/pairlocalalign" $localparam $addarg -C $numthreads $seqtype $model -g $lexp -f $lgop -Q $spfactor -h $laof -Y $usenaivepairscore < infile > /dev/null 2>>"$progressfile" || exit 1
cat hat3.seed hat3 > hatx
@@ -2629,7 +2655,7 @@ $ownlist"
"$prefix/splittbfast" $legacygapopt $algopt $splitopt $partorderopt $parttreeoutopt $memopt $seqtype $model -f "-"$gop -Q $spfactor -h $aof -p $partsize -s $groupsize $treealg $outnum -i infile > pre 2>>"$progressfile" || exit 1
mv hat3.seed hat3
elif [ $distance = "ktuplesmulti" ]; then
-# "$prefix/dndpre" $model -M 1 $addarg -C $numthreads $seqtype $model -g $lexp -f $lgop -h $laof < infile > /dev/null 2>>"$progressfile" || exit 1
+# "$prefix/dndpre" -y $distformat $model -M 1 $addarg -C $numthreads $seqtype $model -g $lexp -f $lgop -h $laof < infile > /dev/null 2>>"$progressfile" || exit 1
# mv hat2 hat2i
# "$prefix/disttbfast" -E 1 -s $unalignlevel $legacygapopt -W $tuplesize $termgapopt $outnum $addarg $add2ndhalfarg -C $numthreads-$numthreadstb $memopt $weightopt $treeinopt $treeoutopt -T -y $seqtype $model -f "-"$gop -Q $spfactor -h $aof $param_fft $algopt $treealg $scoreoutarg < infile > /dev/null 2>>"$progressfile" || exit 1
# mv hat2 hat2n
@@ -2644,7 +2670,7 @@ $ownlist"
if [ $fragment -ne 0 ]; then
"$prefix/addsingle" $codonposopt $codonscoreopt -Q 100 $legacygapopt -W $tuplesize -O $outnum $addsinglearg $addarg $add2ndhalfarg -C $numthreads $memopt $weightopt $treeinopt $treeoutopt $distoutopt $seqtype $model -f "-"$gop -h $aof $param_fft $localparam $algopt $treealg < infile > /dev/null 2>>"$progressfile" || exit 1
else
- "$prefix/disttbfast" -q $npickup -E $cycledisttbfast -V "-"$gopdist -s $unalignlevel $legacygapopt $mergearg -W $tuplesize $termgapopt $outnum $addarg $add2ndhalfarg -C $numthreads-$numthreadstb $memopt $weightopt $treeinopt $treeoutopt $distoutopt $seqtype $model -g $gexp -f "-"$gop -Q $spfactor -h $aof $param_fft $algopt $treealg $scoreoutarg $anchoropt -x $maxanchorseparation $oneiterationopt < infile > pre 2>>"$progressfile" || exit 1
+ "$prefix/disttbfast" -q $npickup -E $cycledisttbfast -V "-"$gopdist -s $unalignlevel $legacygapopt $mergearg -W $tuplesize $termgapopt $outnum $addarg $add2ndhalfarg -C $numthreads-$numthreadstb $memopt $weightopt $treeinopt $treeoutopt $distoutopt $seqtype $model -g $gexp -f "-"$gop -Q $spfactor -h $aof $param_fft $algopt $treealg $scoreoutarg $anchoropt -x $terminalmargin $oneiterationopt < infile > pre 2>>"$progressfile" || exit 1
mv hat3.seed hat3
fi
fi
@@ -2662,7 +2688,7 @@ $ownlist"
done
if [ $iterate -gt 0 ]; then
if [ $distance = "ktuples" ]; then
- "$prefix/dndpre" $seqtype $model -M 2 -C $numthreads < pre > /dev/null 2>>"$progressfile" || exit 1
+ "$prefix/dndpre" -y $distformat $seqtype $model -M 2 -C $numthreads < pre > /dev/null 2>>"$progressfile" || exit 1
fi
"$prefix/dvtditr" -W $minimumweight $bunkatsuopt -E $fixthreshold -s $unalignlevel $legacygapopt $mergearg $outnum -C $numthreadsit -t $randomseed $rnaoptit $memopt $scorecalcopt $localparam -z 50 $seqtype $model -f "-"$gop -Q $spfactor -h $aof -I $iterate $weightopt $treeinopt $algoptit $treealg -p $parallelizationstrategy $scoreoutarg -K $nadd < pre > /dev/null 2>>"$progressfile" || exit 1
fi
@@ -2771,7 +2797,7 @@ $ownlist"
popd > /dev/null
- if [ "$outputopt" != "-f" -o "$windows" = "yes" ]; then # Windows deha kaigyo code wo f2cl de modosu.
+ if [ "$outputopt" != "-f -l -1" -o "$windows" = "yes" ]; then # Windows deha kaigyo code wo f2cl de modosu.
# ln -s "$TMPFILE/order" _order$$ # f2cl ga space ari filename ni taiou shiteinainode
# cp "$TMPFILE/order" _order$$ # ln -s no error wo sakeru
if [ "$outputfile" = "" ]; then
@@ -2797,7 +2823,7 @@ $ownlist"
fi
if [ $distout -eq 1 ]; then
- cp "$TMPFILE/hat2" "$infilename.hat2"
+ cp "$TMPFILE/${distformat}" "$infilename.${distformat}"
fi
if [ $npickup -ne 0 ]; then
=====================================
core/makedirectionlist.c
=====================================
@@ -24,7 +24,7 @@ typedef struct _thread_arg
char *tmpseq;
int *res;
int **spointt;
- short *table1;
+ int *table1;
int iq;
#ifdef enablemultithread
int *jshare;
@@ -332,12 +332,22 @@ void seq_grp( int *grp, char *seq )
}
}
-void makecompositiontable_p( short *table, int *pointt )
+void makecompositiontable_p( int *table, int *pointt )
{
int point;
while( ( point = *pointt++ ) != END_OF_VEC )
+ {
+#if 1
table[point]++;
+#else
+ if( (unsigned int)table[point]++ >= INT_MAX )
+ {
+ reporterr( "Overflow. table[point]=%d>INT_MAX(%d).\n", table[point], INT_MAX );
+ exit( 1 );
+ }
+#endif
+ }
}
@@ -401,21 +411,21 @@ void makepointtable( int *pointt, int *n )
*pointt = END_OF_VEC;
}
-static int localcommonsextet_p2( short *table, int *pointt )
+static int localcommonsextet_p2( int *table, int *pointt )
{
int value = 0;
- short tmp;
+ unsigned int tmp;
int point;
- short *memo;
+ int *memo;
int *ct;
int *cp;
if( *pointt == -1 )
return( 0 );
- memo = (short *)calloc( tsize, sizeof( short ) );
+ memo = (int *)calloc( tsize, sizeof( int ) );
if( !memo ) ErrorExit( "Cannot allocate memo\n" );
- ct = (int *)calloc( MIN( maxl, tsize )+1, sizeof( int ) ); // chuui!!
+ ct = (int *)calloc( MIN( maxl, tsize )+1, sizeof( int ) );
if( !ct ) ErrorExit( "Cannot allocate memo\n" );
cp = ct;
@@ -425,6 +435,14 @@ static int localcommonsextet_p2( short *table, int *pointt )
if( tmp < table[point] )
value++;
if( tmp == 0 ) *cp++ = point;
+#if 0 // kakunin shinai
+ if( tmp >= INT_MAX )
+ {
+ reporterr( "Overflow.\n" );
+ reporterr( "cp-ct=%d, point=%d, tmp=%d, memo[point]=%d>INT_MAX(%d)\n", cp-ct, point, tmp, memo[point], INT_MAX );
+ exit( 1 );
+ }
+#endif
}
*cp = END_OF_VEC;
@@ -448,7 +466,7 @@ static void makecontrastorder6mer( int *order, int **pointt, int **pointt_rev, c
int i;
double *res;
contrastarr *arr;
- short *table1, *table1_rev;
+ int *table1, *table1_rev;
arr = calloc( iend, sizeof( contrastarr ) );
@@ -457,13 +475,13 @@ static void makecontrastorder6mer( int *order, int **pointt, int **pointt_rev, c
for( i=0; i<iend; i++ )
{
if( i % 100 == 1 ) reporterr( "%d \r", i );
- table1 = (short *)calloc( tsize, sizeof( short ) );
+ table1 = (int *)calloc( tsize, sizeof( int ) );
if( !table1 ) ErrorExit( "Cannot allocate table1\n" );
makecompositiontable_p( table1, pointt[i] );
res[i] = localcommonsextet_p2( table1, pointt[i] );
free( table1 );
- table1_rev = (short *)calloc( tsize, sizeof( short ) );
+ table1_rev = (int *)calloc( tsize, sizeof( int ) );
if( !table1_rev ) ErrorExit( "Cannot allocate table1\n" );
makecompositiontable_p( table1_rev, pointt_rev[i] );
res[i] -= localcommonsextet_p2( table1_rev, pointt[i] );
@@ -572,7 +590,7 @@ static void *directionthread( void *arg )
char *tmpseq = targ->tmpseq;
int *res = targ->res;
int **spointt = targ->spointt;
- short *table1 = targ->table1;
+ int *table1 = targ->table1;
// int iq = targ->iq;
#ifdef enablemultithread
// int thread_no = targ->thread_no;
@@ -667,7 +685,7 @@ int main( int argc, char *argv[] )
int ires, mres, mres2;
int *res, *resr, *resf;
int *map;
- static short *table1, *table1_rev;
+ static int *table1, *table1_rev;
static char **mseq1f, **mseq1r, **mseq2;
int *contrastorder;
@@ -993,9 +1011,9 @@ int main( int argc, char *argv[] )
#else
if( !dodp )
{
- table1 = (short *)calloc( tsize, sizeof( short ) );
+ table1 = (int *)calloc( tsize, sizeof( int ) );
if( !table1 ) ErrorExit( "Cannot allocate table1\n" );
- table1_rev = (short *)calloc( tsize, sizeof( short ) );
+ table1_rev = (int *)calloc( tsize, sizeof( int ) );
if( !table1_rev ) ErrorExit( "Cannot allocate table1_rev\n" );
makecompositiontable_p( table1, pointt[ic] );
makecompositiontable_p( table1_rev, pointt_rev[ic] );
=====================================
core/mltaln.h
=====================================
@@ -36,7 +36,7 @@
-#define VERSION "7.505"
+#define VERSION "7.525"
#define SHOWVERSION reporterr( "%s (%s) Version " VERSION "\nalg=%c, model=%s, amax=%3.1f\n%d thread(s)\n\n", progName( argv[0] ), (dorp=='d')?"nuc":((nblosum==-2)?"text":"aa"), alg, modelname, specificityconsideration, nthread )
#define FFT_THRESHOLD 80
@@ -48,6 +48,7 @@
#define M 500000 /* njob no saidaiti */
#define N 5000000 /* nlen no saidaiti */
#define MAXSEG 100000
+#define MAXSEG_GIVENANCHORS 10000000
#define B 256
#define C 60 /* 1 gyou no mojisuu */
#define D 6
@@ -386,6 +387,10 @@ extern int maxl, tsize;
extern char codonpos;
extern char codonscore;
+extern char distout;
+
+extern int terminalmargin;
+
/* for --large */
extern int compacttree;
@@ -395,3 +400,4 @@ extern int specifictarget;
extern int nadd;
extern int usenaivescoreinsteadofalignmentscore;
#define MYBUFSIZE 1000 * 1000 * 100 // 100MB
+extern int LineLengthInFASTA;
=====================================
core/mltaln9.c
=====================================
@@ -2059,7 +2059,7 @@ void createchain( int nseq, int ***topol, double **len, char **name, int *nlen,
FILE *fp;
int i, j;
double l, ll;
- int treelen;
+ size_t treelen;
char **tree;
char *instanttree;
int posinit;
@@ -2301,7 +2301,7 @@ void createchain( int nseq, int ***topol, double **len, char **name, int *nlen,
FILE *fp;
int i, j;
double l, ll;
- int treelen;
+ size_t treelen;
char **tree;
char *instanttree;
int posinit;
@@ -2831,7 +2831,7 @@ void loadtree( int nseq, int ***topol, double **len, char **name, int *nlen, Tre
int check_guidetreefile( int *seed, int *npick, double *limitram )
{
- char string[100];
+ char string[1000];
char *sizestring;
FILE *fp;
double tanni;
@@ -2847,7 +2847,7 @@ int check_guidetreefile( int *seed, int *npick, double *limitram )
exit( 1 );
}
- fgets( string, 999, fp );
+ fgets( string, sizeof(string) / sizeof(char), fp );
fclose( fp );
if( !strncmp( string, "shuffle", 7 ) )
@@ -13930,7 +13930,8 @@ double plainscore( int nseq, char **s )
return( v );
}
-int addonetip2top( int njobc, int ***topolc, double **lenc, double **iscorec, int ***topol, double **len, Treedep *dep, int treeout, Addtree *addtree, int iadd, char **name, int *alnleninnode, int *nogaplen, int noalign )
+
+int addonetip2fixedpos( int njobc, int ***topolc, double **lenc, double **iscorec, int ***topol, double **len, Treedep *dep, int treeout, Addtree *addtree, int iadd, char **name, int *alnleninnode, int *nogaplen, int noalign, int torr )
{
int i, j, mem0, mem1, posinnew, m;
int nstep;
@@ -14036,14 +14037,15 @@ int addonetip2top( int njobc, int ***topolc, double **lenc, double **iscorec, in
}
#else
nearest = 0;
- minscore = 0.0;
+ if( torr == 't' )
+ minscore = 0.0; // add2top
+ else
+ minscore = 999999.9; // add2root
#endif
nearesto = nearest;
minscoreo = minscore;
-
-
// for( i=0; i<njobc-1; i++ ) for( j=i+1; j<njobc; j++ )
// reporterr( "iscorec[%d][%d] = %f\n", i, j, iscorec[i][j-i] );
// reporterr( "nearest = %d\n", nearest+1 );
@@ -14104,7 +14106,7 @@ int addonetip2top( int njobc, int ***topolc, double **lenc, double **iscorec, in
//seqlengthcondition = ( nogaplentoadd <= reflen ); // CHUUI
// if( repnorg == -1 && dep[i].distfromtip * 2 > minscore && seqlengthcondition ) // Keitouteki ichi ha fuseikaku.
- if( repnorg == -1 && dep[i].distfromtip * 2 >= minscore ) // Keitouteki ichi dake ga hitsuyouna baaiha kore wo tsukau.
+ if( torr == 't' && repnorg == -1 && dep[i].distfromtip * 2 >= minscore ) // Keitouteki ichi dake ga hitsuyouna baaiha kore wo tsukau.
{
// reporterr( "INSERT HERE, %d-%d\n", nearest, norg );
// reporterr( "nearest = %d\n", nearest );
@@ -15374,7 +15376,7 @@ double sumofpairsscore( int nseq, char **seq )
int commonsextet_p( int *table, int *pointt )
{
int value = 0;
- int tmp;
+ unsigned int tmp;
int point;
static TLS int *memo = NULL;
static TLS int *ct = NULL;
@@ -15407,6 +15409,7 @@ int commonsextet_p( int *table, int *pointt )
if( tmp < table[point] )
value++;
if( tmp == 0 ) *cp++ = point;
+// overflow kakunin shinai
}
*cp = END_OF_VEC;
=====================================
core/pairlocalalign.c
=====================================
@@ -1634,6 +1634,7 @@ static void arguments( int argc, char *argv[] )
usenaivescoreinsteadofalignmentscore = 0;
specifictarget = 0;
nwildcard = 0;
+ distout = 'c'; // 2023/Jun; kyori gyouretsu wo tsuneni shutsuryoku.
// reporterr( "argc=%d\n", argc );
// reporterr( "*argv=%s\n", *argv );
=====================================
core/sextet5.c
=====================================
@@ -81,7 +81,7 @@ void seq_grp( int *grp, char *seq )
*grp = END_OF_VEC;
}
-void makecompositiontable_p( short *table, int *pointt )
+void makecompositiontable_p( int *table, int *pointt )
{
int point;
@@ -89,18 +89,18 @@ void makecompositiontable_p( short *table, int *pointt )
table[point]++;
}
-static int localcommonsextet_p( short *table, int *pointt )
+static int localcommonsextet_p( int *table, int *pointt )
{
int value = 0;
- short tmp;
+ int tmp;
int point;
- static short *memo = NULL;
+ static int *memo = NULL;
static int *ct = NULL;
static int *cp;
if( !memo )
{
- memo = (short *)calloc( tsize, sizeof( short ) );
+ memo = (int *)calloc( tsize, sizeof( int ) );
if( !memo ) ErrorExit( "Cannot allocate memo\n" );
ct = (int *)calloc( MIN( maxl, tsize)+1, sizeof( int ) );
if( !ct ) ErrorExit( "Cannot allocate memo\n" );
@@ -185,7 +185,7 @@ int main( int argc, char **argv )
double **mtx;
double **mtx2;
double score, score0;
- static short *table1;
+ static int *table1;
char b[B];
arguments( argc, argv );
@@ -261,7 +261,7 @@ int main( int argc, char **argv )
}
for( i=0; i<njob; i++ )
{
- table1 = (short *)calloc( tsize, sizeof( short ) );
+ table1 = (int *)calloc( tsize, sizeof( int ) );
if( !table1 ) ErrorExit( "Cannot allocate table1\n" );
if( i % 10 == 0 )
{
=====================================
core/splittbfast.c
=====================================
@@ -837,26 +837,36 @@ int seq_grp( int *grp, char *seq )
return( grp-grpbk );
}
-void makecompositiontable_p( short *table, int *pointt )
+void makecompositiontable_p( int *table, int *pointt )
{
int point;
while( ( point = *pointt++ ) != END_OF_VEC )
+ {
+#if 0
table[point]++;
+#else
+ if( (unsigned int)table[point]++ >= INT_MAX )
+ {
+ reporterr( "Overflow. table[point]=%d>INT_MAX(%d).\n", table[point], INT_MAX );
+ exit( 1 );
+ }
+#endif
+ }
}
-static int localcommonsextet_p( short *table, int *pointt )
+static int localcommonsextet_p( int *table, int *pointt )
{
int value = 0;
- short tmp;
+ unsigned int tmp;
int point;
- static short *memo = NULL;
+ static int *memo = NULL;
static int *ct = NULL;
static int *cp;
if( !memo )
{
- memo = (short *)calloc( tsize, sizeof( short ) );
+ memo = (int *)calloc( tsize, sizeof( int ) );
if( !memo ) ErrorExit( "Cannot allocate memo\n" );
ct = (int *)calloc( MIN( maxl, tsize )+1, sizeof( int ) );
if( !ct ) ErrorExit( "Cannot allocate memo\n" );
@@ -869,6 +879,14 @@ static int localcommonsextet_p( short *table, int *pointt )
if( tmp < table[point] )
value++;
if( tmp == 0 ) *cp++ = point;
+#if 0
+ if( tmp >= INT_MAX )
+ {
+ reporterr( "Overflow.\n" );
+ reporterr( "cp-ct=%d, point=%d, tmp=%d, memo[point]=%d>INT_MAX(%d)\n", cp-ct, point, tmp, memo[point], INT_MAX );
+ exit( 1 );
+ }
+#endif
}
*cp = END_OF_VEC;
@@ -1167,7 +1185,7 @@ static int splitseq_mq( Scores *scores, int nin, int *nlen, char **seq, char **o
double **dfromcp;
double **pickmtx;
double **yukomtx;
- static short *table1;
+ static int *table1;
Scores **outs, *ptr;
int *numin;
int *tsukau;
@@ -1368,7 +1386,7 @@ static int splitseq_mq( Scores *scores, int nin, int *nlen, char **seq, char **o
}
else
{
- table1 = (short *)calloc( tsize, sizeof( short ) );
+ table1 = (int *)calloc( tsize, sizeof( int ) );
if( !table1 ) ErrorExit( "Cannot allocate table1\n" );
makecompositiontable_p( table1, scores[0].pointt );
}
@@ -1632,7 +1650,7 @@ exit( 1 );
}
else
{
- table1 = (short *)calloc( tsize, sizeof( short ) );
+ table1 = (int *)calloc( tsize, sizeof( int ) );
if( !table1 ) ErrorExit( "Cannot allocate table1\n" );
makecompositiontable_p( table1, scores[picks[j]].pointt );
}
@@ -2128,7 +2146,7 @@ exit( 1 );
}
else
{
- table1 = (short *)calloc( tsize, sizeof( short ) );
+ table1 = (int *)calloc( tsize, sizeof( int ) );
if( !table1 ) ErrorExit( "Cannot allocate table1\n" );
makecompositiontable_p( table1, scores[yukos[i]].pointt );
}
@@ -2685,7 +2703,7 @@ int main( int argc, char *argv[] )
int aan;
static Scores *scores;
- static short *table1;
+ static int *table1;
static char **tree;
@@ -2991,7 +3009,7 @@ int main( int argc, char *argv[] )
}
else
{
- table1 = (short *)calloc( tsize, sizeof( short ) );
+ table1 = (int *)calloc( tsize, sizeof( int ) );
if( !table1 ) ErrorExit( "Cannot allocate table1\n" );
makecompositiontable_p( table1, pointt[i] );
scores[i].selfscore = localcommonsextet_p( table1, pointt[i] );
=====================================
core/tbfast.c
=====================================
@@ -10,7 +10,6 @@
static int treein;
static int topin;
static int treeout;
-static int distout;
static int noalign;
static int multidist;
static int subalignment;
@@ -343,8 +342,15 @@ static void arguments( int argc, char *argv[], int *pac, char **pav, int *tac, c
addprofile = 0;
break;
case 'y':
- distout = 1;
- break;
+ distout = *(*++argv);
+ reporterr( "distout=%c\n", distout );
+ if( distout != 'c' && distout != 'h' )
+ {
+ reporterr( "Set -y c or -y h in v>=7.521.\n" );
+ exit( 1 );
+ }
+ --argc;
+ goto nextoption;
case 't':
treeout = 1;
break;
=====================================
core/tditeration.c
=====================================
@@ -246,7 +246,6 @@ static void Writeoptions( FILE *fp )
}
}
-#ifdef enablemultithread
static void freelocalarrays(
double *tscorehistory,
@@ -327,6 +326,7 @@ static void freelocalarrays(
}
}
+#ifdef enablemultithread
static void *athread( void *arg )
{
=====================================
readme → readme.bk
=====================================
@@ -1,6 +1,6 @@
-----------------------------------------------------------------------
MAFFT: a multiple sequence alignment program
- version 7.505, 2022/Apr/10
+ version 7.507, 2022/Aug/8
http://mafft.cbrc.jp/alignment/software/
katoh at ifrec.osaka-u.ac.jp
=====================================
test/x
=====================================
@@ -0,0 +1,504 @@
+> 1== M63632 1 Lampetra japonica rhodopsin <>[BBRC174,1125-1132'91]
+----------------------------------------MNG-----------------
+TE--GDNFYVP-----FSNKTGLARSPYEYPQY---------------YLAEPWK-----
+----YSALAAYMFFLILVGFPVNFLTLFVTVQHKKLRTPLNYILLNLAMANLFMVLFG-F
+TVTMYTSMN-GYFV--FGPTMCSIEGFFATLGGEVALWSLVVLAIERYIVICKPMGN-FR
+FGNTHAIMGVAFTWIMALAC-AAPPLVG-W-----SRYIPEGMQCSCGPDYYTLNPNFNN
+ESYVVYMFVVHFLVPFVIIFFCYGRLLCTV----KEAAAAQQ------------------
+------------------------------------------------------------
+------------------------------------------------------------
+-----------------ESASTQK------AEKEVTRMVVLMVIGFLVCWVPYASVAFYI
+FTHQGS---DFGATFMTLPAFFAKSSALYNPVIYILMNKQFRNCMITTLCC--------G
+KNPLGDDE--SGASTSKTEVSSVS-TSPVSPA----------------------------
+------------------------------------------------------------
+-
+> 2== U22180 1 rat opsin <rod>[J.Mol.Neurosci.5(3),207-209'94]
+----------------------------------------MNG-----------------
+TE--GPNFYVP-----FSNITGVVRSPFEQPQY---------------YLAEPWQ-----
+----FSMLAAYMFLLIVLGFPINFLTLYVTVQHKKLRTPLNYILLNLAVADLFMVFGG-F
+TTTLYTSLH-GYFV--FGPTGCNLEGFFATLGGEIGLWSLVVLAIERYVVVCKPMSN-FR
+FGENHAIMGVAFTWVMALAC-AAPPLVG-W-----SRYIPEGMQCSCGIDYYTLKPEVNN
+ESFVIYMFVVHFTIPMIVIFFCYGQLVFTV----KEAAAQQQ------------------
+------------------------------------------------------------
+------------------------------------------------------------
+-----------------ESATTQK------AEKEVTRMVIIMVIFFLICWLPYASVAMYI
+FTHQGS---NFGPIFMTLPAFFAKTASIYNPIIYIMMNKQFRNCMLTSLCC--------G
+KNPLGDDE--ASATASKTE------TSQVAPA----------------------------
+------------------------------------------------------------
+-
+> 3== M92038 1 chicken green sensitive cone opsin <retina>[PNAS89,5932-5936'9
+----------------------------------------MNG-----------------
+TE--GINFYVP-----MSNKTGVVRSPFEYPQY---------------YLAEPWK-----
+----YRLVCCYIFFLISTGLPINLLTLLVTFKHKKLRQPLNYILVNLAVADLFMACFG-F
+TVTFYTAWN-GYFV--FGPVGCAVEGFFATLGGQVALWSLVVLAIERYIVVCKPMGN-FR
+FSATHAMMGIAFTWVMAFSC-AAPPLFG-W-----SRYMPEGMQCSCGPDYYTHNPDYHN
+ESYVLYMFVIHFIIPVVVIFFSYGRLICKV----REAAAQQQ------------------
+------------------------------------------------------------
+------------------------------------------------------------
+-----------------ESATTQK------AEKEVTRMVILMVLGFMLAWTPYAVVAFWI
+FTNKGA---DFTATLMAVPAFFSKSSSLYNPIIYVLMNKQFRNCMITTICC--------G
+KNPFGDEDVSSTVSQSKTEVSSVS-SSQVSPA----------------------------
+------------------------------------------------------------
+-
+> 4=p A45229 opsin, green-sensitive (clone GFgr-1) - goldfish
+----------------------------------------MNG-----------------
+TE--GKNFYVP-----MSNRTGLVRSPFEYPQY---------------YLAEPWQ-----
+----FKILALYLFFLMSMGLPINGLTLVVTAQHKKLRQPLNFILVNLAVAGTIMVCFG-F
+TVTFYTAIN-GYFV--LGPTGCAVEGFMATLGGEVALWSLVVLAIERYIVVCKPMGS-FK
+FSSSHAFAGIAFTWVMALAC-AAPPLFG-W-----SRYIPEGMQCSCGPDYYTLNPDYNN
+ESYVIYMFVCHFILPVAVIFFTYGRLVCTV----KAAAAQQQ------------------
+------------------------------------------------------------
+------------------------------------------------------------
+-----------------DSASTQK------AEREVTKMVILMVFGFLIAWTPYATVAAWI
+FFNKGA---DFSAKFMAIPAFFSKSSALYNPVIYVLLNKQFRNCMLTTIFC--------G
+KNPLGDDE-SSTVSTSKTEVSS------VSPA----------------------------
+------------------------------------------------------------
+-
+> 5=p B45229 opsin, green-sensitive (clone GFgr-2) - goldfish
+----------------------------------------MNG-----------------
+TE--GNNFYVP-----LSNRTGLVRSPFEYPQY---------------YLAEPWQ-----
+----FKLLAVYMFFLICLGLPINGLTLICTAQHKKLRQPLNFILVNLAVAGAIMVCFG-F
+TVTFYTAIN-GYFA--LGPTGCAVEGFMATLGGEVALWSLVVLAIERYIVVCKPMGS-FK
+FSSTHASAGIAFTWVMAMAC-AAPPLVG-W-----SRYIPEGIQCSCGPDYYTLNPEYNN
+ESYVLYMFICHFILPVTIIFFTYGRLVCTV----KAAAAQQQ------------------
+------------------------------------------------------------
+------------------------------------------------------------
+-----------------DSASTQK------AEREVTKMVILMVLGFLVAWTPYATVAAWI
+FFNKGA---AFSAQFMAIPAFFSKTSALYNPVIYVLLNKQFRSCMLTTLFC--------G
+KNPLGDEE-SSTVSTSKTEVSS------VSPA----------------------------
+------------------------------------------------------------
+-
+> 6== L11864 1 Carassius auratus blue cone opsin <retina>[Biochemistry32,208-
+----------------------------------------MKQ-----------------
+VPEFHEDFYIPI-PLDINNLS--AYSPFLVPQD---------------HLGNQGI-----
+----FMAMSVFMFFIFIGGASINILTILCTIQFKKLRSHLNYILVNLSIANLFVAIFG-S
+PLSFYSFFN-RYFI--FGATACKIEGFLATLGGMVGLWSLAVVAFERWLVICKPLGN-FT
+FKTPHAIAGCILPWISALAA-SLPPLFG-W-----SRYIPEGLQCSCGPDWYTTNNKYNN
+ESYVMFLFCFCFAVPFGTIVFCYGQLLITL----KLAAKAQA------------------
+------------------------------------------------------------
+------------------------------------------------------------
+-----------------DSASTQK------AEREVTKMVVVMVLGFLVCWAPYASFSLWI
+VSHRGE---EFDLRMATIPSCLSKASTVYNPVIYVLMNKQFRSCMM-KMVC--------G
+KN-IEEDE--ASTSSQVTQVSS------VAPEK---------------------------
+------------------------------------------------------------
+-
+> 7== M13299 1 human BCP <>[Science232(4747),193-202'86]
+----------------------------------------MRK-----------------
+MS--EEEFYL------FKNIS--SVGPWDGPQY---------------HIAPVWA-----
+----FYLQAAFMGTVFLIGFPLNAMVLVATLRYKKLRQPLNYILVNVSFGGFLLCIFS-V
+FPVFVASCN-GYFV--FGRHVCALEGFLGTVAGLVTGWSLAFLAFERYIVICKPFGN-FR
+FSSKHALTVVLATWTIGIGV-SIPPFFG-W-----SRFIPEGLQCSCGPDWYTVGTKYRS
+ESYTWFLFIFCFIVPLSLICFSYTQLLRAL----KAVAAQQQ------------------
+------------------------------------------------------------
+------------------------------------------------------------
+-----------------ESATTQK------AEREVSRMVVVMVGSFCVCYVPYAAFAMYM
+VNNRNH---GLDLRLVTIPSFFSKSACIYNPIIYCFMNKQFQACIM-KMVC--------G
+KA-MTDES--DTCSSQKTEVSTVS-STQVGPN----------------------------
+------------------------------------------------------------
+-
+> 8=opsin, greensensitive human (fragment) S07060
+------------------------------------------------------------
+------------------------------------------------------------
+--------------------------------------------------DLAETVIA-S
+TISIVNQVS-GYFV--LGHPMCVLEGYTVSLCGITGLWSLAIISWERWLVVCKPFGN-VR
+FDAKLAIVGIAFSWIWAAVW-TAPPIFG-W-----SRYWPHGLKTSCGPDVFSGSSYPGV
+QSYMIVLMVTCCITPLSIIVLCYLQVWLAI----RAVAKQQK------------------
+------------------------------------------------------------
+------------------------------------------------------------
+-----------------ESESTQK------AEKEVTRMVVVMVLAFC-------------
+------------------------------------------------------------
+------------------------------------------------------------
+------------------------------------------------------------
+-
+> 9== K03494 1 human GCP <>[Science232(4747),193-202'86]
+----------------------------------------MAQQWSLQRLAGRHPQDSYE
+DSTQSSIFTYTN--------SNSTRGPFEGPNY---------------HIAPRWV-----
+----YHLTSVWMIFVVIASVFTNGLVLAATMKFKKLRHPLNWILVNLAVADLAETVIA-S
+TISVVNQVY-GYFV--LGHPMCVLEGYTVSLCGITGLWSLAIISWERWMVVCKPFGN-VR
+FDAKLAIVGIAFSWIWAAVW-TAPPIFG-W-----SRYWPHGLKTSCGPDVFSGSSYPGV
+QSYMIVLMVTCCITPLSIIVLCYLQVWLAI----RAVAKQQK------------------
+------------------------------------------------------------
+------------------------------------------------------------
+-----------------ESESTQK------AEKEVTRMVVVMVLAFCFCWGPYAFFACFA
+AANPGY---PFHPLMAALPAFFAKSATIYNPVIYVFMNRQFRNCILQLF----------G
+KK-VDDGS--ELSSASKTEVSSV---SSVSPA----------------------------
+------------------------------------------------------------
+-
+> 10== Z68193 1 human Red Opsin <>[]
+----------------------------------------MAQQWSLQRLAGRHPQDSYE
+DSTQSSIFTYTN--------SNSTRGPFEGPNY---------------HIAPRWV-----
+----YHLTSVWMIFVVTASVFTNGLVLAATMKFKKLRHPLNWILVNLAVADLAETVIA-S
+TISIVNQVS-GYFV--LGHPMCVLEGYTVSLCGITGLWSLAIISWERWLVVCKPFGN-VR
+FDAKLAIVGIAFSWIWSAVW-TAPPIFG-W-----SRYWPHGLKTSCGPDVFSGSSYPGV
+QSYMIVLMVTCCIIPLAIIMLCYLQVWLAI----RAVAKQQK------------------
+------------------------------------------------------------
+------------------------------------------------------------
+-----------------ESESTQK------AEKEVTRMVVVMIFAYCVCWGPYTFFACFA
+AANPGY---AFHPLMAALPAYFAKSATIYNPVIYVFMNRQFRNCILQLF----------G
+KK-VDDGS--ELSSASKTEVSSV---SSVSPA----------------------------
+------------------------------------------------------------
+-
+> 11== M92036 1 Gecko gecko P521 <retina>[PNAS89,6841-6845'92]
+----------------------------------------MTEAWNVAVFAARRSRDD-D
+DTTRGSVFTYTN--------TNNTRGPFEGPNY---------------HIAPRWV-----
+----YNLVSFFMIIVVIASCFTNGLVLVATAKFKKLRHPLNWILVNLAFVDLVETLVA-S
+TISVFNQIF-GYFI--LGHPLCVIEGYVVSSCGITGLWSLAIISWERWFVVCKPFGN-IK
+FDSKLAIIGIVFSWVWAWGW-SAPPIFG-W-----SRYWPHGLKTSCGPDVFSGSVELGC
+QSFMLTLMITCCFLPLFIIIVCYLQVWMAI----RAVAAQQK------------------
+------------------------------------------------------------
+------------------------------------------------------------
+-----------------ESESTQK------AEREVSRMVVVMIVAFCICWGPYASFVSFA
+AANPGY---AFHPLAAALPAYFAKSATIYNPVIYVFMNRQFRNCIMQLF----------G
+KK-VDDGS--EASTTSRTEVSSVS-NSSVAPA----------------------------
+------------------------------------------------------------
+-
+> 12== M62903 1 chicken visual pigment <>[BBRC173,1212-1217'90]
+----------------------------------------MAA-WEAA-FAARRRHEE-E
+DTTRDSVFTYTN--------SNNTRGPFEGPNY---------------HIAPRWV-----
+----YNLTSVWMIFVVAASVFTNGLVLVATWKFKKLRHPLNWILVNLAVADLGETVIA-S
+TISVINQIS-GYFI--LGHPMCVVEGYTVSACGITALWSLAIISWERWFVVCKPFGN-IK
+FDGKLAVAGILFSWLWSCAW-TAPPIFG-W-----SRYWPHGLKTSCGPDVFSGSSDPGV
+QSYMVVLMVTCCFFPLAIIILCYLQVWLAI----RAVAAQQK------------------
+------------------------------------------------------------
+------------------------------------------------------------
+-----------------ESESTQK------AEKEVSRMVVVMIVAYCFCWGPYTFFACFA
+AANPGY---AFHPLAAALPAYFAKSATIYNPIIYVFMNRQFRNCILQLF----------G
+KK-VDDGS--EVST-SRTEVSSVS-NSSVSPA----------------------------
+------------------------------------------------------------
+-
+> 13== S75720 1 chicken P-opsin <>[Science267(5203),1502-1506'95]
+----------------------------------------MSS-----------------
+----NSSQAPPN-G---------TPGPFDGPQWP--------------YQAPQST-----
+----YVGVAVLMGTVVACASVVNGLVIVVSICYKKLRSPLNYILVNLAVADLLVTLCG-S
+SVSLSNNIN-GFFV--FGRRMCELEGFMVSLTGIVGLWSLAILALERYVVVCKPLGD-FQ
+FQRRHAVSGCAFTWGWALLW-SAPPLLG-W-----SSYVPEGLRTSCGPNWYTGGS--NN
+NSYILSLFVTCFVLPLSLILFSYTNLLLTL----RAAAAQQK------------------
+------------------------------------------------------------
+------------------------------------------------------------
+-----------------EADTTQR------AEREVTRMVIVMVMAFLLCWLPYSTFALVV
+ATHKGI---IIQPVLASLPSYFSKTATVYNPIIYVFMNKQFQSCLLEMLCC--------G
+YQPQRTGKASPGTPGPHADVTAAGLRNKVMPAH---------------------------
+----------------------------------------PV------------------
+-
+> 14== M17718 1 D.melanogaster Rh3 <>[J.Neurosci.7,1550-1557'87]
+----------MESGN-----VS--------SSLFGNVSTALRP-----------------
+EARLSAE-----------TRLLGWNVPPEELR----------------HIPEHWLTYPEP
+PESMNYLLGTLYIFFTLMSMLGNGLVIWVFSAAKSLRTPSNILVINLAFCDFMMMVK--T
+PIFIYNSFH-QGYA--LGHLGCQIFGIIGSYTGIAAGATNAFIAYDRFNVITRPMEG--K
+MTHGKAIAMIIFIYMYATPW-VVACYTETW-----GRFVPEGYLTSCTFDYLT--DNFDT
+RLFVACIFFFSFVCPTTMITYYYSQIVGHVFSHEKALRDQAKK-----------------
+----------------------------------------------------------MN
+-----------VESL---------------------------------------------
+--------------RSNVDKNKET------AEIRIAKAAITICFLFFCSWTPYGVMSLIG
+AFGDKT---LLTPGATMIPACACKMVACIDPFVYAISHPRYRMELQKRCPWLAL------
+---NEKAP--ESSAVASTSTTQEP--QQTTAA----------------------------
+------------------------------------------------------------
+-
+> 15== X65879 1 Drosophila pseudoobscura Dpse\Rh3 <>[Genetics132(1),193-204'92
+----------MEYHN-----VS---------SVLGNVSSVLRP-----------------
+DARLSAE-----------SRLLGWNVPPDELR----------------HIPEHWLIYPEP
+PESMNYLLGTLYIFFTVISMIGNGLVMWVFSAAKSLRTPSNILVINLAFCDFMMMIK--T
+PIFIYNSFH-QGYA--LGHLGCQIFGVIGSYTGIAAGATNAFIAYDRYNVITRPMEG--K
+MTHGKAIAMIIFIYLYATPW-VVACYTESW-----GRFVPEGYLTSCTFDYLT--DNFDT
+RLFVACIFFFSFVCPTTMITYYYSQIVGHVFSHEKALRDQAKK-----------------
+----------------------------------------------------------MN
+-----------VDSL---------------------------------------------
+--------------RSNVDKSKEA------AEIRIAKAAITICFLFFASWTPYGVMSLIG
+AFGDKT---LLTPGATMIPACTCKMVACIDPFVYAISHPRYRMELQKRCPWLAI------
+---SEKAP--ESRAAISTSTTQEQ--QQTTAA----------------------------
+------------------------------------------------------------
+-
+> 16== M17730 1 D.melanogaster Rh4 opsin <>[J.Neurosci.7,1558-1566'87]
+----------ME-------------------PLCNASEPPLRP-----------------
+EARSSGN---------GDLQFLGWNVPPDQIQ----------------YIPEHWLTQLEP
+PASMHYMLGVFYIFLFCASTVGNGMVIWIFSTSKSLRTPSNMFVLNLAVFDLIMCLK--A
+PIF--NSFH-RGFAIYLGNTWCQIFASIGSYSGIGAGMTNAAIGYDRYNVITKPMNR--N
+MTFTKAVIMNIIIWLYCTPW-VVLPLTQFW-----DRFVPEGYLTSCSFDYLS--DNFDT
+RLFVGTIFFFSFVCPTLMILYYYSQIVGHVFSHEKALREQAKK-----------------
+----------------------------------------------------------MN
+-----------VESL---------------------------------------------
+--------------RSNVDKSKET------AEIRIAKAAITICFLFFVSWTPYGVMSLIG
+AFGDKS---LLTQGATMIPACTCKLVACIDPFVYAISHPRYRLELQKRCPWLGV------
+---NEKSG--EISSAQSTTTQEQ---QQTTAA----------------------------
+------------------------------------------------------------
+-
+> 17== X65880 1 Drosophila pseudoobscura Dpse\Rh4 <>[Genetics132(1),193-204'92
+----------MD-------------------ALCNASEPPLRP-----------------
+EARMSSG--------SDELQFLGWNVPPDQIQ----------------YIPEHWLTQLEP
+PASMHYMLGVFYIFLFFASTLGNGMVIWIFSTSKSLRTPSNMFVLNLAVFDLIMCLK--A
+PIFIYNSFH-RGFA--LGNTWCQIFASIGSYSGIGAGMTNAAIGYDRYNVITKPMNR--N
+MTFTKAVIMNIIIWLYCTPW-VVLPLTQFW-----DRFVPEGYLTSCSFDYLS--DNFDT
+RLFVGTIFLFSFVVPTLMILYYYSQIVGHVFNHEKALREQAKK-----------------
+----------------------------------------------------------MN
+-----------VESL---------------------------------------------
+--------------RSNVDKSKET------AEIRIAKAAITICFLFFVSWTPYGVMSLIG
+AFGDKS---LLTPGATMIPACTCKLVACIEPFVYAISHPRYRMELQKRCPWLGV------
+---NEKSG--EASSAQSTTTQEQT--QQTSAA----------------------------
+------------------------------------------------------------
+-
+> 18== D50584 1 Hemigrapsus sanguineus opsin BcRh2 <compound eye>[J.Exp.Biol.1
+--------------------------------MTNATGPQMAY-----------------
+YGAASMDFGYP------EGVSIVDFVRPEIKP----------------YVHQHWYNYPPV
+NPMWHYLLGVIYLFLGTVSIFGNGLVIYLFNKSAALRTPANILVVNLALSDLIMLTTN-V
+PFFTYNCFSGGVWM--FSPQYCEIYACLGAITGVCSIWLLCMISFDRYNIICNGFNG-PK
+LTTGKAVVFALISWVIAIGC-ALPPFFG-W-----GNYILEGILDSCSYDYLT--QDFNT
+FSYNIFIFVFDYFLPAAIIVFSYVFIVKAIFAHEAAMRAQAKK-----------------
+----------------------------------------------------------MN
+-----------VSTL---------------------------------------------
+--------------RS-NEADAQR------AEIRIAKTALVNVSLWFICWTPYALISLKG
+VMGDTS---GITPLVSTLPALLAKSCSCYNPFVYAISHPKYRLAITQHLPWFCV------
+HE-TETKS--NDDSQSNSTVAQDK-A----------------------------------
+------------------------------------------------------------
+-
+> 19== D50583 1 Hemigrapsus sanguineus opsin BcRh1 <compound eye>[J.Exp.Biol.1
+--------------------------------MANVTGPQMAF-----------------
+YGSGAATFGYP------EGMTVADFVPDRVKH----------------MVLDHWYNYPPV
+NPMWHYLLGVVYLFLGVISIAGNGLVIYLYMKSQALKTPANMLIVNLALSDLIMLTTN-F
+PPFCYNCFSGGRWM--FSGTYCEIYAALGAITGVCSIWTLCMISFDRYNIICNGFNG-PK
+LTQGKATFMCGLAWVISVGW-SLPPFFG-W-----GSYTLEGILDSCSYDYFT--RDMNT
+ITYNICIFIFDFFLPASVIVFSYVFIVKAIFAHEAAMRAQAKK-----------------
+----------------------------------------------------------MN
+-----------VTNL---------------------------------------------
+--------------RS-NEAETQR------AEIRIAKTALVNVSLWFICWTPYAAITIQG
+LLGNAE---GITPLLTTLPALLAKSCSCYNPFVYAISHPKFRLAITQHLPWFCV------
+HE-KDPND--VEENQSSNTQTQEK-S----------------------------------
+------------------------------------------------------------
+-
+> 20== K02320 1 D.melanogaster opsin <>[Cell40,851-858'85]
+----------MESF----------------AVAAAQLGPHFAP-----------------
+LS----------------NGSVVDKVTPDMAH----------------LISPYWNQFPAM
+DPIWAKILTAYMIMIGMISWCGNGVVIYIFATTKSLRTPANLLVINLAISDFGIMITN-T
+PMMGINLYF-ETWV--LGPMMCDIYAGLGSAFGCSSIWSMCMISLDRYQVIVKGMAG-RP
+MTIPLALGKM---------------------------YVPEGNLTSCGIDYLE--RDWNP
+RSYLIFYSIFVYYIPLFLICYSYWFIIAAVSAHEKAMREQAKK-----------------
+----------------------------------------------------------MN
+-----------VKSL---------------------------------------------
+--------------RS-SEDAEKS------AEGKLAKVALVTITLWFMAWTPYLVINCMG
+LFKF-E---GLTPLNTIWGACFAKSAACYNPIVYGISHPKYRLALKEKCPCCVF------
+GK-VDDGK--SSDAQSQA-TASEA-ESKA-------------------------------
+------------------------------------------------------------
+-
+> 21== K02315 1 D.melanogaster ninaE <>[Cell40,839-850'85]
+----------MESF----------------AVAAAQLGPHFAP-----------------
+LS----------------NGSVVDKVTPDMAH----------------LISPYWNQFPAM
+DPIWAKILTAYMIMIGMISWCGNGVVIYIFATTKSLRTPANLLVINLAISDFGIMITN-T
+PMMGINLYF-ETWV--LGPMMCDIYAGLGSAFGCSSIWSMCMISLDRYQVIVKGMAG-RP
+MTIPLALGKIAYIWFMSSIW-CLAPAFG-W-----SRYVPEGNLTSCGIDYLE--RDWNP
+RSYLIFYSIFVYYIPLFLICYSYWFIIAAVSAHEKAMREQAKK-----------------
+----------------------------------------------------------MN
+-----------VKSL---------------------------------------------
+--------------RS-SEDAEKS------AEGKLAKVALVTITLWFMAWTPYLVINCMG
+LFKF-E---GLTPLNTIWGACFAKSAACYNPIVYGISHPKYRLALKEKCPCCVF------
+GK-VDDGK--SSDAQSQA-TASEA-ESKA-------------------------------
+------------------------------------------------------------
+-
+> 22== X65877 1 Drosophila pseudoobscura Dpse\ninaE <>[Genetics132(1),193-204'
+----------MDSF----------------AAVATQLGPQFAA-----------------
+PS----------------NGSVVDKVTPDMAH----------------LISPYWDQFPAM
+DPIWAKILTAYMIIIGMISWCGNGVVIYIFATTKSLRTPANLLVINLAISDFGIMITN-T
+PMMGINLYF-ETWV--LGPMMCDIYAGLGSAFGCSSIWSMCMISLDRYQVIVKGMAG-RP
+MTIPLALGKIAYIWFMSTIWCCLAPVFG-W-----SRYVPEGNLTSCGIDYLE--RDWNP
+RSYLIFYSIFVYYIPLFLICYSYWFIIAAVSAHEKAMREQAKK-----------------
+----------------------------------------------------------MN
+-----------VKSL---------------------------------------------
+--------------RS-SEDADKS------AEGKLAKVALVTISLWFMAWTPYLVINCMG
+LFKF-E---GLTPLNTIWGACFAKSAACYNPIVYGISHPKYRLALKEKCPCCVF------
+GK-VDDGK--SSEAQSQA-TTSEA-ESKA-------------------------------
+------------------------------------------------------------
+-
+> 23== M12896 1 D.melanogaster Rh2 <>[Cell44,705-710'86]
+MER-----SHLPET----------------PFDLAHSGPRFQA-----------------
+QSSG--------------NGSVLDNVLPDMAH----------------LVNPYWSRFAPM
+DPMMSKILGLFTLAIMIISCCGNGVVVYIFGGTKSLRTPANLLVLNLAFSDFCMMASQ-S
+PVMIINFYY-ETWV--LGPLWCDIYAGCGSLFGCVSIWSMCMIAFDRYNVIVKGING-TP
+MTIKTSIMKILFIWMMAVFW-TVMPLIG-W-----SAYVPEGNLTACSIDYMT--RMWNP
+RSYLITYSLFVYYTPLFLICYSYWFIIAAVAAHEKAMREQAKK-----------------
+----------------------------------------------------------MN
+-----------VKSL---------------------------------------------
+--------------RS-SEDCDKS------AEGKLAKVALTTISLWFMAWTPYLVICYFG
+LFKI-D---GLTPLTTIWGATFAKTSAVYNPIVYGISHPKYRIVLKEKCPMCVF------
+GN-TDEPK--PDAPASDTETTSEA-DSKA-------------------------------
+------------------------------------------------------------
+-
+> 24== X65878 1 Drosophila pseudoobscura Dpse\Rh2 <>[Genetics132(1),193-204'92
+MER-----SLLPEP----------------PLAMALLGPRFEA-----------------
+QTGG--------------NRSVLDNVLPDMAP----------------LVNPHWSRFAPM
+DPTMSKILGLFTLVILIISCCGNGVVVYIFGGTKSLRTPANLLVLNLAFSDFCMMASQ-S
+PVMIINFYY-ETWV--LGPLWCDIYAACGSLFGCVSIWSMCMIAFDRYNVIVKGING-TP
+MTIKTSIMKIAFIWMMAVFW-TIMPLIG-W-----SSYVPEGNLTACSIDYMT--RQWNP
+RSYLITYSLFVYYTPLFMICYSYWFIIATVAAHEKAMRDQAKK-----------------
+----------------------------------------------------------MN
+-----------VKSL---------------------------------------------
+--------------RS-SEDCDKS------AENKLAKVALTTISLWFMAWTPYLIICYFG
+LFKI-D---GLTPLTTIWGATFAKTSAVYNPIVYGISHPNDRLVLKEKCPMCVC------
+GT-TDEPK--PDAPPSDTETTSEA-ESKD-------------------------------
+------------------------------------------------------------
+-
+> 25== U26026 1 Apis mellifera long-wavelength rhodopsin <>[]
+--------------------------------MIAVSGPSYEA-----------------
+FSYGGQA--------RFNNQTVVDKVPPDMLH----------------LIDANWYQYPPL
+NPMWHGILGFVIGMLGFVSAMGNGMVVYIFLSTKSLRTPSNLFVINLAISNFLMMFCM-S
+PPMVINCYY-ETWV--LGPLFCQIYAMLGSLFGCGSIWTMTMIAFDRYNVIVKGLSG-KP
+LSINGALIRIIAIWLFSLGW-TIAPMFG-W-----NRYVPEGNMTACGTDYFN--RGLLS
+ASYLVCYGIWVYFVPLFLIIYSYWFIIQAVAAHEKNMREQAKK-----------------
+----------------------------------------------------------MN
+-----------VASL---------------------------------------------
+--------------RS-SENQNTS------AECKLAKVALMTISLWFMAWTPYLVINFSG
+IFNL-V---KISPLFTIWGSLFAKANAVYNPIVYGISHPKYRAALFAKFPSLAC------
+-A-AEPSS--DAVSTTSGTTTVTD-NEKSNA-----------------------------
+------------------------------------------------------------
+-
+> 26== L03781 1 Limulus polyphemus opsin <>[PNAS90,6150-6154'93]
+MAN---------------------------QLSYSSLGWPYQP-----------------
+------------------NASVVDTMPKEMLY----------------MIHEHWYAFPPM
+NPLWYSILGVAMIILGIICVLGNGMVIYLMMTTKSLRTPTNLLVVNLAFSDFCMMAFM-M
+PTMTSNCFA-ETWI--LGPFMCEVYGMAGSLFGCASIWSMVMITLDRYNVIVRGMAA-AP
+LTHKKATLLLLFVWIWSGGW-TILPFFG-W-----SRYVPEGNLTSCTVDYLT--KDWSS
+ASYVVIYGLAVYFLPLITMIYCYFFIVHAVAEHEKQLREQAKK-----------------
+----------------------------------------------------------MN
+-----------VASL---------------------------------------------
+--------------RANADQQKQS------AECRLAKVAMMTVGLWFMAWTPYLIISWAG
+VFSSGT---RLTPLATIWGSVFAKANSCYNPIVYGISHPRYKAALYQRFPSLAC------
+GS-GESGS--DVKSEASATTTMEE-KPKIPEA----------------------------
+------------------------------------------------------------
+-
+> 27== X07797 1 Octopus dofleini rhodopsin <>[FEBS232(1),69-72'88]
+---------------------------------------MVES-----------------
+TTLVNQTWWY--------NPTVD--------------------------IHPHWAKFDPI
+PDAVYYSVGIFIGVVGIIGILGNGVVIYLFSKTKSLQTPANMFIINLAMSDLSFSAINGF
+PLKTISAFM-KKWI--FGKVACQLYGLLGGIFGFMSINTMAMISIDRYNVIGRPMAASKK
+MSHRRAFLMIIFVWMWSIVW-SVGPVFN-W-----GAYVPEGILTSCSFDYLS--TDPST
+RSFILCMYFCGFMLPIIIIAFCYFNIVMSVSNHEKEMAAMAKR-----------------
+----------------------------------------------------------LN
+-----------AKEL---------------------------------------------
+--------------R--KAQAGAS------AEMKLAKISMVIITQFMLSWSPYAIIALLA
+QFGPAE---WVTPYAAELPVLFAKASAIHNPIVYSVSHPKFREAIQTTFPWLLTCCQFDE
+KE-CEDAN--DAEEEVVASER--G-GESRDAAQMKEMMAMMQKMQAQQAAYQPPPPPQGY
+--PPQGYPPQGAYPPPQGYPPQGYPPQGYPPQGYPPQGAPPQVEAPQGAPPQGVDNQAYQ
+A
+> 28== X70498 1 Todarodes pacificus rhodopsin <retina>[FEBS317(1-2),5-11'93]
+----------------------------------------MGR-----------------
+DLRDNETWWY--------NPSIV--------------------------VHPHWREFDQV
+PDAVYYSLGIFIGICGIIGCGGNGIVIYLFTKTKSLQTPANMFIINLAFSDFTFSLVNGF
+PLMTISCFL-KKWI--FGFAACKVYGFIGGIFGFMSIMTMAMISIDRYNVIGRPMAASKK
+MSHRRAFIMIIFVWLWSVLW-AIGPIFG-W-----GAYTLEGVLCNCSFDYIS--RDSTT
+RSNILCMFILGFFGPILIIFFCYFNIVMSVSNHEKEMAAMAKR-----------------
+----------------------------------------------------------LN
+-----------AKEL---------------------------------------------
+--------------R--KAQAGAN------AEMRLAKISIVIVSQFLLSWSPYAVVALLA
+QFGPLE---WVTPYAAQLPVMFAKASAIHNPMIYSVSHPKFREAISQTFPWVLTCCQFDD
+KE-TEDDK--DAETEIPAGESSDA-APSADAAQMKEMMAMMQKMQQQQAAY----PPQGY
+APPPQGYPPQGY--PPQGYPPQGYPPQGYPP---PPQGAPPQ-GAPPAAPPQGVDNQAYQ
+A
+> 29== L21195 1 human serotonin 5-HT7 receptor protein <placenta and fetal bra
+M---------MDVNSSGRPDLYGHLRSFL-LPEVGRGLPDLSPDG---------------
+GADPVAGSWAPHLLS---EVTASPAPTWDAPPDNASGCGEQINYGRVE------------
+----KVVIGSILTLITLLTIAGNCLVVISVCFVKKLRQPSNYLIVSLALADLSVAVAV-M
+PFVSVTDLIGGKWI--FGHFFCNVFIAMDVMCCTASIMTLCVISIDRYLGITRPLTYPVR
+QNGKCMAKMILSVWLLSASI-TLPPLFG-W-----AQNVNDDKVCLISQDF---------
+-GYTIYSTAVAFYIPMSVMLFMYYQIY-------KAARKSAAKHKF--------------
+-------------------PGF-----------------PRVE---------PDSVIALN
+G----------IVKLQK--------------------------EVEECAN----------
+--------LSRLLKHERKNISIFK------REQKAATTLGIIVGAFTVCWLPFFLLSTAR
+PFICGTSCSCIPLWVERTFLWLGYANSLINPFIYAFFNRDLRTTYRSLLQCQYR---NIN
+RK-LSAAGMHEALKLAERPERPEFVLQNADYCRKK-------------------------
+----------------------------------------------------GHDS----
+-
+> 30== L15228 1 rat 5HT-7 serotonin receptor <>[JBC268,18200-18204'93]
+M-----------------------------------------------------------
+----------PHLLSGFLEVTASPAPTWDAPPDNVSGCGEQINYGRVE------------
+----KVVIGSILTLITLLTIAGNCLVVISVSFVKKLRQPSNYLIVSLALADLSVAVAV-M
+PFVSVTDLIGGKWI--FGHFFCNVFIAMDVMCCTASIMTLCVISIDRYLGITRPLTYPVR
+QNGKCMAKMILSVWLLSASI-TLPPLFG-W-----AQNVNDDKVCLISQDF---------
+-GYTIYSTAVAFYIPMSVMLFMYYQIY-------KAARKSAAKHKF--------------
+-------------------PGF-----------------PRVQ---------PESVISLN
+G----------VVKLQK--------------------------EVEECAN----------
+--------LSRLLKHERKNISIFK------REQKAATTLGIIVGAFTVCWLPFFLLSTAR
+PFICGTSCSCIPLWVERTCLWLGYANSLINPFIYAFFNRDLRPTSRSLLQCQYR---NIN
+RK-LSAAGMHEALKLAERPERSEFVLQNSDHCGKK-------------------------
+----------------------------------------------------GHDT----
+-
+> 31=p A47425 serotonin receptor 5HT-7 - rat
+M-----------------------------------------------------------
+----------PHLLSGFLEVTASPAPTWDAPPDNVSGCGEQINYGRVE------------
+----KVVIGSILTLITLLTIAGNCLVVISVSFVKKLRQPSNYLIVSLALADLSVAVAV-M
+PFVSVTDLIGGKWI--FGHFFCNVFIAMDVMCCTASIMTLCVISIDRYLGITRPLTYPVR
+QNGKCMAKMILSVWLLSASI-TLPPLFG-W-----AQNVNDDKVCLISQDF---------
+-GYTIYSTAVAFYIPMSVMLFMYYQIY-------KAARKSAAKHKF--------------
+-------------------PGF-----------------PRVQ---------PESVISLN
+G----------VVKLQK--------------------------EVEECAN----------
+--------LSRLLKHERKNISIFK------REQKAATTLGIIVGAFTVCWLPFFLLSTAR
+PFICGTSCSCIPLWVERTCLWLGYANSLINPFIYAFFNRDLRTTYRSLLQCQYR---NIN
+RK-LSAAGMHEALKLAERPERSEFVLQNSDHCGKK-------------------------
+----------------------------------------------------GHDT----
+-
+> 32== M83181 1 human serotonin receptor <>[JBC267(11),7553-7562'92]
+MDVLSPGQ--------------G-------------------------------------
+------------------NNTTSPPAPFETGGNTT-------------GISDVTVSY---
+----QVITSLLLGTLIFCAVLGNACVVAAIALERSLQNVANYLIGSLAVTDLMVSVLV-L
+PMAALYQVL-NKWT--LGQVTCDLFIALDVLCCTSSILHLCAIALDRYWAITDPIDYVNK
+RTPRRAAALISLTWLIGFLI-SIPPMLG-WRTPE-DRSDPDA--CTISKDH---------
+-GYTIYSTFGAFYIPLLLMLVLYGRIF-------RAARFRIRK-----------------
+----------------------TVKKVEKTGADTRHGASPAPQ---------PKKS--VN
+GESGSRNWRLGVESK-----AGGALCANGAVRQGDDGAALEVIEVHRVGNSKEHLPLPSE
+AG--PTPCAPASFERKNERNAEAKRKMALARERKTVKTLGIIMGTFILCWLPFFIVALVL
+PFCESSC--HMPTLLGAIINWLGYSNSLLNPVIYAYFNKDFQNAFKKIIKCKFC------
+RQ----------------------------------------------------------
+------------------------------------------------------------
+-
+> 33=p A35181 serotonin receptor class 1A - rat
+MDVFSFGQ--------------G-------------------------------------
+------------------NNTTASQEPFGTGGNVT-------------SISDVTFSY---
+----QVITSLLLGTLIFCAVLGNACVVAAIALERSLQNVANYLIGSLAVTDLMVSVLV-L
+PMAALYQVL-NKWT--LGQVTCDLFIALDVLCCTSSILHLCAIALDRYWAITDPIDYVNK
+RTPRRAAALISLTWLIGFLI-SIPPMLG-WRTPE-DRSDPDA--CTISKDH---------
+-GYTIYSTFGAFYIPLLLMLVLYGRIF-------RAARFRIRK-----------------
+----------------------TVRKVEKKGAGTSLGTSSAPP---------PKKS--LN
+GQPGSGDWRRCAENR-----AVGTPCTNGAVRQGDDEATLEVIEVHRVGNSKEHLPLPSE
+SG--SNSYAPACLERKNERNAEAKRKMALARERKTVKTLGIIMGTFILCWLPFFIVALVL
+PFCESSC--HMPALLGAIINWLGYSNSLLNPVIYAYFNKDFQNAFKKIIKCKFC------
+RR----------------------------------------------------------
+------------------------------------------------------------
+-
+> 34== L06803 1 Lymnaea stagnalis serotonin receptor <>[PNAS90,11-15'93]
+MANFTFGDLALDVAR-----MGGLASTPSGLRSTGLTTPGLSPTGL-------------V
+TSDFNDSYGLTG---QFINGSHSSRSRDNASANDTSATN---------MTDDRYWSLTVY
+SHEHLVLTSVILGLFVLCCIIGNCFVIAAVMLERSLHNVANYLILSLAVADLMVAVLV-M
+PLSVVSEIS-KVWF--LHSEVCDMWISVDVLCCTASILHLVAIAMDRYWAVTS-IDYIRR
+RSARRILLMIMVVWIVALFI-SIPPLFG-WRDP--NNDPDKTGTCIISQDK---------
+-GYTIFSTVGAFYLPMLVMMIIYIRIW-------LVARSRIRKDKFQMTKARLKTEETTL
+VASPKTEYSVVSDCNGCNSPDSTTEKKKRRAPFKSYGCSPRPERKKNRAKKLPENANGVN
+SNSSS------SERL----KQIQIETAEAFANGCAEEASIAMLERQ-CNNGKKISSNDTP
+YS------------RT-REKLELK------RERKAARTLAIITGAFLICWLPFFIIALIG
+PFVDPE---GIPPFARSFVLWLGYFNSLLNPIIYTIFSPEFRSAFQKILFGKYR----RG
+HR----------------------------------------------------------
+------------------------------------------------------------
+-
+> 35=p A47174 serotonin receptor, 5HTlym receptor - great pond snail
+MANFTFGDLALDVAR-----MGGLASTPSGLRSTGLTTPGLSPTGL-------------V
+TSDFNDSYGLTG---QFINGSHSSRSRDNASANDTSATN---------MTDDRYWSLTVY
+SHEHLVLTSVILGLFVLCCIIGNCFVIAAVMLERSLHNVANYLILSLAVADLMVAVLV-M
+PLSVVSEIS-KVWF--LHSEVCDMWISVDVLCCTASILHLVAIAMDRYWAVTS-IDYIRR
+RSARRILLMIMVVWIVALFI-SIPPLFG-WRDP--NNDPDKTGTCIISQDK---------
+-GYTIFSTVGAFYLPMLVMMIIYIRIW-------LVARSRIRKDKFQMTKARLKTEETTL
+VASPKTEYSVVSDCNGCNSPDSTTEKKKRRAPFKSYGCSPRPERKKNRAKKLPENANGVN
+SNSSS------SERL----KQIQIETAEAFANGCAEEASIAMLERQ-CNNGKKISSNDTP
+YS------------RT-REKLELK------RERKAARTLAIITGAFLICWLPFFIIALIG
+PFVDPE---GIPPFARSFVLWLGYFNSLLNPIIYTIFSPEFRSAFQKILFGKYR----RG
+HR----------------------------------------------------------
+------------------------------------------------------------
+-
+> 36== X95604 1 Bombyx mori serotonin receptor <antennae>[InsectBiochem.Mol.Bi
+MEGAE-GQEELDWEA-----LY--LRLP--LQNCSWNSTGWEPNWN-------------V
+TVVPNTTWWQ-------------ASAPFDTPAALVR------------------------
+----AAAKAVVLGLLILATVVGNVFVIAAILLERHLRSAANNLILSLAVADLLVACLV-M
+PLGAVYEVV-QRWT--LGPELCDMWTSGDVLCCTASILHLVAIALDRYWAVTN-IDYIHA
+STAKRVGMMIACVWTVSFFV-CIAQLLG-WKDPDWNQRVSEDLRCVVSQDV---------
+-GYQIFATASSFYVPVLIILILYWRIY-------QTARKRIRR-----------------
+----------------------------RRGATARGGVGPPPV---------PAGGALVA
+GGGSGGIAAAVVAVIGRPLPTISETTTTGFTNVSSNNTSP---EKQSCANGLEADPPTTG
+YGAVAAAYYPSLVRRKPKEAADSK------RERKAAKTLAIITGAFVACWLPFFVLAILV
+PTCDCE----VSPVLTSLSLWLGYFNSTLNPVIYTVFSPEFRHAFQRLLCGRRV----RR
+RR----------------------------------------------------------
+---------------------------------------APQ------------------
+-
View it on GitLab: https://salsa.debian.org/med-team/mafft/-/commit/cf82eb12fe88945f44cfa22b7713e831299c54a7
--
View it on GitLab: https://salsa.debian.org/med-team/mafft/-/commit/cf82eb12fe88945f44cfa22b7713e831299c54a7
You're receiving this email because of your account on salsa.debian.org.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/debian-med-commit/attachments/20250905/a71c6bc6/attachment-0001.htm>
More information about the debian-med-commit
mailing list