Как закодировать двоичный файл в последовательность ДНК

Я хотел бы закодировать двоичную последовательность в последовательность ДНК, следуя этому правилу:

00 = A
01 = C
10 = G
11 = T

Например: 10011100 знак равно GCTA,

Я написал сценарий PHP, который преобразует мою строку в двоичный файл, а затем я преобразую двоичный файл в последовательность ДНК, используя str_replace функция. Моя проблема в том, что последовательность ДНК не правильно преобразована. Кто-нибудь может мне помочь?

Вот мой PHP-скрипт:

<?php
// Function to convert string to bin
function strToBin($input) {
if (!is_string($input))
return false;
$ret = '';
for ($i = 0; $i < strlen($input); $i++) {
$temp = decbin(ord($input{$i}));
$ret .= str_repeat('0', 8 - strlen($temp)) . $temp;
}
return $ret;
}
$bin = strToBin('Stack');
// Try to transcript binary to DNA
$bincomb = array('00', '01', '10', '11');
$DNAtrans = array('A', 'C', 'G', 'T');

echo $transcript = str_replace($bincomb, $DNAtrans, $bin);
?>

1

Решение

str_replace() подход не работает, потому что он ищет подстроки в порядке 00, 01, 10, 11, Так, например, с двоичной строкой 1001 он заменяет внутренний 00 с Aпосле чего строка 1A1и больше преобразований быть не может.

Чтобы ваша функция работала, вам нужно пройти через двоичную строку кусками по два символа.

$bin = strToBin('Stack');

$bin = str_split($bin, 2);

$combine = array(
'00' => 'A',
'01' => 'C',
'10' => 'G',
'11' => 'T'
);

$str = '';

foreach ($bin as $item)
$str .= $combine[$item];

Сначала строка разбивается на куски по два символа, которые затем перебираются и соответствующие значения добавляются в результирующую строку. $str,

2

Другие решения

Других решений пока нет …