def test_from_json(self):
        res_object = RREFinderResults.from_json(self.json_dict, self.record,
                                                self.min_length,
                                                self.bitscore_cutoff)
        assert res_object
        assert res_object.hits_per_protocluster == self.hits_per_protocluster
        assert res_object.hit_info == self.hit_info
        assert res_object.bitscore_cutoff == self.bitscore_cutoff
        assert res_object.min_length == self.min_length
        assert res_object.record_id == self.record_id

        json_dict2 = dict(self.json_dict)
        json_dict2['record_id'] = 'another_record'
        assert not RREFinderResults.from_json(
            json_dict2, self.record, self.min_length, self.bitscore_cutoff)

        json_dict3 = dict(self.json_dict)
        json_dict3['schema_version'] = 'not_a_valid_schema'
        assert not RREFinderResults.from_json(
            json_dict3, self.record, self.min_length, self.bitscore_cutoff)

        # Invalid arguments should return None
        json_dict4 = dict(self.json_dict)
        _ = json_dict4.pop('bitscore_cutoff')
        with self.assertRaises(ValueError):
            _ = RREFinderResults.from_json(json_dict4, self.record,
                                           self.min_length,
                                           self.bitscore_cutoff)

        json_dict5 = dict(self.json_dict)
        _ = json_dict5.pop('min_length')
        with self.assertRaises(ValueError):
            _ = RREFinderResults.from_json(json_dict5, self.record,
                                           self.min_length,
                                           self.bitscore_cutoff)

        # More lenient settings shouldn't return results
        assert not RREFinderResults.from_json(self.json_dict, self.record, 25,
                                              self.bitscore_cutoff)
        assert not RREFinderResults.from_json(self.json_dict, self.record,
                                              self.min_length, 15.0)

        # Stricter settings should filter
        res_object2 = RREFinderResults.from_json(self.json_dict, self.record,
                                                 self.min_length, 35.0)
        assert res_object2.hit_info['locus_tag_a'] == [self.hit_a1]
        assert len(res_object2.hit_info) == 1
        assert res_object2.hits_per_protocluster[1] == ['locus_tag_a']
        assert len(res_object2.hits_per_protocluster) == 1

        res_object3 = RREFinderResults.from_json(self.json_dict, self.record,
                                                 80, self.bitscore_cutoff)
        assert res_object3.hits_per_protocluster[2] == ['locus_tag_b']
        assert len(res_object3.hits_per_protocluster) == 1
        assert res_object3.hit_info['locus_tag_b'] == [self.hit_b1]
        assert len(res_object3.hit_info) == 1
Exemplo n.º 2
0
    def test_json_conversion(self):
        results = self.create_results()

        json = jsonlib.loads(jsonlib.dumps(results.to_json()))

        regenerated = RREFinderResults.from_json(json, self.record)
        assert regenerated.hits_by_protocluster == results.hits_by_protocluster
        assert regenerated.hits_by_cds == results.hits_by_cds
        assert regenerated.bitscore_cutoff == results.bitscore_cutoff
        assert regenerated.min_length == results.min_length
        assert regenerated.record_id == results.record_id
Exemplo n.º 3
0
 def test_from_json_higher_bitscore(self):
     json = self.create_results().to_json()
     assert get_config().rre_cutoff == 25.
     new = 35.
     assert self.hits[0].score > new
     assert self.hits[1].score < new
     update_config({"rre_cutoff": new})
     result = RREFinderResults.from_json(json, self.record)
     assert len(result.hits_by_cds) == 1
     assert result.hits_by_cds[self.hits[0].locus_tag] == [self.hits[0]]
     assert len(result.hits_by_protocluster) == 1
     assert result.hits_by_protocluster[1] == [self.hits[0].locus_tag]
Exemplo n.º 4
0
 def test_from_json_higher_min_length(self):
     json = self.create_results().to_json()
     assert get_config().rre_min_length == 50
     new = 80
     assert len(self.hits[0]) < new
     assert len(self.hits[1]) > new
     update_config({"rre_min_length": new})
     results = RREFinderResults.from_json(json, self.record)
     assert len(results.hits_by_cds) == 1
     assert results.hits_by_cds[self.hits[1].locus_tag] == [self.hits[1]]
     assert len(results.hits_by_protocluster) == 1
     assert results.hits_by_protocluster[2] == [self.hits[1].locus_tag]
Exemplo n.º 5
0
 def test_from_json_lower_bitscore(self):
     json = self.create_results().to_json()
     assert get_config().rre_cutoff == 25.
     update_config({"rre_cutoff": 15.})
     assert not RREFinderResults.from_json(json, self.record)
Exemplo n.º 6
0
 def test_from_json_lower_min_length(self):
     json = self.create_results().to_json()
     assert get_config().rre_min_length == 50
     update_config({"rre_min_length": 25})
     assert not RREFinderResults.from_json(json, self.record)
Exemplo n.º 7
0
 def test_from_json_wrong_schema_version(self):
     json = self.create_results().to_json()
     json['schema_version'] = 'not_a_valid_schema'
     assert not RREFinderResults.from_json(json, self.record)
Exemplo n.º 8
0
 def test_from_json_wrong_record(self):
     json = self.create_results().to_json()
     json['record_id'] = 'another_record'
     assert not RREFinderResults.from_json(json, self.record)