0 题记
从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 键
.
1 软件安装
1.1 系统 Linux vs Mac vs Windows
课程中涉及到的系统包括:
- 一台能远程登录的服务器
Linux
(Centos7) - 我用
Mac
- 学生大部分使用
Windows
- 但是从 XP 到 10 都有。系统和配置的种类很多,维护状态也大不相同,我不能强求大家先重装一个系统再来,所以遇到了五花八门的问题。
- 总结下问题如下:
- 内存不足
- 系统版本老
- 原安装的软件混乱
- 使用中文用户名
1.2 软件
服务器
端没有做什么事情,它只是有一个校内的固定ip地址
,能够让大家远程登录。- 个人电脑(
PC
)上面一共安装了四大类软件。 - 逻辑如图
- PC能与服务器通信和文件传输;
- 能建立和维护 R 和 Python 的工作环境;
- 能在开发环境中编写和调试代码。
- 与服务器连接
- 编译语言
- R 3.5.1:先安装,再装Rstudio
- Python 3.6:Conda顺带安装
- Java:由于有些软件会用到,不是所有人都安了,所以也让大家装了
- 环境管理
- 代码编辑器/IDE
- Jupyter: 以前叫
ipython notebook
:支持Python,R等,代码+注释的编辑方式,使可读性强,适合教学用。 - Sublime Text 3:轻量,免费,多种语言高亮支持,也能提供编译。需要自己进行进一步配置。个人很喜欢 ST3。不仅快,功能丰富,而且打开大的数据也不卡。但是,ST3有本事能让你用的得心应手,前提也是你得花时间配置。思考了下,认为这篇,不适合展开细讲,所以留一个坑吧。
- Jupyter: 以前叫
1.3 安装
1.3.1 文件传输 Filezilla | Cyberduck
本来以为最没有问题的是这个部分,不过还是出了点小问题。
Filezilla
下载成了Filezilla server
。Cyberduck
连接的时候应该选择SFTP
类型。
1.3.2 远程登录 Powershell | Terminal
Windows
Powershell
Windows 8.1 之后自带,有就能直接运行ssh
命令。- 没有可以下载,或者下
Putty
,Openssh
。 - 不想安装可以在
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
1.3.3 语言编译器 R | Python
R
下载安装3.5.1,没有遇到报错 link
Python
装 Python 3,安装 conda
就自动装上。
Java
也是去官网下载安装,没有遇到报错,只是大,需要等。
1.3.4 环境管理 conda | Rstudio
用来管理和安装各种软件包和模块。
Conda for Python
- Anaconda 和 Miniconda 都是在使用
Conda
命令来管理包(模块)和运行环境的。 - 区别是Anaconda把常用的大量的包都预先安装好了。Anaconda有
用户界面(GUI)
,Miniconda只是能够用命令行(Command line)
来运行。 Anaconda
预装了Jupyter Notebook
,还能一起管理Rstudio
。
看到这里是不是觉得那还装啥别的,就来Anaconda
了吧!实践告诉我,并不是。Anaconda
有三个硬伤:
- 内存不够开起来慢,就这么说吧,拖家带口,跑不动。
- Anaconda没有提供最新的R环境。目前支持的是 R3.4.3 可是已经有一些包要求不是R3.5.1就不准装,目前,我随便搜了下,并不知道怎么在 Anaconda里面让R的核更新。
- 如果想自定义,里面的关系盘根错节,不知道怎么改。
比如我自己下一个R3.5.1
然后再修改依赖关系,但是我发现其实 bin 里面放的是一个 Wrapper,我不知道怎么改,即使我知道自己的新R在哪里,我尝试了各种简单的拖动,替换,并没有成功。
所以,我决定把 Anaconda 卸了,安装 miniconda,然后通过 Conda
来安装 Jupyter
。
安装过程
- 下载文件,例如
Miniconda3-latest-MacOSX-x86_64.sh
。 运行。
注意,这里是
.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
提高下载速度 mirror
- 清华有anaconda的 镜像,按需求选择了几个需要的 channel。
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --set show_channel_urls yes
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda/
Rstudio
安装 Rstudio 一般问题也不大,容易错的是:
- 安装在含义中文的路径中,比如用户名,对后续使用有影响。
- 没有安装 R 就装 Rstudio。
1.3.5 代码编辑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
1.3.6 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
1.4 常见问题
1.4.1 不知道自己有没有安装成功
- 首先要区分
命令 command
和程序 app exe
。本质上 运行命令
运行的是命令
指向的程序
。命令
可以理解为放在环境变量
指向的位置 PATH
中的程序本身
,或者程序的超链接
。 - 例如:
R
本来装在/Library/Frameworks/R.framework
中,但是在/usr/local/bin/
里有一个R
的超链接,所以我们可以在任何地方 只输入R
就运行程序。比较下面的代码:- 运行的是
R命令
,通过 环境变量找到R程序
,然后打开。
$R
- 运行的是
当前路径下的R程序
,所以前面有./
。如果所在路径没有R
不能运行成功。
$./R
- 运行的是
- 因此,在命令行模式中,通常输入
程序
的名字就能知是否安装成功。例如输入Java,Python,R 或 Jupyter
。
1.4.2 安装程序或修改环境变量后没有生效
- 例如安装了
miniconda
之后,conda
命令并没有马上被找到。因为其实有一条命令还没有生效。打开.bash_profile
。
vi ~/.bash_profile
看到里面写着如下命令。它在每次登陆的时候生效,所以需要再登陆一次。
# added by Miniconda3 installer
export PATH="/Users/YOURNAME/miniconda3/bin:$PATH"
1.4.3 环境变量设置出错
环境变量是什么?
环境变量 = 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%
1.4.4 下载错了位(32 vs 64)或版本
- 如果不是从官网下载,常常已经不是最新的版本,有时候不能正常的支持所有的包。
- 目前还有一些笔记本是32位的,但是一些软件最新的版本已经没有32位了,比如Blast+。解决的方法是下载稍微老一些的版本。
1.4.5 缺少管理员权限
- 在图形界面安装,如果是因为没有管理员权限的问题,有时候是不会报错,只是一直安装不成功。
- 如果在命令行界面,安装失败才能看到返回的错误信息。
- Windows 可以用管理员权限打开 CMD。注意没有
sudo
命令。以下两个都是网上找的,没测试。来源。
runas /noprofile /user:Administrator cmd
ru
- Mac 里面可以用 sudo 来运行。例如
sudo conda install pandas
2 总结
2.1 最小安装
- Filezilla/Cyberduck
- minicoda
- R
- Rstudio
- Jupyter
2.2 跟不上进度的主要原因
- 不能理解绝对路径和相对路径 = 因为找不到文件报错
- 不习惯使用
table
补齐代码 = 输入错误 - 不能理解变量的作用域 = R里面不懂如何使用$
- 不知道
“
在不同语境下的含义,特别是在R
里面 = 弄混变量和字符串 - 不知道
[] ()
使用时候的不同含义 = R里面的函数和内容提取 - 不知道一般有哪几类错误
- 关键是不看错误信息说什么,特别是信息长又是英语的时候,更别说分析问题怎么解决
- 不知道怎么把大问题拆成小步骤,听指导的时候总是跳步骤。
有的学生会很积极的来上课,但一直跟不上,然后就一直问别人该怎么操作,发现代码运行出来,就很满意了,但是他们唯独不做的事情是理解问题和分析问题。也不在乎自己是不是获得了独立完成的能力。
以前我认为只要老师讲得够清楚就能解决问题。好像也不是这么回事。很多基础的概念和原理,很多人并不能按照我期待的理解。可能是每种语法还是需要一定的时间来记忆。知识也需要发酵。
比如,我希望大家从表格数据里提取一个列,做逻辑运算,再把结果添加到数据的新列里。需要使用 $
提取内容,>
做逻辑计算 , 最后通过 $
把计算结果赋值 <-
给原来的 不存在的列,完成添新列。我发现,大家不能完成不是单纯的不记得使用哪个命令,重要的是不能把这个任务线性化,不能分割为最小的步骤。我会一直努力拆解,然后提醒。最后发现,真的要精确到每一步,才有可能准确理解。df$z <- df$x > 3
读出这个代码里面的数据流向也是入门的一道坎。
另外,我还是容易不淡定,嗯。