{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"name":"python","version":"3.10.12","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"},"kaggle":{"accelerator":"none","dataSources":[{"sourceId":59094,"databundleVersionId":7010844,"sourceType":"competition"},{"sourceId":7279447,"sourceType":"datasetVersion","datasetId":1608748}],"dockerImageVersionId":30626,"isInternetEnabled":true,"language":"python","sourceType":"notebook","isGpuEnabled":false}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"import pandas as pd\nfrom Bio import Entrez\nfrom tqdm.notebook import tqdm","metadata":{"execution":{"iopub.status.busy":"2023-12-25T18:40:20.088676Z","iopub.execute_input":"2023-12-25T18:40:20.089172Z","iopub.status.idle":"2023-12-25T18:40:20.095483Z","shell.execute_reply.started":"2023-12-25T18:40:20.089141Z","shell.execute_reply":"2023-12-25T18:40:20.093776Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Read genes from file","metadata":{}},{"cell_type":"code","source":"\ndef read_genes_from_file(filename):\n    with open(filename, 'r') as file:\n        genes = [line.strip() for line in file.readlines()]\n    return genes","metadata":{"execution":{"iopub.status.busy":"2023-12-25T18:40:20.097809Z","iopub.execute_input":"2023-12-25T18:40:20.098572Z","iopub.status.idle":"2023-12-25T18:40:20.115518Z","shell.execute_reply.started":"2023-12-25T18:40:20.098533Z","shell.execute_reply":"2023-12-25T18:40:20.114413Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Search for human homologs","metadata":{}},{"cell_type":"code","source":"def search_homologs(plant_gene_list):\n    Entrez.email = \"asdasdfsdfsdfsaf@gmail.com\"  # Replace with your email\n    homologs = []\n\n    for plant_gene in tqdm(plant_gene_list, desc=\"Searching homologs\"):\n        try:\n            handle = Entrez.esearch(db=\"homologene\", term=f\"{plant_gene}[Gene] AND Homo sapiens[Organism]\")\n            record = Entrez.read(handle)\n            handle.close()\n\n            human_homolog_id = record[\"IdList\"][0] if record[\"IdList\"] else None\n            homologs.append([plant_gene, human_homolog_id])\n        except Exception as e:\n            homologs.append([plant_gene, None])\n\n    return pd.DataFrame(homologs, columns=['Plant Gene', 'Homolog ID'])\n","metadata":{"execution":{"iopub.status.busy":"2023-12-25T18:40:20.117071Z","iopub.execute_input":"2023-12-25T18:40:20.117901Z","iopub.status.idle":"2023-12-25T18:40:20.133300Z","shell.execute_reply.started":"2023-12-25T18:40:20.117824Z","shell.execute_reply":"2023-12-25T18:40:20.131753Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Fetch gene names","metadata":{}},{"cell_type":"code","source":"\ndef fetch_gene_names(homolog_df):\n    gene_names = []\n\n    for homolog_id in tqdm(homolog_df['Homolog ID'], desc=\"Fetching gene names\"):\n        try:\n            handle = Entrez.efetch(db=\"gene\", id=homolog_id, retmode=\"xml\")\n            record = Entrez.read(handle)\n            handle.close()\n\n            gene_name = None\n            if record and 'Entrezgene_gene' in record[0]:\n                gene_info = record[0]['Entrezgene_gene']\n                if 'Gene-ref_locus' in gene_info['Gene-ref']:\n                    gene_name = gene_info['Gene-ref']['Gene-ref_locus']\n\n            gene_names.append(gene_name)\n        except Exception as e:\n            gene_names.append(None)\n\n    homolog_df['Gene Name'] = gene_names\n    return homolog_df","metadata":{"execution":{"iopub.status.busy":"2023-12-25T18:40:20.134900Z","iopub.execute_input":"2023-12-25T18:40:20.135521Z","iopub.status.idle":"2023-12-25T18:40:20.142879Z","shell.execute_reply.started":"2023-12-25T18:40:20.135488Z","shell.execute_reply":"2023-12-25T18:40:20.142009Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Execution","metadata":{}},{"cell_type":"code","source":"plant_genes = read_genes_from_file(\"/kaggle/input/genes-information/genes_Arabidopsis_StressResponsive_AnnaKlepikova.txt\")\nhomolog_df = search_homologs(plant_genes)\ndf_homologs = fetch_gene_names(homolog_df)","metadata":{"execution":{"iopub.status.busy":"2023-12-25T18:40:20.145127Z","iopub.execute_input":"2023-12-25T18:40:20.145579Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Final Output","metadata":{}},{"cell_type":"code","source":"df = df_homologs['Gene Name'].dropna().tolist()\nprint(df)","metadata":{"trusted":true},"execution_count":null,"outputs":[]}]}