Tengo una lista de valores p y me gustaría calcular los valores p de ajuste para comparaciones múltiples para FDR. En R, puedo usar:Cómo implementar R's p.adjust en Python
pval <- read.csv("my_file.txt",header=F,sep="\t")
pval <- pval[,1]
FDR <- p.adjust(pval, method= "BH")
print(length(pval[FDR<0.1]))
write.table(cbind(pval, FDR),"pval_FDR.txt",row.names=F,sep="\t",quote=F)
¿Cómo puedo implementar este código en Python? Aquí fue mi intento Feable en Python con la ayuda de Google:
pvalue_list [2.26717873145e-10, 1.36209234286e-11 , 0.684342083821...] # my pvalues
pvalue_lst = [v.r['p.value'] for v in pvalue_list]
p_adjust = R.r['p.adjust'](R.FloatVector(pvalue_lst),method='BH')
for v in p_adjust:
print v
El código anterior genera un error AttributeError: 'float' object has no attribute 'r'
. ¿Alguien puede ayudarme a señalar mi problema? Gracias de antemano por la ayuda!
@Igautier Gracias por la ayuda! Cuando ejecuto su código, Python arroja un error 'ImportError: No module named packages'. ¿Alguna idea de cuál es el problema? Estoy ejecutando R 2.13.1. – drbunsen
Diría que estás usando una versión obsoleta de rpy2. Pruebe rpy2 .__ version__ si no está seguro. La corriente es 2.2.2. – lgautier
Sí, esto funciona para mí con R 2.2x. Desafortunadamente, estoy atascado con el uso de R 2.13.1 en un servidor remoto. ¿Alguna sugerencia? – drbunsen