Я импортировал дорожку выравнивания UCSC в R с помощью import.bw() (из пакета rtracklayer), но у меня возникли проблемы с доступом к нужным мне значениям.
Например: я хочу предоставить хромосому и основание и вернуть значение в этой позиции.
Мой объект называется al100:
> al100
RangedData with 21591667 rows and 1 value column across 25 spaces
space ranges | score
<factor> <IRanges> | <numeric>
1 chr1 [10001, 10014] | 0.002777778
2 chr1 [10015, 10015] | 0.333333343
3 chr1 [10016, 10026] | 0.500000000
4 chr1 [10027, 10031] | 1.000000000
Мне нужна функция, в которой я указываю хромосому и позицию и возвращаю счет. Это тривиально, если мне нужно одно или два значения, но цикл не будет работать, когда у меня есть 7 миллионов для поиска; при 4/5 секундах на запрос это около 10 месяцев, что не вариант.
Например, chr1, позиция 10011 вернет значение 0,002777778 (где x — отдельный объект, содержащий список хромосом и позиций).
Единственный метод, который я нашел до сих пор, - это спросить, равна ли моя позиция началу или больше и/или равна или равна или меньше конца диапазона. Не очень хорошо.
score(al100["chr1"])[ which( start(al100["chr1"]<=x$POS[1])) & end(al100["chr1"]<=x$POS[1])) ]
end...<=x...
). А скобки сняты? Или функцияstart
действительно принимает логический вектор? - person Jeff Allen   schedule 28.03.2012