7 |
|
|
8 |
|
const uint GFF_MAX_LOCUS = 7000000; //longest known gene in human is ~2.2M, UCSC claims a gene for mouse of ~ 3.1 M |
9 |
|
const uint GFF_MAX_EXON = 30000; //longest known exon in human is ~11K |
10 |
< |
const uint GFF_MAX_INTRON= 6000000; |
10 |
> |
const uint GFF_MAX_INTRON= 6000000; //Ensembl shows a >5MB human intron |
11 |
|
bool gff_show_warnings = false; //global setting, set by GffReader->showWarnings() |
12 |
|
const int gff_fid_mRNA=0; |
13 |
|
const int gff_fid_transcript=1; |
976 |
|
bool GffReader::addExonFeature(GfoHolder* prevgfo, GffLine* gffline, GHash<CNonExon>& pex, bool noExonAttr) { |
977 |
|
bool r=true; |
978 |
|
if (gffline->strand!=prevgfo->gffobj->strand) { |
979 |
< |
if (prevgfo->gffobj->strand=='.') { |
980 |
< |
prevgfo->gffobj->strand=gffline->strand; |
981 |
< |
} |
982 |
< |
else { |
983 |
< |
GMessage("GFF Error at %s (%c): exon %d-%d (%c) found on different strand; discarded.\n", |
984 |
< |
prevgfo->gffobj->gffID, prevgfo->gffobj->strand, |
985 |
< |
gffline->fstart, gffline->fend, gffline->strand, prevgfo->gffobj->getGSeqName()); |
986 |
< |
//r=false; |
987 |
< |
return true; //FIXME: split trans-spliced mRNAs by strand |
988 |
< |
} |
989 |
< |
} |
979 |
> |
//TODO: add support for trans-splicing and even inter-chromosomal fusions |
980 |
> |
if (prevgfo->gffobj->strand=='.') { |
981 |
> |
prevgfo->gffobj->strand=gffline->strand; |
982 |
> |
} |
983 |
> |
else { |
984 |
> |
GMessage("GFF Error at %s (%c): exon %d-%d (%c) found on different strand; discarded.\n", |
985 |
> |
prevgfo->gffobj->gffID, prevgfo->gffobj->strand, |
986 |
> |
gffline->fstart, gffline->fend, gffline->strand, prevgfo->gffobj->getGSeqName()); |
987 |
> |
//r=false; |
988 |
> |
return true; //FIXME: split trans-spliced mRNAs by strand |
989 |
> |
} |
990 |
> |
} |
991 |
|
int gdist=(gffline->fstart>prevgfo->gffobj->end) ? gffline->fstart-prevgfo->gffobj->end : |
992 |
|
((gffline->fend<prevgfo->gffobj->start)? prevgfo->gffobj->start-gffline->fend : |
993 |
|
0 ); |