Как получают inner_html рубинового незавершенного Nokogiri NodeSet?

Хорошо, Needleman-Wunsch(NW) является классиком от начала до конца ("глобальный") выравниватель от литературы биоинформатики. Это было давно доступно, как "выравниваются" и "align0" в пакете FASTA. Различие было то, что "0" версия не была как смещена о предотвращении разрыва конца, который часто позволял способствовать высококачественным внутренним легче соответствиям. Смит-лодочник, я подозреваю, что Вы знаете, локальный выравниватель и исходное основание BLAST. FASTA имел свой собственный локальный выравниватель также, который немного отличался. Все они являются чрезвычайно эвристическими методами для оценки расстояния Левенштейна, относящегося к метрике выигрыша для пар отдельного символа (в биоинформатике, часто даваемой Dayhoff / "PAM", Henikoff& Henikoff или другие матрицы и обычно заменяемый чем-то более простым и более довольно отражающим замен в лингвистической морфологии слова, когда относился к естественному языку).

Позволяют нам не быть драгоценными о маркировках: Расстояние Левенштейна, как ссылается на практике, по крайней мере, является в основном расстоянием редактирования, и необходимо оценить его, потому что не выполнимо вычислить его обычно, и дорого вычислить точно даже в интересных особых случаях: вода становится глубоко быстрой там, и таким образом у нас есть эвристические методы длинной и хорошей доброй славы.

Теперь относительно Вашей собственной проблемы: несколько лет назад я должен был проверить точность коротких чтений DNA против ссылочной последовательности, которая, как известно, была корректна, и я придумал что-то, что я назвал "привязанным выравниванием".

идея состоит в том, чтобы взять Ваш ссылочный строковый набор и "переварить" его путем нахождения всех местоположений, где данная подстрока N-символа происходит. Выберите N так, чтобы таблица, которую Вы создаете, не была слишком большой, но также и так, чтобы подстроки длины N не были слишком распространены. Для маленьких алфавитов как основания DNA возможно придумать идеальный хеш на строках символов N и сделать таблицу и объединить соответствия в цепочку в связанном списке от каждого мусорного ведра. Записи списка должны определить последовательность и запустить положение подстроки, которая отображается на мусорное ведро, в списке которого они происходят. Это "привязки" в списке строк, которые будут искаться, в котором выравнивание NW, вероятно, будет полезно.

При обработке строки запроса, Вы берете символы N, запускающиеся при некотором смещении K в строке запроса, хешируете их, ищете их мусорное ведро, и если список для того мусорного ведра непуст тогда, Вы проходите все записи списка и выполняете выравнивание между строкой запроса и строкой поиска, на которую ссылаются в записи. При выполнении этого выравнивания Вы выстраиваете в линию строку запроса и строку поиска в привязка и извлекаете подстроку строки поиска, которая является той же длиной как строка запроса и которая содержит ту привязку при том же смещении, K.

при выборе достаточно долгой длины привязки N и разумного набора значений смещения K (они могут быть распространены через строку запроса или ограничены низкими смещениями) Вы должны получить подмножество возможного выравнивания и часто будете получать более ясных победителей. Обычно Вы захотите использовать менее смещенный концом подобный align0 выравниватель NW.

Этот метод пытается повысить NW немного путем ограничения, это вводится, и это имеет увеличение производительности, потому что Вы делаете меньше выравнивания, и они чаще между подобными последовательностями. Другая хорошая вещь сделать с Вашим выравнивателем NW состоит в том, чтобы позволить ему сдаваться после некоторой суммы, или продолжительность разрыва происходит для сокращения издержек, особенно если Вы знаете, что не собираетесь видеть или интересоваться соответствиями посредственного качества.

Наконец, этот метод использовался в системе с маленькими алфавитами, с K, ограниченным первыми приблизительно 100 положениями в строке запроса и со строками поиска, намного больше, чем запросы (чтения DNA были приблизительно 1 000 оснований, и строки поиска были на порядке 10 000, таким образом, я искал приблизительные соответствия подстроки, выровненные по ширине оценкой расстояния редактирования конкретно). Адаптация этой методологии на естественный язык потребует некоторой осторожной мысли: Вы проигрываете на размере алфавита, но Вы получаете, если Ваши строки запроса и строки поиска имеют подобную длину.

Так или иначе, позволяя больше чем одной привязке от различных концов строки запроса, которая будет использоваться одновременно, могло бы быть полезным в дальнейших данных фильтрации, питаемых к NW, Если Вы делаете это, быть готовыми возможно отправить перекрывающимся строкам каждого содержащего одну из этих двух привязок к выравнивателю и затем согласовать выравнивание... или возможно далее изменить NW для подчеркивания хранения привязок, главным образом неповрежденных во время выравнивания с помощью модификации штрафа во время осуществления алгоритма.

Hope это полезно или по крайней мере интересно.

8
задан akuhn 23 December 2016 в 21:55
поделиться

2 ответа

Что-то не в порядке?

nodeset.inner_html
4
ответ дан 5 December 2019 в 21:20
поделиться

Старая версия libxml2 могла заставить Nokogiri возвращать некоторые экранированные символы. У меня недавно была эта проблема.

0
ответ дан 5 December 2019 в 21:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: