zoukankan      html  css  js  c++  java
  • 掌握这个Python小技巧,轻松构建cytoscape导入文件

    今天小编和大家分享如何借助Python脚本轻松构建cytoscape导入文件。Cytoscape是一个非常适合展示各种相互作用关系的可视化软件。

    掌握这个Python小技巧,轻松构建cytoscape导入文件

    具体来说就是可以用于蛋白互作网络的展示,miRNA与蛋白质或者TF与RNA的相互作用等内容的可视化,是一个生信分析不可或缺的神器。但是当要处理的数据比较多,并且需要根据Cytoscape要求整理数据的时候,会不会整理到眼花?不知道你们会不会,反正小编每次都整理得想吐血~~~

    更多Python视频、源码、资料加群960410445免费获取

    上一次的利用Cytoscape中展示富集分析的结果教程中,Cytoscape导入的文本内容大致有图中的那几列,

    掌握这个Python小技巧,轻松构建cytoscape导入文件

    将基因富集后,我们打开的原始文件一般如下图

    掌握这个Python小技巧,轻松构建cytoscape导入文件

    为了举例说明,我们仅选取了一个性质,通过分列将gene里的gene分散到各个单元格里,形成下图。

    掌握这个Python小技巧,轻松构建cytoscape导入文件

    掌握这个Python小技巧,轻松构建cytoscape导入文件

    具体问题是:将图1中source,性质和target三类数据转化为图2里的具有一对一关系样式,原本的解决方法是利用excel的复制横纵转化粘贴,之后可能还有重新整合起来,太过繁琐。

    不懂编程的医学狗,还幻想用excel的函数,妄想解决上述问题,多次尝试还是失败。最后依靠大神大腿,学了用python来解决上述问题。下面和大家分享一下具体步骤。

    安装和环境变量设计

    网址:https://www.python.org/doc/

    掌握这个Python小技巧,轻松构建cytoscape导入文件

    掌握这个Python小技巧,轻松构建cytoscape导入文件

    安装完还不算,必须先设置好python的环境变量(具体什么东西我一脸懵逼,就知道这个不设置好,错误警告!!!)

    掌握这个Python小技巧,轻松构建cytoscape导入文件

    设置也很简单:先找到你你python的安装路径,

    掌握这个Python小技巧,轻松构建cytoscape导入文件

    然后根据一下箭头指示操作

    掌握这个Python小技巧,轻松构建cytoscape导入文件

    掌握这个Python小技巧,轻松构建cytoscape导入文件

    掌握这个Python小技巧,轻松构建cytoscape导入文件

    掌握这个Python小技巧,轻松构建cytoscape导入文件

    掌握这个Python小技巧,轻松构建cytoscape导入文件

    在最后一个编辑系统变量里面,在原来的变量值后面加入“;+python的路径”(这里的分号:,必须是半角下的分号)

    创建文本和文件存储

    在安装好python以及设计好变量环境后,创建一个文本,改后缀为.py用于存python代码以及一个.txt文本用于存数据。

    掌握这个Python小技巧,轻松构建cytoscape导入文件

    其中data2.txt里面的数据应该是下图所显示那样,具体拓展看文末,

    掌握这个Python小技巧,轻松构建cytoscape导入文件

    之后打开,cmd,

    掌握这个Python小技巧,轻松构建cytoscape导入文件

    先确定刚刚.py和数据文件data.txt所在文件夹。

    掌握这个Python小技巧,轻松构建cytoscape导入文件

    掌握这个Python小技巧,轻松构建cytoscape导入文件

    在命令框里,进入后默认出现1框所出现的,在1框后输入cd+文件存储位置

    将索引引到文件存储位置,才可以进行下一步分析

    数据转换

    然后动动手指按下“python xxx.py”,然后就出现了一个out.txt

    掌握这个Python小技巧,轻松构建cytoscape导入文件

    掌握这个Python小技巧,轻松构建cytoscape导入文件

    掌握这个Python小技巧,轻松构建cytoscape导入文件

    打开,看下,刺激不刺激,幸福不幸福!这样就解决了上次的困扰了,希望对大家有帮助。这个事情告诉我们,有个会懂代码的同学是个多么好的体验,睡觉都能笑醒!!!!

    代码分析和拓展

    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 + '
    ')
    
    ```
    
    
    
    

    掌握这个Python小技巧,轻松构建cytoscape导入文件

    公式改变处用红色标明,可以看出这次输出的文件,在原先的基础之上,出现了第三列这一列,也就意味着第三列的输出信息是’ ’+line[2]所表示的。之前说了,line[2]中2是定位的,我们看下我们最先需要处理的数据源。

    掌握这个Python小技巧,轻松构建cytoscape导入文件

    Line[X]中X的顺序是从0开始的,也就是说line[0]代表A列,line[2]代表C列。

    减法:(删减输入性质的文件)

    	output.write(line[0] + '	' + i + '
    ')
    
    ```
    
    
    
    

    掌握这个Python小技巧,轻松构建cytoscape导入文件

    同样我们删去了' ' + 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
  • 相关阅读:
    [Swift]LeetCode806. 写字符串需要的行数 | Number of Lines To Write String
    [Swift]LeetCode805. 数组的均值分割 | Split Array With Same Average
    [Swift]LeetCode804. 唯一摩尔斯密码词 | Unique Morse Code Words
    [Swift]LeetCode803. 打砖块 | Bricks Falling When Hit
    [Swift]LeetCode802. 找到最终的安全状态 | Find Eventual Safe States
    [Swift]LeetCode801. 使序列递增的最小交换次数 | Minimum Swaps To Make Sequences Increasing
    [Swift]LeetCode799. 香槟塔 | Champagne Tower
    [Swift]LeetCode798. 得分最高的最小轮调 | Smallest Rotation with Highest Score
    [Swift]LeetCode797. 所有可能的路径 | All Paths From Source to Target
    转:12C PDB 配置不同的PDB监听端口
  • 原文地址:https://www.cnblogs.com/qixidi/p/10229239.html
Copyright © 2011-2022 走看看