## Le vecteur contient-il l'élément v?
##### exemple 1
v <- c('a','b','c','e') #vecteur V contenant la liste a,b,c,e
'b' %in% v
## "y-a-t-il 'b' dans le vecteur 'v' -> TRUE
match('b',v)
## renvoie la première occurence de 'b', soit l'élément [2]
##### exemple 2
#is.element() est utilisé pour rendre le code plus lisible mais est identique à %in%
v <- c('a','b','c','e')
is.element('b', v)
'b' %in% v
## renvoient TRUE si il y a un 'b' dans v
is.element('f', v)
'f' %in% v
## renvoient FALSE (pas de f dans v)
subv <- c('a', 'f')
subv %in% v
is.element(subv, v)
## renvoie un vecteur TRUE/FALSE
##### exemple 3
w <- c(1,2,3)
any(w==1)
#renvoie TRUE sir un des éléments de w vaut 1
v <- c('a','b','c')
any(v=='b')
any(v=='f')
#idem avec des lettres
##### exemple 4
chars <- "test"
value <- "es"
grepl(value, chars) #cherche la suite 'es' dans le vecteur 'chars' qui contient le mot 'test', renvoie TRUE
chars <- "test"
value <- "et"
grepl(value, chars) #idem, renvoie FALSE
mercredi 2 septembre 2015
Eliminer des doublons d'un jeu de données sour R
#élimination des doublons dans un vecteur sous R
doublons <- which(duplicated(data$V2)) #quelles sont les séquences en double dans la colonne V2 de mon jeu de données?
data2<-data[-doublons,] #on enregistre un nouveau tableau "data2 ne contenant pas les lignes des doublons
#Pour comprendre la suppression des doublons avec un exemple simple
test<-c("a","a","ab","bb","b")
doublonstest<-which(duplicated(test))
test2<-test[-doublonstest]
test
test2
doublons <- which(duplicated(data$V2)) #quelles sont les séquences en double dans la colonne V2 de mon jeu de données?
data2<-data[-doublons,] #on enregistre un nouveau tableau "data2 ne contenant pas les lignes des doublons
#Pour comprendre la suppression des doublons avec un exemple simple
test<-c("a","a","ab","bb","b")
doublonstest<-which(duplicated(test))
test2<-test[-doublonstest]
test
test2
Test apparié par permutation pour R
Voici un petit script pour effectuer des tests de permutations pour données appariées sous R (il n'y a pas de plugins à ma connaissance permettant de réaliser ce type de test).
Commencer par jeter un oeil à l'article sur les tests de permutation non appariés en premier !
test=rnorm(10,5,5)
cont=rnorm(10,4,3)
d=test-cont
qqnorm(d) #voir les données
shapiro.test(d) #voir les données
B = 99999 #nombre de permutations
m0 = mean(d) #moyenne
rndmdist = replicate(B,mean((rbinom(length(d),1,.5)*2-1)*d)) #randomisation
sum(abs(rndmdist) > abs(m0))/length(rndmdist) #p-value
Commencer par jeter un oeil à l'article sur les tests de permutation non appariés en premier !
test=rnorm(10,5,5)
cont=rnorm(10,4,3)
d=test-cont
qqnorm(d) #voir les données
shapiro.test(d) #voir les données
B = 99999 #nombre de permutations
m0 = mean(d) #moyenne
rndmdist = replicate(B,mean((rbinom(length(d),1,.5)*2-1)*d)) #randomisation
sum(abs(rndmdist) > abs(m0))/length(rndmdist) #p-value
ImageJ: détection d'objets et mesure de leur surface par lot d'image
Voici un script sous imageJ permettant de détecter des objets blancs sur fond noir (plusieurs objets dans chaque photo) et de mesurer leur aire, le script est utilisable en lot et enregistre le nom du fichier image en face de la valeur de l'objet.
Pour le lancer sur un lot d'image, utiliser "Process"->"Batch"->"Macro", copiez cette macro, indiquez le dossier contenant vos images (input) et celui dans lequel vous voulez que le script sauvegarde les images des détections de bord (pour pouvoir contrôler que la détection s'est bien déroulée). Si votre input correspond à votre output, vos images d'origines seront écrasées, il faut donc les sauvegarder en effectuant une copie dans un autre dossier.
Si les images contrôles ne vous conviennent pas, modifiez les paramètres du script (vous pouvez vous aider du recorder de macro présent dans imageJ)
Lancez ensuite le script, allez dans le tableau des résultats et sauvegardez le tableau.
run("8-bit"); //convertit l'image en 8-bit pour les analyses
setMinAndMax(138, 164);
run("Apply LUT");
//suppression des très petits outliers, modifier la valeur en fonction de votre appareil photo
run("Remove Outliers...", "radius=30 threshold=50 which=Bright");
run("Remove Outliers...", "radius=20 threshold=50 which=Dark");
//détection des objets
setAutoThreshold("Intermodes dark");
setAutoThreshold("Default dark");
setAutoThreshold("Default dark stack");
setAutoThreshold("Default dark");
setOption("BlackBackground", false);
run("Convert to Mask");
//rentrez ici un intervalle de dimensions correspondant approximativement aux tailles de vos objets, ou mettez cette ligne en commentaire pour ne pas éliminer d'outliers
run("Analyze Particles...", "size=500-120000 show=Outlines display");
//enregistrement du nom du fichier comme label de la donnée
dir = getDirectory("image");
name = getTitle;
index = lastIndexOf(name, ".");
if (index!=-1) name = substring(name, 0, index);
name = name + ".xls";
saveAs("Measurements", dir+name);
Pour le lancer sur un lot d'image, utiliser "Process"->"Batch"->"Macro", copiez cette macro, indiquez le dossier contenant vos images (input) et celui dans lequel vous voulez que le script sauvegarde les images des détections de bord (pour pouvoir contrôler que la détection s'est bien déroulée). Si votre input correspond à votre output, vos images d'origines seront écrasées, il faut donc les sauvegarder en effectuant une copie dans un autre dossier.
Si les images contrôles ne vous conviennent pas, modifiez les paramètres du script (vous pouvez vous aider du recorder de macro présent dans imageJ)
Lancez ensuite le script, allez dans le tableau des résultats et sauvegardez le tableau.
run("8-bit"); //convertit l'image en 8-bit pour les analyses
setMinAndMax(138, 164);
run("Apply LUT");
//suppression des très petits outliers, modifier la valeur en fonction de votre appareil photo
run("Remove Outliers...", "radius=30 threshold=50 which=Bright");
run("Remove Outliers...", "radius=20 threshold=50 which=Dark");
//détection des objets
setAutoThreshold("Intermodes dark");
setAutoThreshold("Default dark");
setAutoThreshold("Default dark stack");
setAutoThreshold("Default dark");
setOption("BlackBackground", false);
run("Convert to Mask");
//rentrez ici un intervalle de dimensions correspondant approximativement aux tailles de vos objets, ou mettez cette ligne en commentaire pour ne pas éliminer d'outliers
run("Analyze Particles...", "size=500-120000 show=Outlines display");
//enregistrement du nom du fichier comme label de la donnée
dir = getDirectory("image");
name = getTitle;
index = lastIndexOf(name, ".");
if (index!=-1) name = substring(name, 0, index);
name = name + ".xls";
saveAs("Measurements", dir+name);
Inscription à :
Articles (Atom)