Skip to content

Commit 0ad9e16

Browse files
committed
Code cleanup
1 parent 300ae9a commit 0ad9e16

3 files changed

Lines changed: 107 additions & 83 deletions

File tree

_analysis-script.R

Lines changed: 43 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -7,25 +7,25 @@ targetinfo <- readTargets(targetsFile, row.names = 'Name')
77
targetinfo[order(targetinfo$Name),]
88

99
# Extract the treatments
10-
treatments <- unique(targetinfo$Treatment)[unique(targetinfo$Treatment) != "NC"]
10+
treatments <- unique(targetinfo$Treatment[targetinfo$Treatment != 'NC'])
1111

1212
# Select a subset for a specific experiment
1313
targetinfo <- subset(targetinfo, Experiment == experiment)
1414

1515
# Converts the raw data to an EListRaw object
16-
wtAgilent.GFilter <- function(qta) { qta[,"gIsPosAndSignif"] }
16+
wtAgilent.GFilter <- function(qta) { qta[, 'gIsPosAndSignif'] }
1717
eset <- read.maimages(
1818
targetinfo,
1919
source = 'agilent.median',
2020
green.only = TRUE,
21-
path = "data",
21+
path = 'data',
2222
names = targetinfo$Name,
2323
other.columns = 'gIsWellAboveBG',
2424
wt.fun = wtAgilent.GFilter
2525
)
2626

2727
dim_eset$raw <- dim(eset)
28-
cat(paste0(Sys.time(), ': ', 'The raw data has been loaded. The dataset includes ', dim_eset$raw[1], ' probes'), fill = TRUE)
28+
print_to_log('The raw data has been loaded. The dataset includes ', dim_eset$raw[1], ' probes')
2929

3030
# Add the spot type
3131
spotTypes <- readSpotTypes(file = 'SpotTypes.tsv')
@@ -55,7 +55,7 @@ eset$genes$ensembl_gene_id <- annotation$ensembl_gene_id
5555
eset$genes$external_gene_name <- annotation$external_gene_name
5656

5757
dim_eset$annotation <- dim(eset)
58-
cat(paste0(Sys.time(), ': ', 'The data has been annotated. This step also removed the control probes, resulting in a reduced number of ', dim_eset$annotation[1], ' probes/genes.'), fill = TRUE)
58+
print_to_log('The data has been annotated. This step also removed the control probes, resulting in a reduced number of ', dim_eset$annotation[1], ' probes/genes.')
5959

6060

6161

@@ -64,12 +64,12 @@ cat(paste0(Sys.time(), ': ', 'The data has been annotated. This step also remove
6464
# #############################
6565

6666
eset <- backgroundCorrect(eset, method = 'normexp')
67-
cat(paste0(Sys.time(), ': Background correction was executed.'), fill = TRUE)
67+
print_to_log('Background correction was executed.')
6868

6969
png(file = paste0(graphicsDirExp, '/data-processing/density-plot_bg-corrected.png'), width = graphics_dimensions[1], height = graphics_dimensions[2])
7070
plotDensities(eset, legend = FALSE, main = 'Density plot after background correction')
7171
dev.off()
72-
cat(paste0(Sys.time(), ': The density plot with the background-corrected data was created'), fill = TRUE)
72+
print_to_log('The density plot with the background-corrected data was created')
7373

7474

7575

@@ -91,17 +91,17 @@ dim_eset$samplesToFilter <- dim(eset[Control | NoSymbol | !IsExpr, ])
9191
eset <- eset[!Control & !NoSymbol & IsExpr, ]
9292

9393
dim_eset$filtered <- dim(eset)
94-
cat(paste0(Sys.time(), ': ', 'The data has been filtered. In total, ', dim_eset$samplesToFilter[1], ' samples were omitted (', dim_eset$controlSamples[1], ' control samples, ', dim_eset$notExpressedSamples[1], ' samples that were not significantly above the background, and ', dim_eset$samplesWoSymbol[1], ' samples that have no gene name). The dataset now includes: ', dim_eset$filtered[1], ' genes.'), fill = TRUE)
94+
print_to_log('The data has been filtered. In total, ', dim_eset$samplesToFilter[1], ' samples were omitted (', dim_eset$controlSamples[1], ' control samples, ', dim_eset$notExpressedSamples[1], ' samples that were not significantly above the background, and ', dim_eset$samplesWoSymbol[1], ' samples that have no gene name). The dataset now includes: ', dim_eset$filtered[1], ' genes.')
9595

9696
png(file = paste0(graphicsDirExp, '/data-processing/density-plot_filtered.png'), width = graphics_dimensions[1], height = graphics_dimensions[2])
9797
plotDensities(eset, legend = FALSE, main = 'Density plot after filtering')
9898
dev.off()
99-
cat(paste0(Sys.time(), ': The density plot of the filtered data was created'), fill = TRUE)
99+
print_to_log('The density plot of the filtered data was created')
100100

101101
png(file = paste0(graphicsDirExp, '/data-processing/expression-values_filtered.png'), width = graphics_dimensions[1], height = graphics_dimensions[2])
102-
boxplot(log2(eset$E), main = "Expression values after filtering", ylab = "log2 intensity")
102+
boxplot(log2(eset$E), main = 'Expression values after filtering', ylab = 'log2 intensity')
103103
dev.off()
104-
cat(paste0(Sys.time(), ': The boxplot of the filtered values was created'), fill = TRUE)
104+
print_to_log('The boxplot of the filtered values was created')
105105

106106

107107

@@ -120,22 +120,22 @@ eset$genes <- eset$genes[, c(
120120
# ##############
121121

122122
eset <- normalizeBetweenArrays(eset, method = 'quantile')
123-
cat(paste0(Sys.time(), ': The expression values were normalized so that they have similar distributions across the arrays.'), fill = TRUE)
123+
print_to_log('The expression values were normalized so that they have similar distributions across the arrays.')
124124

125125
png(file = paste0(graphicsDirExp, '/data-processing/density-plot_normalized.png'), width = graphics_dimensions[1], height = graphics_dimensions[2])
126126
plotDensities(eset, legend = FALSE, main = 'Density plot after normalization')
127127
dev.off()
128-
cat(paste0(Sys.time(), ': The density plot of the normalized data was created.'), fill = TRUE)
128+
print_to_log('The density plot of the normalized data was created.')
129129

130130
png(file = paste0(graphicsDirExp, '/data-processing/expression-values_normalized.png'), width = graphics_dimensions[1], height = graphics_dimensions[2])
131-
boxplot(log2(eset$E), main = "Expression values after normalization", ylab = "log2 intensity")
131+
boxplot(log2(eset$E), main = 'Expression values after normalization', ylab = 'log2 intensity')
132132
dev.off()
133-
cat(paste0(Sys.time(), ': The boxplot of the normalized data was created.'), fill = TRUE)
133+
print_to_log('The boxplot of the normalized data was created.')
134134

135135
png(file = paste0(graphicsDirExp, '/data-processing/mds.png'), width = graphics_dimensions[1], height = graphics_dimensions[2])
136136
plotMDS(eset, labels = substring(eset$targets$Name, 1, nchar(eset$targets$Name) - 3))
137137
dev.off()
138-
cat(paste0(Sys.time(), ': The multidimensional scaling plot visualizing the distance between gene expression profiles of the different samples was created.'), fill = TRUE)
138+
print_to_log('The multidimensional scaling plot visualizing the distance between gene expression profiles of the different samples was created.')
139139

140140

141141

@@ -146,7 +146,7 @@ cat(paste0(Sys.time(), ': The multidimensional scaling plot visualizing the dist
146146
png(file = paste0(graphicsDirExp, '/data-processing/batch-effect.png'), width = graphics_dimensions[1], height = graphics_dimensions[2])
147147
plotMDS(eset, labels = substring(eset$targets$Array_Batch, nchar(eset$targets$Array_Batch) - 4 + 1))
148148
dev.off()
149-
cat(paste0(Sys.time(), ': The multidimensional scaling plot visualizing the distance between gene expression profiles of the different array batches was created.'), fill = TRUE)
149+
print_to_log('The multidimensional scaling plot visualizing the distance between gene expression profiles of the different array batches was created.')
150150

151151

152152

@@ -155,14 +155,14 @@ cat(paste0(Sys.time(), ': The multidimensional scaling plot visualizing the dist
155155
# ################
156156

157157
png(file = paste0(graphicsDirExp, '/data-processing/expression-levels.png'), width = graphics_dimensions[1], height = graphics_dimensions[2])
158-
coolmap(eset$E, cluster.by="expression level", show.dendrogram = "column", col = "redblue", margins = c(7, 1), srtCol=45, labRow='', main = "Clustered by EL")
158+
coolmap(eset$E, cluster.by='expression level', show.dendrogram = 'column', col = 'redblue', margins = c(7, 1), srtCol=45, labRow='', main = 'Clustered by EL')
159159
dev.off()
160-
cat(paste0(Sys.time(), ': The data has been clustered according to its expression levels.'), fill = TRUE)
160+
print_to_log('The data has been clustered according to its expression levels.')
161161

162162
png(file = paste0(graphicsDirExp, '/data-processing/de-pattern.png'), width = graphics_dimensions[1], height = graphics_dimensions[2])
163-
coolmap(eset$E, cluster.by = "de pattern", show.dendrogram = "column", margins = c(7, 1), srtCol = 45, labRow = '', main = "Clustered by DE")
163+
coolmap(eset$E, cluster.by = 'de pattern', show.dendrogram = 'column', margins = c(7, 1), srtCol = 45, labRow = '', main = 'Clustered by DE')
164164
dev.off()
165-
cat(paste0(Sys.time(), ': The data has been clustered according to its DE pattern.'), fill = TRUE)
165+
print_to_log('The data has been clustered according to its DE pattern.')
166166

167167

168168

@@ -171,13 +171,13 @@ cat(paste0(Sys.time(), ': The data has been clustered according to its DE patter
171171
# #####################
172172

173173
array.weights <- arrayWeights(eset)
174-
cat(paste0(Sys.time(), ': The array weights have been calculated.'), fill = TRUE)
174+
print_to_log('The array weights have been calculated.')
175175

176176
png(file = paste0(graphicsDirExp, '/data-processing/array-weights.png'), width = graphics_dimensions[1], height = graphics_dimensions[2])
177-
barplot(array.weights, xlab = "Array", ylab = "Weight", main = "Array weights", col = "white", las = 2)
177+
barplot(array.weights, xlab = 'Array', ylab = 'Weight', main = 'Array weights', col = 'white', las = 2)
178178
abline(h = 1, lwd = 1, lty = 2)
179179
dev.off()
180-
cat(paste0(Sys.time(), ': The barplot visualizing the array weights has was created.'), fill = TRUE)
180+
print_to_log('The barplot visualizing the array weights has was created.')
181181

182182

183183

@@ -218,7 +218,7 @@ fit <- eBayes(fit, trend = TRUE, robust = TRUE)
218218
fit$coefficients <- as.data.frame(fit$coefficients)
219219

220220
cat('\n')
221-
cat(paste0(Sys.time(), ': The data has been fit to a polynomial regression using the model matrix "', modelMatrixFormula, '".'), fill = TRUE)
221+
print_to_log('The data has been fit to a polynomial regression using the model matrix "', modelMatrixFormula, '".')
222222
cat('\n')
223223

224224

@@ -234,7 +234,7 @@ for (tmp_treatment in treatments) {
234234
abline(v = -2, lwd = 1, lty = 2)
235235
abline(v = 2, lwd = 1, lty = 2)
236236
dev.off()
237-
cat(paste0(Sys.time(), ': A volcano plot showing the most significant DEGs of the linear fit for ', tmp_treatment, ' was created.'), fill = TRUE)
237+
print_to_log('A volcano plot showing the most significant DEGs of the linear fit for ', tmp_treatment, ' was created.')
238238
}
239239
cat('\n')
240240

@@ -248,8 +248,8 @@ topTables <- list()
248248

249249
for (tmp_treatment in treatments) {
250250
tmp_table <- topTable(fit, coef = paste0('model_factors$treat_', tmp_treatment, '.Degree1'), sort.by = 'p', number = Inf)
251-
cat(paste0(Sys.time(), ': ', 'Minimal p value for ', tmp_treatment, ': ', round(min(tmp_table$P.Value), digits = 4)), fill = TRUE)
252-
cat(paste0(Sys.time(), ': ', 'Maximal absolute logFC for ', tmp_treatment, ': ', round(max(abs(tmp_table$logFC)), digits = 4)), fill = TRUE)
251+
print_to_log('Minimal p value for ', tmp_treatment, ': ', round(min(tmp_table$P.Value), digits = 4))
252+
print_to_log('Maximal absolute logFC for ', tmp_treatment, ': ', round(max(abs(tmp_table$logFC)), digits = 4))
253253

254254
topTables$noFilter[[paste0('treatment_', tmp_treatment)]] <- tmp_table
255255
}
@@ -266,7 +266,7 @@ for (tmp_treatment in treatments) {
266266
tmp_noFilters_topTable <- topTables$noFilter[[paste0('treatment_', tmp_treatment)]]
267267
tmp_table <- tmp_noFilters_topTable[abs(tmp_noFilters_topTable$logFC) >= tmp_logFC_value,]
268268
tmp_table <- tmp_table[order(abs(tmp_table$logFC), decreasing = TRUE),]
269-
cat(paste0(Sys.time(), ': ', 'After filtering the data of ', tmp_treatment, ' for an absolute logFC value of at least ', tmp_logFC_value, ', ', dim(tmp_table)[1], ' genes were left. The best p value of these remaining genes was ', round(max(tmp_table$P.Value), digits = 4), '.'), fill = TRUE)
269+
print_to_log('After filtering the data of ', tmp_treatment, ' for an absolute logFC value of at least ', tmp_logFC_value, ', ', dim(tmp_table)[1], ' genes were left. The best p value of these remaining genes was ', round(max(tmp_table$P.Value), digits = 4), '.')
270270

271271
topTables[[paste0('logFC_GTE_', tmp_logFC_value)]][[paste0('treatment_', tmp_treatment)]] <- tmp_table
272272
}
@@ -284,7 +284,7 @@ for (tmp_treatment in treatments) {
284284
tmp_noFilters_topTable <- topTables$noFilter[[paste0('treatment_', tmp_treatment)]]
285285
tmp_table <- tmp_noFilters_topTable[abs(tmp_noFilters_topTable$P.Value) <= tmp_p_value,]
286286
tmp_table <- tmp_table[order(abs(tmp_table$P.Value), decreasing = TRUE),]
287-
cat(paste0(Sys.time(), ': ', 'After filtering the data of ', tmp_treatment, ' for an absolute p value value of at most ', tmp_p_value, ', ', dim(tmp_table)[1], ' genes were left. The best absolute logFC value of these remaining genes was ', round(max(tmp_table$logFC), digits = 4), '.'), fill = TRUE)
287+
print_to_log('After filtering the data of ', tmp_treatment, ' for an absolute p value value of at most ', tmp_p_value, ', ', dim(tmp_table)[1], ' genes were left. The best absolute logFC value of these remaining genes was ', round(max(tmp_table$logFC), digits = 4), '.')
288288

289289
topTables[[paste0('pvalue_LTE_', tmp_p_value)]][[paste0('treatment_', tmp_treatment)]] <- tmp_table
290290
}
@@ -303,7 +303,7 @@ for (tmp_treatment in treatments) {
303303
tmp_pValueFiltered_topTable <- topTables[[paste0('pvalue_LTE_', tmp_p_value)]][[paste0('treatment_', tmp_treatment)]]
304304
tmp_table <- tmp_pValueFiltered_topTable[abs(tmp_pValueFiltered_topTable$logFC) >= tmp_logFC_value,]
305305
tmp_table <- tmp_table[order(abs(tmp_table$logFC), decreasing = TRUE),]
306-
cat(paste0(Sys.time(), ': ', 'After filtering the data of ', tmp_treatment, ' for an absolute p value value of at most ', tmp_p_value, ', and a logFC of at least ', tmp_logFC_value, ', ', dim(tmp_table)[1], ' genes were left. The best absolute logFC value of these remaining genes was ', round(max(tmp_table$logFC), digits = 4), '.'), fill = TRUE)
306+
print_to_log('After filtering the data of ', tmp_treatment, ' for an absolute p value value of at most ', tmp_p_value, ', and a logFC of at least ', tmp_logFC_value, ', ', dim(tmp_table)[1], ' genes were left. The best absolute logFC value of these remaining genes was ', round(max(tmp_table$logFC), digits = 4), '.')
307307

308308
topTables[[paste0('pvalue_LTE_', tmp_p_value, '_logFC_GTE_', tmp_logFC_value)]][[paste0('treatment_', tmp_treatment)]] <- tmp_table
309309
}
@@ -340,19 +340,19 @@ for (tmp_group_name in topTables_group_names) {
340340
category.names = treatments,
341341
force.unique = TRUE,
342342
main = paste0('DEG per treatment'),
343-
fontfamily = "sans",
344-
main.fontfamily = "sans",
345-
main.fontface = "bold",
343+
fontfamily = 'sans',
344+
main.fontfamily = 'sans',
345+
main.fontface = 'bold',
346346
main.cex = 0.3,
347-
sub.fontfamily = "sans",
348-
cat.fontfamily = "sans",
347+
sub.fontfamily = 'sans',
348+
cat.fontfamily = 'sans',
349349
cex = 0.3,
350350
cat.cex = 0.3,
351351
cat.dist = 0.05,
352352
lwd = 1,
353353
filename = paste0(tmp_groupGraphicsDir, '/venndiagram.png'),
354354
output = TRUE,
355-
imagetype="png",
355+
imagetype='png',
356356
width = graphics_dimensions[1],
357357
height = graphics_dimensions[2],
358358
resolution = 300,
@@ -385,7 +385,7 @@ for (tmp_group_name in topTables_group_names) {
385385
overlapping_genes[[tmp_group_name]][[toString(tmp_combinations[,tmp_combination])]] <- intersect(topTables[[tmp_group_name]][[tmp_combinations[,tmp_combination][1]]]$ensembl_gene_id, topTables[[tmp_group_name]][[tmp_combinations[,tmp_combination][2]]]$ensembl_gene_id)
386386
overlapping_genes[[tmp_group_name]][[toString(tmp_combinations[,tmp_combination])]] <- unique(overlapping_genes[[tmp_group_name]][[toString(tmp_combinations[,tmp_combination])]])
387387

388-
cat(paste0(Sys.time(), ': ', length(overlapping_genes[[tmp_group_name]][[toString(tmp_combinations[,tmp_combination])]]), ' genes overlap between ', tmp_combinations[,tmp_combination][1], ' and ', tmp_combinations[,tmp_combination][2], '.'), fill = TRUE)
388+
print_to_log(length(overlapping_genes[[tmp_group_name]][[toString(tmp_combinations[,tmp_combination])]]), ' genes overlap between ', tmp_combinations[,tmp_combination][1], ' and ', tmp_combinations[,tmp_combination][2], '.')
389389
}
390390
cat('\n')
391391

@@ -403,7 +403,7 @@ for (tmp_group_name in topTables_group_names) {
403403
}
404404
overlapping_genes[[tmp_group_name]]$all <- unique(overlapping_genes[[tmp_group_name]]$all)
405405

406-
cat(paste0(Sys.time(), ': ', length(overlapping_genes[[tmp_group_name]]$all), ' genes overlap in total for the following filter set: ', tmp_group_name, '.'), fill = TRUE)
406+
print_to_log(length(overlapping_genes[[tmp_group_name]]$all), ' genes overlap in total for the following filter set: ', tmp_group_name, '.')
407407
cat('\n')
408408

409409

@@ -431,7 +431,7 @@ for (tmp_group_name in topTables_group_names) {
431431
overlapping_genes[[tmp_group_name]]$shared <- eval(parse(text = tmp_expression))
432432
overlapping_genes[[tmp_group_name]]$shared <- unique(overlapping_genes[[tmp_group_name]]$shared)
433433

434-
cat(paste0(Sys.time(), ': ', length(overlapping_genes[[tmp_group_name]]$shared), ' genes overlap in all treatments for the following filter set: ', tmp_group_name, '.'), fill = TRUE)
434+
print_to_log(length(overlapping_genes[[tmp_group_name]]$shared), ' genes overlap in all treatments for the following filter set: ', tmp_group_name, '.')
435435
cat('\n')
436436
}
437437

@@ -459,7 +459,7 @@ for (tmp_group_name in topTables_group_names) {
459459
}
460460

461461
topTables[[tmp_group_name]][[tmp_group_df_name]] <- tmp_df
462-
cat(paste0(Sys.time(), ': ', sum(as.logical(tmp_df$unique)), ' genes were unique for the filter set ', tmp_group_name, ' and the treatment ', tmp_group_df_name, '.'), fill = TRUE)
462+
print_to_log(sum(as.logical(tmp_df$unique)), ' genes were unique for the filter set ', tmp_group_name, ' and the treatment ', tmp_group_df_name, '.')
463463
}
464464
cat('\n')
465465
}
@@ -482,7 +482,7 @@ for (tmp_group_name in names(topTables)) {
482482

483483
for (tmp_df_name in names(topTables[[tmp_group_name]])) {
484484
write.csv(topTables[[tmp_group_name]][[tmp_df_name]], file = paste0(tmp_groupResultsDir, '/topTable_', tmp_df_name, '.csv'), row.names = FALSE)
485-
cat(paste0(Sys.time(), ': The file ', paste0(tmp_groupResultsDir, '/topTable_', tmp_df_name, '.csv'), ' was created.'), fill = TRUE)
485+
print_to_log('The file ', paste0(tmp_groupResultsDir, '/topTable_', tmp_df_name, '.csv'), ' was created.')
486486
}
487487
cat('\n')
488488
}
@@ -500,7 +500,7 @@ for (tmp_group_name in names(overlapping_genes)) {
500500

501501
for (tmp_list_name in names(overlapping_genes[[tmp_group_name]])) {
502502
write.csv(overlapping_genes[[tmp_group_name]][[tmp_list_name]], file = paste0(tmp_groupResultsDir, '/overlappingGenes_', tmp_list_name, '.csv'), row.names = FALSE)
503-
cat(paste0(Sys.time(), ': The file ', paste0(tmp_groupResultsDir, '/overlappingGenes_', tmp_list_name, '.csv'), ' was created.'), fill = TRUE)
503+
print_to_log('The file ', paste0(tmp_groupResultsDir, '/overlappingGenes_', tmp_list_name, '.csv'), ' was created.')
504504
}
505505
cat('\n')
506506
}

_annotation-file-generator.R

Lines changed: 33 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,34 @@
1-
# ####################################
2-
# Create an up-to-date annotation file
3-
# ####################################
4-
5-
# Install required packages
6-
if (!require("BiocManager", quietly = TRUE))
7-
install.packages("BiocManager")
8-
9-
BiocManager::install("biomaRt", update = TRUE, ask = FALSE, checkBuilt = TRUE)
10-
11-
require(biomaRt)
12-
13-
# Get annotation table
14-
ensembl <- useEnsembl(biomart = "genes", dataset = "hsapiens_gene_ensembl")
15-
16-
annotLookup <- getBM(
17-
mart = ensembl,
18-
attributes = c(
19-
'agilent_sureprint_g3_ge_8x60k_v2',
20-
'ensembl_gene_id',
21-
'external_gene_name'
22-
)
23-
)
24-
25-
# Export annotation table as tsv file
26-
today <- format(Sys.Date(), format="%Y-%m")
27-
28-
write.table(
29-
annotLookup,
30-
paste0('Human_agilent_sureprint_g3_ge_8x60k_v2_', gsub("-", "_", as.character(today)), '.tsv'),
31-
sep = '\t',
32-
row.names = FALSE,
33-
quote = FALSE
1+
# ####################################
2+
# Create an up-to-date annotation file
3+
# ####################################
4+
5+
# Install required packages
6+
if (!require('BiocManager', quietly = TRUE))
7+
install.packages('BiocManager')
8+
9+
BiocManager::install('biomaRt', update = TRUE, ask = FALSE, checkBuilt = TRUE)
10+
11+
require(biomaRt)
12+
13+
# Get annotation table
14+
ensembl <- useEnsembl(biomart = 'genes', dataset = 'hsapiens_gene_ensembl')
15+
16+
annotLookup <- getBM(
17+
mart = ensembl,
18+
attributes = c(
19+
'agilent_sureprint_g3_ge_8x60k_v2',
20+
'ensembl_gene_id',
21+
'external_gene_name'
22+
)
23+
)
24+
25+
# Export annotation table as tsv file
26+
today <- format(Sys.Date(), format='%Y-%m')
27+
28+
write.table(
29+
annotLookup,
30+
paste0('Human_agilent_sureprint_g3_ge_8x60k_v2_', gsub('-', '_', as.character(today)), '.tsv'),
31+
sep = '\t',
32+
row.names = FALSE,
33+
quote = FALSE
3434
)

0 commit comments

Comments
 (0)