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_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")
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
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_)
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
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