读取序列时未创建输出文件

2023-12-14

因此,当它运行时,应该将 fasta 文件的输出缩短为几个序列,并将该输出放入文本文件中,但我遇到的问题是输出文件未创建,我不知道是什么错误在脚本内。我将在下面发布我的代码以供参考。感谢您阅读本文,如果您愿意的话

#!/usr/bin/perl
use strict; use warnings; use Getopt::Long qw(GetOptions);

my $name = 'P2A.pl';

my $usage = <<"OPTIONS";

NAME            $name
VERSION         $version

SYNOPSIS        This script would calculate the number of individual 
sequences
                per multifasta file

COMMAND         P2A.pl -fa *.fasta -out output.txt

-fa (--fasta)   FASTA input files
-out (--output) Desired output file name [Default: output.txt]

OPTIONS



die "$usage" unless @ARGV;
my $file;
my @fasta;
my $output = 'output.txt';
GetOptions(
    'fa|fasta=s@{1,}' => \@fasta,
        'out|output=s'  => \$output
);

open OUT, ">", $output;

while (my $fasta = shift@fasta){
        open IN, "<", $file;
        my $sequence = 0; ## Keeping a counter
        while (my $line = <IN>){
                ## Looking for FASTA header
                if ($line =~ m/^>/){
                        $sequence++;
                }
        }
    print OUT "$fasta\t$sequence\n";
}

请参阅下面更正后的代码

#!/usr/bin/perl

use strict;
use warnings;
use feature 'say';

use Getopt::Long qw(GetOptions);

my $name    = 'P2A.pl';
my $version = '0.0.1';
my $usage   = 
"

NAME            $name
VERSION         $version

SYNOPSIS        This script would calculate the number of individual 
                sequences per multifasta file

COMMAND         P2A.pl -fa *.fasta -out output.txt

-fa (--fasta)   FASTA input files
-out (--output) Desired output file name [Default: output.txt]

";

die "$usage" unless @ARGV;

my @fasta;
my $output = 'output.txt';

GetOptions(
    'fa|fasta=s@{1,}'   => \@fasta,
    'out|output=s'      => \$output
);


open my $fh_out, '>', $output
    or die "Can't top open $output";

while (my $file = shift @fasta){
    open my $fh_in, '<', $file
        or die "Can't to open $file";
    my $sequence = 0; ## Keeping a counter
    while (my $line = <$fh_in>){
            ## Looking for FASTA header
            if ($line =~ m/^>/){
                    $sequence++;
            }
    }
    print $fh_out "$file\t$sequence\n";
}

close $fh_out;

我会编写以下形式的处理代码

#!/usr/bin/perl

use strict;
use warnings;
use feature 'say';

use Getopt::Long qw(GetOptions);
use Pod::Usage;

my $name    = 'P2A.pl';
my $version = '0.0.1';

my %opt     = ( output => 'output.txt' );
my @param   = ('input|i=s@{1,}', qw/output|o=s screen|s debug|d help|h man|m/);
my %count;

GetOptions( \%opt, @param )
    or pod2usage(2);

pod2usage(1) if $opt{help};
pod2usage(-exitval => 0, -verbose => 2) if $opt{man};

usage() unless $opt{input};

for my $fname ( @{$opt{input}} ) {
    open my $fh, '<', $fname
        or die "Can't to open $fname";

    /^>/ && $count{$fname}++ while <$fh>;

    close $fh;
}

if( $opt{screen} ) {
    say "$_: $count{$_}" for keys %count;
} else {
    open my $fh, '>', $opt{output}
        or die "Can't to open $opt{output}";

    say $fh "$_: $count{$_}" for keys %count;

    close $fh;
}

sub usage {

    say
"
    NAME        $name
    VERSION     $version

    SYNOPSIS    This script counts the number of individual sequences
            per multifasta file

    COMMAND     P2A.pl -i *.fasta -o output.txt

    -i,--input  FASTA input files
    -o,--output Desired output file name [Default: output.txt]

";
    exit;
}

__END__

=head1 NAME

P2A.pl - counts fasta sequencies in files 

=head1 SYNOPSIS

P2A.pl [options]

 Options:
    -i,--input  input filename(s)
    -o,--output output filename
    -s,--screen output result to screen
    -d,--debug  output debug information
    -?,--help   brief help message
       --man    full documentation

=head1 OPTIONS

=over 4

=item B<-i,--input>

Input filename

=item B<-o,--output>

Output filename

=item B<-d,--debug>

Print debug information.

=item B<-?,--help>

Print a brief help message and exits.

=item B<--man>

Prints the manual page and exits.

=back

B<This program> processes B<fasta> files and outputs B<count> for sequencies to B<screen> or B<a file>

=cut
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

读取序列时未创建输出文件 的相关文章

随机推荐

  • 如何打包我正在使用的 python 库,以便我可以将它们与我的应用程序一起分发,并尽可能减少依赖项

    如何打包我正在使用的 python 库 以便我可以将它们与我的应用程序一起分发 并具有尽可能少的依赖项 并且不与我的系统上已有的不同库 版本发生冲突 L E 抱歉我忘了具体说明 我将在 Linux 上执行此操作 我并不是指使我的应用程序成为
  • string.find(" ") 未找到空格

    我正在尝试在用户输入的字符串中查找空格 我想用find from std string返回空间的位置 如果输入是 西雅图 华盛顿州美国 我想要find 0 回来8 我该怎么做 第八个是 后面的空格 string inputString co
  • 如何使用 xcopy 从文本文件复制文件和文件夹结构?

    我有一个包含文件和文件夹列表的文本文件 我想做的是使用 xcopy 复制文本文件中写入的内容 我的文本文件如下所示 C FOLDER C FOLDER FILE1 TXT C FOLDER FILE2 TXT C FOLDER FOLDER
  • 使用 python 提取网页上的 URL 列表的简单方法是什么? [关闭]

    Closed 这个问题需要细节或清晰度 目前不接受答案 我想创建一个简单的网络爬虫来娱乐 我需要网络爬虫来获取一页上所有链接的列表 python 库是否有任何内置函数可以使这变得更容易 感谢任何知识赞赏 这实际上非常简单美丽汤 from B
  • C# 被视为上下文无关语言吗?

    我一直在寻找这个问题 但是这个问题在网上有很多不同的答案MSDN 论坛 有人说 所有计算机语言语法都是上下文无关的 还有人说任何具有空白敏感语法的语言都可能是上下文相关的 因此不是上下文无关的 F 和 Python 会好的明确的答案也许还有
  • 具有不同 base_site.html 的多个管理站点

    我希望有多个管理站点 每个站点都有不同的基本模板 我可以创造admin base site html并将该路径添加到TEMPLATE DIRS在前面 以便base site html优先 但它会覆盖多个管理站点 有没有办法自定义每个管理站点
  • 如何在 R 中保存 data.frame?

    我在 R 中制作了一个不是很大的 data frame 但构建起来需要相当长的时间 我想将它保存为一个文件 然后我可以在 R 中再次打开它吗 有几种方法 一种方法是使用save 保存确切的对象 例如用于数据框foo save foo fil
  • 仅解析大型 JSON 字符串中的一个字段

    我有一个以下格式的 JSON 字符串 foo small vale baz large value bar another large value 如何高效提取foo而忽略其余字段 基本上 我使用 Gson 并定义了一个 精益类 如下所示
  • QWebEngineView 中的 Qt 事件传播

    我有一个名为generate input event 我正在尝试使用此函数来模拟 QWebEngineView 中的按键 def generate input event window id key code modifiers low l
  • 验证和认证的区别?

    如您所知 我们通过以下方式向卡证明我们是真实用户INITIAL UPDATE and EXTERNAL AUTHENTICATION命令 如下 lt 80 50 00 00 08 Host Challenge gt lt 84 82 03
  • Android Proguard SqlCipher NoClassDefFoundError

    一整天都在与 Proguard 作斗争 并在 Proguard 官方网站以及 StackOverflow 上尝试了许多示例和解决方案 我有一个需要混淆的大型项目 其中有许多引用的库项目和 Jars 我从 2 个库 com google co
  • 在没有“编辑”按钮的情况下在表格视图中编辑操作?

    我想在我的表格视图 加载时 中显示所有行 并带有红色标记 负号 UITableViewCellStateShowingDeleteConfirmationMask 换句话说 如果我单击红色标记 它必须在表视图中显示该特定行的删除按钮 编辑按
  • ExtJS。隐藏容器内的所有组件

    我有一个窗口 在其中渲染许多组件 例如面板等 有没有办法可以隐藏窗口中包含的所有组件 而不必单独隐藏它们 就像是 Ext getComponent myWindow hideAllComponents 我正在使用 extjs 3 4 如果我
  • 'false'可以匹配mysql中的某个字符串吗?

    我有一个这样的表 CREATE TABLE IF NOT EXISTS session id int 11 NOT NULL AUTO INCREMENT token varchar 32 NOT NULL profile varchar
  • 如何像 Ola 应用程序一样在 Google 地图上移动标记

    我正在开发像 Ola cabs 这样的应用程序 当用户拖动地图时 会出现一个视图透明视图 并且标记会移动 当用户停止拖动时 我们必须将 gmscamera 位置居中 就像 ola cab 应用程序一样 这是未拖动地图时的图像 拖动后 我使用
  • 为什么setParameter没有设置参数?

    我正在使用以下代码 尝试 查询数据库 Query query session createQuery from Trace where service service query setParameter service clientReq
  • 警告:mysqli_connect():(HY000/1045):用户“root”@“localhost”的访问被拒绝(使用密码:NO)[重复]

    这个问题在这里已经有答案了 PHP 警告 mysqli connect HY000 1045 用户访问被拒绝 root localhost 使用密码 NO G PleskVhosts peacewithoutlimits org httpd
  • 是否可以从 C++ 调用 Dart 方法?

    如何从C 代码中调用Dart方法 我想尝试在我的应用程序中使用 Dart 作为脚本语言 你有两种可能性 首先 你可以将 Dart VM 嵌入到您的 C 程序中 See 这次讨论 有一个 GitHub 示例 这允许您用 C 编写程序并运行 D
  • 在 sas 宏文件名管道中使用引号

    我正在使用以下使用文件名管道的宏 但出现错误 提示无效选项名称 dir 等 我怀疑这可能是由于定义文件名和管道时的引号所致 我想它会将其识别为一个选项 我尝试删除引号 删除 bquote 并仅使用双引号 但仍然不断出现错误 我正在使用 Wi
  • 读取序列时未创建输出文件

    因此 当它运行时 应该将 fasta 文件的输出缩短为几个序列 并将该输出放入文本文件中 但我遇到的问题是输出文件未创建 我不知道是什么错误在脚本内 我将在下面发布我的代码以供参考 感谢您阅读本文 如果您愿意的话 usr bin perl