rajlabmssm / echodata Goto Github PK
View Code? Open in Web Editor NEWechoverse module: Example data.
Home Page: https://rajlabmssm.github.io/echodata
echoverse module: Example data.
Home Page: https://rajlabmssm.github.io/echodata
https://github.com/RajLabMSSM/echodata/actions/runs/3089603532/jobs/4997405341#step:18:1
tidyr (NA -> 1.2.1) [CRAN]
Installing 1 packages: tidyr
Error: Failed to install 'echodata' from local:
type 'binary' is not supported on this platform
Execution halted
local_finemap <- portal_query(
dataset_types = "GWAS",
phenotypes = c("schizophrenia", "parkinson"),
file_types = "multi_finemap",
loci = c("BST1", "CHRNB1", "LRRK2"),
LD_panels = "1KGphase3"
)
Fetching echolocatoR Fine-mapping Portal study metadata.
+ 2 datasets remain after filtering.
+ Searching for multi_finemap files...
OK (HTTP 200).+ 0 unique files identified.
+ Downloading 0 files...
+ Returning local file paths.
These depends are currently failing on Bioc devel (3.17):
ggtree (NA -> 3.7.0) [CRAN]
orthogene (NA -> 1.5.0) [CRAN]
I can fix the latter but will have to wait for the former to be fixed.
Using the official GitHub API (via the R package gh
) will avoid file download limits imposed by GitHub, as you can supply your GH token.
Coming across this after some updates #11
Seems to be related to recursion rather than actual memory usage:
https://stackoverflow.com/questions/14719349/error-c-stack-usage-is-too-close-to-the-limit
This is the counterpart to rsids_to_coords
, which is already implemented.
DR calculated from UKBB 150k
I would liKe to implement this on a future.
https://www.nature.com/articles/s41586-022-04965-x
import_topSNPs doesn't seem to like if you change the positional column name from BP even if you change the input too:
Nalls_top_SNPs
setnames(Nalls_top_SNPs,"BP","SNP_pos")
top_SNPs <- import_topSNPs(
# topSS = "~/Desktop/Fine_Mapping/Data/GWAS/Nalls23andMe_2019/Nalls2019_TableS2.xlsx",
topSS = Nalls_top_SNPs,
chrom_col = "CHR",
position_col = "SNP_pos",
snp_col="SNP",
pval_col="P, all studies",
effect_col="Beta, all studies",
gene_col="Nearest Gene",
locus_col = "Nearest Gene",
grouping_vars = c("Locus"),
remove_variants = "rs34637584")
I think this is down to the munge functionality, where you over ride the position_col
variable's value (line 73)
This function got lost at some point, but it's used in the QTL vignette
#' Generate a named list of [e]gene-locus pairs
#'
#' @export
gene_locus_list <- function(top_SNPs){
setNames(top_SNPs$Locus, top_SNPs$Gene)
}
I find a bit painful having to generate the Gene Locus columns from the input GWAS every time.
I would like to see import_topSNPs being able to generate that for me rather than passing Gene Locus, or a function called make_topSNPs that does it for you.
I came up with a function to do this, basically wrapping the function here https://github.com/oyhel/vautils
This is the approach I used
make_topSNPs = function(data,
build = "hg19",
write.out = T,
custom_gene = NULL,
.metadata_file = metadata) {
# I need to do this in advance to enter vautils function
data = data %>%
dplyr::rename(rsid = `#SNP`,
chromosome = CHR,
position = POS)
snps_mapped = vautils::find_nearest_gene(as.data.frame(data),
build=build,
collapse=F,
snp = "rsid",
flanking=1000)
if(any(snps_mapped$distance == "intergenic")) {
snps_mapped = snps_mapped %>%
mutate(distance = recode(distance, "intergenic" = "0"))
}
snps_mapped_filt = snps_mapped %>%
mutate(distance = abs(as.numeric(distance))) %>%
arrange(distance) %>%
group_by(rsid) %>%
filter(row_number() == 1) %>%
ungroup()
if (!is.null(custom_gene)) {
custom_gene_filt = snps_mapped %>%
dplyr::filter(GENE %in% custom_gene)
# Remove the picked gene from vautils
snps_mapped_filt = snps_mapped_filt %>%
dplyr::filter(!((chromosome == custom_gene_filt$chromosome) & (position == custom_gene_filt$position)))
snps_mapped_filt = rbind(snps_mapped_filt, custom_gene_filt)
}
snps_mapped_filt = data.frame(Locus = snps_mapped_filt$GENE,
Gene = snps_mapped_filt$GENE,
CHR = snps_mapped_filt$chromosome,
POS = snps_mapped_filt$position,
SNP = snps_mapped_filt$rsid)
tmp_2 = data %>%
dplyr::filter(rsid %in% snps_mapped_filt$SNP) %>%
dplyr::select(SNP = rsid, Effect, P = Pval)
mydf = snps_mapped_filt %>% inner_join(tmp_2)
if (write.out) {
fwrite(mydf, paste(.metadata_file[1],"top_SNPs.txt", sep = "/"),
col.names = T,
row.names = F,
sep ="\t",
quote = F)
}
return(mydf)
}
Add dataset used in QTL vignette:
fullSS_path <- file.path(tempdir(),
"Microglia_all_regions_Kunkle_2019_COLOC.snp-level_select.tsv.gz")
# ## Download example data
if(!file.exists(fullSS_path)){
download.file("https://github.com/RajLabMSSM/Fine_Mapping_Shiny/raw/master/www/Microglia_all_regions_Kunkle_2019_COLOC.snp-level_select.tsv.gz", fullSS_path)
}
There is a bug in standardise_gene_locus_cols(), it assumes that the snp and chromosome column names are always SNP and CHR even though those names are inputted to the parent function so it should inherit from there.
Lines of code with issue in standardise_gene_locus_cols() [lines 169-170, 176-178]
top_SNPs <- dplyr::mutate(top_SNPs,
Locus=paste0("locus_chr",CHR,"_",SNP),
Gene=paste0("locus_chr",CHR,"_",SNP))
Any parquet functions cause a segfault error when running unit tests with "Test" or "Check" buttons in Rstudio, but not when running manually or with "Run test" button.
Functions work in all conditions.
## devtools::test()
dat <- echodata::BST1
path <- echodata::write_parquet(dat)
#### Read the parquet file back into R ####
dat2 <- echodata::read_parquet(path=path)
==> devtools::test()
ℹ Testing echodata
✔ | F W S OK | Context
⠏ | 0 | assign_lead_SNP + leadSNP missing. Assigning new one by min p-value.
✔ | 4 | assign_lead_SNP
✔ | 1 | column_dictionary
⠏ | 0 | construct_colmap Assuming fullSS_path summary stats have already been processed with MungeSumstats.
Assuming fullSS_path summary stats have already been processed with MungeSumstats.
✔ | 3 | construct_colmap
⠏ | 0 | coords_to_rsids Searching for RSIDs using: hg19
Loading required namespace: SNPlocs.Hsapiens.dbSNP144.GRCh37
5 / 5 SNPs annotated with RSIDs.
✔ | 5 | coords_to_rsids [6.6s]
✔ | 3 | createDT
⠏ | 0 | dt_to_granges Converting dat to GRanges object.
dat is already a GRanges object.
✔ | 6 | dt_to_granges
⠏ | 0 | example_fullSS Writing file to ==> /var/folders/rd/rbc_wrdj4k3djf3brk6z0_dc0000gp/T//RtmpgfuhvU/nalls2019.fullSS_subset.tsv
Writing file to ==> /var/folders/rd/rbc_wrdj4k3djf3brk6z0_dc0000gp/T//RtmpgfuhvU/kunkle2019.fullSS_subset.tsv
✔ | 4 | example_fullSS
⠏ | 0 | extract_loci + Mapping colnames from MungeSumstats ==> echolocatoR
BIN1
CLU
CR1*
EPHA1
MS4A2
PICALM
PTK2B
SPI1*
Locus SNPs
1 BIN1 55
2 CLU 17
3 CR1* 22
4 EPHA1 5
5 MS4A2 210
6 PICALM 61
7 PTK2B 17
8 SPI1* 149
✔ | 2 | extract_loci
⠏ | 0 | fillNA_CS_PP + Filling NAs in CS cols with 0.
+ Filling NAs in PP cols with 0.
✔ | 4 | fillNA_CS_PP
⠏ | 0 | filter_snps FILTER:: Filtering by SNP features.
+ FILTER:: Post-filtered data: 2913 x 26
FILTER:: Filtering by SNP features.
+ FILTER:: Post-filtered data: 6216 x 26
FILTER:: Filtering by SNP features.
+ FILTER:: Removing specified variants: rs4541502,rs34559912,rs4389574,rs35519415,rs3756246
+ FILTER:: Post-filtered data: 2908 x 26
FILTER:: Filtering by SNP features.
+ FILTER:: Post-filtered data: 2913 x 26
FILTER:: Filtering by SNP features.
BIOMART:: Trimming data to only include SNPs within gene coordinates.
BIOMART:: 3154 SNPs left after trimming.
+ leadSNP missing. Assigning new one by min p-value.
+ FILTER:: Post-filtered data: 1610 x 26
⠼ | 5 | filter_snps FILTER:: Filtering by SNP features.
BIOMART:: Trimming data to only include SNPs within gene coordinates.
BIOMART:: 0 SNPs left after trimming.
+ leadSNP missing. Assigning new one by min p-value.
+ FILTER:: Post-filtered data: 0 x 26
⠴ | 6 | filter_snps FILTER:: Filtering by SNP features.
BIOMART:: Trimming data to only include SNPs within gene coordinates.
BIOMART:: 3313 SNPs left after trimming.
+ FILTER:: Post-filtered data: 1727 x 26
✔ | 7 | filter_snps [1.3s]
⠏ | 0 | find_consensus_snps_no_polyfun Identifying UCS and Consensus SNPs without PolyFun
Identifying Consensus SNPs...
+ support_thresh = 2
+ Calculating mean Posterior Probability (mean.PP)...
+ 3 fine-mapping methods used.
+ 7 Credible Set SNPs identified.
+ 1 Consensus SNPs identified.
✔ | 3 | find_consensus_snps_no_polyfun
⠏ | 0 | find_consensus_snps Identifying Consensus SNPs...
+ support_thresh = 2
+ Calculating mean Posterior Probability (mean.PP)...
+ 4 fine-mapping methods used.
+ 7 Credible Set SNPs identified.
+ 3 Consensus SNPs identified.
✔ | 2 | find_consensus_snps
✔ | 4 | find_top_consensus
⠏ | 0 | gene_locus_list WARNING: Dropping 97 loci not present in topSNPs:
- ASXL3_ASXL3
- BAG3_BAG3
- BIN3_BIN3
- BRIP1_BRIP1
- BST1_BST1
- C5orf24_C5orf24
- CAB39L_CAB39L
- CAMK2D_CAMK2D
- CASC16_CASC16
- CD19_CD19
- CHD9_CHD9
- CHRNB1_CHRNB1
- CLCN3_CLCN3
- CNTN1_CNTN1
- CRHR1_CRHR1
- CRLS1_CRLS1
- CTSB_CTSB
- DDRGK1_DDRGK1
- DLG2_DLG2
- DNAH17_DNAH17
- DYRK1A_DYRK1A
- ELOVL7_ELOVL7
- FAM171A2_FAM171A2
- FAM47E_FAM47E
- FAM47E-STBD1_FAM47E-STBD1
- FAM49B_FAM49B
- FBRSL1_FBRSL1
- FCGR2A_FCGR2A
- FGD4_FGD4
- FGF20_FGF20
- FYN_FYN
- GAK_GAK
- GALC_GALC
- GBAP1_GBAP1
- GBF1_GBF1
- GCH1_GCH1
- GPNMB_GPNMB
- GS1-124K5.11_GS1-124K5.11
- GXYLT1_GXYLT1
- HIP1R_HIP1R
- HLA-DRB5_HLA-DRB5
- IGSF9B_IGSF9B
- INPP5F_INPP5F
- IP6K2_IP6K2
- ITGA8_ITGA8
- ITPKB_ITPKB
- KANSL1_KANSL1
- KCNIP3_KCNIP3
- KCNS3_KCNS3
- KPNA1_KPNA1
- KRTCAP2_KRTCAP2
- LCORL_LCORL
- LINC00693_LINC00693
- LOC100131289_LOC100131289
- LRRK2_LRRK2
- MAP3K14_MAP3K14
- MAP4K4_MAP4K4
- MAPT-AS1_MAPT-AS1
- MBNL2_MBNL2
- MCCC1_MCCC1
- MED12L_MED12L
- MEX3C_MEX3C
- MIPOL1_MIPOL1
- NOD2_NOD2
- NSF_NSF
- NUCKS1_NUCKS1
- PAM_PAM
- PMVK_PMVK
- RAB29_RAB29
- RETREG3_RETREG3
- RIMS1_RIMS1
- RIT2_RIT2
- RNF141_RNF141
- RPS12_RPS12
- RPS6KL1_RPS6KL1
- SATB1_SATB1
- SCAF11_SCAF11
- SCARB2_SCARB2
- SEMA4A_SEMA4A
- SETD1A_SETD1A
- SH3GL2_SH3GL2
- SIPA1L2_SIPA1L2
- SLC44A4_SLC44A4
- SNCA_SNCA
- SPPL2B_SPPL2B
- SPTSSB_SPTSSB
- STK39_STK39
- SYT17_SYT17
- TMEM163_TMEM163
- TMEM175_TMEM175
- TRIM40_TRIM40
- UBAP2_UBAP2
- UBTF_UBTF
- VAMP4_VAMP4
- VPS13C_VPS13C
- WNT3_WNT3
- ZNF608_ZNF608
Reassigning gene-specific locus names.
Reassigning gene-specific locus names.
✔ | 3 | gene_locus_list
✔ | 1 | get_data
✔ | 3 | get_header
⠏ | 0 | get_Nalls2019_loci Writing fine-mapped locus data ==> /var/folders/rd/rbc_wrdj4k3djf3brk6z0_dc0000gp/T//RtmpgfuhvU/Nalls23andMe_2019/BST1.multi_finemap.csv.gz
Writing fine-mapped locus data ==> /var/folders/rd/rbc_wrdj4k3djf3brk6z0_dc0000gp/T//RtmpgfuhvU/Nalls23andMe_2019/LRRK2.multi_finemap.csv.gz
Writing fine-mapped locus data ==> /var/folders/rd/rbc_wrdj4k3djf3brk6z0_dc0000gp/T//RtmpgfuhvU/Nalls23andMe_2019/MEX3C.multi_finemap.csv.gz
✔ | 2 | get_Nalls2019_loci
⠏ | 0 | get_sample_size Preparing sample size column (N).
Computing effective sample size using the LDSC method:
Neff = (N_CAS+N_CON) * (N_CAS/(N_CAS+N_CON)) / mean((N_CAS/(N_CAS+N_CON))[(N_CAS+N_CON)==max(N_CAS+N_CON)]))
+ Mapping colnames from MungeSumstats ==> echolocatoR
Preparing sample size column (N).
Computing effective sample size using the LDSC method:
Neff = (N_CAS+N_CON) * (N_CAS/(N_CAS+N_CON)) / mean((N_CAS/(N_CAS+N_CON))[(N_CAS+N_CON)==max(N_CAS+N_CON)]))
+ Mapping colnames from MungeSumstats ==> echolocatoR
Preparing sample size column (N).
Computing effective sample size using the LDSC method:
Neff = (N_CAS+N_CON) * (N_CAS/(N_CAS+N_CON)) / mean((N_CAS/(N_CAS+N_CON))[(N_CAS+N_CON)==max(N_CAS+N_CON)]))
+ Mapping colnames from MungeSumstats ==> echolocatoR
Preparing sample size column (N).
Computing effective sample size using the LDSC method:
Neff = (N_CAS+N_CON) * (N_CAS/(N_CAS+N_CON)) / mean((N_CAS/(N_CAS+N_CON))[(N_CAS+N_CON)==max(N_CAS+N_CON)]))
+ Mapping colnames from MungeSumstats ==> echolocatoR
Preparing sample size column (N).
Computing effective sample size using the LDSC method:
Neff = (N_CAS+N_CON) * (N_CAS/(N_CAS+N_CON)) / mean((N_CAS/(N_CAS+N_CON))[(N_CAS+N_CON)==max(N_CAS+N_CON)]))
+ Mapping colnames from MungeSumstats ==> echolocatoR
Preparing sample size column (N).
Computing effective sample size using the GIANT method:
Neff = 2 / (1/N_CAS + 1/N_CON)
+ Mapping colnames from MungeSumstats ==> echolocatoR
Preparing sample size column (N).
Computing effective sample size using the METAL method:
Neff = 4 / (1/N_CAS + 1/N_CON)
+ Mapping colnames from MungeSumstats ==> echolocatoR
Preparing sample size column (N).
Computing sample size using the sum method:
N = N_CAS + N_CON
+ Mapping colnames from MungeSumstats ==> echolocatoR
Preparing sample size column (N).
Assigning N=10000 for all SNPs.
+ Mapping colnames from MungeSumstats ==> echolocatoR
Preparing sample size column (N).
Numeric vector supplied to compute_n.
Preparing sample size column (N).
Numeric vector supplied to compute_n.
✔ | 13 | get_sample_size
⠏ | 0 | get_SNPgroup_counts All loci (75) :
Total.SNPs nom.sig.GWAS sig.GWAS
4948.16 924.68 82.36
CS Consensus topConsensus
7.88 2.69 1.47
topConsensus.leadGWAS
0.41
Loci with at least one Consensus SNP (69) :
Total.SNPs nom.sig.GWAS sig.GWAS
5019.07 911.41 84.28
CS Consensus topConsensus
7.77 2.93 1.59
topConsensus.leadGWAS
0.45
✔ | 1 | get_SNPgroup_counts
⠏ | 0 | granges_to_bed Converting dat to GRanges object.
Converting 1 GRanges object to separate BED files.
Saving BED file ==> /var/folders/rd/rbc_wrdj4k3djf3brk6z0_dc0000gp/T//RtmpgfuhvU/granges1.bed.txt
✔ | 1 | granges_to_bed
⠏ | 0 | import_topSNPs Renaming column: BP ==> POS
Renaming column: P, all studies ==> P
Renaming column: Beta, all studies ==> Effect
Renaming column: Nearest Gene ==> Locus
Renaming column: QTL Nominated Gene (nearest QTL) ==> Gene
[1] "+ Assigning Gene and Locus independently."
Standardising column headers.
First line of summary statistics file:
SNP CHR POS Locus Gene Effect allele Other allele Effect allele frequency Effect SE, all studies P P, COJO, all studies P, random effects, all studies P, Conditional 23AndMe only P, 23AndMe only I2, all studies Freq1, previous studies Beta, previous studies StdErr, previous studies P, previous studies I2, previous studies Freq1, new studies Beta, new studies StdErr, new studies P, new studies I2, new studies Passes pooled 23andMe QC Known GWAS locus within 1MB Failed final filtering and QC Locus within 250KB Locus Number
Returning unmapped column names without making them uppercase.
+ Mapping colnames from MungeSumstats ==> echolocatoR
⠋ | 1 | import_topSNPs Renaming column: BP ==> POS
Renaming column: P, all studies ==> P
Renaming column: Beta, all studies ==> Effect
Renaming column: Nearest Gene ==> Locus
Renaming column: QTL Nominated Gene (nearest QTL) ==> Gene
[1] "+ Assigning Gene and Locus independently."
Standardising column headers.
First line of summary statistics file:
SNP CHR POS Locus Gene Effect allele Other allele Effect allele frequency Effect SE, all studies P P, COJO, all studies P, random effects, all studies P, Conditional 23AndMe only P, 23AndMe only I2, all studies Freq1, previous studies Beta, previous studies StdErr, previous studies P, previous studies I2, previous studies Freq1, new studies Beta, new studies StdErr, new studies P, new studies I2, new studies Passes pooled 23andMe QC Known GWAS locus within 1MB Failed final filtering and QC Locus within 250KB Locus Number
Returning unmapped column names without making them uppercase.
+ Mapping colnames from MungeSumstats ==> echolocatoR
✔ | 6 | import_topSNPs [1.6s]
⠏ | 0 | is_empty Subset file looks good.
No SNPs identified within the summary stats file that met your criterion. :o
✔ | 6 | is_empty
✔ | 2 | is_ggbio
✔ | 2 | is_ggplot
✔ | 2 | is_url
⠏ | 0 | limit_snps Limiting to only 500 SNPs.
+ Reduced number of SNPs: 6,216 ==> 500
✔ | 2 | limit_snps
⠏ | 0 | melt_finemapping_results Melting PP and CS from 5 fine-mapping methods.
✔ | 4 | melt_finemapping_results
⠏ | 0 | merge_finemapping_results + Gathering all fine-mapping results from storage...
+ 3 multi-finemap files found.
+ Removing duplicate Multi-finemap files per locus.
+ Importing results... RtmpgfuhvU
+ Importing results... RtmpgfuhvU
+ Importing results... RtmpgfuhvU
Identifying Consensus SNPs...
+ support_thresh = 2
+ Calculating mean Posterior Probability (mean.PP)...
+ 4 fine-mapping methods used.
+ 20 Credible Set SNPs identified.
+ 9 Consensus SNPs identified.
+ Saving merged results ==> /var/folders/rd/rbc_wrdj4k3djf3brk6z0_dc0000gp/T//RtmpgfuhvU/file13a997e13e3bdmerged_results.csv.gz
✔ | 4 | merge_finemapping_results
✔ | 5 | merge_robust
⠏ | 0 | mungesumstats + Mapping colnames from MungeSumstats ==> echolocatoR
✔ | 5 | mungesumstats
⠏ | 0 | parquet Loading required namespace: arrow
Failed with error: 'bad value'
Writing parquet file ==> /var/folders/rd/rbc_wrdj4k3djf3brk6z0_dc0000gp/T//RtmpgfuhvU/file13a994bcccdf5.parquet
*** caught segfault ***
address 0x0, cause 'invalid permissions'
Traceback:
1: compute__GetFunctionNames()
2: list_compute_functions()
3: create_binding_cache()
4: fun(libname, pkgname)
5: doTryCatch(return(expr), name, parentenv, handler)
6: tryCatchOne(expr, names, parentenv, handlers[[1L]])
7: tryCatchList(expr, classes, parentenv, handlers)
8: tryCatch(fun(libname, pkgname), error = identity)
9: runHook(".onLoad", env, package.lib, package)
10: loadNamespace(x)
11: echodata::write_parquet(dat)
12: eval(code, test_env)
13: eval(code, test_env)
14: withCallingHandlers({ eval(code, test_env) if (!handled && !is.null(test)) { skip_empty() }}, expectation = handle_expectation, skip = handle_skip, warning = handle_warning, message = handle_message, error = handle_error)
15: doTryCatch(return(expr), name, parentenv, handler)
16: tryCatchOne(expr, names, parentenv, handlers[[1L]])
17: tryCatchList(expr, names[-nh], parentenv, handlers[-nh])
18: doTryCatch(return(expr), name, parentenv, handler)
19: tryCatchOne(tryCatchList(expr, names[-nh], parentenv, handlers[-nh]), names[nh], parentenv, handlers[[nh]])
20: tryCatchList(expr, classes, parentenv, handlers)
21: tryCatch(withCallingHandlers({ eval(code, test_env) if (!handled && !is.null(test)) { skip_empty() }}, expectation = handle_expectation, skip = handle_skip, warning = handle_warning, message = handle_message, error = handle_error), error = handle_fatal, skip = function(e) { })
22: test_code(desc, code, env = parent.frame(), default_reporter = local_interactive_reporter())
23: test_that("read/write_parquet works", { dat <- echodata::BST1 path <- echodata::write_parquet(dat) dat2 <- echodata::read_parquet(path = path)})
24: eval(code, test_env)
25: eval(code, test_env)
26: withCallingHandlers({ eval(code, test_env) if (!handled && !is.null(test)) { skip_empty() }}, expectation = handle_expectation, skip = handle_skip, warning = handle_warning, message = handle_message, error = handle_error)
27: doTryCatch(return(expr), name, parentenv, handler)
28: tryCatchOne(expr, names, parentenv, handlers[[1L]])
29: tryCatchList(expr, names[-nh], parentenv, handlers[-nh])
30: doTryCatch(return(expr), name, parentenv, handler)
31: tryCatchOne(tryCatchList(expr, names[-nh], parentenv, handlers[-nh]), names[nh], parentenv, handlers[[nh]])
32: tryCatchList(expr, classes, parentenv, handlers)
33: tryCatch(withCallingHandlers({ eval(code, test_env) if (!handled && !is.null(test)) { skip_empty() }}, expectation = handle_expectation, skip = handle_skip, warning = handle_warning, message = handle_message, error = handle_error), error = handle_fatal, skip = function(e) { })
34: test_code(test = NULL, code = exprs, env = env, default_reporter = StopReporter$new())
35: source_file(path, env = env(env), desc = desc, error_call = error_call)
36: FUN(X[[i]], ...)
37: lapply(test_paths, test_one_file, env = env, desc = desc, error_call = error_call)
38: doTryCatch(return(expr), name, parentenv, handler)
39: tryCatchOne(expr, names, parentenv, handlers[[1L]])
40: tryCatchList(expr, classes, parentenv, handlers)
41: tryCatch(code, testthat_abort_reporter = function(cnd) { cat(conditionMessage(cnd), "\n") NULL})
42: with_reporter(reporters$multi, lapply(test_paths, test_one_file, env = env, desc = desc, error_call = error_call))
43: test_files_serial(test_dir = test_dir, test_package = test_package, test_paths = test_paths, load_helpers = load_helpers, reporter = reporter, env = env, stop_on_failure = stop_on_failure, stop_on_warning = stop_on_warning, desc = desc, load_package = load_package, error_call = error_call)
44: test_files(test_dir = path, test_paths = test_paths, test_package = package, reporter = reporter, load_helpers = load_helpers, env = env, stop_on_failure = stop_on_failure, stop_on_warning = stop_on_warning, load_package = load_package, parallel = parallel)
45: test_dir(test_path, package = package, reporter = reporter, ..., load_package = load_package)
46: testthat::test_local(pkg$path, filter = filter, stop_on_failure = stop_on_failure, load_package = load_package, ...)
47: devtools::test()
An irrecoverable exception occurred. R is aborting now ...
Exited with status 139.
R version 4.3.1 (2023-06-16)
Platform: aarch64-apple-darwin20 (64-bit)
Running under: macOS Ventura 13.6
Matrix products: default
BLAS: /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib
LAPACK: /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/lib/libRlapack.dylib; LAPACK version 3.11.0
locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
time zone: Europe/London
tzcode source: internal
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] echodata_0.99.17
loaded via a namespace (and not attached):
[1] DBI_1.1.3 piggyback_0.1.5 bitops_1.0-7 testthat_3.2.0
[5] rlang_1.1.1 magrittr_2.0.3 matrixStats_1.0.0 compiler_4.3.1
[9] vctrs_0.6.4 echogithub_0.99.2 stringr_1.5.0 pkgconfig_2.0.3
[13] crayon_1.5.2 fastmap_1.1.1 dbplyr_2.3.4 XVector_0.41.1
[17] utf8_1.2.3 Rsamtools_2.17.0 rmarkdown_2.25 tzdb_0.4.0
[21] bit_4.0.5 waldo_0.5.1 purrr_1.0.2 xfun_0.40
[25] rvcheck_0.2.1 zlibbioc_1.47.0 cachem_1.0.8 badger_0.2.3
[29] GenomeInfoDb_1.37.6 jsonlite_1.8.7 DelayedArray_0.27.10 BiocParallel_1.35.4
[33] parallel_4.3.1 R6_2.5.1 stringi_1.7.12 RColorBrewer_1.1-3
[37] rtracklayer_1.61.1 pkgload_1.3.3 brio_1.1.3 GenomicRanges_1.53.2
[41] assertthat_0.2.1 Rcpp_1.0.11 SummarizedExperiment_1.31.1 knitr_1.44
[45] R.utils_2.12.2 readr_2.1.4 IRanges_2.35.3 dlstats_0.1.7
[49] Matrix_1.6-1.1 tidyselect_1.2.0 rstudioapi_0.15.0 abind_1.4-5
[53] yaml_2.3.7 codetools_0.2-19 lattice_0.21-9 tibble_3.2.1
[57] Biobase_2.61.0 evaluate_0.22 desc_1.4.2 zip_2.3.0
[61] Biostrings_2.69.2 pillar_1.9.0 BiocManager_1.30.22 MatrixGenerics_1.13.1
[65] renv_1.0.3 DT_0.30 stats4_4.3.1 generics_0.1.3
[69] rprojroot_2.0.3 RCurl_1.98-1.12 S4Vectors_0.39.3 hms_1.1.3
[73] ggplot2_3.4.4 munsell_0.5.0 scales_1.2.1 BiocStyle_2.29.2
[77] glue_1.6.2 tools_4.3.1 BiocIO_1.11.0 data.table_1.14.8
[81] openxlsx_4.2.5.2 BSgenome_1.69.0 GenomicAlignments_1.37.0 fs_1.6.3
[85] XML_3.99-0.14 grid_4.3.1 tidyr_1.3.0 gh_1.4.0
[89] colorspace_2.1-0 GenomeInfoDbData_1.2.11 restfulr_0.0.15 cli_3.6.1
[93] rworkflows_0.99.14 fansi_1.0.5 S4Arrays_1.1.6 arrow_13.0.0.1
[97] dplyr_1.1.3 gtable_0.3.4 R.methodsS3_1.8.2 yulab.utils_0.1.0
[101] digest_0.6.33 BiocGenerics_0.47.0 SparseArray_1.1.12 rjson_0.2.21
[105] htmlwidgets_1.6.2 memoise_2.0.1.9000 htmltools_0.5.6.1 R.oo_1.25.0
[109] lifecycle_1.0.3 here_1.0.1 bit64_4.0.5
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.