static rc_t fe_new_read(fe_context_t *self, pstring *readId, EAbisolidReadType* type, pstring* label) { rc_t rc = 0; pstring name_suffix; const char* p; assert(self && readId && type && label); DEBUG_MSG(3, ("READ_LABEL: '%s'\n", readId->data)); /* spot name suffix may end with '_(F|R).+' */ p = strrchr(readId->data, '_'); if( p != NULL ) { rc = set_label_type(p + 1, label, type); if( rc == 0 && *type > eAbisolidReadType_SPOT) { /* cut label */ readId->len -= label->len + 1; } } else { pstring_clear(label); *type = eAbisolidReadType_SPOT; } if( rc == 0 && (rc = pstring_copy(&name_suffix, readId)) == 0 ) { rc = SRAWriteAbsolid_MakeName(&self->name_prefix, &name_suffix, readId); } return rc; }
static rc_t fe_new_region(fe_context_t *self, size_t region_count, const region_t region[]) { rc_t rc = 0; int i; self->region.nreads = region_count / 2; DEBUG_MSG(3, ("REGION: %u -> %u reads\n", region_count, self->region.nreads)); if( self->region.nreads <= 0 || self->region.nreads > ABSOLID_FMT_MAX_NUM_READS ) { rc = RC(rcSRA, rcFormatter, rcParsing, rcData, rcUnsupported); SRALoaderFile_LOG(self->ctx.file, klogErr, rc, "read count $(c)", PLOG_U8(c), self->region.nreads); } for(i = 0; rc == 0 && i < self->region.nreads ; i++ ) { int j = i * 2 + 1; self->region.start[i] = region[j].start; if( (rc = set_label_type(region[j].name, &self->region.label[i], &self->region.type[i])) != 0 ) { break; } self->region.cs_key[i] = region[j - 1].name[0]; DEBUG_MSG(3, ("REGION[%u]: '%s', %u, '%c', start: %u\n", i, self->region.label[i].data, self->region.type[i], self->region.cs_key[i], self->region.start[i])); switch(region[j].type) { case Biological: case Normal: case Paired: case Technical: break; default: rc = RC(rcSRA, rcFormatter, rcParsing, rcData, rcUnexpected); SRALoaderFile_LOG(self->ctx.file, klogErr, rc, "read #$(read_id) type mismatch; expected $(expected), got $(got)", "read_id=%u,expected=%s,got=%u", i, "(B|N|P|T)", region[j].type); return rc; } } if( rc == 0 && self->region.nreads > 1 && self->region.type[0] == self->region.type[1] ) { rc = RC(rcSRA, rcFormatter, rcParsing, rcData, rcDuplicate); SRALoaderFile_LOG(self->ctx.file, klogErr, rc, "both reads have same type", NULL); } return rc; }
static void set_label (GtkWidget *label, const char *text) { set_label_type (label, text, "b"); }