{"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"}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"markdown","source":"# RNA Sequence Similarity","metadata":{"papermill":{"duration":0.004154,"end_time":"2023-01-24T07:36:26.925718","exception":false,"start_time":"2023-01-24T07:36:26.921564","status":"completed"},"tags":[]}},{"cell_type":"code","source":"!pip install obonet","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import os\nimport csv\nimport numpy as np\nimport pandas as pd\nimport matplotlib.pyplot as plt\nimport seaborn as sns\nfrom tqdm import tqdm\nfrom Bio import SeqIO\nfrom Bio import pairwise2\nfrom Bio.Seq import Seq\nimport obonet","metadata":{"_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","papermill":{"duration":1.189497,"end_time":"2023-01-24T07:36:28.118361","exception":false,"start_time":"2023-01-24T07:36:26.928864","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2023-09-11T16:34:08.218078Z","iopub.execute_input":"2023-09-11T16:34:08.218582Z","iopub.status.idle":"2023-09-11T16:34:08.897797Z","shell.execute_reply.started":"2023-09-11T16:34:08.218545Z","shell.execute_reply":"2023-09-11T16:34:08.895748Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"    data0 = pd.DataFrame()\n    with open('/kaggle/input/stanford-ribonanza-rna-folding/train_data.csv', 'r') as f:\n        lines = f.readlines()\n\n    print(len(lines))\n    first_lines = lines[:100]\n    for line in first_lines:\n        data0 = pd.concat([data0, pd.Series(line.strip().split(','))], axis=1)\n\n    data=data0.T\n    data.columns=data.iloc[0]\n    cols=data.columns.tolist()\n    data=data[1:]\n    data2=data.iloc[:,:7]\n    display(data2)","metadata":{"papermill":{"duration":3.690969,"end_time":"2023-01-24T07:36:31.811781","exception":false,"start_time":"2023-01-24T07:36:28.120812","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2023-09-11T15:57:30.468168Z","iopub.execute_input":"2023-09-11T15:57:30.468474Z"},"_kg_hide-input":true}},{"cell_type":"code","source":"data_chunk = pd.read_csv('/kaggle/input/stanford-ribonanza-rna-folding/train_data.csv', nrows=1000)\ndisplay(data_chunk)\ncols=data_chunk.columns.tolist()","metadata":{"papermill":{"duration":21.875018,"end_time":"2023-01-24T07:36:53.70631","exception":false,"start_time":"2023-01-24T07:36:31.831292","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2023-09-11T16:34:08.898745Z","iopub.status.idle":"2023-09-11T16:34:08.899175Z","shell.execute_reply.started":"2023-09-11T16:34:08.898961Z","shell.execute_reply":"2023-09-11T16:34:08.898980Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"plt.scatter(data_chunk['reads'],data_chunk['signal_to_noise'])\nplt.xlabel('reads')\nplt.ylabel('signal_to_noise')\nplt.title('Reads vs Signal_to_noise')\nplt.show()","metadata":{"execution":{"iopub.status.busy":"2023-09-11T16:34:08.901458Z","iopub.status.idle":"2023-09-11T16:34:08.902080Z","shell.execute_reply.started":"2023-09-11T16:34:08.901766Z","shell.execute_reply":"2023-09-11T16:34:08.901795Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"data_chunk2 = pd.read_csv('/kaggle/input/stanford-ribonanza-rna-folding/train_data.csv', skiprows=range(1000), nrows=1000)\ndata_chunk2.columns=cols\ndisplay(data_chunk2)","metadata":{"execution":{"iopub.status.busy":"2023-09-11T16:34:08.903643Z","iopub.status.idle":"2023-09-11T16:34:08.904544Z","shell.execute_reply.started":"2023-09-11T16:34:08.904241Z","shell.execute_reply":"2023-09-11T16:34:08.904273Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"https://www.kaggle.com/code/stpeteishii/cafa-5-calculate-sequence-similarity","metadata":{}},{"cell_type":"code","source":"df=data_chunk2\nseq1 = Seq(df.iloc[0,1])\nseq2 = Seq(df.iloc[1,1])\n\ndef seq_similarity(seq1,seq2):    \n    alignments = pairwise2.align.globalxx(seq1, seq2)\n    best_alignment = alignments[0]\n    aligned_seq1 = best_alignment[0]\n    aligned_seq2 = best_alignment[1]\n    num_matches = 0\n    num_mismatches = 0\n    for i in range(len(aligned_seq1)):\n        if aligned_seq1[i] == aligned_seq2[i]:\n            num_matches += 1\n        else:\n            num_mismatches += 1\n    similarity = num_matches / (num_matches + num_mismatches)    \n    return similarity\n\nsimilarity=seq_similarity(seq1,seq2)\nprint('i=0 vs i=1')\nprint()\nprint(len(seq1))\nprint(seq1)\nprint()\nprint(len(seq2))\nprint(seq2)\nprint()\nprint(\"Similarity：\", similarity)","metadata":{"execution":{"iopub.status.busy":"2023-09-11T16:34:08.905822Z","iopub.status.idle":"2023-09-11T16:34:08.906422Z","shell.execute_reply.started":"2023-09-11T16:34:08.906158Z","shell.execute_reply":"2023-09-11T16:34:08.906189Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"for i in range(10):\n    seq1 = Seq(df.iloc[0,1])\n    seq2 = Seq(df.iloc[i,1])\n    similarity=seq_similarity(seq1,seq2)\n    print('i=0 vs i='+str(i)+' : ',similarity)","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]}],"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"pygments_lexer":"ipython3","nbconvert_exporter":"python","version":"3.6.4","file_extension":".py","codemirror_mode":{"name":"ipython","version":3},"name":"python","mimetype":"text/x-python"}}