fetch-sequences
약 30000줄이 포함된 .bed 파일이 있고 rsat 도구의 모듈(http://rsat.ulb.ac.be/rsat/help.fetch-sequences.html#usage). [참고: 이 도구는 시퀀스를 검색하기 위해 매번 서버에 연결됩니다.]
이제 무작위로 정렬된 약 10000개의 동일한 침대 파일의 하위 집합이 있으며 해당 시퀀스를 검색하려고 합니다. 이 fetch-sequences
모듈을 사용하면 이 목표를 달성하는 데 10시간이 걸립니다. 하지만 먼저 원본 파일의 시퀀스를 검색하여 이 작업을 빠르게 수행하고 싶습니다. 이 로컬 파일을 사용하여 시퀀스의 하위 집합을 검색하고 싶습니다.
Linux 명령이나 Perl을 사용하여 이를 수행할 수 있는 방법이 있습니까? 로컬에 설치된 파일로 이 작업을 수행하는 방법을 잘 모르겠습니다. 도와주세요.
내 샘플 침대 파일은 다음과 같습니다.
chr10 91061477 91062132 peak4069 41 . 134.220 -1 -1
chr12 77456450 77457116 peak7216 97 . 313.820 -1 -1
chr7 150754939 150755706 peak30140 87 . 281.000 -1 -1
chr3 11643031 11643625 peak20536 135 . 435.740 -1 -1
chr19 6521662 6522869 peak14719 264 . 851.950 -1 -1
chr14 35008667 35009076 peak9034 40 . 131.480 -1 -1
chr6 88851148 88852148 peak27572 55 . 178.560 -1 -1
chr6 20212045 20212627 peak26579 44 . 144.630 -1 -1
chr2 136422022 136422722 peak17485 83 . 270.330 -1 -1
chr11 45951365 45952105 peak4995 284 . 915.840 -1 -1
chr19 50181053 50181876 peak15733 101 . 328.650 -1 -1
chr9 36140202 36140695 peak32014 42 . 137.080 -1 -1
chr4 40992483 40993431 peak23120 40 . 129.060 -1 -1
chr14 50528290 50529818 peak9133 256 . 826.310 -1 -1
chr18 57542948 57543911 peak14298 244 . 789.750 -1 -1
chr21 44528945 44529572 peak19741 45 . 148.260 -1 -1
chr6 16763102 16763743 peak26552 84 . 272.680 -1 -1
chr1 44678710 44679433 peak803 97 . 312.860 -1 -1
chr12 11323475 11324633 peak6358 123 . 396.790 -1 -1
chr9 98271450 98271859 peak32325 37 . 120.160 -1 -1
chr19 2167913 2169475 peak14575 455 . 1470.150 -1 -1
chr16 80613819 80615001 peak12054 261 . 843.100 -1 -1
chr12 118574314 118574830 peak7774 43 . 141.040 -1 -1
chr19 59083917 59085058 peak15917 129 . 418.440 -1 -1
chr2 191184311 191184984 peak17942 103 . 332.220 -1 -1
chr15 85956548 85957254 peak10816 179 . 578.110 -1 -1
chr4 84031272 84032016 peak23411 60 . 195.570 -1 -1
chr12 32012425 32013045 peak6654 45 . 148.210 -1 -1
chr6 70575973 70577060 peak27441 52 . 168.800 -1 -1
chr12 57852728 57853291 peak7023 59 . 192.900 -1 -1
chr10 120879718 120880402 peak4449 209 . 675.760 -1 -1
chr1 28833424 28834023 peak526 35 . 114.020 -1 -1
chr8 60963955 60965013 peak30803 329 . 1062.570 -1 -1
chr7 77326420 77326889 peak29382 32 . 103.320 -1 -1
chr5 133476115 133476527 peak25468 37 . 121.150 -1 -1
chr19 45909117 45910074 peak15572 69 . 222.490 -1 -1
chr5 16467271 16468036 peak24373 117 . 380.290 -1 -1
chr15 66682042 66683502 peak10489 182 . 589.480 -1 -1
chr9 35603806 35604394 peak31993 71 . 229.000 -1 -1
chr4 48249067 48249653 peak23178 50 . 162.070 -1 -1
chr3 112775853 112776466 peak21577 62 . 202.250 -1 -1
chr12 12867020 12867982 peak6428 33 . 106.930 -1 -1
chr6 35655359 35655985 peak27066 53 . 171.010 -1 -1
chr6 74171305 74172116 peak27466 161 . 521.390 -1 -1
chr11 12195905 12196539 peak4741 256 . 826.330 -1 -1
chr2 55386393 55386871 peak16583 40 . 131.810 -1 -1
chr9 37030245 37030957 peak32041 89 . 290.090 -1 -1
chr4 30431566 30431997 peak22948 66 . 214.250 -1 -1
chr10 16612633 16613149 peak3304 49 . 160.900 -1 -1
다음은 제가 얻은 fasta 시퀀스의 예입니다(위 예제 파일의 처음 3줄에 대해).
>hg19_chr10_91061478_91062132_+ range=chr10:91061478-91062132 5'pad=0 3'pad=0 strand=+ repeatMasking=none
AATTGTATTACAAGTCCCCAACTTAATCTTTTCGAATATGAAATAAGAGAGGGACAGTGCACAAGAGCAATGTCCCCAGACCCATCTTTAAGTGAAGCACCAGGCCGATGAAACATCCCTCTCTGCTGCCTTCTTTCTCTGATCACAACTCAGCTCCGGAGGAAAAAGAGTCCTCTAAAGTATAATAAAAAGAAAAAAAGAAAAAGAGTCCTGCCAATTTCACTTTCTAGTTTCACTTTCCCTTTTGTAACGTCAGCTGAAGGGAAACAAACAAAAAGGAACCAGAGGCCACTTGTATATATAGGTCTCTTCAGCATTTATTGGTGGCAGAAGAGGAAGATTTCTGAAGAGTGCAGCTGCCTGAACCGAGCCCTGCCGAACAGCTGAGAATTGCACTGCAACCATGAGGTAAATATTTTCCCTTCGTATTCGGTAGTGCTGTTGAGTCATCTTGTCCAATGCAAATCCTGAGAAGCTATGTTCCCAAAGAGGGCCAGCTCCATTTTAGTGTTTGTTTATAGCCTTACTATGCCTCTACCTCTGTTGGTTGTAAATCTGTCTTACCAATGGTGGTTTGTTCCCTCCTGAACAATTTTCTGCTTCACACTGGCAAGCTTCCTAAATTCATCTCCAGAACTGCACGCCTGGGGAGTTG
>hg19_chr12_77456451_77457116_+ range=chr12:77456451-77457116 5'pad=0 3'pad=0 strand=+ repeatMasking=none
GTCTTTGTTGAAGGTACTTGATAAAAGTCATTGACCCAGAGGAAGAGAAGTAAAGCACTGACTTAGACGTTATATAAATGTATGGATGTGTATTTTTTCAAGGCTGAACCATCCAAATTGGAAAGGAAAACAAAGTTTTGCTCTAAAACTCTCAAAGCCAAAACTCTGAATATATACTTTAAGTCTGGGCATTTCCACCCTCATGACTTAGATAATTAAAAAAAAAAAAAAAAGGCCACTTTAAATAATCTTCACTTTATCTGTGGTTTCACTTTCAGTGGCCAACTGCGGTCCAAAAATATCACATGGAAAATTCCAGAAATAAACAATTCATGAGTTTTAGATTGTGTGCAGTTCTGTGTAATGAAATCTCACGTCATCCTGCTCCGTCCTGCTTCGGATGTGACTCACCCCTTTGTCCAGCGTATTTGCACGGTAGATACTACCTGCTCGAGCAGCCACTGTGTTTTCAGGCTGGCTGTCACGGTATTGCAGTGCTCATGTTCGAGTAACTCTTATTTGACTTCATAATGGCTCCAAAGCACAAGAGTAGTGATGCTGGCAATTTGGATATGCCAAAGGGAAGCCATAAAGTGCTTCTTTTAAGTGAAAAGGTGAACGTTCTTGACTTAAGGAAAGAAAATCGTACGCCAAGGTTGCTAAGAT
>hg19_chr7_150754940_150755706_+ range=chr7:150754940-150755706 5'pad=0 3'pad=0 strand=+ repeatMasking=none
GCGGCCGCGGGGACCCCTGCGGGCCCTCGGTTTTAAGACTCTGGCCCCGGCGTTGCAGAGGAGGCGGCACCTGAGCCTCCAGCCCCGCCCCGTCTGCCCGCGCAGGGCCTTCTGGGGCTTGTAGTCCTAAAACGACTAGGTCTCCCCGCAATGCCCGAGACCGAGGACAAGAAGACTACAACCCCCAGCCGTCTGCGCTCACGCTCTCTGCAGCACTCGACTCCAGGGCTCCGTTTCTACCGCGGAGGCAAACCTTGGACTTCAAGTCCCAGGAAGCAACGCGTGTCCGTTTTCCGGGCGCCCCGCCGCGGCGCCGTGGTTCCCAGTGTGCCCCGCTGTTGTTATTCCTTTTATGTGCTCCCAGCCCTCTTGAAAAGGGCCGCTCCGGGACTACGCGTTCCAGAATGCAGCGGAAATGGGGGCGGAGCGCTCTCGGTTAGGGGTTTGGGGTTTGGCGGCCTAGATCCCGGGCACTGGCGGCCCAGCGCTGACCTGGTTGGTGGCATTGTGTTCCCAACGGCCTCTTGACGACCTCAGCACGGGTTTCCACCTCTCCCCAAGCCACCTAGTGACCCCAGAATTGACTGGGGAATGCCTGTGAGCGATGATGACCTCACAGGGAACAGCTGACCGCAGGGCTGGGAGAACAGCTGTGCCCCTTCGAGGCTGGATTTTAGTGGAGGGACACACGCCAAAGACCCCCTCTCTGCTGAGCCCCGTTTGTTGTCTCGGAGCCCACCCGACTCTAGCCGCTGAACTCTGACATG
답변1
이렇게 하면 필요한 작업이 수행됩니다.
for i in $(awk '{print $1"_"$2+1"_"$3}' foo.bed); do grep -A 1 $i seqs.fa ; done
설명하다
awk '{print $1"_"$2+1"_"$3}' foo.bed
: .bed 파일의 각 줄에 대한 시작 및 끝 좌표와 함께 염색체를 인쇄합니다.$2+1
파일의 좌표가 서로 다르기 때문에 주의하세요.bed
. 예를 들어 파일의 처음 세 줄은 다음과 같습니다.$ awk '{print $1"_"$2+1"_"$3}' foo.bed chr10_91061478_91062132 chr12_77456451_77457116 chr7_150754940_150755706
for i in $(command); do ...; done
command
: 이는 as가 반환한 각 값을 저장$i
한 다음 이를 사용하여 작업을 수행합니다.grep -A 1 $i seqs.fa
: 이것은 "것"입니다.awk
명령의 각 결과를 파악 하고 일치하는 줄과 다음 줄(-A 1
)을 인쇄합니다.
이 작업을 다시 수행해야 하는 경우 RSAT를 사용하지 마세요! 1 이 작업을 수행하는 더 쉬운 방법이 있습니다. 대신, 각 염색체에 대한 FASTA 시퀀스를 다운로드한 다음 패키지의 도구를 사용하십시오 exonerate
(Debian을 통해 Debian 기반 시스템에 설치 가능 sudo apt-get install exonerate
). 프로세스(각 염색체에 대해 이름이 지정된 FASTA 파일이 있다고 가정 chrN.fa
):
awk '{print $1,$2,($3-$2)}' foo.bed | while read chr start length; do
fastasubseq /path/to/$chr.fa $start $length >> subseqs.fa
done
위의 명령은 관심 있는 하위 서열을 추출하며(좌표가 항상 양극 가닥에 상대적이라고 가정) 몇 초 밖에 걸리지 않습니다.
1 오해하지 마십시오. RSAT 제품군은 훌륭한 도구이며 몇 년 동안 함께 작업한 저자들에 대해 많은 존경심을 갖고 있지만 이러한 종류의 대규모 작업에 반드시 최고의 도구는 아닙니다. .