나는 인간의 22 번 염색체에 각각 다른 수의 유전자가 분포되어 있으며, 각 염색체의 위치는 0 염기쌍으로 시작하며, 나는 유전자 간격을 원을 가로 질러 골고루 분포시키는 방법을 찾으려한다. 각 유전자 사이의 위치와 각 유전자의 길이는 같지만 유전자가 각 염색체에 고르게 배치되고 각 염색체 사이에 공간을 남기도록 새로운 위치를 다시 만듭니다.R에서 동그라미로 균등하게 유전자 간격을 재분배 할 수 있습니까?
df = structure(list(Chr = structure(c(1L, 1L, 1L, 2L, 3L, 4L, 5L,
6L, 7L, 8L, 9L, 10L, 11L, 12L, 12L, 13L, 17L, 20L, 22L, 22L), .Label = c("chr1",
"chr2", "chr3", "chr4", "chr5", "chr6", "chr7", "chr8", "chr9",
"chr10", "chr11", "chr12", "chr13", "chr14", "chr15", "chr16",
"chr17", "chr18", "chr19", "chr20", "chr21", "chr22"), class = "factor"),
start = c(19068972, 25996369, 235879265, 46650500, 57732485,
44224566, 127510071, 33694865, 2297266, 105108497, 35252252,
64633822, 125738394, 416309, 93636009, 50070191, 72389245,
36432660, 19608500, 31498612), stop = c(20068972L, 26996369L,
236879265L, 47650500L, 58732485L, 45224566L, 128510071L,
34694865L, 3297266L, 106108497L, 36267753L, 65633822L, 126754018L,
1416309L, 94636009L, 51070191L, 73389245L, 37432660L, 20608500L,
32498612L), Gene = c("KIAA0090", "ZNF593", "GPR137B", "MCFD2",
"ABHD6", "GUF1", "FBN2", "HMGA1", "GNA12", "LRP12", "GBA2",
"NRBF2", "ST3GAL4", "WNK1", "SOCS2", "DLEU2", "FADS6", "BPI",
"TRMT2A", "PISD")), .Names = c("Chr", "start", "stop", "Gene"
), class = "data.frame", row.names = c(1L, 2L, 3L, 4L,
5L, 6L,7L, 8L, 9L, 10L, 11L, 12L, 13L,
14L, 15L, 16L, 17L, 18L, 19L, 20L))
그리고 내가 무엇을 달성하기 위해 시도하고 있다는 것을 방법으로 유전자 간격 재배포, 각 염색체 0부터 같은 것입니다 : 이것은 데이터의 예입니다 (전체 데이터 세트는 모든 염색체를 포함) 각각의 유전자 (그리고 다음 유전자 전에 일부 공간) 사이에 동일한 공간 :
out = structure(list(Chr = structure(c(1L, 1L, 1L, 2L, 3L, 4L, 5L,
6L, 7L, 8L, 9L, 10L, 11L, 12L, 12L, 13L, 17L, 20L, 22L, 22L), .Label = c("chr1",
"chr2", "chr3", "chr4", "chr5", "chr6", "chr7", "chr8", "chr9",
"chr10", "chr11", "chr12", "chr13", "chr14", "chr15", "chr16",
"chr17", "chr18", "chr19", "chr20", "chr21", "chr22"), class = "factor"),
start = c(2000000, 4000000, 6000000, 2000000, 2000000,
2000000, 2000000, 2000000, 2000000, 2000000, 2000000,
2000000,2000000, 2000000, 4000000, 2000000, 2000000,
2000000, 2000000, 2000000), stop = c(3000000L, 5000000L,
7000000L, 3000000L, 3000000L, 3000000L, 3000000L,
3000000L, 3000000L, 3000000L, 3000000L, 3000000L, 3000000L,
3000000L, 5000000L, 3000000L, 3000000L, 3000000L, 3000000L,
3000000L), Gene = c("KIAA0090", "ZNF593", "GPR137B", "MCFD2",
"ABHD6", "GUF1", "FBN2", "HMGA1", "GNA12", "LRP12", "GBA2",
"NRBF2", "ST3GAL4", "WNK1", "SOCS2", "DLEU2", "FADS6", "BPI",
"TRMT2A", "PISD")), .Names = c("Chr", "start", "stop", "Gene"
), class = "data.frame", row.names = c(1L, 2L, 3L, 4L,
5L, 6L,7L, 8L, 9L, 10L, 11L, 12L, 13L,
14L, 15L, 16L, 17L, 18L, 19L, 20L))
데이터의 부분 집합에 대한 그러나 나는 데 어려움이 값을 선택하는 방법을 결정하는 사이에 1,000,000 염기쌍 말할 수 있습니다. 원주를 모든 염색체에 걸쳐있는 유전자의 수로 나눠서 올바른 간격을 찾기 위해 노력합니까? 어떤 제안을 해주셔서 감사합니다!
-fra
이 세그먼트를 원의 반경에 그리기 만하면됩니까? 그렇다면 연결호를 사용하지 않는다면'chord' 또는'circlize' 패키지가 유용 할 것입니다. –
안녕하세요 Bryan, 예, 저는 circlize 패키지를 사용하고 있습니다. 그러나 데이터를 사용하여 빈 공간이 너무 많아서 각 섹션의 각 부분에 유전자가 고르게 분포되도록 각 유전자의 시작과 끝 값을 다시 배열하고 싶습니다. 패키지에서이 작업을 자동으로 수행하는 방법이 있습니까? – user971102
음 ...이게 맞나요? 각 유전자는 특정 길이를 가지고 있습니다. 그러나 절대 멈춤과 다른 멈춤의 시작과 관계없이 일정한 간격을두고 싶습니다. 그리고 각 섹션 (염색체)이 같은 (호) 길이가되기를 원합니다. 이것이 옳다면 저희에게 알려주십시오. 정상화 문제처럼 들리지만 일정한 간격으로 인해 더 어려워집니다. –