#include #include #include #include #include "common.h" #include "linefile.h" #include "nib.h" #include "jksql.h" #include "coordConv.h" #include "fa.h" #include "genoFind.h" #include "psl.h" #include "portable.h" #include "hdb.h" #include "dbDb.h" #ifndef DNASEQ_H #include "dnaseq.h" #endif #ifndef DNAUTIL_H #include "dnautil.h" #endif #ifndef NIB_H #include "nib.h" #endif unsigned int flipNegStrand( char strand, unsigned int start, unsigned int size ) { if( strand == '-' ) return( size - start ); else return( start ); } void printFa( unsigned char *FA, unsigned int maxFa ) { unsigned int i; for( i=0; i= maxFa || theStart < 0 ) { fprintf( stderr, "maxFa(%d) is too short for [%d,%d]\n", maxFa, theStart, theStart+size-1); exit(1); } for( i=theStart; idna); //1877426 + 1 for zoo2 FA = malloc( sizeof( unsigned char ) * ( maxFa + 1 ) ); initFa(FA, maxFa); p = pslLoadAll(argv[1]); while( p ) { qSeq = nibLoadPart( argv[3], p->qStart, p->qEnd - p->qStart ); tSeq = nibLoadPart( argv[2], p->tStart, p->tEnd - p->tStart ); for( i=0; iblockCount; i++ ) { size = p->blockSizes[i]; qs = flipNegStrand( p->strand[0], p->qStarts[i], p->qSize); ts = flipNegStrand( p->strand[1], p->tStarts[i], p->tSize); seq1 = nibLoadPart( argv[2], ts, size ); /*master*/ seq2 = nibLoadPart( argv[3], qs, size ); /*slave*/ writeFa( FA, maxFa, ts, size, seq2->dna ); } p = p->next; } if( strlen(tSeqAll->dna) != maxFa ) { printf("Sequence sizes must match!!! (strlen(tSeqAll->dna) = %d, maxFa = %d)\n", strlen(tSeqAll->dna), maxFa ); } printFa(tSeqAll->dna, maxFa ); printFa(FA, maxFa ); return(0); }