好了,所以我有一堆具有以下兩個格式中的一個文件名的:呼叫
採樣ID_Adapter-Sequence_L001_R1_001.fastq(如正向)
採樣ID_Adapter- Sequence_L001_R2_001.fastq(作爲反向)
正向和反向格式之間的唯一區別是文件名中的R1和R2元素。現在,我已經成功地使用戶能夠提供包含與下面的腳本,這些文件的目錄:
#!/usr/bin/perl
use strict;
use warnings;
#Print Directory
print "Please provide the directory containing the FASTQ files from your Illumina MiSeq run \n";
my $FASTQ = <STDIN>;
chomp ($FASTQ);
#Open Directory
my $dir = $FASTQ;
opendir(DIR, $dir) or die "Cannot open $dir: $!";
my @forwardreads = grep { /R1_001.fastq/ } readdir DIR;
closedir DIR;
my $direct = $FASTQ;
opendir(DIR, $direct) or die "Cannot open $dir: $!";
my @reversereads = grep { /R2_001.fastq/ } readdir DIR;
closedir DIR;
foreach my $ffile (@forwardreads) {
my $forward = $ffile;
print $forward;
}
foreach my $rfile (@reversereads) {
my $reverse = $rfile;
print $reverse;
}
的問題
我想用上面的腳本做的是找到一種方法,將兩個數組的元素進行配對,這些元素來自相同的Sample ID。就像我說的,正向文件和反向文件(來自同一個樣本ID)之間的唯一區別是文件名的R1和R2部分。
我試過查找方法從數組中提取元素,但我想讓程序做匹配而不是我。
感謝您的閱讀,我希望你們能幫忙!
您能否以純文本形式提供您的代碼?只需剪切並粘貼到您的文章中,突出顯示它,然後單擊「代碼示例」按鈕。如果您無法獲得格式化權限,則有人會解決此問題。 – Schwern
謝謝!有代碼都準備好了! – Postan92
如果你想要做的只是找到對,你不需要在perl腳本中完成。只需將輸出傳遞給像這樣的幾個額外的unix命令(假設在文件名的R1/2部分之前有3個下劃線):'your_script.pl | cut -d'_'-f 1,2,3 |排序| uniq -c | sort -n'。你所有的配對都會在最後。如果你想要的話,你也可以把它們寫出來並剪掉前面的空格/數字。你也可以在perl中做到這一點。它效率不高,但它很簡單,幾乎總是綽綽有餘。 – hepcat72