Пример #1
0
    def get_available_criterias(cls, feature=None, config=None, test=False):
        ''' function to get avalable criterias for a given feature
        @type  feature: string
        @param feature: feature type, could be 'gene','region', 'marker' etc.,
        @type  config:  string
        @keyword config: The config object initialized from criteria.ini.
        '''
        if config is None:
            if test:
                config = CriteriaManager.get_criteria_config(ini_file='test_criteria.ini')
            else:
                config = CriteriaManager.get_criteria_config(ini_file='criteria.ini')

        criteria_dict = dict()
        criteria_list = []
        for section_name in config.sections():
            if config[section_name] is not None:
                section_config = config[section_name]
                if 'feature' in section_config:
                    if feature is not None and feature != section_config['feature']:
                        continue

                    if section_config['feature'] in criteria_dict:
                        criteria_list = criteria_dict[section_config['feature']]
                        criteria_list.append(section_name)
                    else:
                        criteria_list = []
                        criteria_list.append(section_name)
                        criteria_dict[section_config['feature']] = criteria_list

        return criteria_dict
    def test_process_criterias(self):
        feature = "gene"
        criteria = "cand_gene_in_study,gene_in_region"
        criteria_list = CriteriaManager.process_criterias(feature, criteria=None, config=None, show=True)
        self.assertIn("cand_gene_in_study", criteria_list, "cand_gene_in_study in list")
        self.assertIn("is_gene_in_mhc", criteria_list, "is_gene_in_mhc in list")

        criteria_list = CriteriaManager.process_criterias(feature, criteria=criteria, config=None, show=True)
        self.assertIn("cand_gene_in_study", criteria_list, "cand_gene_in_study in list")
        self.assertNotIn("is_gene_in_mhc", criteria_list, "is_gene_in_mhc not in in list")
 def test_get_criteria_config(self):
     criteria_config = CriteriaManager.get_criteria_config()
     self.assertIsNotNone(criteria_config, "config is not None")
     section_config = criteria_config["cand_gene_in_study"]
     self.assertIsNotNone(section_config, "section is not None")
     self.assertEqual(section_config["feature"], "gene", "Got the right feature")
     self.assertIsNotNone(section_config["desc"], "Desc is not none")
Пример #4
0
    def test_tag_feature_to_all_diseases(self):
        config = IniParser().read_ini(MY_INI_FILE)
        section = "is_gene_in_mhc"
        feature_id = 'ENSG00000229281'
        result = Criteria.tag_feature_to_all_diseases(feature_id, section, config, {})
        result_diseases = sorted(list(result['ENSG00000229281'].keys()))
        (core_disease, other_disease) = CriteriaManager.get_available_diseases()
        available_diseases = sorted(core_disease + other_disease)
        self.assertEqual(result_diseases, available_diseases)

        section = "is_marker_in_mhc"
        feature_id = 'rs6679677'
        result = Criteria.tag_feature_to_all_diseases(feature_id, section, config, {})
        result_diseases = sorted(list(result['rs6679677'].keys()))
        (core_disease, other_disease) = CriteriaManager.get_available_diseases()
        available_diseases = sorted(core_disease + other_disease)
        self.assertEqual(result_diseases, available_diseases)
    def test_get_available_diseases(self):
        (main, other) = utils.Disease.get_site_diseases()
        self.assertEqual(12, len(main), "12 main diseases found when searching for all diseases")
        self.assertEqual(8, len(other), "8 other diseases found when searching for all diseases")

        (main_dis_code, other_dis_code) = CriteriaManager.get_available_diseases()

        self.assertIn("T1D", main_dis_code)
        self.assertIn("AA", other_dis_code)
Пример #6
0
    def get_available_criterias(cls, feature=None, config=None):
        'Function to get available criterias for region'
        if config is None:
            config = CriteriaManager.get_criteria_config()

        if feature is None:
            feature = cls.FEATURE_TYPE

        available_criterias = Criteria.get_available_criterias(feature, config)
        return available_criterias
Пример #7
0
    def handle(self, *args, **options):
        criteria_manager = CriteriaManager()
        feature_ = None
        criteria_ = None
        if 'feature' in options:
            feature_ = options['feature']
        if 'criteria' in options:
            criteria_ = options['criteria']
        if 'show' in options:
            show_ = options['show']
        if 'test' in options:
            test_ = options['test']

        if test_:
            config_ = criteria_manager.get_criteria_config(ini_file='test_criteria.ini')
        else:
            config_ = criteria_manager.get_criteria_config(ini_file='criteria.ini')

        criteria_manager.process_criterias(feature=feature_, criteria=criteria_, config=config_, show=show_, test=test_)
Пример #8
0
 def test_criteria_mappings(self, idx, idx_types):
     (main_codes, other_codes) = CriteriaManager.get_available_diseases()
     site_enabled_diseases = main_codes + other_codes
     elastic_url = ElasticSettings.url()
     for idx_type in idx_types:
         url = idx + '/' + idx_type + '/_mapping'
         response = Search.elastic_request(elastic_url, url, is_post=False)
         elastic_type_mapping = json.loads(response.content.decode("utf-8"))
         property_keys = list(elastic_type_mapping[idx]['mappings'][idx_type]['properties'].keys())
         '''check if score and disease_tags and qid are there in mapping'''
         self.assertIn('score', property_keys)
         self.assertIn('disease_tags', property_keys)
         self.assertIn('qid', property_keys)
         '''check if all the enabled diseases are there'''
         for disease in site_enabled_diseases:
             self.assertIn(disease, property_keys)
Пример #9
0
    def get_link_info(cls, idx, criteria_list):

        link_info = {}

        criteria_config = CriteriaManager.get_criteria_config()
        for criteria in criteria_list:
            criteria_section = criteria_config[criteria]

            if idx not in link_info:
                    link_info[idx] = {}

            if 'link_to_feature' in criteria_section:
                link_to_feature = criteria_section['link_to_feature']
                link_info[idx][criteria] = link_to_feature

        return link_info
Пример #10
0
    def create_criteria_mapping(cls, idx, idx_type, test_mode=False):
        ''' function to create mapping for criteria indexes
        @type  idx: string
        @param idx: name of the index
        @type  idx_type: string
        @param idx_type: name of the idx type, each criteria is an index type
        @type  test_mode:  string
        @param test_mode: flag to create or not create the mapping
        '''
        logger.warning('Idx ' + idx)
        logger.warning('Idx_type ' + idx_type)
        ''' Create the mapping for alias indexing '''
        props = MappingProperties(idx_type)
        props.add_property("score", "integer")
        props.add_property("disease_tags", "string", index="not_analyzed")
        props.add_property("qid", "string", index="not_analyzed")
        (main_codes, other_codes) = CriteriaManager().get_available_diseases()

        for disease in main_codes + other_codes:
            criteria_tags = MappingProperties(disease)
            criteria_tags.add_property("fid", "string", index="not_analyzed")
            criteria_tags.add_property("fname", "string", index="not_analyzed")

            fnotes = MappingProperties('fnotes')
            fnotes.add_property('linkid', "string", index="not_analyzed")
            fnotes.add_property('linkname', "string", index="not_analyzed")
            fnotes.add_property('linkdata', "string", index="not_analyzed")
            fnotes.add_property('linkvalue', "string", index="not_analyzed")
            criteria_tags.add_properties(fnotes)
            props.add_properties(criteria_tags)

        ''' create index and add mapping '''
        load = Loader()
        options = {"indexName": idx, "shards": 5}

        '''add meta info'''
        config = CriteriaManager.get_criteria_config()
        idx_type_cfg = config[idx_type]
        desc = idx_type_cfg['desc']
        meta = {"desc": desc}
        if not test_mode:
            load.mapping(props, idx_type, meta=meta, analyzer=Loader.KEYWORD_ANALYZER, **options)
        return props