файл (1) и магия (5): определение приоритетов результата

Мой вопрос следует, что один: файл (1) и магия (5): описание других форматов .

Я хочу описать последовательность FASTA ( http://en.wikipedia.org/wiki/FASTA_format )

Это может быть последовательность ДНК (только с ATGC)

>header ATGCTAGCATAGCATCGATGCTGTAGCTACGTAGCTACGTCTACG 

Шаблон «магия» был бы

 >.*\n[ATGC]* 

или последовательность PROTEIN (ACDEFGHIKLMNPQRSTVWYBZX, содержащая ATGC)

 >header AHITKLMNPQRGHIKLMNPQRC 

Шаблон «магия» был бы

 >.*\n[ACDEFGHIKLMNPQRSTVWYBZX]* 

Но всякий раз, когда я использую эти регулярные выражения, файл сообщает мне, что это белок, потому что он соответствует второму регулярному выражению. Есть ли способ определить приоритет результата? Есть ли способ проректировать, что-то вроде «Не пытайтесь использовать какой-либо другой шаблон, если он соответствует?».

    Вы можете установить приоритеты, используя значение «сила». Из магии (5) :

    Дополнительная сила может быть предоставлена ​​на отдельной строке, которая ссылается на текущее описание магии, используя следующий формат:

      !:strength OP VALUE 

    Оператор OP может быть: +, -, * или /, а VALUE – константа от 0 до 255. Эта константа применяется с использованием указанного операнда к текущей рассчитанной магии по умолчанию.

    Чтобы снизить приоритет описания PROTEIN, добавьте эту строку:

     !:strength - N 

    … где N достаточно велико, чтобы взять его ниже оценки описания ДНК.

    «Текущая вычислительная сила по умолчанию» теста не сразу очевидна, но вы можете использовать флаг --list чтобы показать их все. В качестве альтернативы, прочитайте источник – ответственная функция – apprentice_magic_strength . Он вычисляется из первого теста записи, поэтому, если вы хотите присвоить один тип приоритету над другим, полезно использовать идентичные первые строки. (Таким образом, N нужно только 1.)

    Еще одна проблема: ваши регулярные выражения недостаточно строгие. * может совпадать с нулевыми символами, поэтому шаблон находится в начале каждой строки – белка, ДНК или другого. Чтобы затянуть его, убедитесь, что вся строка состоит только из разрешенных символов: \n[ATGC]+$ или \n[ATGC]{num,}$ (где num – самый короткий шаблон, который вы ожидаете увидеть)

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