MCScanX安装与使用

news2024/11/23 0:05:07

为什么要写这篇文章:
最近因为朋友需要用到MCScanX画两个物种的共线性点图,但是发现搜到的blog中所提供的安装方法都不太相同,且在都会出现或多或少的问题,所以来找我帮忙,我搜到的所有blog安装链接http://chibba.pgml.uga.edu/mcscan2/MCScanX.zip其实都已经不维护了。总体安装的很艰难,所以想把自己的安装经历和大家分享一下,以便其他人少走弯路。

下载安装包以及需要的环境

需要我们自行下载并解压安装的主要有三个文件 Zlib库文件、libpng文件、MCScanX以及一些依赖环境。

  • 依赖环境:
    以下依赖环境有的话就不用再装了,不知道有没有的话可以试着输入以下,有的话会弹出用法。
    例如:

    (base) ght@DESKTOP-TU3M5B7:~$ makeblastdb  # 如果没有的话会弹出安装方法
    
    Command 'makeblastdb' not found, but can be installed with:
    sudo apt install ncbi-blast+
    
    (base) ght@DESKTOP-TU3M5B7:~$ makeblastdb  # 如果安装了的话会弹出用法
    
    USAGE
        makeblastdb [-h] [-help] [-in input_file] [-input_type type]
        -dbtype molecule_type [-title database_title] [-parse_seqids]
        [-hash_index] [-mask_data mask_data_files] [-mask_id mask_algo_ids]
        [-mask_desc mask_algo_descriptions] [-gi_mask]
        [-gi_mask_name gi_based_mask_names] [-out database_name]
        [-blastdb_version version] [-max_file_sz number_of_bytes]
        [-logfile File_Name] [-taxid TaxID] [-taxid_map TaxIDMapFile] [-version]
    

    安装以下环境:java、javac、blast、make。命令如下,根据自己系统的情况选择安装哪一个:

    sudo apt update
    sudo apt upgrade # 这两步比较玄学,但是还是建议升级一下
    sudo apt install openjdk-11-jre-headless # java
    sudo apt install openjdk-11-jdk-headless # javac
    sudo apt install ncbi-blast+ # blast
    sudo apt install make #  make
    
  • Zlib库:
    建议先去官网看看现在的版本是什么,然后以官网的下载链接为准,这里代码只做参考

    • 下载并解压:
    wget http://www.zlib.net/zlib-1.2.12.tar.gz  # 下载Zlib
    tar -zxvf zlib-1.2.12.tar.gz  # 解压
    cd zlib-1.2.12/ 
    
    • 安装:
    ./configure
    make
    make install
    
  • libpng库
    与Zlib类似,但是libpng依赖于Zlib,所以需要先下载安装Zlib。

    • 下载并解压:
    wget https://cfhcable.dl.sourceforge.net/project/libpng/libpng16/1.6.37/libpng-1.6.37.tar.gz
    tar -zxvf libpng-1.6.37.tar.gz
    cd libpng-1.6.37/
    
    • 安装:
    ./configure
    make
    make install
    

下载并安装MCScanX

如上所述,MCScanX官网已经不维护了,但是可以从github上下载。

  • 下载:
    wget https://codeload.github.com/wyp1125/MCScanX/zip/refs/heads/master
    unzip master 
    cd MCScanX-master # master解压出来文件名是MCScanX-master
    
  • 安装:
    由于现在大都是64位系统,所以需要给以下三个文件msa.h,dissect_multiple_alignment.h, and detect_collinear_tandem_arrays.h添加库文件:#include <unistd.h>。我用的是vim
    vim msa.h  #然后把这三个头问题就修改了
    
    make #然后安装
    
  • 将MCScanX以及他的下游分析添加到环境变量:
    • MCScanX
    echo 'PATH=$PATH:~/yourPath/MCScanX-master/ ' >> ~/.bashrc  #此处的yourPath指你装MCScanX的路径
    
    
    MCScanX # 这样就可以直接命令行调用MCScanX了
    
    • 下游分析程序
    export CLASSPATH='.:/yourPath/MCScanX-master/downstream_analyses'  # 将绘图等需要的类添加至java的类路径
    
    
    java dot_plotter -g os_sb.gff -s os_sb.collinearity -c dot.ctl -o dot.PNG  # 这样就可以直接调用下游java分析程序了
    

举例说明

我主要用MCScanX做共线分析并画图,这里用我自己的流程作为示例。其他的我也不太会哈哈

  • 处理输入文件:

    下载两个物种的se.pep.faso.pep.fa文件,以及其se.gff3so.gff3文件。但是MCScanX需要的gff文件与标准版的gff3文件有所区别,只有四列,分别是染色体名称、基因名、基因起始坐标、基因结束坐标,所以需要先进行处理。

    注意:染色体格式为sp_name1。

    sp_name  gene_name  starting_position  ending_position
    # gff文件的格式
    

    这是我处理gff3文件的python代码,大家可以参考:

    import os
    import pandas as pd
    
    def main(path):
        gff3_files = []
        files = os.listdir(path)
        for file in files:
            if file.split('.')[-1] == 'gff3':
                gff3_files.append(file)
        x = path
        for gff3_file in gff3_files:
            with open(x+gff3_file, "r") as file:
                temp = pd.read_csv(file, sep='\t',comment='#', header=None)
                # 只保留基因
                temp = temp.drop(temp[temp[2] != 'gene'].index)
                temp = temp[[0,8,3,4]]
                temp[8] = temp[8].map(lambda x: x.split(';')[0].split('=')[1])
                # 丢掉ups
                temp = temp.drop(temp[temp[0].str.contains('ups')].index)
                dataFrame = temp.drop(temp[temp[0].str.contains('unplaced-scaffold')].index)
                dataFrame = dataFrame.reset_index(drop = True)
                # 排序并输出
                name = dataFrame.at[0, 0]
                number_index = 0
                for j in range(len(name) - 1, -1, -1):
                    if name[j].isdigit():
                        continue
                    else:
                        number_index = j + 1
                        break
                dataFrame[0] = dataFrame[0].map(lambda x: int(x[number_index:]))
    
                dataFrame = dataFrame.sort_values(by=[0, 3], ascending=[True, True])
                dataFrame[0] = dataFrame[0].map(lambda x: name[:number_index] + str(x))
                dataFrame.to_csv(x+gff3_file[:-1], header=None, index=None, sep='\t')
                # 最终有几个gff3文件,就会生成几个gff文件
    
    # 按间距中的绿色按钮以运行脚本。
    if __name__ == '__main__':
        path = 'C/gff_file_path/'
        main(path)
    
  • blastp 比对

    makeblastdb -in se.pep.fa -dbtype prot -parse_seqids -out se.pep.db  # 因为我画的是se和so之间的共线性点图,所以使用se建库,再和so进行比对。
    
    
    blastp -query so.pep.fa -db se.pep.db -out se_so.blast -evalue 1e-10 -num_threads 12 -outfmt 6 -num_alignments 5
    
  • 运行MCScanX
    运行MCScanX之前,我们需要将gff文件、blast文件放入同一个文件夹,且gff文件是两个物种gff文件合并的gff。另外两个文件的名字需要相同,我这里是se_so.gffse_so.blast

    MCScanX se_so
    

    得到三个文件:se_so.htmlse_so.collinearityse_so.tandem

  • 绘制共线性点图

    • 控制文件
      绘制共线性点图需要dot.ctl文件。文件格式为:
    800
    800
    so1,so2,so3,so4,so5,so6,so7,so8,so9,so10,so11
    se22,se21,se20,se19,se18,se17,se16,se15,se14,se13,se12,se11,se10,se9,se8,se7,se6,se5,se4,se3,se2,se1
    # 从上往下分别为X轴、Y轴的像素大小,X轴、Y轴染色体顺序(染色体格式需要为物种名+条数,eg:so1 )
    
    • 绘图命令:
    java dot_plotter -g se_so.gff -s se_so.collinearity -c dot.ctl -o dot.PNG
    

     

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/685754.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Flink的TopN

1.为什么定时器的时间设置为&#xff0c;窗口的end值1ms就可以呢&#xff1f; 因为定时器是下游&#xff0c;水位线是取的多个上游的最小的&#xff0c; 水位线是跟在数据后面的&#xff0c;所以当定时器的时间到达时&#xff0c;上游一定计算完成了&#xff0c;并且数据已经在…

LLM - 搭建 DrugGPT 结合药物化学分子知识的 ChatGPT 系统

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://blog.csdn.net/caroline_wendy/article/details/131384199 论文&#xff1a;DrugChat: Towards Enabling ChatGPT-Like Capabilities on Drug Molecule Graphs DrugChat&#xff0c;基…

便携式明渠流量计比对装置的基本要求

便携式明渠流量计比对装置的基本要求有哪些&#xff1f; 符合国标要求中对流量监测单元的比对&#xff08;每2分钟采集一次数据&#xff0c;连续记录 6次数据与在线流量计数据进行液位误差比对&#xff0c;测量10分钟内的流量数据与在线流量计数据进行流量误差比对&#xff09;…

springboot服务时间筛选问题,同一服务部署在本地和Linux服务器,同样的时间筛选数据不一致

项目场景&#xff1a; springboot项目通过时间筛选数据、 问题描述 时间筛选问题&#xff0c;同一服务部署在本地和Linux服务器&#xff0c;同样的时间筛选数据不一致 接收的参数 JsonFormat(pattern "yyyy-MM-dd") private Date queryDate;服务器打印日志出来的…

Linux常用命令——fsck命令

在线Linux命令查询工具 fsck 检查并且试图修复文件系统中的错误 补充说明 fsck命令被用于检查并且试图修复文件系统中的错误。当文件系统发生错误四化&#xff0c;可用fsck指令尝试加以修复。 语法 fsck(选项)(参数)选项 -a&#xff1a;自动修复文件系统&#xff0c;不询…

JavaScript数组遍历的各种方式

目录 第一种方式&#xff08;for循环&#xff09; 第二种方式&#xff08;forEach 遍历&#xff09; 第三种方式&#xff08;for...in&#xff09; 第四种方式&#xff08;for...of&#xff09; 第五种方式&#xff08;map方法遍历&#xff09; 六、性能对比 第一种方式&…

【yolov5系列】将yolov5s模型部署到SigmaStar的9383芯片上

今年年初&#xff0c;接触了星宸科技&#xff08;sigmastar&#xff09;的芯片9383&#xff0c;将深度学习模型进行部署&#xff0c;使用sigmastar的深度学习加速硬件IPU进行模型推理。这里简单记录下sigmastar相关内容。 补充说明&#xff0c;之前使用的是瑞芯微的芯片&#x…

大数据从0到1的完美落地之Flume案例_3

案例演示 案例演示&#xff1a;SyslogtcpMemLogger Syslogtcp: syslog广泛应用于系统日志。syslog日志消息既可以记录在本地文件中&#xff0c;也可以通过网络发送到接收syslog的服务器。接收syslog的服务器可以对多个设备的syslog消息进行统一的存储&#xff0c;或者解析其中…

经济统计类的实证论文解剖

整理来源 UP主&#xff1a;Michaelscholar https://space.bilibili.com/550661456/video 截图 1.读什么文献 国内&#xff1a;中文CSSCI 期刊&#xff1a;中国社会科学&#xff0c;经济研究&#xff0c;经济学&#xff08;季刊&#xff09;&#xff0c;管理世界&#xff0…

MySQL数据库——主从复制

目录 前言一、读写分离概述1. 什么是读写分离&#xff1f;2. 为什么要读写分离呢&#xff1f;3. 什么时候要读写分离&#xff1f;4. 主从复制与读写分离5. mysq支持的复制类型6. 主从复制的工作过程7. MySQL主从复制延迟 二、主从复制配置方法 前言 在实际的生产环境中&#x…

c++ GoogleTest编译使用

编译 1.下载zip源码 2.解压&#xff0c;使用cmake生成工程 第一处填解压生成的文件夹 第二处的build路径可以不存在&#xff0c;点击configure会cmake提示创建 弹出界面中要选择自己的vs版本&#xff0c;选择finish。 然后点击generate&#xff0c;然后点击open Project。 生…

使用kubesphere搭建k8s集群

目录 1准备3台虚拟机 2 每台虚拟机更新yum的软件包&#xff0c;时间设置等 3 关闭防火墙 4 添加三台服务器的域名设置 5 设置三台服务器之间免密 6 安装kubesphere必要依赖&#xff0c;每个节点都要装&#xff0c;不然报错&#xff1a;socat not found in system path 7…

校园广播对讲音柱话筒

校园广播对讲话筒 校园广播对讲话筒&#xff1a;增强校园沟通的利器 提起校园广播对讲话筒&#xff0c;你或许会想到它在紧急情况下的应用。然而&#xff0c;这个功能强大的设备在校园内的广泛运用&#xff0c;不仅仅局限于危机解决。它成为了促进校园内部沟通、加强团队协作…

Tensorflow:from tensorflow.keras import layers 报错

执行代码&#xff1a; from tensorflow.keras import layers 报错&#xff1a; keras模块不存在 查&#xff0c;有其他博客表示keras包在tensorflow模块的pyhon包中&#xff1b; 于是&#xff1a; from tensorflow.python.keras import layers 在类似的如此调用keras的其…

chatgpt赋能python:Python能自动化办公吗?

Python能自动化办公吗&#xff1f; 在当今信息时代&#xff0c;办公工作中我们不可避免地要使用电脑&#xff0c;进行各种办公处理&#xff0c;比如文字处理、数据处理、图表制作等。这些操作看起来简单&#xff0c;但从事这些工作的人员都知道&#xff0c;日积月累之后&#…

【MySQL】不就是MySQL——多表查询综合练习

前言 嗨咯大家好&#xff01;我们学习完毕了多表查询&#xff0c;今天我们就要对我们所学的成果进行测验&#xff0c;本期主要是对多表查询相关内容的练习课程。可以先试着自己敲&#xff0c;遇到不会可以查看查考代码。 目录 前言 目录 练习题 1.查询员工的姓名、年龄、职位…

HDFS常见的Shell操作

HDFS常见的Shell操作 文章目录 HDFS常见的Shell操作写在前面基本语法HDFS命令大全常用命令实操准备工作上传文件下载文件HDFS直接操作 写在前面 Hadoop版本&#xff1a;Hadoop-3.xLinux版本&#xff1a;CentOS7.5 HDFS的Shell操作是入门Hadoop开发的学习重点 基本语法 Shell客…

分布式批处理:MapReduce初探

大家好&#xff0c;我是方圆。《数据密集型应用系统设计》第十章中有介绍到 MapReduce 相关的内容&#xff0c;当时觉得看得意犹未尽&#xff0c;所以便找了一些资料又看了一下。随着深入发现能扩展的东西实在太多&#xff0c;考虑时间有限&#xff0c;准备先把 MapReduce 基础…

基于smardaten无代码快速开发智慧城管系统

0️⃣需求背景 现代城市管理的面临着一系列问题&#xff1a;如执法人员不足、信息化手段应用少和时间处理不及时等&#xff0c;开发一个智慧城管回访系统的需求与日俱增… 通过引入智慧城管回访系统&#xff0c;可以提高城市管理的科学性、智能化和透明度&#xff0c;为城市发…

【软考网络管理员】2023年软考网管初级常见知识考点(14)- linux命令及目录相关详解

涉及知识点 Linux 目录结构&#xff0c; Linux 常用命令&#xff0c; Linux 下的文件基本属性&#xff0c; Linux 的启动与关闭 软考网络管理员常考知识点&#xff0c;软考网络管理员网络安全&#xff0c;网络管理员考点汇总。 原创于&#xff1a;CSDN博主-《拄杖盲学轻声码》…