-
Notifications
You must be signed in to change notification settings - Fork 0
/
02_sesion1.Rmd
234 lines (149 loc) · 7.88 KB
/
02_sesion1.Rmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
# Creando la infraestructura de un paquete
Joselyn Cristina Chávez Fuentes
29 de octubre de 2024
## Diapositivas
[
```{r,echo=FALSE}
knitr::include_url("https://comunidadbioinfo.github.io/cdsb2024/infraestructura.html", height = "380px")
```
](https://comunidadbioinfo.github.io/cdsb2024/infraestructura.html)
## Los primeros pasos
- Revisar si podemos usar el nombre del paquete
```{r, eval=FALSE}
available::available("mipaquete")
```
- Crear la estructura inicial del paquete
```{r, eval=FALSE}
usethis::create_package("mipaquete")
```
- Podemos agregar la estructura de biocthis
```{r, eval=FALSE}
biocthis::use_bioc_pkg_templates()
```
- Pedir que Git ignore el archivo .Rproj
```{r, eval=FALSE}
usethis::use_git_ignore("*.Rproj")
```
- Crear el respositorio de GitHub
```{r, eval=FALSE}
usethis::use_github()
```
- Crear el archivo Description estilo Bioconductor
```{r, eval=FALSE}
biocthis::use_bioc_description()
```
- Crear el archivo README estilo Bioconductor
```{r, eval=FALSE}
biocthis::use_bioc_readme_rmd()
devtools::build_readme()
```
Recuerda guardar los cambios, hacer commit y push.
- Crear el archivo NEWS estilo Bioconductor
```{r, eval=FALSE}
biocthis::use_bioc_news_md()
```
- Crear los archivos de ayuda para usuarios y contribuidores
```{r, eval=FALSE}
biocthis::use_bioc_coc()
usethis::use_tidy_contributing()
biocthis::use_bioc_support()
biocthis::use_bioc_issue_template()
biocthis::use_bioc_citation()
```
## Checks
### BiocCheck
```{r, eval=FALSE}
BiocManager::install("BiocCheck")
```
```{r, eval=FALSE}
BiocCheck::BiocCheck()
```
- Algunas reglas de BiocCheck:
- Utilizar el símbolo <- en lugar de = para definir funciones y variables.
- Utilizar TRUE y FALSE en lugar de T y F.
- Indentar el código usando 4 espacios.
- Las líneas de código y documentación no deben ser mayores a 80 caracteres.
- Las funciones deben tener 50 líneas de código o menos.
- El paquete debe contener al menos una viñeta.
- Al menos 80% de las funciones deben tener ejemplos reproducibles.
- Las dependencias deben ser declaradas en el archivo DESCRIPTION.
- El paquete debe tener al menos un biocView.
- El tamaño del paquete no debe ser mayor 5Mb.
- El maintainer debe estar suscrito a la lista de correo de Bioconductor.
- El maintainer debe agregar su paquete en los tags de Bioconductor.
### rcmdcheck
```{r, eval=FALSE}
install.packages("rcmdcheck")
```
```{r, eval=FALSE}
rcmdcheck::rcmdcheck()
```
- Algunas reglas de rcmdcheck:
- El paquete debe ser instalable.
- Los ejemplos de las funciones deben ser reproducibles.
- Las viñetas deben ser reproducibles.
- Todas las unidades de prueba deben pasar sin errores.
- El archivo DESCRIPTON debe tener el formato adecuado.
## Modificando el archivo DESCRIPTION
- Paquete
Este es el nombre del paquete. El nombre del repositorio y el nombre del paquete en la descripción deben coincidir (incluyendo mayúsculas y minúsculas).
- Título
Este es un título breve pero descriptivo para el paquete.
- Versión
Todos los paquetes de Bioconductor utilizan un esquema de versión x.y.z. Cuando se envía por primera vez a Bioconductor, un paquete debe tener la versión 0.99.0.
- Se aplican las siguientes reglas:
- x es normalmente 0 para paquetes que aún no han sido liberados.
- y es par para paquetes liberados, e impar para paquetes en desarrollo. Generalmente, no se debe aumentar este número en el pre-release.
- z se incrementa siempre que se realizan cambios en el paquete.
- Descripción
La descripción debe ser una visión general relativamente breve pero detallada de lo que implica la funcionalidad del paquete. Debe ser de al menos tres oraciones completas.
- Autores
Se requiere una designación de maintainer (cre) con una dirección de correo electrónico que se mantenga activamente. Esta dirección de correo se utilizará para el contacto con respecto a cualquier problema que surja con el paquete en el futuro.
Idealmente, se debe incluir el ORCiD por lo menos del maintainer.
```{r, eval=FALSE}
person("Lori", "Shepherd",
email = [email protected],
role = c("cre", "aut"),
comment = c(ORCID = "0000-0002-5910-4010"))
```
Sólo debe figurar una persona como responsable para garantizar un único punto de contacto. Esta persona tendrá acceso al repositorio git en git.bioconductor.org. El acceso a Commit puede ser dado a otros desarrolladores por solicitud en la lista de correo bioc-devel.
Otra opción es añadir colaboradores al repositorio de GitHub. Este enfoque permite el desarrollo por muchos pero restringe el acceso a git.bioconductor.org.
- Licencia
El campo de licencia debe referirse preferentemente a una licencia estándar no restrictiva.
Las licencias que restringen el uso, por ejemplo, a investigadores académicos o sin fines de lucro, no son adecuadas para Bioconductor. Los paquetes de bioconductor básico suelen estar licenciados bajo Artistic-2.0.
El paquete debe contener sólo código que pueda ser redistribuido de acuerdo con la licencia del paquete.
- LazyData
Para paquetes que incluyen datos, se recomienda NO incluir LazyData: TRUE. Incluirlo en ese caso, ralentiza la carga de paquetes con datos grandes.
- Dependencias
Todos los paquetes deben estar disponibles a través de biocViews o CRAN de Bioconductor; el uso del campo Remotes: no es soportado, por lo tanto las dependencias sólo disponibles en otros repositorios (e.g. GitHub) no están permitidas.
- Un paquete puede ser listado sólo una vez entre Depends, Imports, Suggests, o Enhances:
- Imports: es para paquetes que proporcionan funciones, métodos o clases que se usan dentro del código del paquete. La mayoría de los paquetes están listados aquí.
- Depends: es para paquetes que proporcionan funcionalidad esencial para los usuarios del paquete, por ejemplo, el paquete GenomicRanges se enumera en el campo Depends: de GenomicAlignments. Es poco común que más de tres paquetes aparezcan como Depends:.
- Suggests: es para paquetes usados en viñetas, ejemplos y código condicional. Comúnmente, los paquetes de anotaciones y experimentos (por ejemplo, TxDb*) usados en viñetas y código de ejemplo se incluyen en este campo, evitando así una descarga costosa.
- Enhances: es para paquetes como parallel que mejoran el rendimiento del paquete, pero no son estrictamente necesarios para su funcionalidad.
En el caso de que se requiera una función única externa para el código del paquete, la disponibilidad y el uso del paquete pueden hacerse a través de:
```{r, eval=FALSE}
if (!requireNamespace('suggPKG', quietly = TRUE))
stop("Install 'suggPKG' to use this function.")
suggPKG::function()
```
- biocViews
Este campo es obligatorio!
Especifica al menos dos biocViews. Los términos deben provenir del mismo tipo de paquete (Software, AnnotationData, ExperimentData o Workflow).
Puedes encontrar más información en: <https://www.bioconductor.org/packages/release/BiocViews.html>
- BugReports
Se recomienda apuntar hacia el repositorio de GitHub, por ejemplo: https://github.com/usuario/paquete/issues.
- URL
Se incluyen los links importantes, como el repositorio con el código fuente y el sitio web de pkgdown si se cuenta con él. Por ejemplo: https://github.com/usuario/paquete https://usuario.github.io/paquete
## Modificando el archivo NEWS
- Secciones:
- New: Nuevas funciones.
- Bug fixes: Reparación de errores en las funciones previas o en la documentación.
- Changes: Cambios en el código de las funciones, incluyendo modificaciones en los argumentos.
- Breaking changes: Cambios importantes que romperían el código en caso de no ser atendidos, por ejemplo el uso de funciones o argumentos antiguos.
- Enhancements: Mejoras a las funciones existentes.
- Formato
El archivo NEWS se ve similar a este ejemplo:
```{r, echo=FALSE, out.width="80%", fig.align='center'}
knitr::include_graphics("img/news.png")
```