群体遗传学走进转录组

MISA+Primer3设计SSR引物(二):修改脚本使其便于批

2021-11-16  本文已影响0人  学生信的大叔

有看到文章里分析几个叶绿体基因组SSR位点的,但是MISA+Primer3 直接批量跑的话,所有脚本、输入和输出文件全放在一个文件夹里(由misa脚本所制约),过于杂乱。想让其分开的话就不得不修改下脚本。本文提供下修改misa 脚本思路(最好还是先熟悉下misa脚本)。

没系统学习过perl,用词可能不准,大家领会精神即可。
下面开始胡说八道。

  1. 需要修改的脚本

misa.plp3_in.pl, p3out.pl

  1. 需要的知识点
if (@ARGV == 0)
  {
  open (IN,"<$0");
  while (<IN>) {if (/^\#\# (.*)/) {$message .= "$1\n"}};
  close (IN);
  die $message;
  };

这部分代码意思就是:执行脚本,当参数数量为0时,将该脚本中以 两个# 开头的行作为错误信息(或者说时帮助信息)输出到标准输出。

用其中的basename()函数 获取文件名,便于输出文件命名。

  1. 思路:针对三个知识点分别作出修改
if (@ARGV != 3)
  {
  open (IN,"<$0");
  while (<IN>) {if (/^\#\# (.*)/) {$message .= "$1\n"}};
  close (IN);
  die $message;
  };

脚本内,我们只限定了3个参数数量,并没有检查文件或者文件夹是否存在。这部分检查可以放到shell批量脚本中进行。

p3_in.pl 为例,修改后其第一个参数$ARGV[0]./results/seqs.fasta.misa

原脚本中:

open (IN,"<$ARGV[0]") || die ("\nError: Couldn't open misa.pl results file (*.misa) !\n\n");

my $filename = $ARGV[0];
$filename =~ s/\.misa//;

将上面内容修改为:

open (IN,"<$ARGV[0]") || die ("\nError: Couldn't open misa.pl results file (*.misa) !\n\n");
use File::Basename;
my $filename = $ARGV[0];       #此时$filename=./results/seqs.fasta.misa
$filename=basename("$ARGV[0]") #此时$filename=seqs.fasta.misa
$filename =~ s/\.misa//;       #此时$filename=seqs.fasta

此时便获取了$filename 便于命名结果文件。

为了使代码更简洁,可以合并第3,4行,修改为:

open (IN,"<$ARGV[0]") || die ("\nError: Couldn't open misa.pl results file (*.misa) !\n\n");
use File::Basename;
my $filename = basename("$ARGV[0]"); #此时$filename=seqs.fasta.misa
$filename =~ s/\.misa//;  

然后模仿着再修改misa.plp3_out.pl

如果你不想按知识点三内容修改,可以按照知识点一修改,不过要传入更多的变量用于输出文件,但这无疑会增加shell脚本的出错率。

  1. 小结

顺序传参、增加的传参变量都增加了shell脚本出错率,如果不是自己修改,可能还是觉得有些乱的。梳理脚本后可以写好批量运行的shell脚本,减少修改参数,使其不那么凌乱。但不管怎么说,修改后的文件,批量运行后可以将

输入文件、脚本和结果文件分开了。后期还可以加入长选项用于指定参数。

下一篇内容将更新搭配这次修改的shell脚本,只需要修改如下几个参数就可以完成一次任务。脚本还可以支持断点接续。批量模式只需要将$FASTA作为shell脚本的$1即可批量运行。

##path of programe
MISA_PATH=./misa
PRIMER3_CORE=primer3_core
##input file
FASTA=./fasta/test.fa
##output path
RESULT_PATH=./results

参考: https://www.jianshu.com/p/33b835f79713

上一篇 下一篇

猜你喜欢

热点阅读