Сделать окно вокруг позиции и получить значения из другого data.frame для бинов указанного окна
Я хотел бы взять "start_position" для каждого гена в моем data.frame и нарисовать окно из 100000 базисов вверх по течению и 100000 базисов вниз по течению (каждое в 200 базовых окнах, так что 500 окон вверх / вниз по течению от "start_position") и пересекаются окно с объектом granges, у которого есть столбец оценки, соответствующий 200 позициям базовой корзины.
Ген data.frame выглядит так:
> head(gene)
ensembl_transcript_id length eff_length est_counts tpm ensembl_gene_id mgi_symbol start_position end_position strand chromosome_name
1 ENSMUST00000000001 3262 3063 7876.000 78.1469000 ENSMUSG00000000001 Gnai3 107910198 107949064 - chr3
2 ENSMUST00000000003 902 703 0.000 0.0000000 ENSMUSG00000000003 Pbsn 75083240 75098962 - chrX
3 ENSMUST00000000010 2574 2375 502.564 6.4310300 ENSMUSG00000020875 Hoxb9 96132771 96137909 + chr11
4 ENSMUST00000000028 2143 1944 570.259 8.9151500 ENSMUSG00000000028 Cdc45 18780540 18812080 - chr16
5 ENSMUST00000000033 3708 3509 26338.300 228.1170000 ENSMUSG00000048583 Igf2 149836673 149852721 - chr7
6 ENSMUST00000000049 1190 991 3.000 0.0920027 ENSMUSG00000000049 Apoh 108204668 108275710 + chr11
Объект granges выглядит так:
> score_data
UCSC track 'MEF_K27AC.downsampled.sorted'
UCSCData object with 13274466 ranges and 1 metadata column:
seqnames ranges strand | score
<Rle> <IRanges> <Rle> | <numeric>
[1] chr1 [ 1, 200] * | 0
[2] chr1 [201, 400] * | 0
[3] chr1 [401, 600] * | 0
[4] chr1 [601, 800] * | 0
[5] chr1 [801, 1000] * | 0
... ... ... ... . ...
[13274462] chrY [15901401, 15901600] * | 0
[13274463] chrY [15901601, 15901800] * | 0
[13274464] chrY [15901801, 15902000] * | 0
[13274465] chrY [15902001, 15902200] * | 0
[13274466] chrY [15902201, 15902400] * | 0
-------
seqinfo: 21 sequences from mm9 genome
Цель здесь состоит в том, чтобы вычислить для каждого гена TSS (start_position), получить значения оценок, которые находятся в восходящем и нисходящем 500 окнах. Я хотел бы добавить эти окна в качестве столбцов в ген data.frame возможно. В идеале я хотел бы, чтобы данные в некоторой форме напоминали:
ensembl_transcript_id tpm upstream_500 upstream_499 … downstream_499 downstream_500
1 ENSMUST00000000001 78.1469
2 ENSMUST00000000003 0
3 ENSMUST00000000010 6.43103
4 ENSMUST00000000028 8.91515
5 ENSMUST00000000033 228.117
6 ENSMUST00000000049 0.0920027
Любая помощь приветствуется. Я разместил ссылки на данные и текущий код ниже:
Ген data.frame (это можно прочитать в коде как переменную exp)
Оценка объекта (это можно прочитать в коде как переменную mef_chip)