之前有过用二代测序的数据组装植物叶绿体基因组昆虫线粒体的经历,用的是单位的超算(Linux系统)。
这里的二代测序数据是全基因组的浅层测序数据,因为叶绿体和线粒体是多拷贝的,一般浅层测序数据就可以组装出完整的叶绿体和线粒体基因组。我的单个样本(昆虫)测序数据大小是4G, 仅供参考。
用到的软件为Getorganelle和Mitofinder,这里介绍Mitofinder。
Mitofinder
官网:https://github.com/RemiAllio/MitoFinder
下面的教程基本来自于对官网教程的翻译,如有需要可以去看官网原文。
Mitofinder is a pipeline to assemble mitochondrail genomes and annotate mitochondrial genes from trimmed read sequencing data.
Mitofinder is also designed to find and annotate mitochpondrail sequences in existing genomic assemblies.
Mitofinder用来组装和注释线粒体基因组。
Mitofinder在整个流程中会调用的其他程序包括:
用于BLAST的:
用于组装的:MEGAHIT、MetaSPAdes、IDBA-UD
用于tRNA 注释的:MiTFi、tRNA-scan、ARWEN
Mitofiinder最简单的安装方法就是用conda安装。
Mitofinder是在python2.7下编写的,所以安装的时候建议用conda新建一个python2.7的环境,方法参考之前的教程:
https://www.jianshu.com/p/3ef9e6041dee
当然,用coonda创建环境和安装Mitofinder的前提是你已经安装好了miniiconda
miniconda的安装可以参考之前的教程:
https://www.jianshu.com/p/9dc419c33f42
首先创建一个名为Mitofinder,安装2.7版本的python的环境
conda create -n Mitofinder python=2.7
激活环境
conda activate Mitofinder
conda安装mitofinder
conda install -c bioconda mitofinder
用Mitofinder组装和注释线粒体基因组很简单,只需要一行命令。
如果是双向测序的原始数据,一个样本两个测序原始数据文件(left_reads.fastq.gz和right_reads.fastq.gz),用如下命令:
mitofinder -j [seqid] -1 [left_reads.fastq.gz] -2 [right_reads.fastq.gz] -r [genbank_reference.gb] -o [genetic_code] -p [threads] -m [memory]
如果是单向测序的原始数据,一个样本一个测序原始数据文件(SE_reads.fastq.gz),用如下命令:
mitofinder -j [seqid] -s [SE_reads.fastq.gz] -r [genbank_reference.gb] -o [genetic_code] -p [threads] -m [memory]
如果已经组装好了线粒体基因组,只需要测序,那么组装好的线粒体基因组序列作为输入文件,要求为fasta文件(assembly.fasta),用如下命令:
mitofinder -j [seqid] -a [assembly.fasta] -r [genbank_reference.gb] -o [genetic_code] -p [threads] -m [memory]
下面是我自己的例子:
~/Programfile/MitoFinder/mitofinder -j XXXX -1 XXXX.fastq.gz -2 XXXX.fastq.gz -r reference.gb -o 5 -p 5 -m 10
各项参数的意义如下:
~/Programfile/MitoFinder/mitofinder:给出mitofinder所在的路径
-j 任务的id号,输出的结果文件也用id号命名
-r 近缘物种的已经注释的线粒体基因组文件,要求为.gb文件,可以自行去NCBI网站下载。
下载的方法参考之前的教程:https://www.jianshu.com/p/910c92a0d03b
-o 指遗传密码类型,5代表无脊椎动物线粒体的遗传密码
-p 允许Mitofinder在运行时使用的最大线程数
-m 在组装过程中(运行MEGAHIT 或 MetaSPAdes)允许使用的计算机最大存储量
如果我们有很多测序数据需要组装,那么就可以写一个循环,写在任务脚本run.sh文件里,然后直接运行run.sh文件就可以了。我用的循环如下(惭愧,不是我写的,组上老师写的,这里挪用一下)

解释下上半部分:
-cwd #指定当前路径为工作目录,sge的日志会输出到当前路径
-S #指定远程计算节点的shell路径
-l #指定资源请求,多个请求用逗号(,)隔开
这一部分只针对我们单位系统的超算,不适用于大家,可以不看。
用到的循环如下:
for file1 in $(ls *.R1.fastq.gz)
do
for file2 in $(ls *.R2.fastq.gz)
do
if [ ${file1:0:4} == ${file2:0:4} ]; then
~/Programfile/MitoFinder/mitofinder -j ${file2:0:4} -1 $file1 -2 $file2 -r reference.gb -o 5 -p 5 -m 10
fi
done
done
简单解释一下这个循环:
我这里用到的每个样本的两个测序原始数据文件命名为:XXXX.R1.fastq.gz和XXXX.R2.fastq.gz,
XXXX是4个字符,把所有的输入文件都放在一个路径下,如果XXXX.R1.fastq.gz和XXXX.R2.fastq.gz具有相同的XXXX(在循环中为${file1:0:4}
== ${file2:0:4}),就对它们执行组装命令,输出文件命名为XXXXout(在循环中为 ${file2:0:4}"out")。
然后运行任务脚本就可以了:
qsub run.sh
qsub只是我们单位超算运行任务脚本的命令,大家根据自己的linux系统输入运行脚本的命令。
如果已经用别的软件组装好了线粒体基因组序列,只是用mitofinder进行注释,在序列很多的情况下也可以用下面的循环:
for filename in *.fasta;
do
~/Programfile/MitoFinder/mitofinder -j ${filename#*.} -a ${filename} -r reference.gb -o 5;
done
j后面代表的是任务的名称,也是后面result文件的名称,${filename#*.} 意思是取输入文件最后一个“.”前面的字符,如果输入文件是F410.fasta. 这个任务的名称就是F410
关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭5年前。Improvethisquestion我审查了一些用Ruby编写的专业代码,没有发现任何评论。代码读起来相当清晰,但没有self记录。我应该期望专业编写的Ruby代码有注释吗?或者,是否有一些Ruby原则认为注释不是必需的?
我有一些如下所示的Ruby代码:#some_string="{really?}"大括号需要是字符串的一部分。这一行是注释掉的代码,我想保留在那里。我还使用YARD来记录代码,所以当我运行yarddoc时,它(自然地)会发出无法“真正”链接的警告。有没有办法让YARD忽略注释掉的代码? 最佳答案 IsthereawayIcantellYARDtoignorecommentedoutcode?一方面,YARD记录支持Rdoc标记。并且Rdoc被记录为支持几种隐藏部件的方法。RDocstopsprocessingcommentsifitf
查看用Ruby编写的源代码,比如Rails,我经常看到小代码用tt标签包裹,比如rails/activesupport/core_ext/array/access.rb#Equaltoself[2].##%w(abcde).third#=>"c"defthirdself[2]end这背后的约定是什么,何时以及为何决定使用此表示法? 最佳答案 是的,我错了,抱歉这是特殊RDoc系统的一部分。Non-verbatimtextcanbemarkedup:italic:wordortextbold:wordortexttypewriter:
在SLIM中编写HTML注释时:/!Thefirstlineofcomments/!Thesecondlineofcomments输出变成所有其他生成的HTML格式和缩进都正确,因为我将pretty设置为true我正在编写供其他人使用的模板,因此我需要带有换行符的注释以提高可读性。 最佳答案 你可以像这样在Slim中实现单行多行注释:/!ThefirstlineofcommentsThesecondlineofcomments应该输出这个: 关于ruby-在Slim模板中,不同行的HTM
我正在构建一个Ruby脚本来更改config/locales/*.ymlRails语言环境文件的内容。这些文件包含许多有用的注释和变量。通过加载、更新和转储它们,我丢失了这些注释和变量。如何在保留注释和变量的同时以编程方式更新YAML文件? 最佳答案 我不认为你可以。YAML会忽略数据文件中的注释,但不会解析它们,因此它们会在文件加载时被丢弃。加载文件后,它们就消失了。我能想到的做你想做的唯一方法是在YAML之外打开文件,然后编写注释,然后写入使用to_yaml创建的YAML内容。像这样的东西:require'yaml'data={
我在Ruby包中没有看到任何可以帮助我向大块代码添加注释的东西。我在网上找到的此类快捷方式的链接似乎不再有效。 最佳答案 它不是特定于Ruby的:相同的快捷方式适用于所有语言,并且可以在“Source”包中找到。是Cmd/ 关于ruby-有没有办法在TextMate中注释掉一大块代码?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/9486020/
我的gem文件如下所示:group:development,:testdogem'rspec-rails'gem'annotate-models','1.0.4'end我运行了“bundleinstall”,它安装了annotate-models包。如果我输入:annotate,我会得到一个命令未找到的错误。如果我键入:bundleshowannotate,我会收到“无法在当前包中找到gemannotate”。如果我输入bundleshowannotate-models它说它安装在:/Library/Ruby/Gems/1.8/gems/annotate-models-1.0.4输入:
我知道很多Ruby的灵感来自Perl(例如,STDIN作为全局常量)或Unixshell(例如heredoc语法)。但我不知道block注释语法从何而来。语法:=beginThisisacommentlineitexplainsthatthenextlineofcodedisplaysawelcomemessage=end这是从哪里来的?我对Perl的了解很粗略。是Perl吗? 最佳答案 是的,这是PerlPerl使用=beginThisisacommentlineitexplainsthatthenextlineofcodedis
我试图在HTML文件末尾的一行中生成注释:我试过了/generatedby#{@server_name}但这会输出超过3行-我试过了/generatedby#{@server_name}但这不会评估@server_namevar-有什么想法吗? 最佳答案 正如您可以在需要时返回原始HTML输出一样,您也可以插入原始HTML注释,甚至可以进行插值。这个模板:-@foo=42#test1/Hello#{@foo}#test2产生这个输出:使用Hamlv3.1.4(SeparatedSally)测试
我是Rails的新手。我正在使用“Rubocop”来检查标准,但是我对它检查“卡住字符串文字”的方式感到困扰。它一直在我的文件上说:Missingfrozenstringliteralcomment.有没有办法在rubocop上禁用对此的检查?还是禁用它是个坏主意?我在rubocop.yml上试过这个但是没用frozen_string_literal:false 最佳答案 这个对我有用Style/FrozenStringLiteralComment:Enabled:false 关于rub