生物信息电脑运行环境搭建-Python R Linux

题记

从2018-7-16日开始,我讲了四天课(实际3天半,共21个小时),内容包括Linux入门、Python入门和R入门。目的是让大家能在自己的PC和服务器上进行生物信息学分析相关的实践。去年我用了差不多21小时只讲了R入门。今年为什么添加了Linux和Python?因为去年我自己这两个都还没有入门,也没有任何的实践操作经验。另外,去年和有基因所的老师来教授这个部分。今年,我更希望大家能从基因所老师那里学到 生物信息 相关的东西,不要因为系统操作跟不上,所以一直云里雾里,所以讲了这个课程的 pre course

这里写了一些,一个没有什么计算机知识的学生要入门生物信息,完成个人 PC 环境配置的基础知识。算是为这几日以教促学的自我总结。


关系图

  • 以下操作在 Mac OS X 中测试无误,Windows 部分主要靠回忆。
  • 如果在 Windows里面进行,打开Termial对应打开 CMD 或者 powershell
  • 快捷需要相应调整,Windows 没有 cmd 键.

软件安装

系统 Linux vs Mac vs Windows

课程中涉及到的系统包括:

  • 一台能远程登录的服务器Linux(Centos7)
  • 我用Mac
  • 学生大部分使用 Windows
    • 但是从 XP 到10都有。系统和配置的种类很多,维护状态也大不相同,我不能强求大家先重装一个系统再来,所以遇到了五花八门的问题。
  • 总结下问题如下:
    • 内存不足
    • 系统版本老
    • 原安装的软件混乱
    • 使用中文用户名

软件

服务器端没有做什么事情,它只是有一个校内的固定ip地址,能够让大家远程登录。
个人电脑(PC)上面一共安装了四大类软件(附连接):

  1. 与服务器连接

  2. 编译语言

    • R 3.5.1:先安装,再装Rstudio
    • Python 3.6:Conda顺带安装
    • Java:由于有些软件会用到,不是所有人都安了,所以也让大家装了
  3. 环境管理

  4. 代码编辑器/IDE

    • Jupyter: 以前叫 ipython notebook:支持Python,R等,代码+注释的编辑方式,使可读性强,适合教学用。
    • Sublime Text 3:轻量,免费,多种语言高亮支持,也能提供编译。需要自己进行进一步配置。个人很喜欢 ST3。不仅快,功能丰富,而且打开大的数据也不卡。但是,ST3有本事能让你用的得心应手,前提也是你得花时间配置。思考了下,认为这篇,不适合展开细讲,所以留一个坑吧。

安装

文件传输 Filezilla | Cyberduck

本来以为最没有问题的是这个部分,不过还是出了点小问题。

  • Filezilla 下载成了 Filezilla server
  • Cyberduck 连接的时候应该选择 SFTP 类型。

远程登录 Powershell | Terminal

Windows

  • Powershell Windows 8.1 之后自带,有就能直接运行 ssh 命令。
  • 没有可以下载,或者下 PuttyOpenssh
  • 不想安装可以在 CMD 里面使用 telnet 命令。

Mac

  • Terminal 自带。
  • 代码ssh -p 22 username@ip

登录信息

  • port 端口 -p
  • ip 地址
  • 用户名
  • 密码

让服务器说中文

  • 远程登录之后,打开家目录(当前目录/home/username)下的 .bash_profile
vi .bash_profile
  • i
  • 输入 export LANG=zh_CN.UTF-8
  • esc,再输入 :wq 回车。
  • 然后重新登录,或者运行。
source .bash_profile

编译计算机语言 R | Python

R

下载安装3.5.1,没有遇到报错 link

Python

装 Python 3,安装 conda 就自动装上。

Java

也是去官网下载安装,没有遇到报错,只是大,需要等。

环境管理 conda | Rstudio

用来管理和安装各种软件包和模块。

Conda for Python

  • Anaconda 和 Miniconda 都是在使用 Conda 命令来管理包(模块)和运行环境的。
  • 区别是Anaconda把常用的大量的包都预先安装好了。Anaconda有用户界面(GUI),Miniconda只是能够用命令行(Command line)来运行。
  • Anaconda 预装了 Jupyter Notebook,还能一起管理 Rstudio

看到这里是不是觉得那还装啥别的,就来Anaconda 了吧!实践告诉我,并不是。Anaconda有三个硬伤:

  1. 内存不够开起来慢,就这么说吧,拖家带口,跑不动。
  2. Anaconda没有提供最新的R环境。目前支持的是 R3.4.3 可是已经有一些包要求不是R3.5.1就不准装,目前,我随便搜了下,并不知道怎么在 Anaconda里面让R的核更新。
  3. 如果想自定义,里面的关系盘根错节,不知道怎么改。
    比如我自己下一个 R3.5.1 然后再修改依赖关系,但是我发现其实 bin 里面放的是一个 Wrapper,我不知道怎么改,即使我知道自己的新R在哪里,我尝试了各种简单的拖动,替换,并没有成功。

所以,我决定把 Anaconda 卸了,安装 miniconda,然后通过 Conda 来安装 Jupyter

安装过程
  1. 下载文件,例如 Miniconda3-latest-MacOSX-x86_64.sh
  2. 运行。

    注意,这里是 .sh,双击以文件形式打开,运行是在 Terminal 中进入文件所在文件夹,然后运行的。

cd Download
bash ./Miniconda3-latest-MacOSX-x86_64.sh
conda 使用

通常就是知道自己需要安装的包的名字(例如:numpy),然后输入命令。运行后,首先会完成解析,确认,输入 y安装才会继续。解析返回的内容包括:

  • 将安装哪些依赖dependency(也就是相关的包)
  • 哪些会升版本
  • 那些需要降级版本

会要下很多很多东西,但是等就好。中间报错通常因为下载中断,再运行一次,会从断的地方继续。

conda install numpy
conda 频道 channel
  • 不同的 channels 放着不同的东西。
  • 添加频道
conda config --add channels defaults
conda config --add channels conda-forge
conda config --add channels bioconda
  • 生物信息常用 bioconda,里面包含 biopython 模块
conda install biopython

Rstudio

安装 Rstudio 一般问题也不大,容易错的是:

  • 安装在含义中文的路径中,比如用户名,对后续使用有影响。
  • 没有安装 R 就装 Rstudio。

代码编辑IDE Jupyter | Sublime Text3

交互式开发环境 IDE interactive development enviroment: 意思就是你能在里面写代码,然后看到结果。还能辅助你管理包环境变量,文件等。

首先 Rstudio 也是IDE,但是它是 R 专用的 IDE。
下面追加安装的两个IDE能支持多种语言,特别是 Sublime Text 3,简直各种小能手。

Sublime Text 3

  • 安装没有出现过问题,注意版本要新。
  • ST3 能用各种你已经安装的 编译器(例如Python和R)来运行对应的代码文件(.py和.r)。
    在对应的打开文件中,按 Cmd + B,在 Tools -> Build System 选择合适的编译器,或者自动,ST编译代码,在下方显示结果。
  • Python 能输出图形,如果编译之后没有图,参考
  • R 目前没有直接出图,有需要安装 REPL 参考

Jupyter

  • 使用conda安装,
conda install jupyter
  • 推荐安装 nbextension插件,这样能有目录,高亮,帮助窗口等附件功能。
conda install -c conda-forge jupyter_contrib_nbextensions
  • 激活使用的插件,可以打开 notebook 之后勾选;或者使用代码。推荐打开help panel,table of content和highlighter。
jupyter nbextension enable highligher/main 
  • 运行 notebook:输入命令,会以当前的路径作为根目录,以默认浏览器打开一个页面(本地服务器)。
jupyter notebook

Jupyter notebook + R kernel

  • 因为我们已经安装的 R 现在就是要让 Jupyter notebook 找到R了。很简单,使用IRkernel
  • 有一个小坑。首先以下代码是 R 里面运行的,前面两行能在 R studio 运行成功,但是第三行一定要在 R 本身 运行!
  • 建议在 Terminl 中输入 R 运行,然后再运行下面的代码。
  • 结果会将你 当前使用的 R 的版本 作为 核(kernel)
  • 以后打开 Jupyter notebook 就能选择 R 作为核了。
install.packages('devtools')
devtools::install_github('IRkernel/IRkernel')
# or devtools::install_local('IRkernel-master.tar.gz')
IRkernel::installspec()  # to register the kernel in the current R installation

常见问题

不知道自己有没有安装成功

  • 首先要区分 命令 command程序 app exe。本质上 运行命令 运行的是 命令 指向的 程序命令 可以理解为放在 环境变量 指向的 位置 PATH中的 程序本身,或者 程序的超链接
  • 例如:R 本来装在 /Library/Frameworks/R.framework 中,但是在 /usr/local/bin/ 里有一个 R 的超链接,所以我们可以在任何地方 只输入 R 就运行程序。比较下面的代码:
    • 运行的是 R命令,通过 环境变量找到 R程序,然后打开。
    $R
    • 运行的是 当前路径下的R程序,所以前面有 ./。如果所在路径没有 R 不能运行成功。
    $./R
  • 因此,在命令行模式中,通常输入 程序 的名字就能知是否安装成功。例如输入Java,Python,R 或 Jupyter

安装程序修改环境变量后没有生效

  • 例如安装了 miniconda 之后,conda 命令并没有马上被找到。因为其实有一条命令还没有生效。打开 .bash_profile
vi ~/.bash_profile

看到里面写着如下命令。它在每次登陆的时候生效,所以需要再登陆一次。

# added by Miniconda3 installer

export PATH="/Users/YOURNAME/miniconda3/bin:$PATH"

环境变量设置出错

环境变量是什么?

环境变量 = PATH 也就是路径。一个系统帮助我们找到要运行的程序的 路径

  • 虽然是一样的安装程序,但是经常就有人的机器,安装了之后还是不能运行。其实就是安装的过程没有完成添加 环境变量 PATH。我们可以自己添加环境变量。

  • 大家都很不明白什么是环境变量。请看以下 Windows 的例子。
  • 如果 blastn.exe 装在了 D:\Blast+ 中。直接在 CMD 中运行 blastn 是不会成功的,因为我们没有把 D:\Blast+设置为让系统帮我们找可执行文件的位置 =
    PATH 。

如何修改

  • Mac 中详细说明见上一条。以下代码仅为例子。
echo $PATH
vi ~/.bash_profile

# added by Miniconda3 installer

export PATH="/Users/YOURNAME/Blast+/bin:$PATH"

  • Windows 我的电脑,右键,属性,高级设置,环境变量,在原有的环境变量基础上加上
    ;C:\Blast+

  • Windows 10 才能逐条显示环境变量中的路径,能用浏览的方式加入新的。
  • Windows 命令行方式添加。

set PATH=%PATH%;D:\Blast+
echo %PATH%

下载错了(32 vs 64)或 版本

  • 如果不是从官网下载,常常已经不是最新的版本,有时候不能正常的支持所有的包。
  • 目前还有一些笔记本是32位的,但是一些软件最新的版本已经没有32位了,比如Blast+。解决的方法是下载稍微老一些的版本。

缺少管理员权限

  • 在图形界面安装,如果是因为没有管理员权限的问题,有时候是不会报错,只是一直安装不成功。
  • 如果在命令行界面,安装失败才能看到返回的错误信息。
  • Windows 可以用管理员权限打开 CMD。注意没有 sudo 命令。以下两个都是网上找的,没测试。来源
runas /noprofile /user:Administrator cmd 
ru
  • Mac 里面可以用 sudo 来运行。例如
sudo conda install pandas

总结

最少安装

  • Filezilla/Cyberduck
  • minicoda
  • R
  • Rstudio
  • Jupyter

跟不上进度的主要原因

  • 不能理解绝对路径和相对路径 = 因为找不到文件报错
  • 不习惯使用 table 补齐代码 = 输入错误
  • 不能理解变量的作用域 = R里面不懂如何使用$
  • 不知道 在不同语境下的含义,特别是在 R 里面 = 弄混变量和字符串
  • 不知道 [] () 使用时候的不同含义 = R里面的函数和内容提取
  • 不知道一般有哪几类错误
  • 关键是不看错误信息说什么,特别是信息长又是英语的时候,更别说分析问题怎么解决
  • 不知道怎么把大问题拆成小步骤,听指导的时候总是跳步骤。

有的学生会很积极的来上课,但一直跟不上,然后就一直问别人该怎么操作,发现代码运行出来,就很满意了,但是他们唯独不做的事情是理解问题和分析问题。也不在乎自己是不是获得了独立完成的能力。

以前我认为只要老师讲得够清楚就能解决问题。好像也不是这么回事。很多基础的概念和原理,很多人并不能按照我期待的理解。可能是每种语法还是需要一定的时间来记忆。知识也需要发酵。

比如,我希望大家从表格数据里提取一个列,做逻辑运算,再把结果添加到数据的新列里。需要使用 $ 提取内容,>做逻辑计算 , 最后通过 $ 把计算结果赋值 <- 给原来的 不存在的列,完成添新列。我发现,大家不能完成不是单纯的不记得使用哪个命令,重要的是不能把这个任务线性化,不能分割为最小的步骤。我会一直努力拆解,然后提醒。最后发现,真的要精确到每一步,才有可能准确理解。

df$z <- df$x > 3 读出这个代码里面的数据流向也是入门的一道坎。

另外,我还是容易不淡定,嗯。

猜你喜欢

转载自www.cnblogs.com/Xeonilian/p/setup-enviroment-for-bioinformatics-linux-python-r.html
今日推荐