noHup - C/C++
type: channel
link: http://www.nohup.cc/tag/C/
items: 蛋白质序列特征提取方法之——CKSAAP
items: 将台式机上的NDNSIM1.0(包含实验脚本和转发策略代码)移植到Mac上的问题

蛋白质序列特征提取方法之——CKSAAP
type: item
date: 2015-10-06T02:56:00+00:00
description: Overview1.建模思路2.编程方案2.1 参数初始化2.2 参数输入2.3 特征计算 Overview 在CKSAAP(Compositon of k-spaced Amino Acid Pairs)方法中，利用在蛋白质序列片断中k个间隔距离的残基对(residue pairs)在该序列中的组成比例，建立数学模型，提取出特征向量，从而达到预测泛素(Ubiquitin)的目的。 残基(residue)和泛素(Ubiquitin)信息详见维基百科：残基和泛素，这里就不赘述了。 本文主要介绍该方法建立数学计算模型的思路及编程方案。 1.建模思路 以长度为48的序列LEEYRKHVAERAAEGIAPKPLDANQMAALVELLKNPPAGEEEFLLDLL为例(如果你不懂这些英文字母什么含义，请点击氨基酸简写符号)，当k=0时，我们需要提取的残基对(residue pairs)为{LE,EE,EY,……,LD,DL,LL}，即每个氨基酸和它相邻的下一个氨基酸组成一对提取出来，也就是说这两个氨基酸中间的间隔距离是k=0个氨基酸。以此类推，当k=1时，我们需要提取的残基对为{LE,EY,ER,YK,……,LD,LL,DL}……本方法中，k最大为5. 细心的你一定会发现k=0时候，结尾会有1个氨基酸没有配对，而提取的残基对数量为47；k=1时，有2个氨基酸没有配对，而提取的残基对数量为46；所以，规律就是，当序列长度为N，间隔为k时，一共可以提取的残基对数量为N-k-1，记为 $$ N_{Total}=N-k-1 $$ 这里要特别感谢一下Chris同学的提醒和点拨。 由于基本氨基酸数量为20，故而可以形成的残基对数量是20×20=400.我们统计的是这些残基对在这个蛋白质序列当中出现的概率，于是便产生了一个400维的特征向量，即 $$ (\frac{N_{LE}}{N_{Total}},\frac{N_{EE}}{N_{Total}},\frac{N_{EY}}{N_{Total}},……,\frac{N_{DL}}{N_{Total}},\frac{N_{LL}}{N_{Total}})_{400} $$ 需要注意的是，本方法中设定的N为窗口值为window=27，即截取的片段长度为27(具体的截取方法将在下面给出)。可以想象，组成这个向量的400个比值当中，绝大部分为0.0，而这些比值总和为1.所以，当k分别取0,1,2,3,4,5等值时，一共会有400×6=2400个向量。 2.编程方案 encode这个文件夹中的算法，涵盖了数种主流的算法，这些算法介绍均会相继给出。 2.1 参数初始化 data.h这个文件中给出了许多初始值： const int buffer=256; // encode type char encodeTypeInit[buffer]="cksaap"; char *encodeType=encodeTypeInit; // input file name char *inputFile; // output file name char outputFileInit[buffer]="output.txt"; char *outputFile=outputFileInit; int outputFormat=0; // pssm file directory char pssmFileDirectoryInit[buffer]="PSSM"; char *pssmFileDirectory=pssmFileDirectoryInit; // disorder file directory char disorderFileDirectoryInit[buffer]="DisorderVSL2"; char *disorderFileDirectory=disorderFileDirectoryInit; // aggregation file directory char aggFileDirectoryInit[buffer]="Aggregation"; char *aggFileDirectory=aggFileDirectoryInit; // AAindex parameter file char aaindexFileInit[buffer]="AAindex.txt"; char *aaindexFile=aaindexFileInit; char ifFeatureSelectionInit[buffer]="N"; char *ifFeatureSelection=ifFeatureSelectionInit; char selectedFeatureFileInit[buffer]…

将台式机上的NDNSIM1.0(包含实验脚本和转发策略代码)移植到Mac上的问题
type: item
date: 2015-10-03T05:06:00+00:00
description: Overviewg++编译选项-Werror的问题自己编写的模块编译问题 Overview 这篇文章是我很久之前移植NDNSIM1.0时的笔记，最早想从台式机的Ubuntu 12.04上移植到别的机器的Ubuntu上，都会出现各种编译问题，一直没能成功，之后想在Mac上做实验，所以下决心把台式机中的NDNSIM 1.0的源代码移植到Mac上，主要遇到了以下问题，做了一下记录，以备以后查看。这个移植应该不只是移植到Mac上的方法，而是适用所有Ubuntu系统的。 g++编译选项-Werror的问题 将源代码编译之后，运行./waf报以下错： ../src/ndnSIM/model/wire/ccnb/ccnb-parser/syntax-tree/block.cc:43:15: error: unused variable 'CCN_MAX_TINY' [-Werror,-Wunused-const-variable] 如下图： 这个问题经常出现在NDNSIM移植的过程中。主要是由于NS3中编译时，自动加了-Werror选项，该选项会把编译中遇到的警告全部当错误处理，因此会报错。 解决方法: 使用以下编译命令: CXXFLAGS="-O0 -g" ./waf configure --with-python=/opt/local/bin/python2.7 --enable-examples 代替原来的： ./waf configure --with-python=/opt/local/bin/python2.7 --enable-examples 显式去除-Werror选项即可。 自己编写的模块编译问题 由于我在NS3中，添加了一个叫做ndnPlaneFow的模块，用于做实验，发现编译之后，使用./waf运行，会报以下错误： ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation) 详细错误如下图： 可见，ndnPlaneFow模块里的源文件在链接上找不到ndnSIM模块的依赖文件。 解决方案： 在ndnPlaneFow模块的wscript文件的编译依赖中，添加ndnSIM： module = bld.create_ns3_module('ndnPlaneFow', ['internet', 'propagation', 'antenna', 'applications','ndnSIM']) 现在就可以在Mac成功编译和运行了NDNSIM了。