我正在尝试从 Perl 代码执行外部程序,即 cutadapt ( https://cutadapt.readthedocs.io/en/stable/guide.html )。
但是,一旦我添加了我想要的 ;required,我就会收到来自 cutadapt 的错误消息。
所有打印的命令在终端中运行良好。
我的perl代码如下:
#string without ;
my $cutadapt_cmd1 = '/home/USER/miniconda3/bin/cutadapt -a "GAGGAAGTAAAAGTCRTAACAAGGT...ATCGATGAAGAACGCAGCGAA" --discard-untrimmed -q 20 -m 200 -o SAMPLE_NAME_401.IonXpress_0401.trim.fq IonXpress_0401_rawlib.basecaller.fq';
#string with ;
my $cutadapt_cmd2 = '/home/USER/miniconda3/bin/cutadapt -a "GAGGAAGTAAAAGTCRTAACAAGGT;required...ATCGATGAAGAACGCAGCGAA" --discard-untrimmed -q 20 -m 200 -o SAMPLE_NAME_401.IonXpress_0401.trim.fq IonXpress_0401_rawlib.basecaller.fq';
#array without ;
my @cutadapt_cmd3 = ('/home/USER/miniconda3/bin/cutadapt', '-a', 'GAGGAAGTAAAAGTCRTAACAAGGT...ATCGATGAAGAACGCAGCGAA', '--discard-untrimmed' ,'-q' ,'20', '-m', '200', '-o' ,'SAMPLE_NAME_401.IonXpress_0401.trim.fq', 'IonXpress_0401_rawlib.basecaller.fq');
#array with ;
my @cutadapt_cmd4 = ('/home/USER/miniconda3/bin/cutadapt', '-a', 'GAGGAAGTAAAAGTCRTAACAAGGT;required...ATCGATGAAGAACGCAGCGAA', '--discard-untrimmed' ,'-q' ,'20', '-m', '200', '-o' ,'SAMPLE_NAME_401.IonXpress_0401.trim.fq', 'IonXpress_0401_rawlib.basecaller.fq');
#array with ; and with integers
my @cutadapt_cmd5 = ('/home/USER/miniconda3/bin/cutadapt', '-a', 'GAGGAAGTAAAAGTCRTAACAAGGT;required...ATCGATGAAGAACGCAGCGAA', '--discard-untrimmed' ,'-q' ,20, '-m', 200, '-o' ,'SAMPLE_NAME_401.IonXpress_0401.trim.fq', 'IonXpress_0401_rawlib.basecaller.fq');
#Works
print("\n\ncmd1\n\n");
system $cutadapt_cmd1;
#Fails
print("\n\ncmd2\n\n");
system $cutadapt_cmd2;
#Works
print("\n\ncmd3\n\n");
system @cutadapt_cmd3;
#Fails
print("\n\ncmd4\n\n");
system @cutadapt_cmd4;
#Fails
print("\n\ncmd5\n\n");
system @cutadapt_cmd5;
输出如下:
cmd1
This is cutadapt 1.18 with Python 3.7.1
Command line parameters: -a GAGGAAGTAAAAGTCRTAACAAGGT...ATCGATGAAGAACGCAGCGAA --discard-untrimmed -q 20 -m 200 -o SAMPLE_NAME_401.IonXpress_0401.trim.fq IonXpress_0401_rawlib.basecaller.fq
Processing reads on 1 core in single-end mode ...
Finished in 0.47 s (11 us/read; 5.67 M reads/minute).
=== Summary ===
Total reads processed: 44,086
Reads with adapters: 0 (0.0%)
Reads that were too short: 7,268 (16.5%)
Reads written (passing filters): 0 (0.0%)
Total basepairs processed: 11,458,046 bp
Quality-trimmed: 371,723 bp (3.2%)
Total written (filtered): 0 bp (0.0%)
=== Adapter 2 ===
Sequence: GAGGAAGTAAAAGTCRTAACAAGGT...ATCGATGAAGAACGCAGCGAA; Type: linked; Length: 25+21; 5' trimmed: 0 times; 3' trimmed: 0 times
cmd2
Traceback (most recent call last):
File "/home/USER/miniconda3/bin/cutadapt", line 12, in <module>
sys.exit(main())
File "/home/USER/miniconda3/lib/python3.7/site-packages/cutadapt/__main__.py", line 741, in main
pipeline = pipeline_from_parsed_args(options, paired, pair_filter_mode, quality_filename, is_interleaved_output)
File "/home/USER/miniconda3/lib/python3.7/site-packages/cutadapt/__main__.py", line 614, in pipeline_from_parsed_args
adapters = adapter_parser.parse_multi(options.adapters, options.anywhere, options.front)
File "/home/USER/miniconda3/lib/python3.7/site-packages/cutadapt/adapters.py", line 335, in parse_multi
adapters.extend(self.parse(spec, cmdline_type))
File "/home/USER/miniconda3/lib/python3.7/site-packages/cutadapt/adapters.py", line 322, in parse
yield self._parse(spec, cmdline_type, name=None)
File "/home/USER/miniconda3/lib/python3.7/site-packages/cutadapt/adapters.py", line 237, in _parse
name1, front1, sequence1, back1, parameters1 = self._parse_not_linked(spec1, 'front')
File "/home/USER/miniconda3/lib/python3.7/site-packages/cutadapt/adapters.py", line 170, in _parse_not_linked
parameters = AdapterParser._parse_parameters(parameters_spec)
File "/home/USER/miniconda3/lib/python3.7/site-packages/cutadapt/adapters.py", line 132, in _parse_parameters
raise KeyError('Unknown parameter {}'.format(key))
KeyError: 'Unknown parameter required'
cmd3
This is cutadapt 1.18 with Python 3.7.1
Command line parameters: -a GAGGAAGTAAAAGTCRTAACAAGGT...ATCGATGAAGAACGCAGCGAA --discard-untrimmed -q 20 -m 200 -o SAMPLE_NAME_401.IonXpress_0401.trim.fq IonXpress_0401_rawlib.basecaller.fq
Processing reads on 1 core in single-end mode ...
Finished in 0.50 s (11 us/read; 5.27 M reads/minute).
=== Summary ===
Total reads processed: 44,086
Reads with adapters: 0 (0.0%)
Reads that were too short: 7,268 (16.5%)
Reads written (passing filters): 0 (0.0%)
Total basepairs processed: 11,458,046 bp
Quality-trimmed: 371,723 bp (3.2%)
Total written (filtered): 0 bp (0.0%)
=== Adapter 2 ===
Sequence: GAGGAAGTAAAAGTCRTAACAAGGT...ATCGATGAAGAACGCAGCGAA; Type: linked; Length: 25+21; 5' trimmed: 0 times; 3' trimmed: 0 times
cmd4
Traceback (most recent call last):
File "/home/USER/miniconda3/bin/cutadapt", line 12, in <module>
sys.exit(main())
File "/home/USER/miniconda3/lib/python3.7/site-packages/cutadapt/__main__.py", line 741, in main
pipeline = pipeline_from_parsed_args(options, paired, pair_filter_mode, quality_filename, is_interleaved_output)
File "/home/USER/miniconda3/lib/python3.7/site-packages/cutadapt/__main__.py", line 614, in pipeline_from_parsed_args
adapters = adapter_parser.parse_multi(options.adapters, options.anywhere, options.front)
File "/home/USER/miniconda3/lib/python3.7/site-packages/cutadapt/adapters.py", line 335, in parse_multi
adapters.extend(self.parse(spec, cmdline_type))
File "/home/USER/miniconda3/lib/python3.7/site-packages/cutadapt/adapters.py", line 322, in parse
yield self._parse(spec, cmdline_type, name=None)
File "/home/USER/miniconda3/lib/python3.7/site-packages/cutadapt/adapters.py", line 237, in _parse
name1, front1, sequence1, back1, parameters1 = self._parse_not_linked(spec1, 'front')
File "/home/USER/miniconda3/lib/python3.7/site-packages/cutadapt/adapters.py", line 170, in _parse_not_linked
parameters = AdapterParser._parse_parameters(parameters_spec)
File "/home/USER/miniconda3/lib/python3.7/site-packages/cutadapt/adapters.py", line 132, in _parse_parameters
raise KeyError('Unknown parameter {}'.format(key))
KeyError: 'Unknown parameter required'
cmd5
Traceback (most recent call last):
File "/home/USER/miniconda3/bin/cutadapt", line 12, in <module>
sys.exit(main())
File "/home/USER/miniconda3/lib/python3.7/site-packages/cutadapt/__main__.py", line 741, in main
pipeline = pipeline_from_parsed_args(options, paired, pair_filter_mode, quality_filename, is_interleaved_output)
File "/home/USER/miniconda3/lib/python3.7/site-packages/cutadapt/__main__.py", line 614, in pipeline_from_parsed_args
adapters = adapter_parser.parse_multi(options.adapters, options.anywhere, options.front)
File "/home/USER/miniconda3/lib/python3.7/site-packages/cutadapt/adapters.py", line 335, in parse_multi
adapters.extend(self.parse(spec, cmdline_type))
File "/home/USER/miniconda3/lib/python3.7/site-packages/cutadapt/adapters.py", line 322, in parse
yield self._parse(spec, cmdline_type, name=None)
File "/home/USER/miniconda3/lib/python3.7/site-packages/cutadapt/adapters.py", line 237, in _parse
name1, front1, sequence1, back1, parameters1 = self._parse_not_linked(spec1, 'front')
File "/home/USER/miniconda3/lib/python3.7/site-packages/cutadapt/adapters.py", line 170, in _parse_not_linked
parameters = AdapterParser._parse_parameters(parameters_spec)
File "/home/USER/miniconda3/lib/python3.7/site-packages/cutadapt/adapters.py", line 132, in _parse_parameters
raise KeyError('Unknown parameter {}'.format(key))
KeyError: 'Unknown parameter required'
根据我想要如何处理数据,我确实需要告诉 cutadapt 需要适配器。
最佳答案
我无法使用 conda(来自 bioconda channel 的 cutadapt-2.5 软件包)安装的最新 cutadapt 版本(带有 Python 3.7.3 的 cutadapt 2.5)重现您的问题。所有 5 个命令均成功,给出了预期的输出(修剪 1 或 2 个读取,将 1 或 2 个读取写入输出)。我使用 bash 和 zsh shell 以及 perl v5.18.2 没有出现问题。 根据您的输出,您使用的是较旧的 cutadapt 版本(cutadapt 1.18 和 Python 3.7.1)。
尝试使用 conda 安装最新的 cutadapt 版本,请参阅下面的说明。这是导致您的问题最有可能的原因。
使用 conda 安装 cutadapt(假设 conda 已安装并且 bioconda 包含在 channel 中):
conda update conda
conda search cutadapt
conda create --name cutadapt cutadapt
# Enable conda cutadapt environment:
source activate cutadapt
# ... run cutadapt ...
# At the end, exit the conda cutadapt environment:
source deactivate
从 Perl 脚本运行 cutadapt:
cat > IonXpress_0401_rawlib.basecaller.fq <<EOF
@HWI-EAS209_0006_FC706VJ:5:58:5894:21141#ATCACG/1
GAGGAAGTAAAAGTCATAACAAGGTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTATCGATGAAGAACGCAGCGAA
+
EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
@HWI-EAS209_0006_FC706VJ:5:58:5895:21142#ATCACG/1
CCCCCCCCCCCCCCCCCCCCCCCCTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTATCGATGAAGAACGCAGCGAA
+
EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
EOF
编辑问题中显示的脚本:
删除硬编码的 cutadapt 路径(使用 conda env 不需要)。
将 -m 200 更改为 -m 2 以查看修剪中的差异 非常短的阅读示例。
将输出(修剪后的)文件内容打印到 STDOUT 中。
./cutadapt.pl &> cutadapt.log
./cutadapt.pl:
#!/usr/bin/env perl
# string without ;
my $cutadapt_cmd1 = 'cutadapt -a "GAGGAAGTAAAAGTCRTAACAAGGT...ATCGATGAAGAACGCAGCGAA" --discard-untrimmed -q 20 -m 2 -o SAMPLE_NAME_401.IonXpress_0401.trim.fq IonXpress_0401_rawlib.basecaller.fq';
# string with ;
my $cutadapt_cmd2 = 'cutadapt -a "GAGGAAGTAAAAGTCRTAACAAGGT;required...ATCGATGAAGAACGCAGCGAA" --discard-untrimmed -q 20 -m 2 -o SAMPLE_NAME_401.IonXpress_0401.trim.fq IonXpress_0401_rawlib.basecaller.fq';
# array without ;
my @cutadapt_cmd3 = ('cutadapt', '-a', 'GAGGAAGTAAAAGTCRTAACAAGGT...ATCGATGAAGAACGCAGCGAA', '--discard-untrimmed' ,'-q' ,'20', '-m', '2', '-o' ,'SAMPLE_NAME_401.IonXpress_0401.trim.fq', 'IonXpress_0401_rawlib.basecaller.fq');
# array with ;
my @cutadapt_cmd4 = ('cutadapt', '-a', 'GAGGAAGTAAAAGTCRTAACAAGGT;required...ATCGATGAAGAACGCAGCGAA', '--discard-untrimmed' ,'-q' ,'20', '-m', '2', '-o' ,'SAMPLE_NAME_401.IonXpress_0401.trim.fq', 'IonXpress_0401_rawlib.basecaller.fq');
# array with ; and with integers
my @cutadapt_cmd5 = ('cutadapt', '-a', 'GAGGAAGTAAAAGTCRTAACAAGGT;required...ATCGATGAAGAACGCAGCGAA', '--discard-untrimmed' ,'-q' ,20, '-m', 2, '-o' ,'SAMPLE_NAME_401.IonXpress_0401.trim.fq', 'IonXpress_0401_rawlib.basecaller.fq');
# Works
print("\n\ncmd1\n\n");
system $cutadapt_cmd1;
system "cat SAMPLE_NAME_401.IonXpress_0401.trim.fq";
# Fails
print("\n\ncmd2\n\n");
system $cutadapt_cmd2;
system "cat SAMPLE_NAME_401.IonXpress_0401.trim.fq";
# Works
print("\n\ncmd3\n\n");
system @cutadapt_cmd3;
system "cat SAMPLE_NAME_401.IonXpress_0401.trim.fq";
# Fails
print("\n\ncmd4\n\n");
system @cutadapt_cmd4;
system "cat SAMPLE_NAME_401.IonXpress_0401.trim.fq";
# Fails
print("\n\ncmd5\n\n");
system @cutadapt_cmd5;
system "cat SAMPLE_NAME_401.IonXpress_0401.trim.fq";
cutadapt.log:
cmd1
This is cutadapt 2.5 with Python 3.7.3
Command line parameters: -a GAGGAAGTAAAAGTCRTAACAAGGT...ATCGATGAAGAACGCAGCGAA --discard-untrimmed -q 20 -m 2 -o SAMPLE_NAME_401.IonXpress_0401.trim.fq IonXpress_0401_rawlib.basecaller.fq
WARNING: You specified a linked adapter as '-a ADAPTER1...ADAPTER2'. The
interpretation of what this means has changed in Cutadapt 2.0. (The 5'
adapter is now no longer anchored by default.) To get results consist
with the old behavior, you need to anchor the 5' adapter explicitly as
in '-a ^ADAPTER1...ADAPTER2'.
Processing reads on 1 core in single-end mode ...
Finished in 0.00 s (1803 us/read; 0.03 M reads/minute).
=== Summary ===
Total reads processed: 2
Reads with adapters: 2 (100.0%)
Reads that were too short: 0 (0.0%)
Reads written (passing filters): 2 (100.0%)
Total basepairs processed: 152 bp
Quality-trimmed: 0 bp (0.0%)
Total written (filtered): 85 bp (55.9%)
=== Adapter 1 ===
Sequence: GAGGAAGTAAAAGTCRTAACAAGGT...ATCGATGAAGAACGCAGCGAA; Type: linked; Length: 25+21; 5' trimmed: 1 times; 3' trimmed: 2 times
No. of allowed errors:
0-9 bp: 0; 10-19 bp: 1; 20-25 bp: 2
No. of allowed errors:
0-9 bp: 0; 10-19 bp: 1; 20-21 bp: 2
Overview of removed sequences at 5' end
length count expect max.err error counts
25 1 0.0 2 1
Overview of removed sequences at 3' end
length count expect max.err error counts
21 2 0.0 2 2
@HWI-EAS209_0006_FC706VJ:5:58:5894:21141#ATCACG/1
TTTTTTTTTTTTTTTTTTTTTTTTTTTTTT
+
EEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
@HWI-EAS209_0006_FC706VJ:5:58:5895:21142#ATCACG/1
CCCCCCCCCCCCCCCCCCCCCCCCTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT
+
EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
cmd2
This is cutadapt 2.5 with Python 3.7.3
Command line parameters: -a GAGGAAGTAAAAGTCRTAACAAGGT;required...ATCGATGAAGAACGCAGCGAA --discard-untrimmed -q 20 -m 2 -o SAMPLE_NAME_401.IonXpress_0401.trim.fq IonXpress_0401_rawlib.basecaller.fq
WARNING: You specified a linked adapter as '-a ADAPTER1...ADAPTER2'. The
interpretation of what this means has changed in Cutadapt 2.0. (The 5'
adapter is now no longer anchored by default.) To get results consist
with the old behavior, you need to anchor the 5' adapter explicitly as
in '-a ^ADAPTER1...ADAPTER2'.
Processing reads on 1 core in single-end mode ...
Finished in 0.00 s (1747 us/read; 0.03 M reads/minute).
=== Summary ===
Total reads processed: 2
Reads with adapters: 1 (50.0%)
Reads that were too short: 0 (0.0%)
Reads written (passing filters): 1 (50.0%)
Total basepairs processed: 152 bp
Quality-trimmed: 0 bp (0.0%)
Total written (filtered): 30 bp (19.7%)
=== Adapter 1 ===
Sequence: GAGGAAGTAAAAGTCRTAACAAGGT...ATCGATGAAGAACGCAGCGAA; Type: linked; Length: 25+21; 5' trimmed: 1 times; 3' trimmed: 1 times
No. of allowed errors:
0-9 bp: 0; 10-19 bp: 1; 20-25 bp: 2
No. of allowed errors:
0-9 bp: 0; 10-19 bp: 1; 20-21 bp: 2
Overview of removed sequences at 5' end
length count expect max.err error counts
25 1 0.0 2 1
Overview of removed sequences at 3' end
length count expect max.err error counts
21 1 0.0 2 1
@HWI-EAS209_0006_FC706VJ:5:58:5894:21141#ATCACG/1
TTTTTTTTTTTTTTTTTTTTTTTTTTTTTT
+
EEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
cmd3
This is cutadapt 2.5 with Python 3.7.3
Command line parameters: -a GAGGAAGTAAAAGTCRTAACAAGGT...ATCGATGAAGAACGCAGCGAA --discard-untrimmed -q 20 -m 2 -o SAMPLE_NAME_401.IonXpress_0401.trim.fq IonXpress_0401_rawlib.basecaller.fq
WARNING: You specified a linked adapter as '-a ADAPTER1...ADAPTER2'. The
interpretation of what this means has changed in Cutadapt 2.0. (The 5'
adapter is now no longer anchored by default.) To get results consist
with the old behavior, you need to anchor the 5' adapter explicitly as
in '-a ^ADAPTER1...ADAPTER2'.
Processing reads on 1 core in single-end mode ...
Finished in 0.00 s (1845 us/read; 0.03 M reads/minute).
=== Summary ===
Total reads processed: 2
Reads with adapters: 2 (100.0%)
Reads that were too short: 0 (0.0%)
Reads written (passing filters): 2 (100.0%)
Total basepairs processed: 152 bp
Quality-trimmed: 0 bp (0.0%)
Total written (filtered): 85 bp (55.9%)
=== Adapter 1 ===
Sequence: GAGGAAGTAAAAGTCRTAACAAGGT...ATCGATGAAGAACGCAGCGAA; Type: linked; Length: 25+21; 5' trimmed: 1 times; 3' trimmed: 2 times
No. of allowed errors:
0-9 bp: 0; 10-19 bp: 1; 20-25 bp: 2
No. of allowed errors:
0-9 bp: 0; 10-19 bp: 1; 20-21 bp: 2
Overview of removed sequences at 5' end
length count expect max.err error counts
25 1 0.0 2 1
Overview of removed sequences at 3' end
length count expect max.err error counts
21 2 0.0 2 2
@HWI-EAS209_0006_FC706VJ:5:58:5894:21141#ATCACG/1
TTTTTTTTTTTTTTTTTTTTTTTTTTTTTT
+
EEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
@HWI-EAS209_0006_FC706VJ:5:58:5895:21142#ATCACG/1
CCCCCCCCCCCCCCCCCCCCCCCCTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT
+
EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
cmd4
This is cutadapt 2.5 with Python 3.7.3
Command line parameters: -a GAGGAAGTAAAAGTCRTAACAAGGT;required...ATCGATGAAGAACGCAGCGAA --discard-untrimmed -q 20 -m 2 -o SAMPLE_NAME_401.IonXpress_0401.trim.fq IonXpress_0401_rawlib.basecaller.fq
WARNING: You specified a linked adapter as '-a ADAPTER1...ADAPTER2'. The
interpretation of what this means has changed in Cutadapt 2.0. (The 5'
adapter is now no longer anchored by default.) To get results consist
with the old behavior, you need to anchor the 5' adapter explicitly as
in '-a ^ADAPTER1...ADAPTER2'.
Processing reads on 1 core in single-end mode ...
Finished in 0.00 s (1732 us/read; 0.03 M reads/minute).
=== Summary ===
Total reads processed: 2
Reads with adapters: 1 (50.0%)
Reads that were too short: 0 (0.0%)
Reads written (passing filters): 1 (50.0%)
Total basepairs processed: 152 bp
Quality-trimmed: 0 bp (0.0%)
Total written (filtered): 30 bp (19.7%)
=== Adapter 1 ===
Sequence: GAGGAAGTAAAAGTCRTAACAAGGT...ATCGATGAAGAACGCAGCGAA; Type: linked; Length: 25+21; 5' trimmed: 1 times; 3' trimmed: 1 times
No. of allowed errors:
0-9 bp: 0; 10-19 bp: 1; 20-25 bp: 2
No. of allowed errors:
0-9 bp: 0; 10-19 bp: 1; 20-21 bp: 2
Overview of removed sequences at 5' end
length count expect max.err error counts
25 1 0.0 2 1
Overview of removed sequences at 3' end
length count expect max.err error counts
21 1 0.0 2 1
@HWI-EAS209_0006_FC706VJ:5:58:5894:21141#ATCACG/1
TTTTTTTTTTTTTTTTTTTTTTTTTTTTTT
+
EEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
cmd5
This is cutadapt 2.5 with Python 3.7.3
Command line parameters: -a GAGGAAGTAAAAGTCRTAACAAGGT;required...ATCGATGAAGAACGCAGCGAA --discard-untrimmed -q 20 -m 2 -o SAMPLE_NAME_401.IonXpress_0401.trim.fq IonXpress_0401_rawlib.basecaller.fq
WARNING: You specified a linked adapter as '-a ADAPTER1...ADAPTER2'. The
interpretation of what this means has changed in Cutadapt 2.0. (The 5'
adapter is now no longer anchored by default.) To get results consist
with the old behavior, you need to anchor the 5' adapter explicitly as
in '-a ^ADAPTER1...ADAPTER2'.
Processing reads on 1 core in single-end mode ...
Finished in 0.00 s (1796 us/read; 0.03 M reads/minute).
=== Summary ===
Total reads processed: 2
Reads with adapters: 1 (50.0%)
Reads that were too short: 0 (0.0%)
Reads written (passing filters): 1 (50.0%)
Total basepairs processed: 152 bp
Quality-trimmed: 0 bp (0.0%)
Total written (filtered): 30 bp (19.7%)
=== Adapter 1 ===
Sequence: GAGGAAGTAAAAGTCRTAACAAGGT...ATCGATGAAGAACGCAGCGAA; Type: linked; Length: 25+21; 5' trimmed: 1 times; 3' trimmed: 1 times
No. of allowed errors:
0-9 bp: 0; 10-19 bp: 1; 20-25 bp: 2
No. of allowed errors:
0-9 bp: 0; 10-19 bp: 1; 20-21 bp: 2
Overview of removed sequences at 5' end
length count expect max.err error counts
25 1 0.0 2 1
Overview of removed sequences at 3' end
length count expect max.err error counts
21 1 0.0 2 1
@HWI-EAS209_0006_FC706VJ:5:58:5894:21141#ATCACG/1
TTTTTTTTTTTTTTTTTTTTTTTTTTTTTT
+
EEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
关于perl - 如何使用包含元字符的参数使用 Perl(系统)执行外部程序“,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58324322/