noHup - Unix/Linux/Mac系统
type: channel
link: http://www.nohup.cc/category/unix_linux_mac/
items: FastDFS分布式文件系统在服务器集群上的安装部署
items: R脚本在Windows和Mac上的一点不兼容
items: ubuntu14.04安装gearman及perl扩展包
items: ssh和FileZilla远程连接服务器的问题
items: KafkaOffsetMonitor监控消息消费状态
items: ubuntu14.04单机安装配置zookeeper和kafka
items: python计算smoothed PSSM（二）
items: python计算smoothed PSSM（一）
items: python分离正负样本
items: 生物信息中常用的Linux命令（二）

FastDFS分布式文件系统在服务器集群上的安装部署
type: item
date: 2018-04-06T15:21:00+00:00
description: Overview1.必备软件2.libfastcommon的安装3.FastDFS的安装4. 配置FastDFS4.1 创建跟踪器和存储节点的配置文件4.2 修改tracker配置文件4.3 修改storage配置文件4.4 查看所有存储节点信息5. 测试上传文件5.1 修改tracker服务器上的client配置文件6. 测试下载文件 Overview 到目前为止，我们手里已经有了10台服务器了。之前一直说要把这些服务器搭建一个分布式文件系统，现在条件终于成熟了。这些服务器预装的系统大多数是Ubuntu16.04LTS发行版的Linux，少部分是Ubuntu14.04LTS。这次我们选择5台服务器，1台feagen(118.138.241.39)服务器作为tracker，4台服务器(Bastion3(118.138.240.146)，Bastion4(118.138.233.74)，Bastion6(118.138.233.26)，POSSUM(118.138.233.27))作为storage。这里会记录下FastDFS分布式文件系统在Ubuntu16.04上的安装部署过程的细节。 5台服务器都要安装，只是配置文件稍有不同。 1.必备软件 FastDFS 这个去GitHub上面下载源码：FastDFS libfastcommon 这个仍然要去GitHub上面下载源码：libfastcommon 这两个Zip包用wget或者在本地下载上传至服务器均可。 2.libfastcommon的安装 首先解压libfastcommon-master.zip包： unzip libfastcommon-master.zip 进入这个文件夹： cd libfastcommon-master/ 依次输入如下命令： sudo ./make.sh sudo ./make.sh install 输入第二条命令之后，会有如下显示： mkdir -p /usr/lib64 mkdir -p /usr/lib install -m 755 libfastcommon.so /usr/lib64 install -m 755 libfastcommon.so /usr/lib mkdir -p /usr/include/fastcommon install -m 644 common_define.h hash.h chain.h logger.h base64.h shared_func.h pthread_func.h ini_file_reader.h _os_define.h sockopt.h sched_thread.h http_func.h md5.h local_ip_func.h avl_tree.h ioevent.h ioevent_loop.h fast_task_queue.h fast_timer.h process_ctrl.h fast_mblock.h connection_pool.h fast_mpool.h fast_allocator.h fast_buffer.h skiplist.h multi_skiplist.h flat_skiplist.h skiplist_common.h system_info.h fast_blocked_queue.h php7_ext_wrapper.h id_generator.h char_converter.h char_convert_loader.h /usr/include/fastcommon 可以看到libfastcommon.so安装到了/usr/lib64. 下面，我们需要为两个文件创建软链接，指向FastDFS主程序的lib目录： sudo ln -s /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so sudo ln -s /usr/lib64/libfastcommon.so /usr/lib/libfastcommon.so sudo ln -s /usr/lib64/libfdfsclient.so /usr/local/lib/libfdfsclient.so sudo ln -s /usr/lib64/libfdfsclient.so /usr/lib/libfdfsclient.so 3.FastDFS的安装 解压fastdfs-master.zip文件: unzip fastdfs-master.zip 进入FastDFS源码根目录: cd fastdfs-master 依次输入下面两条命令： sudo ./make.sh sudo ./make.sh install…

R脚本在Windows和Mac上的一点不兼容
type: item
date: 2018-04-02T03:28:29+00:00
description: Overview问题描述解决方案小结 Overview 今天在Mac上运行一个在Windows中处理过的R脚本，不能正常运行，错误信息指向明确。 问题描述 使用./H_gr500_tune.R运行，报下面的错误： env: Rscript\r: No such file or directory 打开这个脚本，头几行内容如下： #!/usr/bin/env Rscript library(e1071) library(plyr) library(ROCR) 并没有发现异常，很明显是因为Windows下换行符\r\n引起的，但是使用sublime查找这个脚本，能查找\n，却查不到有\r，所以没办法在sublime中手动去掉\r。 可能sublime在显示的时候自动把\r\n处理成了\n，但脚本中\r确实是存在的，所以尽管看不到，但运行脚本时会报错。 解决方案 使用下面的命令行，去掉\r，并生成一个新文件H_gr500_tune1.R： cat H_gr500_tune.R | tr -d "\r" > H_gr500_tune1.R 重新运行H_gr500_tune1.R，一切正常。 小结 从Windows下拿过来的脚本，最好都check一下换行符的问题，不管会不会有问题，看一下总没错...

ubuntu14.04安装gearman及perl扩展包
type: item
date: 2016-09-13T07:49:00+00:00
description: Overview1.下载安装gearman2.安装perl扩展包3.运行测试perl脚本 Overview Bastion4这个项目经过我们实验验证和安全考虑，决定舍弃kafka而转用gearman这个消息队列框架，具体分析将在后续文章中给出，这里只记录gearman相关的安装。 1.下载安装gearman 最新版的gearman是gearmand-1.1.12。我们执行下面几步，先将其下载到本地主文件夹，并解压缩。 sudo apt-get update wget https://launchpad.net/gearmand/1.2/1.1.12/+download/gearmand-1.1.12.tar.gz tar zxvf gearmand-1.1.12.tar.gz cd gearmand-1.1.12/ 进入gearmand-1.1.12文件夹后，如果直接运行 ./configure 就会报缺少如下几个依赖包错误： configure: error: could not find boost configure: error: Could not find a version of the library configure: error: could not find gperf configure: error: Unable to find libevent configure: error: Unable to find libuuid 所以，我们先将这些依赖都安装好： sudo apt-get install libboost-dev sudo apt-get install libboost-all-dev sudo apt-get install gperf sudo apt-get install libevent-dev sudo apt-get install uuid-dev 安装好之后，如果没有错误，仍在gearmand-1.1.12文件夹下运行下面两条命令，编译时间比较长： sudo make sudo make install 这个过程中如果出现了错误，就运行下面的命令清除一下之前编译产生的可执行文件以及object文件(即扩展名为o的文件)： sudo make clean 继续重新安装编译： ./configure sudo make sudo make install 没有错误的话，就安装gearman的job server： sudo apt-get install gearman-job-server 安装好以后，运行一下gearman: gearman 会提示错误： gearman: error while loading shared libraries: libgearman.so.8: cannot open shared object file: No such file or directory 这表示找不到libgearman.so.8所在的目录。这时我们打开/etc/ld.so.conf文件： sudo vim /etc/ld.so.conf 添加一句话: include /usr/local/lib 保存退出，并执行下面这句： sudo /sbin/ldconfig 这样就不会出错了。 启动一下job server： gearmand -d 报错如下： gearmand: Could not open log file "/usr/local/var/log/gearmand.log", from "/home/young/gearmand-1.1.12", switching to stderr. (No such file or directory) 我们这样解决：在/usr/local/下面新建var子目录，进去，新建log子目录，再进去，新建文件gearmand.log。这样就没有问题了。 用sudo权限运行下面的命令： sudo gearmand -d -L 127.0.0.1 -p 4730 -d表示daemon，在后台运行； -L表示监听的ip，默认是localhost； -p表示监听的端口号port，默认是4730。 这样gearman在ubuntu14.04上面就安装成功了。 2.安装perl扩展包 perl端需要3个扩展包： Gearman::Server Gearman::Client Gearman::Worker 可以用之前Chris的博客BioPerl（一）：安装BioPerl中介绍的方法，先安装好CPAN。 之后，用sudo权限打开CPAN： sudo cpan 然后依次安装3个扩展包： install Gearman::Serv…

ssh和FileZilla远程连接服务器的问题
type: item
date: 2016-07-21T02:30:00+00:00
description: Overview1.问题所在2.解决办法2.1 文件改名(不推荐)2.2 直接指定密钥文件(推荐) Overview 前些天用ssh通过命令行登录我们的bastion4服务器还一切正常，到了昨天已经不能使用，但是用了相同的密钥的FileZilla依然可以登录，这就很奇怪了。 1.问题所在 用FileZilla登录到远程服务器，找到ubuntu用户下面的.ssh文件夹，打开之后可以看到只有一个文件authorized_keys，我把它下载下来。完成之后，我到本机的/home/young/Downloads文件夹里找到它，打开看到我的密钥已经添加进去了，看来是FileZilla可以找到本地/home/young/.ssh/BingjiaoYang_ssh这个文件，但是默认的 ssh ubuntu@bastion4.erc.monash.edu 命令现在已经找不到这个文件了。 经过Jerico和Chris两个人的指点，使用如下命令: ssh -vvv ubuntu@bastion4.erc.monash.edu 显示日志信息如下(只截取最后核心信息)： debug1: Next authentication method: publickey debug1: Trying private key: /home/young/.ssh/id_rsa debug3: no such identity: /home/young/.ssh/id_rsa: No such file or directory debug1: Trying private key: /home/young/.ssh/id_dsa debug3: no such identity: /home/young/.ssh/id_dsa: No such file or directory debug1: Trying private key: /home/young/.ssh/id_ecdsa debug3: no such identity: /home/young/.ssh/id_ecdsa: No such file or directory debug1: Trying private key: /home/young/.ssh/id_ed25519 debug3: no such identity: /home/young/.ssh/id_ed25519: No such file or directory debug2: we did not send a packet, disable method debug1: No more authentication methods to try. Permission denied (publickey). 意思就是找不到/home/young/.ssh/id_rsa这个文件。 2.解决办法 解决办法有如下两个。 2.1 文件改名(不推荐) 把/home/young/.ssh/BingjiaoYang_ssh这个文件改名为id_rsa,同时把/home/young/.ssh/BingjiaoYang_ssh.pub这个文件改名为id_rsa.pub,这时候再用原命令登录就没有问题了。但是这个解决办法明显没有看透本质，所以推荐下一种。 2.2 直接指定密钥文件(推荐) 在命令行中直接输入ssh，可以看到ssh的用法： ➜ ~ ssh usage: ssh [-1246AaCfgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec] [-D [bind_address:]port] [-E log_file] [-e escape_char] [-F configfile] [-I pkcs11] [-i identity_file] [-L [bind_address:]port:host:hostport] [-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port] [-Q cipher | cipher-auth | mac | kex | key] [-R [bind_address:]port:host:hostport] [-S ctl_path] [-W host:port] [-w local_tun[:remote_tun]] [user@]hostname [command] 可以看到，我们可以之间指定文件，来解决找不到文件的问题。所以，正确命令如下： ssh ubuntu@bastion4.erc.monash.edu -i /home/young/.ssh/BingjiaoYa…

KafkaOffsetMonitor监控消息消费状态
type: item
date: 2016-06-10T04:31:00+00:00
description: Overview1. 安装jdk,zookeeper,kafka2. 安装配置KafkaOffsetMonitor3. 启动KafkaOffsetMonitor4.运行KafkaOffsetMonitor Overview 这次做服务器，计划加入消息队列，并在web页面显示当前提交的序列处理状态和已处理序列的信息。我们知道，在后台命令行中可以看到kafka的消息者处理消息的状态，但是，对于访问者来说，查看命令行是不现实的，于是我们便采用了KafkaOffsetMonitor这一开源软件。Github的下载地址如下:Kafka Offset Monitor。 1. 安装jdk,zookeeper,kafka 这部分可以参考上一篇文章：ubuntu14.04单机安装配置zookeeper和kafka。 2. 安装配置KafkaOffsetMonitor 新建一个文件夹，比如我在kafka文件夹下建立子文件夹kafkaMonitor下载好以后，把这个KafkaOffsetMonitor-assembly-0.2.0.jar文件放入kafkaMonitor文件夹。在当前位置新建一个kafkaMonitor.sh文件，文件内容如下： #! /bin/bash java -cp KafkaOffsetMonitor-assembly-0.2.0.jar \ com.quantifind.kafka.offsetapp.OffsetGetterWeb \ --zk localhost:2181 \ --port 8089 \ --refresh 10.seconds \ --retain 7.days 上面是最关键的几条配置，剩余配置不写也可以运行。逐一分析上面每一项配置： --zk 这里写的地址和端口，是zookeeper集群的各个地址和端口。应和kafka/bin文件夹中的zookeeper.properties中的host.name和clientPort一致。本机是host.name=localhost，clientPort=2181。 --port 这个是本软件KafkaOffsetMonitor的端口。注意不要使用那些著名的端口号，例如80,8080等。我采用了8089. --refresh 这个是软件刷新间隔时间，不要太短也不要太长。 --retain 这个是数据在数据库中保存的时间。 3. 启动KafkaOffsetMonitor 首先，启动zookeeper 切换到/home/young/zookeeper/bin目录下，运行下面命令： ./zkServer.sh start 然后，启动kafka： 切换到/home/young/kafka目录下，执行下面命令： bin/kafka-server-start.sh config/server.properties 最后，启动KafkaOffsetMonitor： 切换到/home/young/kafka/kafkaMonitor目录下面，执行下面命令： ./kafkaMonitor.sh 如果显示如下，就证明成功了： serving resources from: jar:file:/home/young/kafka/kafkaMonitor/KafkaOffsetMonitor-assembly-0.2.0.jar!/offsetapp SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". SLF4J: Defaulting to no-operation (NOP) logger implementation SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details. 2016-06-10 12:05:13.724:INFO:oejs.Server:jetty-7.x.y-SNAPSHOT log4j:WARN No appenders could be found for logger (org.I0Itec.zkclient.ZkConnection). log4j:WARN Please initialize the log4j system properly. log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info. 2016-06-10 12:05:13.781:INFO:oejsh.ContextHandler:started o.e.j.s.ServletContextH…

ubuntu14.04单机安装配置zookeeper和kafka
type: item
date: 2016-06-06T07:30:00+00:00
description: Overview1.安装配置zookeeper单机模式2.安装配置kafka单机模式2.1 配置server.properties2.2 配置zookeeper.properties2.3 配置producer.properties2.4 配置consumer.properties2.5 补充说明3.kafka的使用3.1 启动zookeeper服务3.2 启动kafka服务3.3 创建话题topic3.4 启动生产者producer3.5 启动消费者consumer Overview T4这个项目实验部分已经结束，下面需要将服务器做出来。为了方便以后扩展分布式的需要，这次将会运用Apache Kafka这个分布式消息发布订阅系统，以满足多人同时提交计算T4序列，解决并发排队问题。Apache kafka的详细介绍详见官网：Apache kafka。 运行Apache Kafka，需要先安装好jdk和zookeeper。jdk安装过程就不赘述了。 1.安装配置zookeeper单机模式 这里，我们选择的是zookeeper-3.4.5这个版本，官网下载链接zookeeper-3.4.5。下载之后将zookeeper-3.4.5.tar.gz移动到主文件夹并重命名： mv Downloads/zookeeper-3.4.5.tar.gz zookeeper.tar.gz 然后解压缩为zookeeper文件夹： tar -zxvf zookeeper.tar.gz 切换到zookeeper/conf目录： cd /home/young/zookeeper/conf 复制zoo_simple.cfg为zoo.cfg: cp zoo_simple.cfg zoo.cfg 打开zoo.cfg并修改内容如下： initLimit=10 syncLimit=5 dataDir=/home/young/zookeeper/data clientPort=2181 配置好后，手动创建dataDir目录： mkdir /home/young/zookeeper/data 为zookeeper配置环境变量，打开/etc/profile，在结尾添加如下两句，并保存： export ZOOKEEPER_HOME=/home/young/zookeeper export PATH=.:$ZOOKEEPER_HOME/bin:$JAVA_HOME/bin:$PATH 切换到zookeeper/bin目录： cd /home/young/zookeeper/bin 启动zookeeper的server： ./zkServer.sh start 显示效果如下，则证明zookeeper配置成功： JMX enabled by default Using config: /home/young/zookeeper/bin/zookeeper/conf/zoo.cfg Starting zookeeper ... STARTED 需要结束服务时，仍在本目录下，执行如下命令即可： ./zkServer.sh stop 2.安装配置kafka单机模式 我们选择的是kafka_2.10-0.8.1.1.tgz，下载链接在这里：Apache kafka。下载之后放到主文件夹，并改名为kafka.tgz，然后解压缩到当前文件夹： tar -zxvf kafka.tgz 切换到kafka/config目录： cd /home/young/kafka/config 这里，我们需要修改4个配置文件：server.properties，zookeeper.properties，producer.properties，consumer.properties。 2.1 配置server.properties 下面几项是必须修改的，其他项目为默认配置： #broker.id需改成正整数，单机为1就好 broker.id=1 #指定端口号 port=9092 #localhost这一项还有其他要修改，详细见下面说明 host.name=localhost #指定kafka的日志目录 log.dirs=/home/young/kafka/kafka-logs #连接zookeeper配置项，这里指定的是单机，所以只需要配置localhost，若是实际生产环境，需要在这里添加其他ip地址和端口号 zookeeper.connect=localhost:2181 然后手动创建log.dirs空目录： mkdir /home/young/kafka/kafka-logs 2.2 配置zookeeper.properties 很简单，这个文件暂时只需要修改3项： #数据目录 dataDir=/home…

python计算smoothed PSSM（二）
type: item
date: 2016-03-10T13:18:00+00:00
description: Overview1 python编码1.1 t34pssm.py1.2 pssm_smoothed_head.py1.3 总结 Overview 上一篇文章python计算smoothed PSSM（一）当中，介绍了以当前氨基酸残基为基点，左右取相同数目的序列，然后叠加计算。Chris介绍，这样的算法有特定的用场：蛋白质后修饰。但是，普通的蛋白质序列提取特征就不太适用了：因为窗口值(smoothed window)只能取奇数，而如果有偶数长度的序列片段包含有特征，这种算法就会漏掉。于是决定写一个新的python脚本，把所有特征全部包含进去。 想法很简单：以当前残基为基点，直接向后连续取w_smth个氨基酸，并叠加计算最后存入新矩阵的当前位置。我做了一个循环，将窗口值不大于w_smth的矩阵全部存入一个相同的新矩阵当中，这样特征就全了。 1 python编码 1.1 t34pssm.py 这部分代码跟前面的代码只有一处不同：不用判断窗口值是否为奇数。这部分内容可参考上一篇内容。 1.2 pssm_smoothed_head.py 这部分代码完成的功能如下： 将每条序列的pssm矩阵的左半部分截取，存入矩阵PSSM-orig。 对矩阵PSSM_orig进行叠加操作，生成矩阵PSSM_smth_head_full。 根据需要截取PSSM_smth_head_full的前n个序列，并存入PSSM_smth_head_final。 将PSSM_smth_head_final合并为一行写入文件，每条序列占一行。 代码如下： #! /usr/bin/env python # -*- coding: utf-8 -*- # vim:fenc=utf-8 """ Retrieve smoothed_head PSSM features """ import sys import numpy as np import math import re import fileinput def pssm_smth_head_n(fi,output_smth_head,w_smth_head,n): # 0-19 represents amino acid 'ARNDCQEGHILKMFPSTWYV' w_smth_head=int(w_smth_head) n=int(n) Amino_vec = "ARNDCQEGHILKMFPSTWYV" PSSM = [] PSSM_orig = [] seq_cn = 0 # 读取pssm文件 for line, strin in enumerate(fileinput.input(fi)): if line > 2: str_vec = strin.split()[1:22] if len(str_vec) == 0: break PSSM.append(map(int, str_vec[1:])) seq_cn += 1 print seq_cn fileinput.close() #original PSSM #将每条序列的`pssm`矩阵的左半部分截取，存入矩阵`PSSM-orig` PSSM_orig=np.array(PSSM) #print PSSM_orig PSSM_smth_head_final=np.array([[0.0]*20]*(n*w_smth_head)) #section for PSSM_smth_head features for k in range(1,w_smth_head+1): PSSM_smth_head = np.array([[0.0]*20]*seq_cn) #print PSSM_smth_head #对矩阵`PSSM_orig`进行叠加操作，生成矩阵`PSSM_smth_head_full`。 PSSM_smth_head_full=pssm_smth_head(PSSM_orig,PSSM_smth_head,k,seq_cn) #print PSSM_smth_head_full #print np.shape(PSSM_smth_head_full) #根据需要截取`PSSM_smth_head_full`的前`n`个序列，并存入`PSSM_smth_head_final`。 for i in range(n): PSSM_smth_head_final[i+n*(k-1)]=PSSM_smth_head_full[i] #print PSSM_smth_head_final PSSM_smth_head_final_shp=np.shape(PSSM_smth_head_final) file_out_smth_head=file(output…

python计算smoothed PSSM（一）
type: item
date: 2016-03-09T12:58:00+00:00
description: Overview1 python编码1.1 t34pssm.py1.2 pssm_smoothed.py1.3 总结 Overview 最近几天，Chris和我看了很多论文，对PSSM有了更深的认识。但是，鉴于PSSM本身包含单个位置的信息更明显，而几乎没有包含蛋白质序列片段信息，我们两人思考如何将蛋白质序列片段信息编码，终于找到了一种PSSM的处理方式，这种方式叫做smoothed window,特此记录一下。 该算法原理，请参考这篇论文：Predicting RNA-binding sites of proteins using support vector machines and evolutionary information，并在此感谢该论文作者！并感谢Chris对我的鼓励和帮助！ 1 python编码 1.1 t34pssm.py 这部分代码是主函数，是之前这篇文章中的代码，可以参考这里蛋白质序列特征提取方法之——PSSM，就不详加解释了。 #! /usr/bin/env python # -*- coding: utf-8 -*- # vim:fenc=utf-8 """ python t34pssm.py total_train_60.fasta ./total_train_60 ./total_train_60_pssm w_smth n param: 1. 总的fasta格式蛋白质序列 2. 分开的fasta格式蛋白质序列的文件夹 3. 分开的fasta格式蛋白质序列对应的pssm的文件夹 4.smooth-window 值，要求是奇数。 5.截取的序列长度，一般为25，30,50。本例为30. """ import fileinput import sys from os import listdir from os.path import isfile, join import re from pssm_smoothed import * smplfasta = sys.argv[1] spfasta = sys.argv[2] check_head = re.compile(r'\>') #read from undersample fasta, store smplist = [] smpcnt = 0 for line, strin in enumerate(fileinput.input(smplfasta)): if check_head.match(strin): smplist.append(strin.strip()) smpcnt += 1 onlyfiles = [ f for f in listdir(spfasta) if isfile(join(spfasta,f)) ] fastaDict = {} for fi in onlyfiles: cntnt = '' for line, strin in enumerate(fileinput.input(spfasta+'/'+fi)): if line == 0: cntnt += strin.strip() if cntnt in fastaDict: print strin fastaDict[cntnt] = fi pssmdir = sys.argv[3] w_smth = sys.argv[4] #如果窗口值不是奇数，退出程序 if int(w_smth)%2 ==0: print 'Please change your input argument ' + w_smth + ' to an odd smoothing-window number!!!' sys.exit(1) n=sys.argv[5] for smp in smplist: finalist.append(pssmdir+'/'+fastaDict[smp].split('.')[0]+'.pssm') for fi in finalist: pssm_single(fi,'total_train_60_pssm_smth',w_smth,n) 1.2 pssm_smoothed.py #! /usr/bin/env python # -*- coding: utf-8 -*- # vim:fenc=utf-8 """ Retrieve smoothed PSSM features """ import sys import numpy as np import math import re import fileinput def pssm_single(fi,output_smth,w_smth,n): # 0-19 represents …

python分离正负样本
type: item
date: 2016-02-27T15:46:00+00:00
description: Overview1. separatePosNeg.py Overview 机器学习算法在项目中应用的时候，有时候会用到分离fasta格式的正负样本。于是就写了一个python脚本，效果不错，记录一下。 1. separatePosNeg.py #! /usr/bin/env python # -*- coding: utf-8 -*- # vim:fenc=utf-8 import fileinput import sys import re ls=fileinput.input(sys.argv[1]) check_head = re.compile(r'\>') cls = '' smplist = '' for line, strin in enumerate(ls): if check_head.match(strin): strin_vec=strin.split('|') cls = strin_vec[len(strin_vec)-1].strip() if cls == str(sys.argv[2]): smplist+=strin.strip() smplist+='\n' smplist+=ls.next() print smplist 记录下在linux命令行中的用法： #提取正样本时： python separatePosNeg.py original.fasta '1' >> pos.fasta #提取负样本时： python separatePosNeg.py original.fasta '-1' >> neg.fasta

生物信息中常用的Linux命令（二）
type: item
date: 2016-02-26T13:38:00+00:00
description: Overview1. 按顺序合并文件2.比较两个文件的区别参考资料 Overview 做项目时出现过某些蛋白质序列出现O或者X等情况，导致计算出的PSSM矩阵也有问题。今天又遇到这种情况，在比对文件的时候，用到了两条文件操作的linux命令，记录一下。其他更多的内容参考之前Chris写的另一篇文章生物信息中常用的Linux命令。 1. 按顺序合并文件 普通的合并文件可以直接用一个cat命令，而按顺序合并多个文件必须遍历这些文件，逐个合并。命令如下： for ((i=1;i<=k;i++))do echo fileName$i;done | xargs -i cat {} >> newFileName 2.比较两个文件的区别 diff的不加参数的基本命令最常用。 diff file1 file2 参考资料 Shell脚本中使用for循环和cat命令实现按顺序合并文件