示例#1
0
filter_t *region_exact_filter_new(char *region_descriptor, int use_region_file, char *type, 
                                  const char *url, const char *species, const char *version) {
    assert(region_descriptor);
    assert(url);
    assert(species);
    assert(version);
    
    filter_t *filter = (filter_t*) malloc (sizeof(filter_t));
    filter->type = REGION;
    filter->filter_func = region_filter;
    filter->free_func = region_filter_free;
    filter->priority = 2;

    region_filter_args *filter_args = (region_filter_args*) malloc (sizeof(region_filter_args));
    if (use_region_file) {
        snprintf(filter->name, 11, "RegionFile");
        snprintf(filter->description, 64, "Regions read from '%s'", region_descriptor);
        if (ends_with(region_descriptor, ".gff")) {
            filter_args->regions = parse_regions_from_gff_file(region_descriptor, url, species, version);
        } else if (ends_with(region_descriptor, ".bed")) {
            filter_args->regions = parse_regions_from_bed_file(region_descriptor, url, species, version);
        } else {
            LOG_FATAL_F("Region file %s format not supported! Please use BED or GFF formats\n", region_descriptor);
        }
    } else {
        snprintf(filter->name, 11, "RegionList");
        snprintf(filter->description, 64, "Regions (could be more) %s", region_descriptor);
        filter_args->regions = parse_regions(region_descriptor, 1, url, species, version);
    }
    filter_args->type = type;
    filter->args = filter_args;

    return filter;
}
示例#2
0
void setup_gff(void) {
    region_table = parse_regions_from_gff_file("test_parse_regions_01.gff", "http://ws.bioinfo.cipf.es", "hsa", "latest");
}