로컬 설치 파일의 bed 파일 정보를 사용하여 fasta 시퀀스 검색

로컬 설치 파일의 bed 파일 정보를 사용하여 fasta 시퀀스 검색

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 ...; donecommand: 이는 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 제품군은 훌륭한 도구이며 몇 년 동안 함께 작업한 저자들에 대해 많은 존경심을 갖고 있지만 이러한 종류의 대규모 작업에 반드시 최고의 도구는 아닙니다. .

관련 정보