ssh使用80端口进行登录

校园网只对外开放80端口,当多天出差的时候需要登录服务器。此时,需要将ssh默认的22端口改为80端口。同时,若占用了80端口,服务器对外的www服务则不能访问了,为了解决此矛盾,按如下方式解决:

1. 修改端口

# cd; pwd
/root
# cat > chport.sh
#!/bin/bash
perl -p -i -e 's/^Port 22/Port 80/' /etc/ssh/sshd_config
perl -p -i -e 's/^Listen 80/Listen 8080/' /etc/httpd/conf/httpd.conf

/etc/init.d/sshd stop
/etc/init.d/httpd stop

/etc/init.d/sshd start
/etc/init.d/httpd start

clear
ctrl + d
# chmod 755 chport.sh
# /root/chport.sh

以上命令建立了一个脚本文件/root/chport.sh。该文件用于修改sshd和http服务的端口,将sshd端口改为80,将httpd的端口改为8080.

这样,修改端口后,即可在外网使用如下命令登录服务器:

$ ssh -X -p 80 user@ip

2. 连接服务器后再改回端口

为了正常进行www服务器的访问,需要在登录进服务器后,将端口改回。这样通过ssh连接到了服务器,同时也能进行www访问了。

# cd; pwd
/root
# cat > rtport.sh
#!/bin/bash
perl -p -i -e 's/^Port 80/Port 22/' /etc/ssh/sshd_config
perl -p -i -e 's/^Listen 8080/Listen 80/' /etc/httpd/conf/httpd.conf

/etc/init.d/sshd stop
/etc/init.d/httpd stop
ctrl + d
# chmod 755 rtport.sh
# /root/rtport.sh

3. 登录到root时自动还原端口,退出root时自动修改端口

登录到了root,则不需要修改后的端口了,这是需要正常的www服务了。这时可以修改.bashrc文件;而退出root的时候,则需要修改端口,否则,下次登录就登录不上去了。这时,可以修改.bash_logout文件。

# cat >> /root/.bashrc
/root/rtport.sh
ctrl + d
# cat >> /root/.bash_logout
/root/chport.sh
ctrl + d

4. crontab定时修改或还原端口

若在还原端口后,突然断网导致中断链接,则再也不能登录服务器了,那不就悲剧了,特别是出差在外,不能回校的时候。此时就需要使用crontab来定时运行上述脚本:

# crontab -e
0       *       *       *       *       /root/chport.sh
30      *       *       *       *       /root/rtport.sh
:wq

上述命令在每小时0分钟的时候修改端口,于是能使用ssh进行远程登录了;每小时30分钟时候,则还原端口,可以正常访问www服务。

当然,在使用ssh登录后,在sudo到root权限,则自动还原端口,正常访问www服务。必要的时候手动运行以上脚本来开启www服务以维持www服务的运行。

5. 解决httpd不能重启的问题

这样反复重启服务,可能造成httpd重启的时候出错,提示程序已死但是pidfile存在的错误。则需运行如下命令来解决:

# ipcs -s | grep apache | \
perl -e 'while(<>){@a=split /\s+/, $_;print "ipcrm sem $a[1]\n"}' | \
sh
# rm -f /var/lock/subsys/httpd
# /etc/init.d/httpd start

神秘学:轮回,灵魂,通灵…

1. 灵魂与轮回

今天一QQ好友说信主已有1年多,出于好奇,我于是对其信仰和他讨论了一下。

为什么信主,他说:“耶稣是永生神的儿子,他为了世人的罪被订在十字架上死了;人是有灵魂的,信了耶稣,死后灵魂就可以去天堂和神在一起。”

他说其小时候的经历让他相信了灵魂的存在:“以前小时候我大伯带我去游泳,我想从游泳池边上跳到水中游泳圈里,结果跳歪了,没进游泳圈旁边去了。然后我就看见我在水里挣扎,看见哦,就是灵魂出窍了。”

我想估计是他小时候的事情让他相信了灵魂的存在,现在他在国外接触了一些教义,顺其自然地信主。他推荐我读这本书:Many Lives Many Masters。他说通过这本书能知道灵魂确实是存在的。

《Many Lives Many Masters》这本书的中文名是《前世今生,生命轮回的前世疗法》,作者Brian L. Weiss。可以在百度百科中查看本书的介绍

本书中描述了人在死后,灵魂进入一道温暖的白光中,可能会与灵性大师交流,然后进行下一轮命运。作者作为心理医生,对一名女性患者使用催眠术进行治疗,揭露了其很多轮前世的记忆片段;而作者重点关注了其死亡时的片段。

2. 通灵

在《Many Lives Many Masters》书最后,作者说其女性患者又通过一名通灵占星师对其前世的预测,和催眠得到的结果一致。

于是我有又想找一些通灵相关的东西,于是找到了介绍嘎玛仁波切传奇事件的博客:湖心亭看雪客新浪博客和有关轮回的《西藏生死书》

基因组Repeat Sequence的寻找

1. 重复序列简介和相关软件

参考自文献:Review:Identifying repeats and transposable elements in sequenced genomes: how to find your way through the dense forest of programs。E Lerat。Heredity (2010) 104, 520–533; doi:10.1038/hdy.2009.165; published online 25 November 2009

1.1 Repeats的分类

基因组中的repeats依据其序列特征分成2类:串联重复(tandem repeats) 和 散在分布在基因组中的重复序列(interspersed repeats).其中第二类主要是transposable elements(TEs).

第一类串联重复包含:microsatellites 或 simple sequence repeats(1-6个碱基为一个重复单元) 和 minisatellites(10-60个碱基的长序列为一个重复单元).

TEs包含2种类型:class-I TEs通过RNA介导的(copy and paste)机制进行转座;class-II TEs通过DNA介导的(cut and paste)机制来转座. 前者称为retroelements,后者称为DNA transposons。

class-I TEs中主要由LTR(long terminal repeat)构成。LTR的部分序列可能具有编码功能。而non-LTR则包含2个子类:LINEs(long interspersed nuclear elements)和SINEs(short interspersed elements),其中前者可能具有编码功能,后者则没有。

class-II TEs中加入了一个子类 MITEs(miniature inverted repeat transposable elements),基于DNA的转座因子,但是确通过”copy and paste”的机制来转座(Wicker et al., 2007)。

1.2 鉴定重复序列的软件

对于不同的重复序列,需要使用不同的软件来进行鉴定。而鉴定的方法可以分为:基于library,基于重复序列的特定结构 或 重头预测。文献中给出的软件很多:http://www.nature.com/hdy/journal/v104/n6/fig_tab/hdy2009165t1.html#figure-title

1.2.1 基于library-based的软件

library-based的软件,需要构建library,该library中包含很多来自不同物种某一重复序列的一致性序列,然后通过相似性比对来鉴定repeats。这种方法能对所有的种类的重复序列进行鉴定。此方法最经典最流行的软件是RepeatMasker;此方法中CENSOR和MASKERAID两个软件可以用于改良RepeatMasker的结果;此外,用于基因组的重复序列鉴定的还有GREEDIER(Li et al.,2008),该软件在其文章中表明该软件性能还不错,在repeats鉴定的敏感性上稍微比RepeatMasker高一点,但是repeats的鉴定率只有RepeatMasker的一半左右.

1.2.2 基于signature的软件

基于signature的方法主要用于TEs的鉴定。
1. 鉴定LTR逆转座子: LTR_STRUC (McCarthy and McDonald, 2003), LTR_PAR (Kalyanaraman and Aluru, 2006), FIND_LTR (Rho et al., 2007), RETROTECTOR (Sperber et al., 2007), LTR_FINDER (Xu and Wang, 2007) and LTRHARVEST (Ellinghaus et al., 2008)。文献中,这些软件中LTR_STRUC的敏感性最高(96%),但是LTR的鉴定率只有30%;而LTRharvest的鉴定率最高(42%),敏感性67%.总体上,作者依次推荐的软件是LTRHARVEST和FIND_LTR(敏感性83%,鉴定率37%)。
2. 鉴定non-LTR retrotransposons: TSDFINDER (Szak et al., 2002), SINEDR (Tu et al., 2004) and RTANALYZER (Lucier et al., 2007)。其中,第一个软件用于验证RepeatMasker检测到的L1 insertions;第二个软件用于检测侧翼有TSDs(target site duplications 当重复序列插入到基因组上时,其两侧会带入短核酸序列的重复)的SINEs;第三个软件通过一些特征,比如TSDs,polyA尾和5’端核酸内切酶位点等来通过打分来检测L1逆转座子。
3. 鉴定MITEs:FINDMITE (Tu, 2001), TRANSPO (Santiago et al., 2002), MITE Analysis Kit (MAK) (Yang and Hall, 2003) and MITE Uncovering SysTem (MUST) (Chen et al., 2009)。文献中作者使用第一个软件报错,使用第三个软件却下载不到。第二个软件不能寻找新的MITEs,看来最好是使用最新的第四个软件。
4. 鉴定helitrons: HELITRONFINDER。该软件(Du et al., 2008)用来寻找玉米基因组中的helitrons(在动物和植物中有发现)。

1.2.3 重头预测的软件

1.2.3.1 自我比较的方法

通过BLAST、PALS等方法,将序列和自身进行比较,从而找出重复序列。软件有:REPEAT PATTERN TOOLKIT (Agarwal and States, 1994), RECON (Bao and Eddy, 2002), PILER (Edgar and Myers, 2005) and the BLASTER suite (used in Quesneville et al., 2005).其中RECON软件使用最广泛。

1.2.3.2 k-mer and spaced seed approaches

一定长度的k-mer出现了多次,可以鉴定为重复序列;spaced seed则是k-mer的一种衍生,seed上允许有一定的差异。

软件有:REPUTER (Kurtz and Schleiermacher, 1999), VMATCH (Kurtz, unpublished), REPEAT-MATCH (Delcher et al., 1999), MER-ENGINE (Healy et al., 2003), FORREPEATS (Lefebvre et al., 2003), REAS (Li et al., 2005), REPEATSCOUT (Price et al., 2005), RAP (Campagna et al., 2005), REPSEEK (Achaz et al., 2007), TALLYMER (Kurtz et al., 2008) and P-CLOUDS (Gu et al., 2008).

1.2.4 其它重复序列鉴定软件

其它一些用于鉴定非TEs的软件:Tandem Repeats Finder (TRF) (Benson, 1999), Tandem Repeat Occurrence Locator (TROLL) (Castelo et al., 2002), MREPS (Kolpakov et al., 2003), TRAP (Sobreira et al., 2006) and Optimized Moving Window Spectral Analysis (OMWSA) (Du et al., 2007) have been developed specifically to detect tandem repeats. The Inverted Repeat Finder (IRF) program (Warburton et al., 2004) was designed to search for inverted repeats.

1.3 多个软件整合的pipeline程序

REPEATMODELER pipeline (Smit, unpublished http://www.repeatmasker.org/RepeatModeler.html) includes the programs RECON, REPEATSCOUT, REPEATMASKER and TRF. It uses the output of the RECON and REPEATSCOUT programs to build, refine and classify consensus models of putative interspersed repeats.

当然,在此文献中,也讲述了其它很多专门用途的其它pipeline软件。而REPEATMODELER pipeline是现在运用于基因组的重复序列鉴定最主流的软件。以下将讲述该软件运用。

2. RepeatModeler的安装与使用

2.1 软件的安装

RepeatMaskerRepeatModeler是ISB(Institute for Systems Biology)的软件。ISB is located in the South Lake Union neighborhood。

根据RepeatMasker说明,其安装与使用需要:Perl 5.8.0以上版本,序列比对Engine,TRF和Repeat Database。其中序列比对engine可以安装多个,但每次只能使用其一,可以使用Cross_match,RMBlast,HMMER和ABBlaast/WUBlast等。

根据RepeatMideker说明,其安装与使用需要:Perl 5.8.8以上版本,RepeatMasker,Repeat Database,RECON,RepeatScout,TRF和序列比对engine。其中序列比对engine可以安装多个,但每次只能使用其一,可以使用RMBlast和ABBlaast/WUBlast。

再安装完毕需要的软件后,对RepeatMasker和RepeatModeler进行configure的时候填入相应软件的路径即可安装。

2.2 RepeatModeler的使用

2.2.1 使用RepeatModeler来通过基因组序列构建library

$ $RepeatModelerHome/BuildDatabase -name species \
  -engine ncbi species.genome.fasta
$ $RepeatModelerHome/RepeatModeler -database species

结果生成了一个文件夹,名称为RM_[PID].[DATE] ie. “RM_5098.MonMar141305172005″。该文件夹中的”consensi.fa.classified”即为library,用于RepeatMasker的输入。值得注意的是,可能fasta文件需要序列间不能有空(空格和换行等),否则会程序出错。

2.2.2 使用RepeatMasker来进行重复序列掩盖和重复序列计算

cp RM_5098.MonMar141305172005/consensi.fa.classified .
mkdir Repeat_result
$ $RepeatMaskerHome/RepeatMasker -pa 8 \
  -e ncbi -lib consensi.fa.classified \
  -dir Repeat_result -gff species.genome.fasta

则生成的结果文件位于Repeat_result文件夹中。

基因组草图的gap closer软件:GapFiller

1. GapFiller简介

组装出来的基因组草图的scaffold需要进一步进行gaps的关闭。进行这样功能的软件有:SOAPdenovo GapCloser v1.12r6; IMAGE; GapFiller.

GapFiller文章发表在Genome Biology上:Boetzer M,Pirovano W. 2012. Toward almost closed genomes with GapFiller. Genome Biol.13:R56。从文章可以完全明白该软件closing gap的原理。

GapFiller需要输入scaffold序列(FASTA)和NGS paired-read数据(FASTA or FASTAQ),输出FASTA格式文件。该软件的获得需要填写一些邮箱和单位信息。商业license需要花钱;学术性需要引用其文章。

2. GapFiller安装

下载GapFiller的安装包,解压缩后,里面包含bowtie、bwa和example共3个文件,其最重要的是GapFiller.pl文件,为主程序。还有2个PDF格式的manual文件。

3. GapFiller的使用

直接运行主程序,会给出软件的参数说明,如下:

-l library文件
-s scaffold序列的fasta文件
-m default:29 和gap边缘重叠的最小碱基数,该数值最好设置比reads的长度小一点点的数。比如36bp长度的reads,设置该值为30~35.
-o default:2 在补洞时,延伸一个碱基最小需要的reads数.
-r default:0.7 在补洞时,至少有该比例reads的碱基一致,才能对该碱基位点进行延伸。
-d default:50 gap部分序列的允许的最大差异。填补gap后,若值“填补上的序列长度 - gap长度”大于该阈值,则停止补洞;若小于该阈值,则不进行融合。
-n default:10 在一个scaffold中对邻近的两个contigs进行融合所需要最小重叠的碱基数。
-t default:10 由于gap边缘的碱基大部分是低质量碱基,补洞时需要先将gap边缘该数目的碱基trim掉,作为N处理。
-i default:10 迭代的最大次数。
-g default:1 使用bowtie进行比对的时候允许的最大的gap数,和bowtie中的-v参数一致
-T default:1 运行时使用的线程数
-S 跳过重新读取输入文件
-b 输出文件的basename。

-l 参数所指向的library文件需要先行编辑好。该文件包含7列,每一列之间以空格(space)隔开.其例子和格式如下:

Lib1 bwa file1.1.fasta file1.2.fasta 400 0.25 FR 
Lib1 bowtie file2.1.fasta file2.2.fasta 400 0.25 FR 
Lib2 bowtie file3.1.fastq file3.2.fastq 4000 0.5 RF

第1列:library名称
第2列:使用的序列比对方法,如果reads长度<50,则使用bowtie;若长度>50并<150,则使用bwa;若长度很大,比如454的reads,则使用bwa。BWA和BWA-sw运行在默认模式下。 第3,4列:双末端测序的fastq文件或fasta文件。 第5,6列:插入片段的长度,以及承认的长度。比如上例子中插入片段长度为400bp,成对的reads的片段长度只有在[400-400*0.25,400+400*0.25]范围内才被承认。 第7列:双端测序reads的方向,有FF,FR,RF和RR几种。

4. 例子

编辑一个libraries.txt文件,内容如下:

Illumina_160bp bwa fragment.reads1.fastq fragment.reads2.fastq 156 0.25 FR
Illumina_6000bp bwa jumping.reads1.fastq jumping.reads2.fastq 6170 0.25 FR

运行GapFiller程序,如下:

$GapFillerHome/GapFiller.pl -l libraries.txt\
  -s genome.fasta -m 90 -T 8 -b species