1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/langhuihui-Imprint-genetics

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
ribosome.js 1.6 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
unknown Отправлено 04.12.2017 14:54 ac7f1cc
const Enzyme = require('./enzyme')
const {
cut,
del,
swi,
mvr,
mvl,
cop,
off,
ina,
inc,
ing,
int,
rpy,
rpu,
lpy,
lpu
} = require('./amino acid')
const acid = [
[null, cut, del, swi],
[mvr, mvl, cop, off],
[ina, inc, ing, int],
[rpy, rpu, lpy, lpu]
]
const acidIndex = "ACGT"
//直行
function s(cd) {
return cd
}
//右转
function r(cd) {
return { u: 'r', d: 'l', l: 'u', r: 'd' }[cd]
}
//左转
function l(cd) {
return { u: 'l', d: 'r', l: 'd', r: 'u' }[cd]
}
//折叠
function fold(enzyme) {
if (enzyme.length < 3) return null
let d = foldMap[enzyme[0].name].name
if (d === 's') d = 'u'
let cd = d
for (let i = 1; i < enzyme.length - 1; i++) {
cd = foldMap[enzyme[i].name](cd)
}
if (d == cd) return 'A'
if (d == r(cd)) return 'C'
if (d == l(cd)) return 'G'
if (d == r(r(cd))) return 'T'
}
const foldMap = {
cut: s,
del: s,
swi: r,
mvr: s,
mvl: s,
cop: r,
off: l,
ina: s,
inc: r,
ing: r,
int: l,
rpy: r,
rpu: l,
lpy: l,
lpu: l
}
module.exports = function(rna) {
let result = new Enzyme(rna)
let results = [result]
for (let i = 0; i < rna.length - 1; i += 2) {
let amino = acid[acidIndex.indexOf(rna[i])][acidIndex.indexOf(rna[i + 1])]
if (amino)
result.build(amino, rna[i], rna[i + 1])
else if (result.cmd.length) {
result.like = fold(result.cmd)
result = new Enzyme(rna)
results.push(result)
}
}
result.like = fold(result.cmd)
return results
}

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/langhuihui-Imprint-genetics.git
git@api.gitlife.ru:oschina-mirror/langhuihui-Imprint-genetics.git
oschina-mirror
langhuihui-Imprint-genetics
langhuihui-Imprint-genetics
master