file(1) 및 Magic(5): 결과 우선순위 지정

file(1) 및 Magic(5): 결과 우선순위 지정

내 질문은 다음과 같습니다.file(1) 및 Magic(5): 다른 형식 설명.

FASTA 시퀀스를 설명하고 싶습니다(http://en.wikipedia.org/wiki/FASTA_format)

그것은DNA 서열(ATGC에만 해당)

>header
ATGCTAGCATAGCATCGATGCTGTAGCTACGTAGCTACGTCTACG

"마법의" 패턴은

>.*\n[ATGC]*

또는단백질시퀀스(ACDEFGHIKLMNPQRSTVWYBZX에는 ATGC도 포함되어 있음)

>header
AHITKLMNPQRGHIKLMNPQRC

"마법의" 패턴은

>.*\n[ACDEFGHIKLMNPQRSTVWYBZX]*

하지만 이 정규식을 사용할 때마다 파일은 두 번째 정규식과 일치하기 때문에 그것이 단백질이라고 알려줍니다. 결과의 우선순위를 정하는 방법이 있나요? "이 패턴이 일치하면 다른 패턴을 시도하지 마세요"와 같은 우선 순위를 정하는 방법이 있습니까?

답변1

강도 값을 사용하여 우선순위를 설정할 수 있습니다. ~에서매직(5):

선택적 강도는 다음 형식을 사용하여 현재 마법 설명을 참조하는 별도의 줄에 제공될 수 있습니다.

    !:strength OP VALUE

피연산자 OP는 +, -, * 또는 /일 수 있으며 VALUE는 0에서 255 사이의 상수입니다. 지정된 피연산자를 사용하여 현재 계산된 기본 마력에 이 상수를 적용합니다.

단백질 설명의 우선순위를 낮추려면 다음 줄을 추가하세요.

!:strength - N

... NDNA가 설명하는 부분 아래에 놓을 수 있을 만큼 충분히 큰 곳입니다.

테스트의 "현재 계산된 기본 마법 강도"는 즉시 명확하지 않지만 해당 --list플래그를 사용하여 모든 것을 표시할 수 있습니다. 또는 소스 코드를 읽으십시오. 담당 기능은 다음과 같습니다.apprentice_magic_strength. 이는 항목의 첫 번째 테스트를 기반으로 계산되므로 한 유형이 다른 유형보다 우선하도록 하려면 동일한 첫 번째 행을 갖는 것이 도움이 됩니다. (이렇게 하면 N1만 있으면 됩니다.)

또 다른 문제: 정규식이 충분히 엄격하지 않습니다. *0개의 문자가 일치할 수 있으므로 단백질, DNA 등 각 줄의 시작 부분에서 패턴을 찾을 수 있습니다. 조이려면 전체 라인에 다음이 포함되어 있는지 확인하십시오.오직허용되는 문자 수: \n[ATGC]+$, 또는 \n[ATGC]{num,}$(여기서 num은 예상되는 가장 짧은 패턴입니다.)

0       string  =>header
>&0      regex   \n[ATGC]+$     DNA

0       string  =>header
>&0      regex   \n[ACDEFGHIKLMNPQRSTVWYBZX]+$  PROTEIN
!:strength - 1

관련 정보