Exemple #1
0
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)