태그/TAA/TGA 삭제

태그/TAA/TGA 삭제

아래에 언급된 형식의 파일이 있습니다. 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

가정 및 제한 사항:

  1. 파일은 아래 설명된 대로 "순차 형식"입니다.http://evolution.Genetics.washington.edu/phylip/doc/sequence.html
  2. 순서에 공백이 없습니다.
  3. 전체 서열 길이는 3의 배수입니다(그렇지 않으면 마지막 불완전 코돈이 출력에서 ​​제외됩니다).
  4. 시퀀스는 여러 줄로 분할되지 않습니다.

작동 모드:

  1. 한 줄을 읽으십시오.
  2. 두 개의 정수가 포함되어 있으면 "헤더 행"이라고 가정하고 출력합니다.
  3. 공백 문자의 줄을 $head(줄의 첫 번째 비트)와 $seq(순서)로 나눕니다.
  4. 한 번에 세 개의 염기 시퀀스를 탐색합니다.
  5. 현재 세 개의 염기가 정지 코돈과 일치하면 새로운 서열( )에 삽입되지 않고 $newseq, 그렇지 않으면 삽입됩니다.
  6. 라인의 헤더 비트와 새로운 시퀀스를 출력합니다.
  7. 다음 줄이 있으면 계속 진행하세요.

발견된 정지 코돈을 시각적으로 표시하려면 루프를 다음으로 변경하십시오.

while ( $seq =~ /(...)/g ) {
    if ( $1 !~ /tag|taa|tga/ ) {
        $newseq .= $1;
    }
    else {
        $newseq .= "<STP>";
    }
}

관련 정보