掌握這個Python小技巧,輕鬆構建cytoscape匯入檔案
今天小編和大家分享如何藉助Python指令碼輕鬆構建cytoscape匯入檔案。Cytoscape是一個非常適合展示各種相互作用關係的視覺化軟體。
具體來說就是可以用於蛋白互作網路的展示,miRNA與蛋白質或者TF與RNA的相互作用等內容的視覺化,是一個生信分析不可或缺的神器。但是當要處理的資料比較多,並且需要根據Cytoscape要求整理資料的時候,會不會整理到眼花?不知道你們會不會,反正小編每次都整理得想吐血~~~
更多Python視訊、原始碼、資料加群960410445免費獲取
上一次的利用Cytoscape中展示富集分析的結果教程中,Cytoscape匯入的文字內容大致有圖中的那幾列,
將基因富集後,我們開啟的原始檔案一般如下圖
為了舉例說明,我們僅選取了一個性質,通過分列將gene裡的gene分散到各個單元格里,形成下圖。
具體問題是:將圖1中source,性質和target三類資料轉化為圖2裡的具有一對一關係樣式,原本的解決方法是利用excel的複製橫縱轉化貼上,之後可能還有重新整合起來,太過繁瑣。
不懂程式設計的醫學狗,還幻想用excel的函式,妄想解決上述問題,多次嘗試還是失敗。最後依靠大神大腿,學了用python來解決上述問題。下面和大家分享一下具體步驟。
安裝和環境變數設計
網址:https://www.python.org/doc/
安裝完還不算,必須先設定好python的環境變數(具體什麼東西我一臉懵逼,就知道這個不設定好,錯誤警告!!!)
設定也很簡單:先找到你你python的安裝路徑,
然後根據一下箭頭指示操作
在最後一個編輯系統變數裡面,在原來的變數值後面加入“;+python的路徑”(這裡的分號:,必須是半形下的分號)
建立文字和檔案儲存
在安裝好python以及設計好變數環境後,建立一個文字,改字尾為.py用於存python程式碼以及一個.txt文字用於存資料。
其中data2.txt裡面的資料應該是下圖所顯示那樣,具體拓展看文末,
之後開啟,cmd,
先確定剛剛.py和資料檔案data.txt所在資料夾。
在命令框裡,進入後默認出現1框所出現的,在1框後輸入cd+檔案儲存位置
將索引引到檔案儲存位置,才可以進行下一步分析
資料轉換
然後動動手指按下“python xxx.py”,然後就出現了一個out.txt
開啟,看下,刺激不刺激,幸福不幸福!這樣就解決了上次的困擾了,希望對大家有幫助。這個事情告訴我們,有個會懂程式碼的同學是個多麼好的體驗,睡覺都能笑醒!!!!
程式碼分析和拓展
1、程式碼如下
coding: utf-8
開啟data2.txt
input = open("data2.txt", 'r')
output = open("out.txt",'w')
while True:
line = input.readline()
if not line: #檔案讀完退出
break;
line = line.strip().split(' ')
#print(line)
for i in line[2:]:
if not i:
continue
else:
output.write(line[0] + ' ' + line[1] + ' ' + i + '
')
input.close()
output.close()
(’ ’代表excel表裡一個空格,’
’是換位,靠i迴圈。
for i in line[2:]裡的line[2:]是用來定迴圈起點)<p><strong>2、程式碼拓展</strong></p> <p>上面這個程式碼的關鍵在與</p> <p><strong>output.write(line[0] + ' ' + line[1] + ' ' + i + ' ')</strong>這一步,一般不需要更改其餘的引數,通過下面幾個圖來感受下修改後的變化。(這個程式碼可以拓展,拓展什麼樣靠自己的想象力了下面我就展示他可伸縮的性質)</p> <p><strong>加法:(構建具有更多性質屬性的輸入檔案)</strong></p> <pre> output.write(line[0] + ' ' + line[1] +’ ’+line[2]+ ' ' + i + ' ')
公式改變處用紅色標明,可以看出這次輸出的檔案,在原先的基礎之上,出現了第三列這一列,也就意味著第三列的輸出資訊是’ ’+line[2]所表示的。之前說了,line[2]中2是定位的,我們看下我們最先需要處理的資料來源。
Line[X]中X的順序是從0開始的,也就是說line[0]代表A列,line[2]代表C列。
減法:(刪減輸入性質的檔案)
output.write(line[0] + ' ' + i + '
')
<p><img alt="掌握這個Python小技巧,輕鬆構建cytoscape匯入檔案" class="has" src="http://p99.pstatp.com/large/pgc-image/bfa186b3123445fc9d9685d137611054" /></p> <p> </p> <p>同樣我們刪去了' ' + line[1],也就是把line[1]代表的源資料B列給去掉。</p> <p>根據以上的稍微改動,對於處理這類資料,通過對這段迴圈語句稍微改動</p> <pre> #print(line) for i in line[X:]: if not i: continue else: output.write(line[0] + ' ' + line[1] + ' ' + i + ' ')
即通過對x的賦值,結合我們的需要,定好合適的起點就對這個指令碼有了全面的瞭解了。
這個程式碼是開源的,對於將david,bingo外掛等富集分析的輸出檔案轉化成符合cytoscape輸入格式是非常便利省時的,不需要什麼程式設計的底子,零基礎快速掌握一個python小技巧達到構建配置檔案的目的。
來源:https://blog.csdn.net/sinat_38682860/article/details/85636619