今天小編和大家分享如何借助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:]是用來定循環起點)
```
2、代碼拓展
上面這個代碼的關鍵在與
output.write(line[0] + ' ' + line[1] + ' ' + i + ' ')這一步,一般不需要更改其余的參數,通過下面幾個圖來感受下修改后的變化。(這個代碼可以拓展,拓展什么樣靠自己的想象力了下面我就展示他可伸縮的性質)
加法:(構建具有更多性質屬性的輸入文件)
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 + '
')
```

同樣我們刪去了' ' + line[1],也就是把line[1]代表的源數據B列給去掉。
根據以上的稍微改動,對於處理這類數據,通過對這段循環語句稍微改動
#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
