Кто-то (@kamaci) назвал мое имя в другой ветке.Это лучшее, что я могу придумать, сохраняя таблицу белков в командной строке:
perl -nE'say+map+substr("FYVDINLHL%VEMKLQL%VEIKLQFYVDINLHCSGASTRPWSGARTRP%SGARTRPCSGASTR",(s/GGG/GGC/i,vec($_,0,32)&101058048)%63,1),/.../g' dna.txt
(Оболочка для цитирования, для Windows - символы свопинга '
и "
).Эта версия помечает недопустимые кодоны %
, вы, вероятно, можете это исправить, добавив =~y/%//d
в соответствующее место.
Подсказка: это выбирает 6 битов из необработанного кодирования ASCII тройки РНК, давая 64коды от 0 до 101058048;чтобы получить индекс строки, я уменьшаю результат по модулю 63, но это создает одно двойное отображение, которое, к сожалению, должно было кодировать два разных белка.s/GGG/GGC/i
отображает один из них в другой, кодирующий нужный белок.
Также обратите внимание на круглые скобки перед оператором %
, который оба изолирует оператор ,
от списка аргументовsubstr
и исправляют приоритет &
против %
.Если вы когда-либо используете это в рабочем коде, вы плохой, плохой человек.