def feat_collect(infile, feat_mode): """Collect a subset of features from a genbank file.""" from analysis.seqfile_ops import load_genbank gb_record = load_genbank(infile) feat_list = gb_record.features collected = [] # establish collection parameters types_list = feat_mode['types'] # default entry is ('CDS') tags_dict = feat_mode['tags'] # default is an empty dictionary # start collecting features for feature in feat_list: if feature.type in types_list: if len(tags_dict.keys()) is 0: collected.append(feature) else: for tag_key in tags_dict.keys(): if tag_key in feature.qualifiers: feat_value = feature.qualifiers.get(tag_key) if feat_value[0] in tags_dict[tag_key]: collected.append(feature) else: pass else: pass else: pass ## consider adding some info to the log return collected
def test_write_and_load_single_genbank(self): count = seqfile_ops.write_genbank(self.gbk_filename, self.record) self.assertIs(count, 1) gbk_record = seqfile_ops.load_genbank(self.gbk_filename) self.assertEqual(gbk_record.id, self.record.id) # check features for index in range (0,1): self.assertEqual(gbk_record.features[index].type, self.record.features[index].type)