2012-09-20 13 views
5

Estoy escribiendo un protocolo para un análisis reproducible usando un paquete interno "MyPKG". Cada usuario proporcionará sus propios archivos de entrada; aparte de las entradas, los análisis deben ejecutarse bajo las mismas condiciones. (por ejemplo, para que podamos inferir que los resultados diferentes se deben a diferentes archivos de entrada).¿Cómo puedo garantizar un entorno R uniforme entre diferentes usuarios en el mismo servidor?

MyPKG está en desarrollo, por lo que library(MyPKG) cargará la que fue la última versión que el usuario compiló en su biblioteca local. También cargará las dependencias encontradas en sus bibliotecas locales.

Pero quiero que todos utilicen una versión específica (MyPKG_3.14) para este análisis, al mismo tiempo que permiten el desarrollo de versiones más recientes. Si entiendo correctamente, "R --vanilla" cargará las mismas dependencias para todos.

Una vez que hayamos terminado, guardaremos el entorno de trabajo como máquina virtual para mantener un entorno estable y reproducible. Entonces una solución temporal (6 meses) será suficiente.

He encontrado dos soluciones posibles, pero no estoy seguro de si es suficiente.

  1. Solicitar al administrador del servidor para instalar MyPKG_3.14 en la ruta predeterminada R y luego proporcionar el código siguiente en el protocolo:

    R --vanilla 
    library(MyPKG) 
    .... 
    

    o

  2. MyPKG_3.14 de compilación en una biblioteca específica, por ejemplo lib.loc = "/home/share/lib/R/MyPKG_3.14", y luego proporcionar

    R --vanilla 
    library(MyPKG) 
    

  • ¿Son estos dos enfoques suficientes para asegurar que todo el mundo se está ejecutando el misma versión?
  • ¿Es preferible uno al otro?
  • ¿Existen otros problemas imprevistos que puedan surgir?
  • ¿Existe una opción preferida para estandarizar los análisis múltiples?
  • ¿Debo incluir una prueba de la salida de SessionInfo()?
  • ¿Sería mejor crear una sola cuenta en el servidor para que todos la usen?
+0

Gran pregunta. Estoy trabajando en este tema como parte de un proyecto más grande y planeo lanzar una biblioteca que genere rastros de procedencia después de cualquier ejecución. Sería fácil comparar dos rastros y ver si la diferencia son solo datos nuevos o bibliotecas nuevas y se podría modificar según sea necesario si aparecen resultados diferentes. Envíeme un correo electrónico para más detalles. – Maiasaura

+0

@Maiasaura No veo su correo electrónico. ¿Comienza con kram? –

+0

sí. berkeley dot edu – Maiasaura

Respuesta

1

par de puntos:

  • Use instalaciones de todo el sistema de paquetes, por ejemplo, el binario Debian/Ubuntu para R (incluidos los puertos CRAN) intentará usar /usr/local/lib/R/site-library (que los usuarios pueden instalar también si se agregan al grupo que posee el directorio). De esa manera todos obtienen la misma versión
  • Utilice la configuración de todo el sistema, p. prefiera $R_HOME/etc/ sobre los archivos por puntos debajo de ~/. Por la misma razón, el paquete Debian/Ubuntu ofrece softlinks en /etc/R/
  • Utilice las herramientas de R para consultar sus paquetes (por ejemplo, installed.packages()) para informar paquetes y versiones.
  • Utilice, donde esté disponible, las instalaciones de nivel de sistema operativo para consultar el lanzamiento y la versión del sistema operativo. Esto, sin embargo, está menos estandarizado.

Respecto al último punto de mi caja en su casa dice

> [email protected]:~$ lsb_release -a | tail -4 
> Distributor ID: Ubuntu 
> Description: Ubuntu 12.04.1 LTS 
> Release:  12.04 
> Codename:  precise 
> [email protected]:~$ 

que es un comienzo.

+0

+ 1 consejo muy útil que me diste recientemente para eliminar "~/R/x86_64-pc-linux-gnu-library/2.15" – GSee

Cuestiones relacionadas