生信人

找回密码
立即注册
搜索
热搜: 活动 交友 discuz
发新帖

0

收听

12

听众

318

主题
发表于 2021-12-8 20:50:48 | 查看: 3305| 回复: 5
本帖最后由 生信喵 于 2021-12-12 20:29 编辑

背景
       编译(compilation , compile) ,利用编译程序从源语言编写的源程序产生目标程序的过程。编译就是把高级语言变成计算机可以识别的 2 进制语言,计算机只认识 1 和 0,编译程序把人们熟悉的语言换成 2 进制的。

1 解释语言与编译语言
       生物信息软件作者使用多种类型的程序语言,例如 C,C++,python,java,python,R 等,这些语言都高级程序语言,各有优缺点。计算机最终都需要将其转换为二进制才能执行。那么转换成二进制的过程分为编译型和解释型。
1.1 编译型与解释型
       ➢ 编译型语言代表有:C 语言,C++、Object-C 等;通常都会对源代码进行编译,生成可以执行的二进制代码,执行的是编译后的结果
       ➢ 解释型语言代表有:JavaScript、Python、Erlang、PHP、Perl、Ruby 等;通常不用对源代码进行编译,一般是通过解释器载入脚本后运行。由于每个语句都是执行的时候才进行解释翻译,这样解释性语言每次执行就要翻译一次,效率相对要低。
       ➢ Java 具有编译与解释两种特性:既可以将其源代码当作脚本执行,也可以进行编译成.class 代码(字节码)载入运行。

1.2 编译型与解释型的区别
       编译型语言的是将源代码编译成二进制代码之后才能运行,因此执行效率更高,可已移植性更好。例如有些 C 语言编写的程序,直接将编译好的软件拷贝到新的设备上就可以直接运行。但是,编译型语言每次都得编译之后才能运行,在编写程序时,不容易测试。解释型语言的优点是不需要编译就可以直接运行,方便查看源代码。而且有良好的平台兼容性,在任何环境中都可以运行,可以快速部署,不用停机维护。但是解释型语言移植到新设备上同时需要编译器。例如python程序只有设备上安装了python程序才能解释执行。另外,由于每次运行的时候都要解释一遍,性能上不如编译型语言。

2 README 文件
       一般软件安装包内,除了包含各种源代码文件,还包括测试数据,软件说明,以及 README文件。文件名可以为 README,readme.md,readme.txt,INSTALL.txt ,INSTALL 等。可以直接使用 less 命令查看。readme 文件会对软件进行详细的介绍,包括软件说明,安装方法,使用案例,联系方式等内容,主要看安装方法部分。
  1. 安装 R 语言依赖
  2. yum install -y --skip-broken zlib java gcc-gfortran gcc gcc-c++ readline-devel
  3. libXt-devel bzip2-devel.x86_64 bzip2-libs.x86_64 xz-devel.x86_64 pcre-devel.x
  4. 86_64 libcurl-devel.x86_64
  5. 下载
  6. wget https://cloud.r-project.org/src/base/R-4/R-4.1.1.tar.gz
  7. tar -zxvf R-4.1.1.tar.gz -C ~/biosoft
  8. cd ~/biosoft/ R-4.1.1
复制代码
      查看编译部分,打 INSTALL 文件
  1. As you are reading this file, you have unpacked the R sources and are
  2. presumably in the top directory. Issue the following commands:
  3. ./configure
  4. make
  5. (If your make is not called `make', set the environment variable MAKE to
  6. its name, and use that name throughout these instructions.)
  7. This will take a while, giving you time to read `R-admin.html'.
  8. Then check the built system worked correctly, by
  9. make check
  10. and make the manuals by either or both of
  11. make pdf to create PDF versions
  12. make info to create info files
  13. However, please read the notes in `R-admin.html' about paper size and
  14. making the reference manual.
复制代码

3 编译软件过程
       一般编译软件分成三个步骤,有的分为四个步骤,具体几个步骤根据不同的软件不同,还需要看具体是哪种语言编写的程序。下面以一个典型的软件安装过程来进行介绍。
3.1 configure
       configure 是在编译前检查环境配置,也可以通过选项参数,来更改软件安装目录。configure是一个 shell 脚本文件,可以直接打开查看。configure 运行时会不停检查环境,提示一些warnings 和 error 信息。warnings 可以忽略,但是遇到 error 就会停止,需要解决这个依赖,然后重新运行 configure,直到全部检查通过,才可以进行下一步 make。

  1. 检测配置
  2. ./configure --enable-R-shlib --with-pcre1
复制代码

3.2 make
       当 configure 运行结束,且没有问题的时候,可以使用 make 进行编译。make 就是将源代码编译成二进制的过程。有些软件 make 之前还有一个 make test,make check 等过程。也有一些软件不需要 configure,直接 make 编译。make 结束之后就会在目录下发现有些可执行文件,或者多出一个 bin 目录。这个时候就可以直接运行这些软件了。

  1. 编译
  2. make
复制代码

3.3 make install
       make 已经完成了编译过程,make install 主要是将软件链接到指定的安装目录,即第一步configue 指定的目录下。如果第一步没有指定,则安装到默认的目录下,一般是/usr 目录。这里需要注意,如果不是管理员用户,则没有权限写入/usr 目录,这个时候会提示一个权限
的问题,“Permission denied”,这个不影响软件运行,可以手动将可执行程序链接至自己的软件目录内。这样 configure,make,make install 就完成了软件安装,这其中,最重要的就是 configure这一步。如果 configure 没有问题,则 make 和 make install 一般可以顺利完成。

  1. 安装
  2. make install
复制代码

4 安装已编译软件
       很多软件除了提供源代码之外,还提供了已编译的版本,也就是编译好的版本,这样的版本可以直接使用。如果软件提供编译好的版本,建议选择这样的版本,非常方便,下载之后,解压缩就可以使用了。源代码与已编译有什么区别呢?源代码编译会首先检查每个系统的硬件和环境配置,然后更有针对性的进行编译,一般来说,这样的软件运行效率比已编译的版本效率更高。不过,这样的效率差别主要针对互联网应用,有很大的运行次数,如果每次差1 秒钟就会有很大的影响,生物软件影响不大。
       下面将通过几款软件的安装过程,来进行讲解练习。在安装软件之前,我们先创建三个文件目录,分别是 bin,biosoft 以及 src。

  1. 创建文件夹
  2. mkdir bin biosoft src
复制代码
      bin:存放每个软件的可执行程序
       biosoft:软件安装目录;
       src:软件源代码;
       下面给出几个安装已编译好的软件,更多内容见案例代码。
  1. 1 blast+
  2. axel -n 100 https://ftp.ncbi.nlm.nih.gov/blast/executables/blast+/LATEST/ncbi-blast-2.12.0+-x64-linux.tar.gz
  3. tar -zxvf ncbi-blast-2.12.0+-x64-linux.tar.gz
  4. cd ~/biosoft/ncbi-blast-2.12.0+/bin
  5. ls -1 | while read i;do ln -s $PWD/$i ~/bin/;done;
  6. blastn -h 检查是否安装成功
  7. 2 edirect
  8. wget https://ftp.ncbi.nlm.nih.gov/entrez/entrezdirect/edirect.tar.gz
  9. tar -zxvf edirect.tar.gz
  10. cd ~/bin/
  11. ln -s ~/biosoft/edirect/efetch .
  12. ln -s ~/biosoft/edirect/edirect.pl .
  13. ln -s ~/biosoft/edirect/ecommon.sh .
  14. ln -s ~/biosoft/edirect/esearch .
  15. esearch -help 检查是否安装成功
  16. 3 sratookit
  17. 下载指定版本
  18. axel -n 100 https://ftp-trace.ncbi.nlm.nih.gov/sra/sdk/current/sratoolkit.current-centos_linux64.tar.gz
  19. tar -zxvf sratoolkit.current-centos_linux64.tar.gz
  20. cd ~/bin
  21. ln -s ~/biosoft/sratoolkit.2.11.2-centos_linux64/bin/prefetch ./
  22. ln -s ~/biosoft/sratoolkit.2.11.2-centos_linux64/bin/fasterq-dump ./
  23. ln -s ~/biosoft/sratoolkit.2.11.2-centos_linux64/bin/fastq-dump ./
  24. prefetch -h 检查是否安装成功
复制代码


5 自行编译软件

       有一些软件没有已编译版本,需要自行进行编译,自行编译的好处是可以更好的适应硬件环境,效率更好一些,但其实对于我们普通用户影响不大,又不是一些互联网应用,每秒处理上亿次请求的工具,会有一些差别。自行编译也不用太过担心,一些工具还是比较容易编译的,直接敲 make 就可以完成,稍微复杂一点的可以查看帮助文档,这个过程也是一个学习和深入理解计算机原理的过程。由于系统配置环境不同,下面编译软件,有些可能会不成功。
       如果编译不成功,后面可是使用 bioconda 来进行安装。将源代码解压至安装目录 biosoft下,编译完成之后,将可执行程序 ln -s 链接到 bin 目录下即可。
       下面给出几个编译软件的案例,更多内容见脚本代码。
  1. 1 bwa
  2. cd ~/biosoft
  3. git clone https://github.com/lh3/bwa.git
  4. cd bwa; make
  5. bwa 检查是否安装完成
  6. 2 minimap2
  7. git clone https://github.com/lh3/minimap2
  8. cd minimap2 && make
  9. vi ~/.bashrc 编辑环境变量,加入下面一行
  10. export PATH=$PATH:/用户路径/biosoft/minimap2  设置路径进环境变量
  11. source ~/.bashrc 刷新环境变量
  12. minimap2 检查是否安装完成
  13. 3 prodigal
  14. git clone https://github.com/hyattpd/Prodigal.git
  15. cd Prodigal
  16. sudo make install
  17. prodigal 检查是否安装完成
  18. 4 canu
  19. git clone https://github.com/marbl/canu.git
  20. cd canu/src
  21. sudo make
  22. export PATH=$PATH:/用户路径/biosoft/canu 设置路径进环境变量
  23. source ~/.bashrc 刷新环境变量
  24. canu 检查是否安装完成
  25. 5 flye
  26. git clone https://github.com/fenderglass/Flye
  27. cd Flye
  28. sudo make
  29. export PATH=$PATH:/用户路径/biosoft/Flye设置路径进环境变量
  30. source ~/.bashrc 刷新环境变量
  31. Flye 检查是否安装完成
复制代码

发表于 2021-12-13 11:37:56
  1. 6 aspera
  2. wget https://d3gcli72yxqn2z.cloudfront.net/connect_latest/v4/bin/ibm-aspera-connect_4.1.1.73_linux.tar.gz
  3. tar -zxvf ibm-aspera-connect_4.1.1.73_linux.tar.gz
  4. sh ibm-aspera-connect_4.1.1.73_linux.sh
  5. export PATH=$PATH:/share/home/xiehs/biosoft/minimap2  设置路径进环境变量
  6. source ~/.bashrc 刷新环境变量
  7. ascp -h 检查是否安装完成
  8. 7 bowtie2
  9. wget https://jaist.dl.sourceforge.net/project/bowtie-bio/bowtie2/2.4.4/bowtie2-2.4.4-linux-x86_64.zip --no-check-certificate
  10. unzip bowtie2-2.4.4-linux-x86_64.zip
  11. ln -s ~/biosoft/bowtie2-2.4.4-linux-x86_64/bowtie2-build ~/bin
  12. ln -s ~/biosoft/bowtie2-2.4.4-linux-x86_64/bowtie2 ~/bin
  13. bowtie2-build 检查是否安装完成
  14. 8 fastqc
  15. wget http://www.bioinformatics.babraham.ac.uk/projects/fastqc/fastqc_v0.11.9.zip --no-check-certificate
  16. unzip fastqc_v0.11.9.zip
  17. chmod u+x  ~/biosoft/FastQC/fastqc
  18. ln -s ~/biosoft/FastQC/fastqc ~/bin
  19. fastqc 打开图形化界面
  20. 9 fastp
  21. cd ~/bin
  22. wget http://opengene.org/fastp/fastp
  23. chmod a+x ./fastp
  24. fastp -h 检查是否安装完成
  25. 10 spades
  26. wget http://cab.spbu.ru/files/release3.15.3/SPAdes-3.15.3-Linux.tar.gz
  27. tar -zxvf SPAdes-3.15.3-Linux.tar.gz
  28. ln -s ~/biosoft/SPAdes-3.15.3-Linux/bin/spades.py ~/bin
  29. python ~/bin/spades.py -h 检查是否安装完成
  30. 11 hisat2
  31. axel -n 100 https://cloud.biohpc.swmed.edu/index.php/s/oTtGWbWjaxsQ2Ho/download
  32. mv download hisat2-2.2.1-Linux_x86_64.zip
  33. unzip hisat2-2.2.1-Linux_x86_64.zip
  34. ln -s ~/biosoft/hisat2-2.2.1/hisat2-build ~/bin/
  35. ln -s ~/biosoft/hisat2-2.2.1/hisat2 ~/bin/
  36. hisat2 --version 检查是否安装完成
  37. 12 stringtie
  38. wget http://ccb.jhu.edu/software/stringtie/dl/stringtie-2.2.0.Linux_x86_64.tar.gz
  39. tar -zxvf stringtie-2.2.0.Linux_x86_64.tar.gz
  40. ln -s ~/biosoft/stringtie-2.2.0.Linux_x86_64/stringtie ~/bin/
  41. stringtie --version 检查是否安装完成
  42. 13 diamond
  43. wget https://github.com/bbuchfink/diamond/releases/download/v2.0.13/diamond-linux64.tar.gz
  44. tar -zxvf diamond-linux64.tar.gz  
  45. diamond --help 检查是否安装完成
  46. 14 vsearch
  47. wget https://github.com/torognes/vsearch/releases/download/v2.18.0/vsearch-2.18.0-linux-x86_64.tar.gz
  48. tar -zxvf vsearch-2.18.0-linux-x86_64.tar.gz
  49. ln -s ~/biosoft/vsearch-2.18.0-linux-x86_64/bin/vsearch ~/bin
  50. vsearch -h 检查是否安装完成
  51. 15 mothur
  52. wget https://github.com/mothur/mothur/releases/download/v1.46.1/Mothur.linux_7.zip
  53. unzip Mothur.linux_7.zip -d ~/biosoft/
  54. ln -s ~/biosoft/mothur/mothur ~/bin/
  55. mothur -h 检查是否安装完成
复制代码


回复 显示全部楼层 道具 举报

发表于 2021-12-13 15:59:24
  1. 16 muscle
  2. wget http://www.drive5.com/muscle/downloads3.8.31/muscle3.8.31_i86linux64.tar.gz
  3. tar -zxvf muscle3.8.31_i86linux64.tar.gz
  4. mv muscle3.8.31_i86linux64  muscle
  5. mv muscle ~/bin
  6. muscle 检查是否安装完成
  7. 17 gatk4
  8. axel -n 100 https://github.com/broadinstitute/gatk/releases/download/4.2.3.0/gatk-4.2.3.0.zip
  9. unzip gatk-4.2.3.0.zip -d ~/biosoft/
  10. ln -s ~/biosoft/gatk-4.2.3.0/gatk ~/bin/
  11. 设置本地local.jar进环境变量
  12. gatk --version 检查是否安装完成
  13. 18 centrifuge
  14. wget ftp://ftp.ccb.jhu.edu/pub/infphilo/centrifuge/downloads/centrifuge-1.0.3-beta-Linux_x86_64.zip
  15. unzip centrifuge-1.0.3-beta-Linux_x86_64.zip
  16. 设置环境变量
  17. centrifuge -h 检查是否安装完成
复制代码


回复 显示全部楼层 道具 举报

发表于 2021-12-13 16:15:27
以上2楼6-18都是预编译的软件内容,原贴中第四大部分,对回去的序号应分别是4-16。

回复 显示全部楼层 道具 举报

发表于 2021-12-13 20:14:08
  1. 6 filtlong
  2. git clone https://github.com/rrwick/Filtlong.git
  3. cd Filtlong
  4. sudo make -j 8
  5. 设置环境变量
  6. filtlong -h 检查是否安装完成
  7. 7 mummer4
  8. wget https://github.com/mummer4/mummer/releases/download/v4.0.0rc1/mummer-4.0.0rc1.tar.gz
  9. tar -zxvf mummer-4.0.0rc1.tar.gz
  10. cd mummer-4.0.0rc1
  11. sudo ./configure
  12. sudo make
  13. sudo make install
  14. mummer -h 检查是否安装完成
  15. 8 htslib
  16. 包括samtools和bcftools在内的很多软件都需要依赖htslib,所以需要先安装htslib
  17. git clone https://github.com/samtools/htslib.git
  18. cd htslib
  19. autoreconf -i
  20. git submodule update --init --recursive
  21. sudo ./configure   
  22. sudo make
  23. sudo make install
  24. 9 samtools
  25. git clone https://github.com/samtools/samtools.git
  26. cd samtools
  27. autoheader     
  28. autoconf -Wno-syntax
  29. sudo ./configure         
  30. sudo make
  31. 设置环境变量
  32. samtools --version 检查是否安装完成
  33. 10 bcftools
  34. cd ~/biosoft
  35. git clone https://github.com/samtools/bcftools.git
  36. cd bcftools
  37. autoheader
  38. autoconf
  39. sudo ./configure --enable-libgsl --enable-perl-filters
  40. sudo make
  41. 设置环境变量
  42. bcftools --version 检查是否安装完成
  43. 11 bedtools
  44. wget https://github.com/arq5x/bedtools2/archive/refs/tags/v2.30.0.tar.gz
  45. tar -zxvf v2.30.0.tar.gz
  46. cd bedtools2-2.30.0/
  47. sudo make
  48. 设置环境变量
  49. bedtools --version 检查是否安装完成
  50. 12 deeptools
  51. git clone https://github.com/deeptools/deepTools.git
  52. cd deepTools/
  53. python setup.py install --prefix ~/biosoft/deepTools2.0
  54. deeptools --version 检查是否安装完成
  55. 13 sniffles
  56. wget https://github.com/fritzsedlazeck/Sniffles/archive/master.tar.gz -O Sniffles.tar.gz
  57. tar xzvf Sniffles.tar.gz
  58. cd Sniffles-master/
  59. mkdir -p build/
  60. cd build/
  61. sudo cmake ..
  62. sudo make
  63. 设置环境变量
  64. sniffles -h 检查是否安装完成
  65. 14 racon
  66. git clone --recursive https://github.com/lbcb-sci/racon.git
  67. cd racon
  68. mkdir build
  69. cd build
  70. cmake -DCMAKE_BUILD_TYPE=Release ..
  71. make
  72. 设置环境变量
  73. racon --version 检查是否安装完成
复制代码



回复 显示全部楼层 道具 举报

发表于 2021-12-13 20:14:55
以上1楼6-14都是自行编译的软件内容,原贴中第五大部分。

回复 显示全部楼层 道具 举报

您需要登录后才可以回帖 登录 | 立即注册

QQ|Archiver|手机版|小黑屋|生信人 ( 萌ICP备20244422号 )

GMT+8, 2024-11-23 17:42 , Processed in 0.076573 second(s), 29 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表