Pull to refresh
10
0
Send message
В своё время сделал пакет, который основан на R6 классах RDML. Штука прикольная и для «серьёзных» программистов больше всего напоминает стандартные классы из ООП. Однако второй раз я бы так не делал :) Основная причина – скорость создания объектов. Сейчас бы я, наверное, сделал просто S3.

Из важного к статье можно добавить про то, что может быть непривычно для R: копирование объекта не создаёт новый объект, а только ссылку на старый.
tomJunior <- tom
tomJunior$rename("Tom Jr.")
tom

<Cat>: 
  Name: Tom Jr.
  Age:  1
  Breed:  Scottish fold


Про это подробней тут
Никогда не пользовался 1С и зашёл сюда из спортивного интереса. В левом столбце – это то, что применяется в коде? Правильно я понимаю, что при вводе подобного ВариантЗаписиДатыJSON нужно ещё раскладку переключать?
Спасибо за информацию. Я помню, что одно время она работала нормально, потом что-то поменялось и я перестал её использовать. Может теперь опять работает, так как я ожидаю :)
разве раньше не было функции rowwise? или она теперь принципиально другая?
tstrsplit – это из data.table
Мне кажется Вы опять усложнили решение не используя встроенные функции.
В Вашем варианте получается, что одно и тоже разделение на слова происходит три раза?
Я бы сделал функцией, которую предлагал выше
dt[, (paste0('w_', 1:3)) := NULL]
microbenchmark({
dt[, (paste0('w_', 1:3)) := tstrsplit(w, split = ' ', fixed = T, keep = 1L:3L)]
})

у меня это работает в 5 раз быстрее.

Кстати функция str_split из stringr позволяет получать на выходе матрицу и можно её использовать

library(stringr)
dt[, (paste0('w_', 1:3)) := NULL]
microbenchmark({
cbind(dt, str_split(dt$w, " ", simplify = TRUE)[, 1:3])
})
По моему с новым примером что-то не то. Функция first_l_f3 не используется в коде, а только создаётся.

И выдаётся такая ошибка
dt[
, (paste0('w_', 1:3)) := strsplit(w, split = ' ', fixed = T)
]

Error in `[.data.table`(dt, , `:=`((paste0("w_", 1:3)), strsplit(w, split = " ", :
Supplied 3 columns to be assigned 100000 items. Please see NEWS for v1.12.2.
Для вытаскивания первой буквы можно ещё применить встроенную в data.table функцию разделения строк tstrsplit. По скорости будет примерно равно третьему варианту, но код гораздо проще :) Естественно это решение для конкретной задачи, а не для понимания, как делать быстро в целом.

dt[, first_l := NULL]
microbenchmark({
dt[, first_l := tstrsplit(w, split = ' ', fixed = T, keep = 1L)]
})
Конечно с ifelse получить можно, но вот если колонок модифицируется несколько, то и ifelse начнут плодиться :)
Как-то так:
dat %>%
mutate(b = ifelse(a > 1, b * 2, b),
c = ifelse(a > 1, c * 2, c),
d = ifelse(a > 1, d * 2, d))

по мне наоборот, элегантности в таком мало + фильтрация происходит каждый раз заново.

Тогда уж лучше:
dat[dat$a > 1, ] <- dat %>%
filter(a > 1) %>%
mutate(b = b * 2)
dat
# A tibble: 4 x 2
a b
1 1 1
2 2 4
3 3 6
4 4 8


здесь будет в любом случае не больше двух фильтраций

Пользуюсь tidyverse (точнее dplyr, так как всё из tidyverse не нужно) и data.table.
В data.table больше нравится то, что фильтрация с изменением данных позволяет не отбрасывать все остальные данные.
Вот, что я имею ввиду:
dat <- tibble(a = 1:4, b = 1:4)
dat <- dat %>%
filter(a > 1) %>%
mutate(b = b * 2)
dat
# A tibble: 3 x 2
a b
1 2 4
2 3 6
3 4 8

dat <- data.table(a = 1:4, b = 1:4)
dat[a > 1, b := b * 2]
dat
# a b
1: 1 1
2: 2 4
3: 3 6
4: 4 8
Там есть экспорт в виде картинок, но конечно проще в данном случае научиться работать с ggplot. Это больше, как альтернативное решение для тех, кто любит нажимать кнопки :)
Есть ещё промежуточный вариант для тех, кто не готов прописывать все дополнительные настройки оформления:
  • установить пакет plotly
  • сохранить начальный график, как объект
    p <- ggplot(data=df_logging, aes(x=year, y=value)) +
    geom_line(aes(linetype=location))
  • создать бесплатный аккаунт на сайте plotly plot.ly/ggplot2/getting-started и сохранить ключ в профиль R
  • экспортировать в визуальный редактор на сайт plotly
    api_create(ggplotly(p), filename = "test")

У меня на работе такой: Brother MFC-L2700DWR. В России примерно 250 долларов стоит.
На правах шутки.
Вам же в статье написали:
О звуке — измерений я лениво не провел, но могу отметить, что весь спектр частот, который способны услышать мои стареющие уши, эти наушники передают.

что ещё можно требовать от наушников для аудиофилов :)
ПЦР наборы, о которых вы говорите, по определению не являются тем, что подразумевается под обсуждаемым здесь «генетическим тестом».

честно говоря не понял, что под генетическим тестом Вы в данном случае понимаете только NGS и чипы.

На настоящий момент генотипирование на чипах и с NGS в России является скрининговым методом (отсюда и отсутствие законодательного регулирования), а не методом диагностики.

Скрининговым NGS является пока кто-то первый РУ не получит. Думаю и Атлас пытается это сделать, хотя вряд ли для всего генома. Вопрос только когда :)

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

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

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

это естественно

В России в целом нет никаких «регистрационных удостоверений минздрава на гентесты».

не вводите людей в заблуждение. Любые наборы/приборы используемые в медицине должны иметь регистрационные удостоверения. Вот пример таких наборов для генетического тестирования www.dna-technology.ru/production/genetika-cheloveka
Компетентный врач сам может сделать вывод о том, насколько предоставляемые результаты тестирования могут помочь в терапии/скрининге.

проблема, что результат должен быть получен «методом с РУ».

Моногенных заболеваний существует достаточно много — несколько сотен. На ВГС странице сайта Атласа указано, что проводится поиск по почти 400 моногенным заболеваниям, и, очевидно, это не все.

для выявления моногенных заболеваний не обязательно секвенировать весь геном.

Ещё раз повторю, что я не против секвенирования полного генома. Готов и себе сделать :)
Вопрос в том — насколько вероятна ошибка?

это нужно смотреть аналитические характеристики конкретного теста. В общем случае, если нашлось что-то критичное и материал остался, можно попробовать перепроверить секвенированием по Сэнгеру – этот метод «золотой стандарт».
Я так понимаю, что нет. Полногеномное — это условно, множим Вашу ДНК, режем на кусочки, далее считываем, а потом клеим поверх референсного генома человека. С какой-то вероятностью осознаем, что в позиции Х находится нуклеотид У.
Микрочипирование по идее точнее — т.к. оно проверяет, если, правильно понимаю, конкретное основание в конкретной позиции. Сигнал либо есть, либо его нет.

чип в этом плане не точнее. В чипе есть синтетическая ДНК, к которой «прилипает» Ваша похожая ДНК, но если такая похожая есть в нескольких участках генома, то может быть ошибка. Просто чипы делают на заранее выбранные точки и они уже проверены на такие ошибки, а при NGS нахождение какой-то новой неизученной и вероятно значимой мутации – это повод для перепроверки другими методами.
я так понял, что эти микрочипы изначально были заточены на медицину, но потом внезапно оказалось, что они родство между людьми определяют очень хорошо.

не совсем так, FDA запретил им заниматься выдачей диагнозов или результатов напоминающих диагнозы. Сейчас они могут выдавать результаты по ограниченному списку заболеваний customercare.23andme.com/hc/en-us/articles/211831908-23andMe-and-the-FDA
Кстати у Атласа, как я понимаю, регистрационных удостоверений минздрава на тесты нет и на них врачи ориентироваться не могут. Собственно и назначать не могут, так как в схемах лечения этого нет. Просто пока на это смотрят сквозь пальцы.

Поэтому мое мнение, что попытка узнать свое здоровье по ним… Это как гадание на кофейной гуще.

NGS в этом плане не сильно лучше. На самом деле заболеваний, при которых определённая мутация приводит к достоверному проявлению не так много. Большая часть изменений или дают какой-то небольшой вклад, или настолько критичны, что являются летальными и такие люди просто не рождаются. Кроме того нужно знать, как информация об этих изменениях повлияет на терапию: и тут тоже, в большинстве случаев – никак.
Поэтому если есть желание и деньги: делайте полногеномное секвенирование – хуже не будет, но чуда ждать не стоит. Только если Вы не слишком мнительный человек и потом не начнёте у себя диагностировать то, чего нет :) А так, то что здоровый образ жизни и ежедневная зарядка улучшает самочувствие понятно и без NGS :) Особенно это забавно в части спортивных достижений: генетика там работает в лучшем случае для спортсменов уровня олимпийской сборной.
что значит сырые данные генотипирования? чипы выдают аллельные варианты в конкретных точках. Полногеномное секвенирование принципиально выдаёт тоже самое только для большего количества точек (при этом Вы решили, что для достоверного определения хватает 30х покрытия – ваше право, но к сравнению точности методов это не применимо: Вы сами правильно отметили, что это разные методики).

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

А по поводу интерпретации данных – те же 23andme уже обжигались на этом. Слишком это «щепетильная» информация давать выводы о возможных предрасположенностях к заболеваниям неподготовленным пользователям.

Information

Rating
5,433-rd
Location
Москва и Московская обл., Россия
Date of birth
Registered
Activity