Muchos analistas de datos que respeto utilizan el control de versiones. Por ejemplo:
- http://github.com/hadley/
- Ver comentarios en http://permut.wordpress.com/2010/04/21/revision-control-statistics-bleg/
Sin embargo, estoy evaluando si valdría la pena adoptar un sistema de control de versiones como git.
Una breve descripción: soy un científico social que utiliza R para analizar datos para publicaciones de investigación. Actualmente no produzco paquetes R. Mi código R para un proyecto generalmente incluye unos pocos miles de líneas de código para entrada de datos, limpieza, manipulación, análisis y generación de salida. Las publicaciones generalmente se escriben usando LaTeX.
Con respecto al control de versiones, hay muchos beneficios sobre los que he leído, pero parecen ser menos relevantes para el analista de datos en solitario.
- Copia de seguridad: ya tengo un sistema de copia de seguridad.
- Bifurcación y rebobinado: nunca sentí la necesidad de hacer esto, pero puedo ver cómo podría ser útil (por ejemplo, está preparando varios artículos de revistas basados en el mismo conjunto de datos; está preparando un informe que se actualiza mensualmente, etc. )
- Colaboración: la mayoría de las veces estoy analizando datos yo mismo, por lo tanto, no obtendría los beneficios de colaboración del control de versiones.
También hay varios costos potenciales involucrados con la adopción del control de versiones:
- Tiempo para evaluar y aprender un sistema de control de versiones
- Un posible aumento en la complejidad sobre mi sistema actual de administración de archivos
Sin embargo, todavía tengo la sensación de que me falta algo. Las guías generales sobre el control de versiones parecen estar más dirigidas a los informáticos que a los analistas de datos.
Por lo tanto, específicamente en relación con los analistas de datos en circunstancias similares a las mencionadas anteriormente:
- ¿Vale la pena el control de versiones?
- ¿Cuáles son las principales ventajas y desventajas de adoptar el control de versiones?
- ¿Cuál es una buena estrategia para comenzar con el control de versiones para el análisis de datos con R (por ejemplo, ejemplos, ideas de flujo de trabajo, software, enlaces a guías)?
fuente
Respuestas:
Creo que la respuesta a su pregunta es un rotundo sí: los beneficios de administrar sus archivos con un sistema de control de versiones superan con creces los costos de implementar dicho sistema.
Trataré de responder en detalle a algunos de los puntos que planteó:
Sí, y yo también. Sin embargo, hay algunas preguntas a considerar con respecto a la conveniencia de confiar en un sistema de respaldo de propósito general para rastrear adecuadamente los archivos importantes y activos relacionados con su trabajo. En el lado del rendimiento:
Y más importante:
Por ejemplo, tener una Mac y usar Time Machine para hacer una copia de seguridad en otro disco duro de mi computadora. Time Machine es excelente para recuperar el archivo extraño o restaurar mi sistema si las cosas se complican. Sin embargo, simplemente no tiene lo necesario para ser confiable con mi importante trabajo:
Al realizar una copia de seguridad, Time Machine tiene que crear una imagen de todo el disco duro que lleva una cantidad considerable de tiempo. Si sigo trabajando, no hay garantía de que mi archivo se capture en el estado en que estaba cuando inicié la copia de seguridad. También puedo llegar a otro punto que me gustaría guardar antes de que finalice la primera copia de seguridad.
El disco duro en el que se guardan mis copias de seguridad de Time Machine se encuentra en mi máquina, lo que hace que mis datos sean vulnerables a robos, incendios y otros desastres.
Con un sistema de control de versiones como Git, puedo iniciar una copia de seguridad de archivos específicos sin más esfuerzo que solicitar un guardado en un editor de texto, y el archivo se crea una imagen y se almacena instantáneamente. Además, Git se distribuye para que cada computadora en la que trabajo tenga una copia completa del repositorio.
Esto equivale a que mi trabajo se refleje en cuatro computadoras diferentes: nada menos que un acto de Dios podría destruir mis archivos y datos, en cuyo punto probablemente no me importaría demasiado de todos modos.
Como solista, tampoco bifurco mucho. Sin embargo, el tiempo que he ahorrado al tener la opción de rebobinar ha devuelto mi inversión en aprender un sistema de control de versiones muchas, muchas veces. ¿Dice que nunca sintió la necesidad de hacer esto, pero que rebobinar cualquier archivo en su sistema de respaldo actual realmente ha sido una opción indolora y factible?
A veces, el informe se veía mejor hace 45 minutos, hace una hora o dos días.
Sí, pero aprendería una herramienta que puede resultar indispensable si termina colaborando con otros en un proyecto.
No te preocupes demasiado por esto. Los sistemas de control de versiones son como lenguajes de programación: tienen algunos conceptos clave que deben aprenderse y el resto es solo azúcar sintáctico. Básicamente, el primer sistema de control de versiones que aprenda requerirá invertir la mayor parte del tiempo; cambiar a otro solo requiere aprender cómo el nuevo sistema expresa los conceptos clave.
Elija un sistema popular y ¡adelante!
¿Tiene una carpeta, digamos
Projects
que contiene todas las carpetas y archivos relacionados con sus actividades de análisis de datos? Si es así, aplicar un control de versión aumentará la complejidad de su sistema de archivos exactamente0
. Si sus proyectos están desparramados sobre su computadora, entonces debe centralizarlos antes de aplicar el control de versiones y esto terminará disminuyendo la complejidad de administrar sus archivos, por eso tenemos unaDocuments
carpeta después de todo.¡Si! Le brinda un gran botón de deshacer y le permite transferir fácilmente el trabajo de una máquina a otra sin preocuparse por cosas como perder su unidad USB.
La única desventaja que se me ocurre es un ligero aumento en el tamaño del archivo, pero los sistemas modernos de control de versiones pueden hacer cosas absolutamente sorprendentes con la compresión y el ahorro selectivo, por lo que este es un punto discutible.
Mantenga los archivos que generan datos o informes bajo control de versiones, sea selectivo. Si está utilizando algo como
Sweave
, almacene sus.Rnw
archivos y no los.tex
archivos que se producen a partir de ellos. Almacene datos en bruto si sería difícil volver a adquirirlos. Si es posible, escriba y almacene un script que adquiera sus datos y otro que lo limpie o modifique en lugar de almacenar cambios en los datos sin procesar.En cuanto a aprender un sistema de control de versiones, recomiendo Git y esta guía. .
Estos sitios web también tienen algunos buenos consejos y trucos relacionados con la realización de acciones específicas con Git:
http://www.gitready.com/
http://progit.org/blog.html
fuente
Trabajé durante nueve años en una tienda de análisis e introduje la idea del control de versiones para nuestros proyectos de análisis en esa tienda. Soy un gran creyente en el control de versiones, obviamente. Sin embargo, haría los siguientes puntos.
fuente
En aras de la exhaustividad, pensé en proporcionar una actualización sobre mi adopción del control de versiones.
He encontrado que el control de versiones para proyectos de análisis de datos en solitario es muy útil.
He adoptado git como mi principal herramienta de control de versiones. Primero comencé a usar Egit dentro de Eclipse con StatET. Ahora generalmente solo uso la interfaz de línea de comandos, aunque la integración con RStudio es bastante buena.
He blogueado sobre mi experiencia al configurar el control de versiones desde la perspectiva de los proyectos de análisis de datos.
Como se indicó en la publicación, descubrí que adoptar el control de versiones ha tenido muchos beneficios secundarios en la forma en que pienso sobre los proyectos de análisis de datos, incluida la aclaración:
fuente
Hago investigación económica usando R y LaTeX, y siempre pongo mi trabajo bajo control de versiones. Es como tener un deshacer ilimitado. Prueba Bazaar, es uno de los más simples de aprender y usar, y si estás en Windows tiene una interfaz gráfica de usuario (TortoiseBZR).
Sí, hay beneficios adicionales para el control de versiones cuando se trabaja con otros, pero incluso en proyectos individuales tiene mucho sentido.
fuente
En este momento, probablemente pienses en tu trabajo como un código de desarrollo que hará lo que quieres que haga. Después de adoptar el uso de un sistema de control de revisión, pensará en su trabajo como escribir su legado en el repositorio y realizar cambios incrementales brillantes en él. Se siente mucho mejor.
fuente
Todavía recomendaría el control de versiones para un acto en solitario como tú porque tener una red de seguridad para atrapar errores puede ser una gran cosa.
He trabajado como desarrollador Java en solitario y todavía uso el control de código fuente. Si reviso las cosas continuamente, no puedo perder más de una hora de trabajo si algo sale mal. Puedo experimentar y refactorizar sin preocuparme, porque si sale mal, siempre puedo volver a mi última versión de trabajo.
Si ese es tu caso, te recomiendo usar el control de fuente. No es difícil de aprender.
fuente
Debe usar un software de control de versiones, de lo contrario su análisis no será perfectamente reproducible.
Si desea publicar sus resultados en algún lugar, siempre debe poder reconstruir el estado de sus scripts en el momento en que los ha producido. Digamos que uno de los revisores descubre un error en uno de sus scripts: ¿cómo podría saber qué resultados se efectúan y cuáles no?
En este sentido, un sistema de respaldo no es suficiente porque probablemente solo se realiza una vez al día y no aplica etiquetas a las diferentes copias de respaldo, por lo que no sabe qué versiones corresponden a qué resultados. Y aprender un vcs es más simple de lo que piensas, si aprendes cómo agregar un archivo y cómo confirmar los cambios, ya es suficiente.
fuente
un gran SI.
Pros: puedes seguir lo que has hecho antes. ¡Especialmente útil para el látex, ya que es posible que necesite un párrafo antiguo que haya eliminado! Cuando su computadora falla o trabaja en una nueva, tiene sus datos de nuevo sobre la marcha.
Contras: necesita hacer algunas configuraciones.
Solo comienza a usarlo. Utilizo tortuga SVN en Windows como herramienta de cliente y mi departamento tiene un servidor svn, pongo todo mi código y datos (sí, ¡también pones tus datos allí!) Allí.
fuente
¡Primero, retroceda un poco y conozca las ventajas de escribir paquetes R! ¿Dice que tiene proyectos con varios miles de líneas de código, pero estos no están estructurados o documentados como lo está el código del paquete? Obtiene grandes ganancias al cumplir con los ideales del paquete, incluida la documentación para cada función, las pruebas de muchos de los errores habituales difíciles de atrapar, la facilidad de escribir sus propios conjuntos de pruebas, etc.
Si no tiene la disciplina para producir un paquete, entonces no estoy seguro de que tenga la disciplina para hacer el control de revisión adecuado.
fuente
Estoy de acuerdo con los sentimientos anteriores y digo que sí, el control de versiones es útil.
Ventajas;
En términos de conjuntos de herramientas, uso Git , junto con StatEt y Eclipse, que funciona bien, aunque ciertamente no tiene que usar Eclipse. Hay algunos complementos de Git para Eclipse , pero generalmente uso las opciones de línea de comando.
fuente
Una versión Control para el desarrollo en solitario (de cualquier tipo) es realmente interesante para:
Si no te ves haciendo una de esas dos funciones básicas de control de versiones, una simple herramienta de respaldo podría ser todo lo que necesitas.
Si tiene la necesidad de esas funciones, también obtendrá una copia de seguridad (con,
git bundle
por ejemplo)fuente
También hago trabajo de scripting en solitario, y encuentro que simplifica las cosas, en lugar de hacerlas más complejas. La copia de seguridad está integrada en el flujo de trabajo de codificación y no requiere un conjunto separado de procedimientos del sistema de archivos. El tiempo que lleva aprender los conceptos básicos de cualquier sistema de control de versiones definitivamente será un tiempo bien invertido.
fuente
Dropbox tiene un control de versión "pporman" que lo lleva a una parte del camino por poco esfuerzo con muchos beneficios adicionales.
fuente