diff --git a/tools/filters/gff/gtf_filter_by_attribute_values_list.py b/tools/filters/gff/gtf_filter_by_attribute_values_list.py index f1754f1bf3a..8be10348557 100644 --- a/tools/filters/gff/gtf_filter_by_attribute_values_list.py +++ b/tools/filters/gff/gtf_filter_by_attribute_values_list.py @@ -53,13 +53,15 @@ def gff_filter(gff_file, attribute_name, ids_file, output_file): ids_dict[line.split('\t')[0].strip()] = True # Filter GFF file using ids. - output = open(output_file, 'w') - for line in open(gff_file): - fields = line.split('\t') - attributes = parse_gff_attributes(fields[8]) - if (attribute_name in attributes) and (attributes[attribute_name] in ids_dict): - output.write(line) - output.close() + with open(output_file, 'w') as output, open(gff_file) as ingff: + for line in ingff: + if not line or line.startswith('#'): + output.write(line) + continue + fields = line.split('\t') + attributes = parse_gff_attributes(fields[8]) + if attribute_name in attributes and attributes[attribute_name] in ids_dict: + output.write(line) if __name__ == "__main__": diff --git a/tools/filters/gff/gtf_filter_by_attribute_values_list.xml b/tools/filters/gff/gtf_filter_by_attribute_values_list.xml index 0f5d0dadabc..b1063b78827 100644 --- a/tools/filters/gff/gtf_filter_by_attribute_values_list.xml +++ b/tools/filters/gff/gtf_filter_by_attribute_values_list.xml @@ -1,8 +1,11 @@ - + - - gtf_filter_by_attribute_values_list.py $input $attribute_name $ids $output - + + python + + @@ -19,10 +22,10 @@ - + - +