Il s'agit d'une question ouverte qui vise à définir des états pour chaque position dans le génome (correspondant à un "CpG" sites) qui varient entre les échantillons. La raison de cette question est que les outils disponibles, définissent le statut d'une fenêtre CpG et non pour des CpG individuels. Les colonnes sont les suivantes: Nombre chromosomique (chr), position initiale (début) et finale (fin) d'une base d'intérêt, la couverture attendue (profondeur), la couverture observée à différents 6 animaux (profondeur1-profondeur6).Normalisation de la couverture de profondeur parmi les échantillons
data <- "chr start end depth depth1 depth2 depth3 depth4 depth5 depth6
chr1 3273 3273 7 200 35 1 200 850 0
chr1 3274 3274 3 50 25 5 300 1500 2
chr1 3275 3275 8 600 15 8 100 300 5
chr1 3276 3276 4 30 2 10 59 20 0
chr1 3277 3277 25 20 7 4 600 45 0"
data <- read.table(text=data, header=T)
J'ai besoin de définir une colonne avec les états de chaque ligne, les états sont: non couverts région, tour à tour couvert et souvent couvert. Pour ce faire, d'abord, j'ai besoin de faire une normalisation de la profondeur entre les échantillons pour obtenir des valeurs qui peuvent être comparées entre les individus. et, en second lieu, je dois définir la gamme entre les états (maintenant, toute gamme est acceptable);
J'ai trouvé ce script qui fait quelque chose de similaire à ce dont j'ai besoin pour normaliser les profondeurs, mais je ne pouvais pas encore l'appliquer à mon cas (ce script a été conçu pour "CpG windows" fonction ". dans chaque fenêtre
setMethod("normalizeCoverage", "methylRawList",
function(obj,method){
if(method=="median"){
x=sapply(obj,function(x) median(x$coverage))
}else if(method=="mean"){
x=sapply(obj,function(x) mean(x$coverage))
}else{
stop("method option should be either 'mean' or 'median'\n")
}
sc.fac=max(x)/x #get scaling factor
for(i in 1:length(obj)){
all.cov=obj[[i]]$coverage
fCs =obj[[i]]$numCs/all.cov
fTs =obj[[i]]$numT/all.cov
obj[[i]]$coverage=round(sc.fac[i]*obj[[i]]$coverage)
obj[[i]]$numCs =round(obj[[i]]$coverage*fCs)
obj[[i]]$numTs =round(obj[[i]]$coverage*fTs)
}
obj
})
J'ai vérifié aussi ce « paquet bord » R, qui est utilisé pour les données de normalisation RNA-seq, qui ressemble à ceci:
calcNormFactors(object, method=c("TMM","RLE","upperquartile","none"), refColumn = NULL,
logratioTrim = .3, sumTrim = 0.05, doWeighting=TRUE, Acutoff=-1e10, p=0.75)
mais aussi je ne pouvais pas appliquer à mes données encore
Ce que je souhaite pour mon résultat final est quelque chose comme ceci:
chr start State
chr1 3273 Often
chr1 3274 alternatively
chr1 3275 no
chr1 3276 often
chr1 3277 no
mais je serais vraiment satisfait que de la profondeur normalisée à chaque couverture de l'échantillon.