class GeneInteractions(object): def __init__(self): self.blw = BioLinkWrapper() self.meta = { 'input_type': { 'complexity': 'set', 'id_type': 'HGNC', 'data_type': 'gene', }, 'output_type': { 'complexity': 'set', 'id_type': 'HGNC', 'data_type': 'gene', }, 'source': 'Monarch Biolink', 'predicate': ['blm:interacts with'] } def metadata(self): print("""Mod1E Interaction Network metadata:""") pprint(self.meta) @staticmethod def load_gene_set(input_gene_set): annotated_gene_set = [] for gene in input_gene_set.get_input_curie_set(): annotated_gene_set.append({ 'input_id': gene['hit_id'], 'sim_input_curie': gene['hit_id'], 'input_symbol': gene['hit_symbol'] }) return annotated_gene_set def get_interactions(self, annotated_gene_set): results = [] for gene in annotated_gene_set: interactions = self.blw.gene_interactions(gene_curie=gene['sim_input_curie']) for assoc in interactions['associations']: interaction = \ self.blw.parse_association( input_id=gene['sim_input_curie'], input_label=gene['input_symbol'], association=assoc ) results.append({ 'input_id': interaction['input_id'], 'input_symbol': interaction['input_symbol'], 'hit_symbol': interaction['hit_symbol'], 'hit_id': interaction['hit_id'], 'score': 0, }) return results
class GeneInteractions(object): def __init__(self): self.blw = BioLinkWrapper() self.gene_set = [] self.input_object = '' self.meta = { 'input_type': { 'complexity': 'set', 'id_type': 'HGNC', 'data_type': 'gene', }, 'output_type': { 'complexity': 'set', 'id_type': 'HGNC', 'data_type': 'gene', }, 'source': 'Monarch Biolink', 'predicate': ['blm:interacts with'] } def load_input_object(self, input_object): self.input_object = input_object def load_gene_set(self): for gene in self.input_object['input']: self.gene_set.append({ 'input_id': gene['hit_id'], 'sim_input_curie': gene['hit_id'], 'input_symbol': gene['hit_symbol'] }) def get_interactions(self): results = [] for gene in self.gene_set: interactions = self.blw.gene_interactions( gene_curie=gene['sim_input_curie']) for assoc in interactions['associations']: interaction = self.blw.parse_association( input_id=gene['sim_input_curie'], input_label=gene['input_symbol'], association=assoc) results.append({ 'input_id': interaction['input_id'], 'input_symbol': interaction['input_symbol'], 'hit_symbol': interaction['hit_symbol'], 'hit_id': interaction['hit_id'], 'score': 0, }) return results
class GeneInteractions(object): def __init__(self): self.blw = BioLinkWrapper(Config().get_biolink_api_endpoint()) self.meta = { 'input_type': { 'complexity': 'set', 'id_type': 'HGNC', 'data_type': 'gene', }, 'output_type': { 'complexity': 'set', 'id_type': 'HGNC', 'data_type': 'gene', }, 'source': 'Monarch Biolink', 'predicate': ['blm:interacts with'] } def metadata(self): print("""Mod1E Interaction Network metadata:""") pprint(self.meta) @staticmethod # RMB: July 5, 2019 - gene_records is a Pandas DataFrame def load_gene_set(gene_records): annotated_gene_set = [] for gene in gene_records.to_dict(orient='records'): annotated_gene_set.append({ 'input_id': gene['hit_id'], 'sim_input_curie': gene['hit_id'], 'input_symbol': gene['hit_symbol'] }) return annotated_gene_set def get_interactions(self, input_gene_set, threshold): annotated_input_gene_set = self.load_gene_set(input_gene_set) lower_bound = int(threshold) results = [] for gene in annotated_input_gene_set: interactions = self.blw.gene_interactions(gene_curie=gene['sim_input_curie']) for assoc in interactions['associations']: interaction = \ self.blw.parse_association( input_id=gene['sim_input_curie'], input_label=gene['input_symbol'], association=assoc ) results.append({ 'input_id': interaction['input_id'], 'input_symbol': interaction['input_symbol'], 'hit_symbol': interaction['hit_symbol'], 'hit_id': interaction['hit_id'], 'score': 0, }) # Process the results results = pd.DataFrame().from_records(results) counts = results['hit_symbol'].value_counts().rename_axis('unique_values').to_frame('counts').reset_index() high_counts = counts[counts['counts'] > lower_bound]['unique_values'].tolist() results = pd.DataFrame(results[results['hit_symbol'].isin(high_counts)]) return results