44 if ( (fp = fopen( filename,
"r" )) ){
46 lib = memalign( 16,
sizeof(
FastaLib ) );
54 error(
"Fasta: %s\n",strerror(errno));
62 char * pres = lib->readBuffer;
63 if ( feof( lib->
fp ) )
65 if( (*pres = fgetc(lib->
fp)) !=
'>' ) {
66 warning(
"Missing comment line, trying to continue anyway\n");
71 fgets( pres,
sizeof(lib->readBuffer)-(pres-lib->readBuffer), lib->
fp );
73 for (;*pres && *pres!=
'\n';pres++);
75 while ((
long)pres&0xf) *pres++ =
'\0';
78 while ( (*pres = fgetc( lib->
fp) ) !=
'>' ){
80 if( fgets( pres+1,
sizeof(lib->readBuffer)-(pres+1-lib->readBuffer), lib->
fp ) == 0 )
goto finish;
81 for (;*pres && *pres!=
'\n';pres++)
82 if (
'A'>*pres || *pres>
'Z'){
83 error(
"Invalid character in input sequence '%c'\n", *pres);
87 ungetc(
'>', lib->
fp );
90 *len = pres - lib->
data;
103 for(i=0;i<seqLen && sequence[i]!=
'\n' && sequence[i]!=
'\0';++i) {
104 if(table) sequence[i] = table[(int)sequence[i]];
105 else sequence[i] -=
'A';
107 if(sequence[i] < 0 || sequence[i] >=
MATRIX_DIM)
error(
"Invalid character in input sequence at position %d\n",i);