7 votos

Repositorios y proyectos de análisis de datos

Contexto:

Recientemente he adoptado el control de versiones como parte de mi trabajo de análisis de datos (finalmente puedo escucharte decir: mira mi pregunta anterior en SO). Esto me hizo pensar más en los repositorios y la estructura de directorios que uso para mis proyectos.

Mi trabajo de investigación típico implica uno o más estudios (es decir, datos que he recopilado) que se redactan en una o varias publicaciones (artículos de revistas, capítulos de libros, presentaciones, informes, etc.). Los análisis e informes suelen producirse utilizando una combinación de R, LaTeX, Sweave, archivos de datos de texto, etc. Me gusta mucho la idea de poder subir un único repositorio autocontenido que se pueda utilizar para analizar los datos y reproducir una publicación.

En particular, he estado pensando en publicaciones, estudios, datos y código común, y cómo se relacionan estas entidades con los repositorios. Por ejemplo, ¿es mejor tener un repositorio separado para cada publicación o es mejor tener cada publicación como una carpeta individual dentro de un repositorio más grande? Estoy desarrollando algunas ideas al respecto, pero estaba ansioso por escuchar otras opciones.

Pregunta:

  • ¿Qué estrategias utilizan las personas para relacionar estudios, publicaciones y análisis en los repositorios?
  • ¿Cuándo deberían dividirse en múltiples repositorios entidades relacionadas (por ejemplo, publicaciones, estudios, etc.)?

5voto

Brett Veenstra Puntos 10238

En cuanto a tu primera pregunta:

¿Qué estrategias utilizan las personas para mapear estudios, publicaciones y análisis en repositorios?

Hace aproximadamente un año, decidí tener un repositorio para cada publicación, presentación o clase de semestre. Mi directorio típico luce así:

.git
.gitignore
README.org
ana
dat
doc
org

La idea subyacente es (con suerte) obvia: cada publicación, presentación, clase es una "entidad autárquica" que fácilmente podría compartir con otros.

Por cierto, no eres el primero en hacer esta pregunta: ¿Un repositorio/varios proyectos sin mezclarse?

Sin embargo, también comencé a usar git para gestionar proyectos que podrían resultar en algunas publicaciones (la estructura de directorios sigue aproximadamente la de John Myles White's ProjectTemplate, aunque no lo estoy usando).

.git
.gitignore
README.org
ana
data
docs
graphs
lib
org
reports
tests

En cuanto a tu segunda pregunta:

¿Cuándo deberían dividirse en múltiples repositorios entidades relacionadas (por ejemplo, publicaciones, estudios, etc.)?

No se me ocurre ninguna razón para dividir un repositorio relacionado con una publicación, conferencia, etc. en múltiples repositorios. Pero estaría interesado en otras opiniones...

2voto

Greg Puntos 7391

Mantengo un repositorio separado para cada proyecto, siendo cada proyecto centrado en un conjunto particular de datos o una pregunta específica que se esté abordando. El repositorio contiene los datos, el código y los documentos/gráficos Sweave que explican y expresan los resultados.

Mantengo un repositorio separado para cada publicación o presentación discreta porque

  1. Un solo proyecto puede resultar en múltiples publicaciones o presentaciones. Una vez que una publicación ha salido o has dado la presentación, básicamente has "terminado" con el contenido de ese repositorio, por lo que no es necesario arrastrarlo con el proyecto.
  2. Un output (publicación/presentación/capítulo) puede contener datos de más de un proyecto.
  3. No todos los resultados de un proyecto terminarán en una pieza particular de output.

El código que es reutilizable entre proyectos tiene su propio repositorio también. Si se me ocurre una nueva pregunta discreta utilizando datos que ya están en un repositorio, copiaré esos datos a un nuevo repositorio.

Si quieres ser realmente estricto al respecto, muchos sistemas de control de versiones ofrecen la idea de "subproyectos", pero he encontrado que es excesivo.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X