您正在查看: 2015年9月

Ubuntu 12.04下R的安装

Overview

很久以前,安装R以及R的程序库时,遇到了一些问题,当时做了笔记,现在整理一下。

1.安装R

直接在ubuntu 12.04上安装的R版本是2.14.2,安装ggplot2总是失败。需要在软件源里添加第三方软件源
命令如下:

sudo sh -c "echo deb     http://mirror.bjtu.edu.cn/cran/bin/linux/ubuntu precise/ >>/etc/apt/sources.list"

然后

sudo apt-get update 

可能会报一个公共密钥不存在的错,无法更新,原因在于第三方软件源未得到ubuntu服务器验证,需要一条命令解决:

暂时忘了是什么了,遇到这个错误了在解决吧~

然后重新

sudo apt-get update 

此时

apt-get install r-base

就可以装上最新版本的R软件。

ubuntu14.04上应该不用这么麻烦,ubuntu14.04上软件源比较新,直接安装就可以了。

2.升级R

R 2.x 升级 3.x 需要重新(编译)安装所有包:

  1. 运行R

  2. 执行:

    update.packages(checkBuilt = TRUE, ask = FALSE)
    

3. 安装ggplot2

  1. 运行R

  2. 执行命令:

    install.packages("ggplot2")

4.安装其他R程序库

我在运行figure-10-twenty-flow-congestion-preprocess.R 对数据进行预处理时,发现doBy包不存在,安装doBy:

install.packages("doBy") 

《德米安:彷徨少年时》- 赫曼·黑塞

“ 辛克莱,当您忽然想到一些疯狂或邪恶的念头,想要把某人给杀了,或者想要犯下罪大恶极的罪行,这时您要想一想,那是阿布拉克萨斯在您内心制造的幻想!您想要杀害的绝不是一个真实的人,肯定只是一个伪装而已。假如我们怨恨一个人,我们恨的是在他形象中的某些东西,这些东西也是我们本身所拥有的。凡是我们本身没有的东西,并不能激动我们的心。”

  今天是中秋节,跟我爸爸聊天时,他顺便转发给了我这段话,是我弟弟发给他的读书截图。看了之后感触很深,读书越多心胸就越开阔,那些原来想不明白的事情也都豁然开朗了。

  记得有人问杨绛先生,大致是自己非常喜欢思考,但又受困于思考的一些人生困惑,杨绛先生的回答简洁明了:「你的问题主要是读书不多而想得太多」

  关于这点,很多有思想的人都曾表达过相同的观点。

吾尝终日而思矣,不如须臾之所学也;吾尝跂而望矣,不如登高之博见也。 --《荀子·劝学篇》

识不足则多虑,威不足则多怒,信不足则多言。 --弘一法师

  很多时候,当你困扰于生活的时候,过分的思考只会让你更加焦虑,去读书吧,读一本书就是与作者进行心灵上的沟通,与大师对话,消解心中的烦恼,提升自己的修养,生活也就自然会少很多苦恼。

  特意去查了本文开头的这句话的出处,赫曼·黑塞《德米安:彷徨少年时》,快速看了下书评和大致内容,我居然不知道有此书的存在,相见恨晚。抽空慢慢读完这本书,补上一篇关于本书的读书笔记。

  感概于自己见识仍旧十分有限,还有太多的优秀的文化和美好的事物去体验,去发现。如果身边的人也有好的书籍或者其他,还请多多推荐。

  以生活之所感去读书,以读书之所得去生活。,谨以此,与各位共勉。

DISOPRED的安装和使用

Overview

DISOPRED是一个蛋白质内部非结构区域的预测软件,使用DISOPRED,我们可以很方便地得到一个蛋白质序列的非结构区域信息,能够为蛋白质特征分析提供更多的信息。

1.DISOPRED的下载

http://bioinfadmin.cs.ucl.ac.uk/downloads/DISOPRED/这里就可以下载各个版本的DISOPRED,这里我们下载最新版本的DISOPRED3.16.tar.gz

2.DISOPRED的安装

因为DISOPRED也是以源码包的形式提供下载,因此也需要下载之后自己编译。先将下载好的 解压解压之后的文件夹为DISOPRED,进入DISOPRED目录,按照README文件的步骤安装。

2.1 常规的安装步骤

进入DISOPRED目录,使用下面的三行命令安装:

make clean
make
make install

如果是linux的话通常就可以正常使用了。

2.2 MAC下的不兼容

如果是MAC系统,会有两个地方需要修改。

  1. 在执行make这一步的时候会报以下错误:

    disord_pred.c:246:43: error: use of undeclared identifier 'CLKRATE'
    runtime += (double) abs(temp - last_t) / CLKRATE;
                                             ^
    disord_pred.c:248:59: error: use of undeclared identifier 'CLKRATE'
    runtime += (double) (0x7fffffff - last_t + (temp + 1)) / CLKRATE;
    

    查看disord_pred.c,我们发现下面的几行代码:

    #ifdef unix
    #define CLKRATE 1000000
    #endif
    

    这个宏在unix系统下才定义了CLKRATE变量,因此在MAC下编译时就会报CLKRATE未声明的错误,我们在disord_pred.c中上面这几句代码后面添加如下代码:

    #ifdef __MACH__
    #define CLKRATE 1000000
    #endif
    

    这样在MAC系统下一样会执行#define语句,重新执行make命令,这次就可以顺利通过了。

  2. 在执行make install的时候会报以下错误:

    mv -t ../bin disopred2 diso_neu_net diso_neighb combine svm-predict
    mv: illegal option -- t
    usage: mv [-f | -i | -n] [-v] source target
           mv [-f | -i | -n] [-v] source ... directory
    make: *** [install] Error 64
    

    查看Makefile文件,发现下面的代码:

    install:
        mkdir ../bin/
        mv -t ../bin disopred2 diso_neu_net diso_neighb combine svm-predict
    

    可以看出来,make install步骤就是在DISOPRED目录下建立一个bin文件夹,并将make步骤中生成的可执行程序都复制到bin文件夹下,只是在使用mv命令时用了-t参数,MAC下不支持这个参数,所以我们用下面的mv命令替换上面的mv -t命令,修改后如下:

    install:
        mkdir ../bin/
        mv disopred2 diso_neu_net diso_neighb combine svm-predict ../bin/
    

    注意,修改完之后,需要重新执行make cleanmake步骤,再执行make install就可以了。

3.DISOPRED的配置

安装成功之后,我们就可以通过DISOPRED目录下的run_disopred.pl脚本使用DISOPRED程序了。
但在使用之前,我们还需要配置一下run_disopred.pl脚本,打开这个脚本,找到下面的代码:

## IMPORTANT: Set the paths to folder with the NCBI executables and to the
## sequence database
my $NCBI_DIR = "/home/bin/blast-2.2.26/bin/";
my $SEQ_DB = "/home/uniref/uniref90";

在有了SCRATCHPSIPRED的使用经验之后,我们很容易就知道这两行代码的意思,那就是设置DISOPRED调用BLAST程序的路径以及配置BLAST程序所要用到的数据库。
因为我们已经将BLAST程序加入了$PATH路径,所以在使用时我们不再需要指定绝对路径,因此我们通过下面的代码修改这两个变量,如下所示:

## IMPORTANT: Set the paths to folder with the NCBI executables and to the
## sequence database
my $NCBI_DIR = "";
my $SEQ_DB = "/Users/wangjiawei/Bioinformatics/Data/blast/uniref50";

其中/Users/wangjiawei/Bioinformatics/Data/blast/uniref50为我们为BLAST配置的数据库的地址。

4.DISOPRED的使用

现在我们就可以通过run_disopred.pl脚本使用DISOPRED程序了。在examples文件夹中,也提供了example.fastasmall_example.fasta供测试使用。使用下面的命令运行DISOPRED程序:

./run_disopred.pl examples/example.fasta

产生如下输出结果:

Running PSI-BLAST search ...

Generating PSSM ...

Predicting disorder with DISOPRED2 ...

Running neural network classifier ...

Running nearest neighbour classifier ...

Combining disordered residue predictions ...

Predicting protein binding residues within disordered regions ...

Cleaning up ...

Finished

Disordered residue predictions in /Users/wangjiawei/Bioinformatics/Softwares/DISOPRED/examples/example.diso

Protein binding disordered residue predictions in /Users/wangjiawei/Bioinformatics/Softwares/DISOPRED/examples/example.pbdat

多数时间还是花在Running PSI-BLAST search ...这一步,以及Running nearest neighbour classifier ...

latex公式插件的使用

Overview

在读论文或者写作的过程中,免不了有大量的公式推导,因此需要在博客里添加对LaTeX公式的支持。
我们找到了一个支持typecho博客的插件MathJax,下载地址和对这个插件的使用说明都可以参考原作者的博客:MathJax 插件

1.插件的安装

和所有其他typecho博客的插件一样,将下载下来的MathJax解压缩后,上传到你的blog目录的usr/plugins中即可。与其他插件稍有不同的是,解压缩后不是一个文件夹,而是一个MathJax.php文件。

2.插件的使用

使用管理员账户进入后台,在插件管理中就可以看到,点击启用就可以了。MathJax插件不需要设置,直接使用就可以了。这里面有几个问题值得记录一下。

2.1 在文章中如何使用MathJax排版公式

MathJax采用在Latex公式的前一行和后一行跟添加两个$$就可以了,下面是一个写作示例:

$$
e_j = -k \sum_{i=1}^m (P_{ij} \ast \ln { P_{ij} } )
$$

显示效果如下:
$$
e_j = -k \sum_{i=1}^m (P_{ij} \ast \ln { P_{ij} } )
$$

需要注意的是,MathJax排版公式并不是Markdown的内置语法,所以不能即时看到公式的排版效果(预览界面也不行),只有发布文章之后,查看博客内容页面才能看到效果

2.2 调节MathJax排版公式的大小

默认情况下,当我们书写了下面的公式时:

$$
x=\frac{-b\pm\sqrt{b^2-4ac}}{2a}
$$

显示效果为:
$$
x=\frac{-b\pm\sqrt{b^2-4ac}}{2a}
$$

可以通过下面的方式调节公式的大小:

$$
\Large x=\frac{-b\pm\sqrt{b^2-4ac}}{2a}
$$

显示效果为:
$$
\Large x=\frac{-b\pm\sqrt{b^2-4ac}}{2a}
$$

2.3 Markdown语法给公式带来的麻烦

到这里为止,公式的排版显示非常完美,但是我们注意到,Latex公式的书写里面包含了大量的特殊字符,会让Markdown解析时产生混淆,导致公式排版出现问题。
看下面这个公式:

$$
A\times B=\begin{vmatrix}
\hat{i} & \hat{j} & \hat{k}\\
A_0 & A_1 & A_2\\
B_0 & B_1 & B_2 
\end{vmatrix}
$$

显示效果如下:
$$
A\times B=\begin{vmatrix}
\hat{i} & \hat{j} & \hat{k}\
A_0 & A_1 & A_2\
B_0 & B_1 & B_2
\end{vmatrix}
$$

一个方便且通用的解决方法是在公式外面加上 <div> 或者 <p>,隔离Markdown对公式内部字符的转义,如下:

<div>
$$
A\times B=\begin{vmatrix}
\hat{i} & \hat{j} & \hat{k}\\
A_0 & A_1 & A_2\\
B_0 & B_1 & B_2 
\end{vmatrix}
$$
</div>

显示效果如下:

$$ A\times B=\begin{vmatrix} \hat{i} & \hat{j} & \hat{k}\\ A_0 & A_1 & A_2\\ B_0 & B_1 & B_2 \end{vmatrix} $$

因此,我们在书写公式时,都最好应该添加<div></div>。但是由于<div></div>是网页标记语言的语法,使用要谨慎。
比如,我在刚才书写的时候将一个</div>缩进弄错了,整个这个页面的显示布局都乱了...

2.3 给公式编号

在公式太多的情况下,我们可以为公式添加编号,便于在文中引述。
如下书写:

<div>
$$
A\times B=\begin{vmatrix}
\hat{i} & \hat{j} & \hat{k}\\
A_0 & A_1 & A_2\\
B_0 & B_1 & B_2 
\end{vmatrix}
.................公式1
$$
</div>

显示效果如下:

$$ A\times B=\begin{vmatrix} \hat{i} & \hat{j} & \hat{k}\\ A_0 & A_1 & A_2\\ B_0 & B_1 & B_2 \end{vmatrix} .................公式1 $$

3.Latex公式的学习使用

初次接触Latex以及Latex公式,都会觉得有点复杂和不直观,其实和Markdown一样,一旦习惯了这种写作方法,效率会极大地提升。
对于不太熟悉Latex公式写作的人来说,可以先从互联网上查看一下Latex公式的规范,了解之后,可以通过一些Latex公式在线编辑器,如http://www.codecogs.com/latex/eqneditor.php
编辑需要的公式,这些编辑器会生成Latex公式代码,将这些代码拷贝过来就可以直接使用了。

蛋白质序列处理—总体步骤

蛋白质序列处理程序之前得到的数据源太乱,这些天整理并重新摆放了一下,每一步的输入文件夹后缀都有一个-in,处理程序文件夹后缀为-run,输出文件夹后缀为-out,这样条理清晰了很多,今日记录,以方便日后查阅使用。

数据处理部分共分5步:

  • 下载并分类(set class)
  • 多步CD-hit
  • 正负样本1:1平衡(Dataset balance)
  • 特征计算(feature calculation)
  • 特征选择(feature selection)

下面分别详细地记录每步的具体作用及用法。


1)下载并分类(set class)

通过DownldProtSeq.javaEffectorsequencesdata.txt中读取所需的蛋白质序列信息,从http://www.uniprot.org/uniprot/上面下载对应的蛋白质序列数据。
下载完成后保存在fastafiles文件夹中,与之前的BPBAacBi_pro文件夹和sieve文件夹中的.fasta文件一起,组成set class这一步骤的输入数据。
set class的作用是将蛋白质序列分类为positive和negative数据,positive数据加上1标记,negative数据加上-1标记。
set class这一步用到的是setcls_integ.sh文件调用fasta_setclass.py以及eft3_setclass.py两个Python脚本。
输出了T3fastaPool_clfed.fastaT4posiNeg.fastaT6posneg.fasta三个文件,并且这三个文件将会在第二步中作为输入文件。

2)多步CD-hit

CD-hit这一步需要用到CD-hit软件包,详细信息见http://weizhongli-lab.org/cd-hit/。原本地文件中经过编译之后的cd-hit二进制文件在Linux上无法运行,故在删除了包内的.o文件以及所有的二进制文件后,在命令行中运行make openmp=yes将其重新编译,得到的cd-hit文件就可以使用了,使用方法如下:

./cd-hit -i <fasta-file> -o T6pn06snd.out -c 0.6 -n 4

这样会得到很多.out文件,这些文件将是第三步的输入文件。

3)正负样本1:1平衡(Dataset balance)

该步骤处理程序只有一个undersmple_neg.py脚本文件,目的是控制正负样本(positivenegative样本)的比例为1:1。平衡后的样本有三个:T3undrsmp.txtT4undrsmp.txtT6undrsmp.txt

4)特征计算(feature calculation)

第四步比较复杂,又可分为7小步。前6小步中,计算出6个特征向量文件(file of feature vectors),第7步将这些特征向量聚合在一起,形成一系列的.CSV文件,然后将这些.CSV文件按照T3T4T6分别放置。详见蛋白质序列特征向量计算—数据处理第(4)步

5)特征选择(feature selection)

特征选择这一步,分别用了两种算法。这两种算法互不干涉,无先后顺序。

  • mRMR算法,详见http://penglab.janelia.org/proj/mRMR/

    用法如下:

     python fts_select.py <T3_cdhit_N30_50fts.txt> <csv-before-selection> <csv-after-selection> <50/100/200>
    

    其中,<csv-before-selection>是第四步中得到的.CSV文件,<csv-after-selection>是本步得到的结果文件,<50/100/200>表示截取前<50/100/200>个特征,<T3_cdhit_N30_50fts.txt>是经过mrmr文件处理过后得到的一系列文件,全部在文件夹中。

  • InfoGain算法,用法如下:

     python weka_fts_slct.py <InfoGainFslct> <50/100/200> <csv-before-selection> <csv-after-selection>
    

    其中<csv-before-selection>是第四步中得到的.CSV文件,<csv-after-selection>是本步得到的结果文件,<50/100/200>表示截取前<50/100/200>个特征,<InfoGainFslct>这一系列文件在文件夹中。