아래에 언급된 형식의 파일이 있습니다. TAG, TAA 또는 TGA(TAG/TAA/TGA)와 일치하는 정지 코돈을 삭제해야 합니다. 검색은 3의 배수로 이루어져야 합니다. (세 글자마다 검색해야 하고 정지 코돈이 발견되면 폐기해야 하는 것처럼 테게 ccc 삼염화초산 아가). 성공하지 못한 채 정지코돈을 제거하기 위해 다양한 형태를 찾아보았습니다. 시간 내 주셔서 감사합니다. 감사해요
Enter.fa
3 1896
FOMPING00005383 atgccctcaagacagccggggatgcctccgctggcgcctgggcttcaattcagcccaaaggccagccacggtcagcccacgtcggaagcccatcttccagccattgggtccgccgccgtcgacgtctattcatttgtcacagaagatgcaatcgcgctggggccggcaagctccgtctcacccgaaaatattgtcatgacacaacctaccactatacatcatgactctgtgaaaggcgagaagtttaccgttgagcgagacagcgtcgacgcgctctccttcagctcgaaccagagcgttccccggcc------taagttacccttaccttggcaagtattgatagcggccttgacctgtttgtgtactttcggcaaccactggtcgaat---------------------accaccatcattaaagagacgcatatcaacaactcccaattcgccaccttg------------------
답변1
#!/usr/bin/env perl
use strict;
use warnings;
while ( my $line = <> ) {
chomp($line);
if ($line =~ /\d+\s+\d+/) {
printf("%s\n", $line);
next;
}
my ( $head, $seq ) = split( /\s+/, $line );
my $newseq;
while ( $seq =~ /(...)/g ) {
if ( $1 !~ /tag|taa|tga/ ) {
$newseq .= $1;
}
}
printf("%s %s\n", $head, $newseq);
}
실행하세요:
$ ./script input.fa >output.fa
가정 및 제한 사항:
- 파일은 아래 설명된 대로 "순차 형식"입니다.http://evolution.Genetics.washington.edu/phylip/doc/sequence.html
- 순서에 공백이 없습니다.
- 전체 서열 길이는 3의 배수입니다(그렇지 않으면 마지막 불완전 코돈이 출력에서 제외됩니다).
- 시퀀스는 여러 줄로 분할되지 않습니다.
작동 모드:
- 한 줄을 읽으십시오.
- 두 개의 정수가 포함되어 있으면 "헤더 행"이라고 가정하고 출력합니다.
- 공백 문자의 줄을
$head
(줄의 첫 번째 비트)와$seq
(순서)로 나눕니다. - 한 번에 세 개의 염기 시퀀스를 탐색합니다.
- 현재 세 개의 염기가 정지 코돈과 일치하면 새로운 서열( )에 삽입되지 않고
$newseq
, 그렇지 않으면 삽입됩니다. - 라인의 헤더 비트와 새로운 시퀀스를 출력합니다.
- 다음 줄이 있으면 계속 진행하세요.
발견된 정지 코돈을 시각적으로 표시하려면 루프를 다음으로 변경하십시오.
while ( $seq =~ /(...)/g ) {
if ( $1 !~ /tag|taa|tga/ ) {
$newseq .= $1;
}
else {
$newseq .= "<STP>";
}
}