e5268a564b983a211baf36b7df298e54e2d189f3 markd Mon Jan 29 16:14:25 2018 -0800 allow skip more types of gff3ToGenePred conversions errors with -warnAndContinue to support other NCBI GFF3 files diff --git src/lib/gff3.c src/lib/gff3.c index bbba639..8d2f9e4 100644 --- src/lib/gff3.c +++ src/lib/gff3.c @@ -566,39 +566,41 @@ for (attr = g3a->attrs; attr != NULL; attr = attr->next) { if (isupper(attr->tag[0])) parseStdAttr(g3a, attr); } } static void parseAnn(struct gff3File *g3f, char *line) /* parse an annotation line */ { // extra column to check for too many char *words[gffNumCols+1]; int numWords = chopString(line, "\t", words, gffNumCols+1); if (numWords != gffNumCols) gff3FileErr(g3f, "expected %d tab-separated columns: %s", gffNumCols, line); - +else + { struct gff3Ann *g3a = gff3FileAlloc(g3f, sizeof(struct gff3Ann)); g3a->file = g3f; g3a->lineNum = g3f->lf->lineIx; parseFields(g3a, words); parseAttrs(g3a, words[8]); parseStdAttrs(g3a); slAddHead(&g3f->anns, gff3AnnRefNew(g3a)); } +} static void writeAttr(struct gff3Attr *attr, FILE *fh) /* write one attribute and it's values */ { writeEscaped(attr->tag, fh); fputc('=', fh); struct slName *val; for (val = attr->vals; val != NULL; val = val->next) { if (val != attr->vals) fputc(',', fh); writeEscaped(val->name, fh); } }