Coder Social home page Coder Social logo

crisprverse / crisprscore Goto Github PK

View Code? Open in Web Editor NEW
11.0 2.0 2.0 82.66 MB

On-Target and Off-Target Scoring Algorithms for CRISPR gRNAs

License: MIT License

R 21.57% Shell 0.45% Python 75.45% Makefile 0.11% Batchfile 0.13% TeX 2.30%
bioconductor bioconductor-package crispr crispr-cas9 crispr-design crispr-target genomics grna grna-sequence grna-sequences

crisprscore's Introduction

crisprScore: on-target and off-target scoring for CRISPR gRNAs

Authors: Jean-Philippe Fortin, Aaron Lun, Luke Hoberecht, Pirunthan Perampalan

Date: July 1, 2022

Overview

The crisprScore package provides R wrappers of several on-target and off-target scoring methods for CRISPR guide RNAs (gRNAs). The following nucleases are supported: SpCas9, AsCas12a, enAsCas12a, and RfxCas13d (CasRx). The available on-target cutting efficiency scoring methods are RuleSet1, RuleSet3, Azimuth, DeepHF, DeepSpCas9, DeepCpf1, enPAM+GB, CRISPRscan and CRISPRater. Both the CFD and MIT scoring methods are available for off-target specificity prediction. The package also provides a Lindel-derived score to predict the probability of a gRNA to produce indels inducing a frameshift for the Cas9 nuclease. Note that DeepHF, DeepCpf1 and enPAM+GB are not available on Windows machines.

Our work is described in a recent bioRxiv preprint: “The crisprVerse: A comprehensive Bioconductor ecosystem for the design of CRISPR guide RNAs across nucleases and technologies”

Our main gRNA design package crisprDesign utilizes the crisprScore package to add on- and off-target scores to user-designed gRNAs; check out our Cas9 gRNA tutorial page to learn how to use crisprScore via crisprDesign.

Installation and getting started

Software requirements

OS Requirements

This package is supported for macOS, Linux and Windows machines. Some functionalities are not supported for Windows machines. Packages were developed and tested on R version 4.2.1.

Installation from Bioconductor

crisprScore can be installed from from the Bioconductor devel branch using the following commands in a fresh R session:

if (!require("BiocManager", quietly = TRUE))
    install.packages("BiocManager")

BiocManager::install(version="devel")
BiocManager::install("crisprScore")

The complete documentation for the package can be found here.

Installation from GitHub

Alternatively, the development version of crisprScore and its dependencies can be installed by typing the following commands inside of an R session:

install.packages("devtools")
library(devtools)
install_github("crisprVerse/crisprScoreData")
install_github("crisprVerse/crisprScore")

When calling one of the scoring methods for the first time after package installation, the underlying python module and conda environment will be automatically downloaded and installed without the need for user intervention. This may take several minutes, but this is a one-time installation. the first time after package installation.

Note that RStudio users will need to add the following line to their .Rprofile file in order for crisprScore to work properly:

options(reticulate.useImportHook=FALSE)

Getting started

We load crisprScore in the usual way:

library(crisprScore)

The scoringMethodsInfo data.frame contains a succinct summary of scoring methods available in crisprScore:

data(scoringMethodsInfo)
print(scoringMethodsInfo)
##        method   nuclease left right       type      label len
## 1    ruleset1     SpCas9  -24     5  On-target   RuleSet1  30
## 2     azimuth     SpCas9  -24     5  On-target    Azimuth  30
## 3      deephf     SpCas9  -20     2  On-target     DeepHF  23
## 4      lindel     SpCas9  -33    31  On-target     Lindel  65
## 5         mit     SpCas9  -20     2 Off-target        MIT  23
## 6         cfd     SpCas9  -20     2 Off-target        CFD  23
## 7    deepcpf1   AsCas12a   -4    29  On-target   DeepCpf1  34
## 8     enpamgb enAsCas12a   -4    29  On-target    EnPAMGB  34
## 9  crisprscan     SpCas9  -26     8  On-target CRISPRscan  35
## 10    casrxrf      CasRx   NA    NA  On-target   CasRx-RF  NA
## 11   crisprai     SpCas9  -19     2  On-target   CRISPRai  22
## 12 crisprater     SpCas9  -20    -1  On-target CRISPRater  20
## 13 deepspcas9     SpCas9  -24     5  On-target DeepSpCas9  30
## 14   ruleset3     SpCas9  -24     5  On-target   RuleSet3  30

Each scoring algorithm requires a different contextual nucleotide sequence. The left and right columns indicates how many nucleotides upstream and downstream of the first nucleotide of the PAM sequence are needed for input, and the len column indicates the total number of nucleotides needed for input. The crisprDesign (GitHub link) package provides user-friendly functionalities to extract and score those sequences automatically via the addOnTargetScores function.

On-targeting efficiency scores

Predicting on-target cutting efficiency is an extensive area of research, and we try to provide in crisprScore the latest state-of-the-art algorithms as they become available.

Cas9 methods

Different algorithms require different input nucleotide sequences to predict cutting efficiency as illustrated in the figure below.

Sequence inputs for Cas9 scoring methods

Rule Set 1

The Rule Set 1 algorithm is one of the first on-target efficiency methods developed for the Cas9 nuclease (Doench et al. 2014). It generates a probability (therefore a score between 0 and 1) that a given sgRNA will cut at its intended target. 4 nucleotides upstream and 3 nucleotides downstream of the PAM sequence are needed for scoring:

flank5 <- "ACCT" #4bp
spacer <- "ATCGATGCTGATGCTAGATA" #20bp
pam    <- "AGG" #3bp 
flank3 <- "TTG" #3bp
input  <- paste0(flank5, spacer, pam, flank3) 
results <- getRuleSet1Scores(input)

The Azimuth score described below is an improvement over Rule Set 1 from the same lab.

Azimuth

The Azimuth algorithm is an improved version of the popular Rule Set 2 score for the Cas9 nuclease (Doench et al. 2016). It generates a probability (therefore a score between 0 and 1) that a given sgRNA will cut at its intended target. 4 nucleotides upstream and 3 nucleotides downstream of the PAM sequence are needed for scoring:

flank5 <- "ACCT" #4bp
spacer <- "ATCGATGCTGATGCTAGATA" #20bp
pam    <- "AGG" #3bp 
flank3 <- "TTG" #3bp
input  <- paste0(flank5, spacer, pam, flank3) 
results <- getAzimuthScores(input)

Rule Set 3

The Rule Set 3 is an improvement over Rule Set 1 and Rule Set 2/Azimuth developed for the SpCas9 nuclease, taking into account the type of tracrRNAs (DeWeirdt et al. 2022). Two types of tracrRNAs are currently offered:

GTTTTAGAGCTA-----GAAA-----TAGCAAGTTAAAAT... --> Hsu2013 tracrRNA
GTTTAAGAGCTATGCTGGAAACAGCATAGCAAGTTTAAAT... --> Chen2013 tracrRNA

Similar to Rule Set 1 and Azimuth, the input sequence requires 4 nucleotides upstream of the protospacer sequence, the protospacer sequence itself (20nt spacersequence and PAM sequence), and 3 nucleotides downstream of the PAM sequence:

flank5 <- "ACCT" #4bp
spacer <- "ATCGATGCTGATGCTAGATA" #20bp
pam    <- "AGG" #3bp 
flank3 <- "TTG" #3bp
input  <- paste0(flank5, spacer, pam, flank3) 
results <- getRuleSet3Scores(input, tracrRNA="Hsu2013")

A more involved version of the algorithm takes into account gene context of the target protospacer sequence (Rule Set 3 Target) and will be soon implemented in crisprScore.

DeepHF

The DeepHF algorithm is an on-target cutting efficiency prediction algorithm for several variants of the Cas9 nuclease (Wang et al. 2019) using a recurrent neural network (RNN) framework. Similar to the Azimuth score, it generates a probability of cutting at the intended on-target. The algorithm only needs the protospacer and PAM sequences as inputs:

spacer  <- "ATCGATGCTGATGCTAGATA" #20bp
pam     <- "AGG" #3bp 
input   <- paste0(spacer, pam) 
results <- getDeepHFScores(input)

Users can specify for which Cas9 they wish to score sgRNAs by using the argument enzyme: “WT” for Wildtype Cas9 (WT-SpCas9), “HF” for high-fidelity Cas9 (SpCas9-HF), or “ESP” for enhancedCas9 (eSpCas9). For wildtype Cas9, users can also specify the promoter used for expressing sgRNAs using the argument promoter (“U6” by default). See ?getDeepHFScores for more details.

DeepSpCas9

The DeepSpCas9 algorithm is an on-target cutting efficiency prediction algorithm for the SpCas9 nuclease (Kim et al. 2019). Similar to the Azimuth score, it generates a probability of cutting at the intended on-target. 4 nucleotides upstream of the protospacer sequence, and 3 nucleotides downstream of the PAM sequence are needed in top of the protospacer sequence for scoring:

flank5 <- "ACCT" #4bp
spacer <- "ATCGATGCTGATGCTAGATA" #20bp
pam    <- "AGG" #3bp 
flank3 <- "TTG" #3bp
input  <- paste0(flank5, spacer, pam, flank3) 
results <- getDeepSpCas9Scores(input)
spacer  <- "ATCGATGCTGATGCTAGATA" #20bp
pam     <- "AGG" #3bp 
input   <- paste0(spacer, pam) 
results <- getDeepHFScores(input)

Users can specify for which Cas9 they wish to score sgRNAs by using the argument enzyme: “WT” for Wildtype Cas9 (WT-SpCas9), “HF” for high-fidelity Cas9 (SpCas9-HF), or “ESP” for enhancedCas9 (eSpCas9). For wildtype Cas9, users can also specify the promoter used for expressing sgRNAs using the argument promoter (“U6” by default). See ?getDeepHFScores for more details.

CRISPRscan

The CRISPRscan algorithm, also known as the Moreno-Mateos score, is an on-target efficiency method for the SpCas9 nuclease developed for sgRNAs expressed from a T7 promoter, and trained on zebrafish data (Moreno-Mateos et al. 2015). It generates a probability (therefore a score between 0 and 1) that a given sgRNA will cut at its intended target. 6 nucleotides upstream of the protospacer sequence and 6 nucleotides downstream of the PAM sequence are needed for scoring:

flank5 <- "ACCTAA" #6bp
spacer <- "ATCGATGCTGATGCTAGATA" #20bp
pam    <- "AGG" #3bp 
flank3 <- "TTGAAT" #6bp
input  <- paste0(flank5, spacer, pam, flank3) 
results <- getCRISPRscanScores(input)

CRISPRater

The CRISPRater algorithm is an on-target efficiency method for the SpCas9 nuclease (Labuhn et al. 2018). It generates a probability (therefore a score between 0 and 1) that a given sgRNA will cut at its intended target. Only the 20bp spacer sequence is required.

spacer <- "ATCGATGCTGATGCTAGATA" #20bp
results <- getCRISPRaterScores(spacer)

CRISPRai

The CRISPRai algorithm was developed by the Weissman lab to score SpCas9 gRNAs for CRISPRa and CRISPRi applications (Horlbeck et al. 2016), for the human genome. The function getCrispraiScores requires several inputs.

First, it requires a data.frame specifying the genomic coordinates of the transcription starting sites (TSSs). An example of such a data.frame is provided in the crisprScore package:

head(tssExampleCrispri)
##       tss_id gene_symbol promoter     transcripts position strand   chr
## 1    A1BG_P1        A1BG       P1 ENST00000596924 58347625      - chr19
## 2    A1BG_P2        A1BG       P2 ENST00000263100 58353463      - chr19
## 3    KRAS_P1        KRAS       P1 ENST00000311936 25250929      - chr12
## 4 SMARCA2_P1     SMARCA2       P1 ENST00000357248  2015347      +  chr9
## 5 SMARCA2_P2     SMARCA2       P2 ENST00000382194  2017615      +  chr9
## 6 SMARCA2_P3     SMARCA2       P3 ENST00000635133  2158470      +  chr9

It also requires a data.frame specifying the genomic coordinates of the gRNA sequences to score. An example of such a data.frame is provided in the crisprScore package:

head(sgrnaExampleCrispri)
##     grna_id  tss_id pam_site strand        spacer_19mer
## 1 A1BG_P1_1 A1BG_P1 58347601      - CTCCGGGCGACGTGGAGTG
## 2 A1BG_P1_2 A1BG_P1 58347421      - GGGCACCCAGGAGCGGTAG
## 3 A1BG_P1_3 A1BG_P1 58347624      - TCCACGTCGCCCGGAGCTG
## 4 A1BG_P1_4 A1BG_P1 58347583      - GCAGCGCAGGACGGCATCT
## 5 A1BG_P1_5 A1BG_P1 58347548      - AGCAGCTCGAAGGTGACGT
## 6 A1BG_P2_1 A1BG_P2 58353455      - ATGATGGTCGCGCTCACTC

All columns present in tssExampleCrispri and sgrnaExampleCrispri are mandatory for getCrispraiScores to work.

Two additional arguments are required: fastaFile, to specify the path of the fasta file of the human reference genome, and chromatinFiles, which is a list of length 3 specifying the path of files containing the chromatin accessibility data needed for the algorithm in hg38 coordinates. The chromatin files can be downloaded from Zenodo here. The fasta file for the human genome (hg38) can be downloaded directly from here: https://hgdownload.soe.ucsc.edu/goldenPath/hg38/bigZips/hg38.fa.gz

One can obtain the CRISPRai scores using the following command:

results <- getCrispraiScores(tss_df=tssExampleCrispri,
                             sgrna_df=sgrnaExampleCrispri,
                             modality="CRISPRi",
                             fastaFile="your/path/hg38.fa",
                             chromatinFiles=list(mnase="path/to/mnaseFile.bw",
                                                 dnase="path/to/dnaseFile.bw",
                                                 faire="oath/to/faireFile.bw"))

The function works identically for CRISPRa applications, with modality replaced by CRISPRa.

Cas12a methods

Different algorithms require different input nucleotide sequences to predict cutting efficiency as illustrated in the figure below.

Sequence inputs for Cas12a scoring methods

DeepCpf1 score

The DeepCpf1 algorithm is an on-target cutting efficiency prediction algorithm for the Cas12a nuclease (Kim et al. 2018) using a convolutional neural network (CNN) framework. It generates a score between 0 and 1 to quantify the likelihood of Cas12a to cut for a given sgRNA. 3 nucleotides upstream and 4 nucleotides downstream of the PAM sequence are needed for scoring:

flank5 <- "ACC" #3bp
pam    <- "TTTT" #4bp
spacer <- "AATCGATGCTGATGCTAGATATT" #23bp
flank3 <- "AAGT" #4bp
input  <- paste0(flank5, pam, spacer, flank3) 
results <- getDeepCpf1Scores(input)

enPAM+GB score

The enPAM+GB algorithm is an on-target cutting efficiency prediction algorithm for the enhanced Cas12a (enCas12a) nuclease (DeWeirdt et al. 2020) using a gradient-booster (GB) model. The enCas12a nuclease as an extended set of active PAM sequences in comparison to the wildtype Cas12 nuclease (Kleinstiver et al. 2019), and the enPAM+GB algorithm takes PAM activity into account in the calculation of the final score. It generates a probability (therefore a score between 0 and 1) of a given sgRNA to cut at the intended target. 3 nucleotides upstream of the PAM sequence and 4 nucleotides downstream of the protospacer sequence are needed for scoring:

flank5 <- "ACC" #3bp
pam    <- "TTTT" #4bp
spacer <- "AATCGATGCTGATGCTAGATATT" #23bp
flank3 <- "AAGT" #4bp
input  <- paste0(flank5, pam, spacer, flank3) 
results <- getEnPAMGBScores(input)

Cas13d methods

CasRxRF

The CasRxRF method was developed to characterize on-target efficiency of the RNA-targeting nuclease RfxCas13d, abbreviated as CasRx (Wessels et al. 2020).

It requires as an input the mRNA sequence targeted by the gRNAs, and returns as an output on-target efficiency scores for all gRNAs targeting the mRNA sequence.

As an example, we predict on-target efficiency for gRNAs targeting the mRNA sequence stored in the file test.fa:

fasta <- file.path(system.file(package="crisprScore"),
                   "casrxrf/test.fa")
mrnaSequence <- Biostrings::readDNAStringSet(filepath=fasta
                                             format="fasta",
                                             use.names=TRUE)
results <- getCasRxRFScores(mrnaSequence)

Note that the function has a default argument directRepeat set to aacccctaccaactggtcggggtttgaaac, specifying the direct repeat used in the CasRx construct (see (Wessels et al. 2020).) The function also has an argument binaries that specifies the file path of the binaries for three programs necessary by the CasRxRF algorithm:

  • RNAfold: available as part of the ViennaRNA package
  • RNAplfold: available as part of the ViennaRNA package
  • RNAhybrid: available as part of the RNAhybrid package

Those programs can be installed from their respective websites: VienneRNA and RNAhybrid.

If the argument is NULL, the binaries are assumed to be available on the PATH.

Off-target specificity scores

For CRISPR knockout systems, off-targeting effects can occur when the CRISPR nuclease tolerates some levels of imperfect complementarity between gRNA spacer sequences and protospacer sequences of the targeted genome. Generally, a greater number of mismatches between spacer and protospacer sequences decreases the likelihood of cleavage by a nuclease, but the nature of the nucleotide substitution can module the likelihood as well. Several off-target specificity scores were developed to predict the likelihood of a nuclease to cut at an unintended off-target site given a position-specific set of nucleotide mismatches.

We provide in crisprScore two popular off-target specificity scoring methods for CRISPR/Cas9 knockout systems: the MIT score (Hsu et al. 2013) and the cutting frequency determination (CFD) score (Doench et al. 2016).

MIT score

The MIT score was an early off-target specificity prediction algorithm developed for the CRISPR/Cas9 system (Hsu et al. 2013). It predicts the likelihood that the Cas9 nuclease will cut at an off-target site using position-specific mismatch tolerance weights. It also takes into consideration the total number of mismatches, as well as the average distance between mismatches. However, it does not take into account the nature of the nucleotide substitutions. The exact formula used to estimate the cutting likelihood is

$$\text{MIT} = \biggl(\prod_{p \in M}{w_p}\biggr)\times\frac{1}{\frac{19-d}{19}\times4+1}\times\frac{1}{m^2}$$

where $M$ is the set of positions for which there is a mismatch between the sgRNA spacer sequence and the off-target sequence, $w_p$ is an experimentally-derived mismatch tolerance weight at position $p$, $d$ is the average distance between mismatches, and $m$ is the total number of mismatches. As the number of mismatches increases, the cutting likelihood decreases. In addition, off-targets with more adjacent mismatches will have a lower cutting likelihood.

The getMITScores function takes as argument a character vector of 20bp sequences specifying the spacer sequences of sgRNAs (spacers argument), as well as a vector of 20bp sequences representing the protospacer sequences of the putative off-targets in the targeted genome (protospacers argument). PAM sequences (pams) must also be provided. If only one spacer sequence is provided, it will reused for all provided protospacers.

The following code will generate MIT scores for 3 off-targets with respect to the sgRNA ATCGATGCTGATGCTAGATA:

spacer   <- "ATCGATGCTGATGCTAGATA"
protospacers  <- c("ACCGATGCTGATGCTAGATA",
                   "ATCGATGCTGATGCTAGATT",
                   "ATCGATGCTGATGCTAGATA")
pams <- c("AGG", "AGG", "AGA")
getMITScores(spacers=spacer,
             protospacers=protospacers,
             pams=pams)
##                 spacer          protospacer      score
## 1 ATCGATGCTGATGCTAGATA ACCGATGCTGATGCTAGATA 0.31500000
## 2 ATCGATGCTGATGCTAGATA ATCGATGCTGATGCTAGATT 1.00000000
## 3 ATCGATGCTGATGCTAGATA ATCGATGCTGATGCTAGATA 0.06944444

CFD score

The CFD off-target specificity prediction algorithm was initially developed for the CRISPR/Cas9 system, and was shown to be superior to the MIT score (Doench et al. 2016). Unlike the MIT score, position-specific mismatch weights vary according to the nature of the nucleotide substitution (e.g. an A->G mismatch at position 15 has a different weight than an A->T mismatch at position 15).

Similar to the getMITScores function, the getCFDScores function takes as argument a character vector of 20bp sequences specifying the spacer sequences of sgRNAs (spacers argument), as well as a vector of 20bp sequences representing the protospacer sequences of the putative off-targets in the targeted genome (protospacers argument). pams must also be provided. If only one spacer sequence is provided, it will be used for all provided protospacers.

The following code will generate CFD scores for 3 off-targets with respect to the sgRNA ATCGATGCTGATGCTAGATA:

spacer   <- "ATCGATGCTGATGCTAGATA"
protospacers  <- c("ACCGATGCTGATGCTAGATA",
                   "ATCGATGCTGATGCTAGATT",
                   "ATCGATGCTGATGCTAGATA")
pams <- c("AGG", "AGG", "AGA")
getCFDScores(spacers=spacer,
             protospacers=protospacers,
             pams=pams)
##                 spacer          protospacer      score
## 1 ATCGATGCTGATGCTAGATA ACCGATGCTGATGCTAGATA 0.85714286
## 2 ATCGATGCTGATGCTAGATA ATCGATGCTGATGCTAGATT 0.60000000
## 3 ATCGATGCTGATGCTAGATA ATCGATGCTGATGCTAGATA 0.06944444

Indel prediction score

Lindel score (Cas9)

Non-homologous end-joining (NHEJ) plays an important role in double-strand break (DSB) repair of DNA. Error patterns of NHEJ can be strongly biased by sequence context, and several studies have shown that microhomology can be used to predict indels resulting from CRISPR/Cas9-mediated cleavage. Among other useful metrics, the frequency of frameshift-causing indels can be estimated for a given sgRNA.

Lindel (Chen et al. 2019) is a logistic regression model that was trained to use local sequence context to predict the distribution of mutational outcomes. In crisprScore, the function getLindelScores return the proportion of “frameshifting” indels estimated by Lindel. By chance, assuming a random distribution of indel lengths, frameshifting proportions should be roughly around 0.66. A Lindel score higher than 0.66 indicates a higher than by chance probability that a sgRNA induces a frameshift mutation.

The Lindel algorithm requires nucleotide context around the protospacer sequence; the following full sequence is needed: [13bp upstream flanking sequence][23bp protospacer sequence] [29bp downstream flanking sequence], for a total of 65bp. The function getLindelScores takes as inputs such 65bp sequences:

flank5 <- "ACCTTTTAATCGA" #13bp
spacer <- "TGCTGATGCTAGATATTAAG" #20bp
pam    <- "TGG" #3bp
flank3 <- "CTTTTAATCGATGCTGATGCTAGATATTA" #29bp
input <- paste0(flank5, spacer, pam, flank3)
results <- getLindelScores(input)

License

The project as a whole is covered by the MIT license. The code for all underlying Python packages, with their original licenses, can be found in inst/python. We made sure that all licenses are compatible with the MIT license and to indicate changes that we have made to the original code.

Reproducibility

sessionInfo()
## R version 4.2.1 (2022-06-23)
## Platform: x86_64-apple-darwin17.0 (64-bit)
## Running under: macOS Catalina 10.15.7
## 
## Matrix products: default
## BLAS:   /Library/Frameworks/R.framework/Versions/4.2/Resources/lib/libRblas.0.dylib
## LAPACK: /Library/Frameworks/R.framework/Versions/4.2/Resources/lib/libRlapack.dylib
## 
## locale:
## [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
## 
## attached base packages:
## [1] stats     graphics  grDevices utils     datasets  methods   base     
## 
## other attached packages:
## [1] crisprScore_1.3.2     crisprScoreData_1.3.0 ExperimentHub_2.5.0  
## [4] AnnotationHub_3.5.1   BiocFileCache_2.5.0   dbplyr_2.2.1         
## [7] BiocGenerics_0.43.4  
## 
## loaded via a namespace (and not attached):
##  [1] Rcpp_1.0.9                    lattice_0.20-45              
##  [3] dir.expiry_1.5.1              png_0.1-7                    
##  [5] Biostrings_2.65.3             assertthat_0.2.1             
##  [7] digest_0.6.29                 utf8_1.2.2                   
##  [9] mime_0.12                     R6_2.5.1                     
## [11] GenomeInfoDb_1.33.7           stats4_4.2.1                 
## [13] RSQLite_2.2.16                evaluate_0.16                
## [15] highr_0.9                     httr_1.4.4                   
## [17] pillar_1.8.1                  basilisk_1.9.6               
## [19] zlibbioc_1.43.0               rlang_1.0.6                  
## [21] curl_4.3.2                    rstudioapi_0.14              
## [23] blob_1.2.3                    S4Vectors_0.35.3             
## [25] Matrix_1.5-3                  reticulate_1.26              
## [27] rmarkdown_2.16                stringr_1.4.1                
## [29] RCurl_1.98-1.8                bit_4.0.4                    
## [31] shiny_1.7.2                   compiler_4.2.1               
## [33] httpuv_1.6.5                  xfun_0.32                    
## [35] pkgconfig_2.0.3               htmltools_0.5.3              
## [37] tidyselect_1.1.2              KEGGREST_1.37.3              
## [39] tibble_3.1.8                  GenomeInfoDbData_1.2.8       
## [41] interactiveDisplayBase_1.35.0 IRanges_2.31.2               
## [43] randomForest_4.7-1.1          fansi_1.0.3                  
## [45] crayon_1.5.1                  dplyr_1.0.10                 
## [47] later_1.3.0                   basilisk.utils_1.9.3         
## [49] bitops_1.0-7                  rappdirs_0.3.3               
## [51] grid_4.2.1                    jsonlite_1.8.0               
## [53] xtable_1.8-4                  lifecycle_1.0.3              
## [55] DBI_1.1.3                     magrittr_2.0.3               
## [57] cli_3.4.0                     stringi_1.7.8                
## [59] cachem_1.0.6                  XVector_0.37.1               
## [61] promises_1.2.0.1              ellipsis_0.3.2               
## [63] filelock_1.0.2                generics_0.1.3               
## [65] vctrs_0.5.1                   tools_4.2.1                  
## [67] bit64_4.0.5                   Biobase_2.57.1               
## [69] glue_1.6.2                    purrr_0.3.4                  
## [71] BiocVersion_3.16.0            parallel_4.2.1               
## [73] fastmap_1.1.0                 yaml_2.3.5                   
## [75] AnnotationDbi_1.59.1          BiocManager_1.30.18          
## [77] memoise_2.0.1                 knitr_1.40

References

Chen, Wei, Aaron McKenna, Jacob Schreiber, Maximilian Haeussler, Yi Yin, Vikram Agarwal, William Stafford Noble, and Jay Shendure. 2019. “Massively Parallel Profiling and Predictive Modeling of the Outcomes of CRISPR/Cas9-Mediated Double-Strand Break Repair.” Nucleic Acids Research 47 (15): 7989–8003.

DeWeirdt, Peter C, Abby V McGee, Fengyi Zheng, Ifunanya Nwolah, Mudra Hegde, and John G Doench. 2022. “Accounting for Small Variations in the tracrRNA Sequence Improves sgRNA Activity Predictions for CRISPR Screening.” bioRxiv. https://doi.org/10.1101/2022.06.27.497780.

DeWeirdt, Peter C, Kendall R Sanson, Annabel K Sangree, Mudra Hegde, Ruth E Hanna, Marissa N Feeley, Audrey L Griffith, et al. 2020. “Optimization of AsCas12a for Combinatorial Genetic Screens in Human Cells.” Nature Biotechnology, 1–11.

Doench, John G, Nicolo Fusi, Meagan Sullender, Mudra Hegde, Emma W Vaimberg, Katherine F Donovan, Ian Smith, et al. 2016. “Optimized sgRNA Design to Maximize Activity and Minimize Off-Target Effects of CRISPR-Cas9.” Nature Biotechnology 34 (2): 184.

Doench, John G, Ella Hartenian, Daniel B Graham, Zuzana Tothova, Mudra Hegde, Ian Smith, Meagan Sullender, Benjamin L Ebert, Ramnik J Xavier, and David E Root. 2014. “Rational Design of Highly Active sgRNAs for CRISPR-Cas9–Mediated Gene Inactivation.” Nature Biotechnology 32 (12): 1262–67.

Horlbeck, Max A, Luke A Gilbert, Jacqueline E Villalta, Britt Adamson, Ryan A Pak, Yuwen Chen, Alexander P Fields, et al. 2016. “Compact and Highly Active Next-Generation Libraries for CRISPR-Mediated Gene Repression and Activation.” Elife 5.

Hsu, Patrick D, David A Scott, Joshua A Weinstein, F Ann Ran, Silvana Konermann, Vineeta Agarwala, Yinqing Li, et al. 2013. “DNA Targeting Specificity of RNA-Guided Cas9 Nucleases.” Nature Biotechnology 31 (9): 827.

Kim, Hui Kwon, Younggwang Kim, Sungtae Lee, Seonwoo Min, Jung Yoon Bae, Jae Woo Choi, Jinman Park, Dongmin Jung, Sungroh Yoon, and Hyongbum Henry Kim. 2019. “SpCas9 Activity Prediction by DeepSpCas9, a Deep Learning–Based Model with High Generalization Performance.” Science Advances 5 (11): eaax9249.

Kim, Hui Kwon, Seonwoo Min, Myungjae Song, Soobin Jung, Jae Woo Choi, Younggwang Kim, Sangeun Lee, Sungroh Yoon, and Hyongbum Henry Kim. 2018. “Deep Learning Improves Prediction of CRISPR–Cpf1 Guide RNA Activity.” Nature Biotechnology 36 (3): 239.

Kleinstiver, Benjamin P, Alexander A Sousa, Russell T Walton, Y Esther Tak, Jonathan Y Hsu, Kendell Clement, Moira M Welch, et al. 2019. “Engineered CRISPR–Cas12a Variants with Increased Activities and Improved Targeting Ranges for Gene, Epigenetic and Base Editing.” Nature Biotechnology 37 (3): 276–82.

Labuhn, Maurice, Felix F Adams, Michelle Ng, Sabine Knoess, Axel Schambach, Emmanuelle M Charpentier, Adrian Schwarzer, Juan L Mateo, Jan-Henning Klusmann, and Dirk Heckl. 2018. “Refined sgRNA Efficacy Prediction Improves Large-and Small-Scale CRISPR–Cas9 Applications.” Nucleic Acids Research 46 (3): 1375–85.

Moreno-Mateos, Miguel A, Charles E Vejnar, Jean-Denis Beaudoin, Juan P Fernandez, Emily K Mis, Mustafa K Khokha, and Antonio J Giraldez. 2015. “CRISPRscan: Designing Highly Efficient sgRNAs for CRISPR-Cas9 Targeting in Vivo.” Nature Methods 12 (10): 982–88.

Wang, Daqi, Chengdong Zhang, Bei Wang, Bin Li, Qiang Wang, Dong Liu, Hongyan Wang, et al. 2019. “Optimized CRISPR Guide RNA Design for Two High-Fidelity Cas9 Variants by Deep Learning.” Nature Communications 10 (1): 1–14.

Wessels, Hans-Hermann, Alejandro Méndez-Mancilla, Xinyi Guo, Mateusz Legut, Zharko Daniloski, and Neville E Sanjana. 2020. “Massively Parallel Cas13 Screens Reveal Principles for Guide RNA Design.” Nature Biotechnology 38 (6): 722–27.

crisprscore's People

Contributors

developerpiru avatar jfortin1 avatar jwokaty avatar nturaga avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

crisprscore's Issues

getCrispraiScores: pandas import error

I am trying to run getCrispraiScores using the vignette example, but run into the following error.

Docker install:

sudo docker run --rm -ti -p 8788:8787 -v $(pwd):/guide_design -e DISABLE_AUTH=true -e ROOT=true bioconductor/bioconductor_docker:devel

R:

BiocManager::install(version="devel")
BiocManager::install("crisprScore")

library(crisprScore)

results <- getCrispraiScores(tss_df=tssExampleCrispri,
                             sgrna_df=sgrnaExampleCrispri,
                             modality="CRISPRi",
                             fastaFile="input/hg38/fasta/hg38.fa",
                             chromatinFiles=c(mnase="input/hg38/bigwig/crispria_mnase_human_K562_hg38.bigWig",
                                              dnase="input/hg38/bigwig/crispria_dnase_human_K562_hg38.bigWig",
                                              faire="input/hg38/bigwig/crispria_faire_human_K562_hg38.bigWig"))

R output:

Traceback (most recent call last):
  File "/usr/local/lib/R/site-library/crisprScore/python/crisprai/getWeissmanScores.py", line 7, in <module>
    from sgRNA_learning import *
  File "/usr/local/lib/R/site-library/crisprScore/python/crisprai/sgRNA_learning.py", line 8, in <module>
    import pandas as pd
  File "/home/rstudio/.cache/R/basilisk/1.15.3/crisprScore/1.7.2/crisprai_basilisk/lib/python2.7/site-packages/pandas/__init__.py", line 7, in <module>
    from . import hashtable, tslib, lib
  File "pandas/tslib.pyx", line 2839, in init pandas.tslib (pandas/tslib.c:80041)
  File "pandas/algos.pyx", line 64, in init pandas.algos (pandas/algos.c:180213)
ImportError: /home/rstudio/.cache/R/basilisk/1.15.3/crisprScore/1.7.2/crisprai_basilisk/lib/python2.7/site-packages/pandas/lib.so: undefined symbol: is_float_object
Error in file(file, "rt") : cannot open the connection
In addition: Warning message:
In file(file, "rt") :
  cannot open file '/tmp/RtmpzFOk0q/scores.txt': No such file or directory

sessionInfo

> sessionInfo()
R Under development (unstable) (2024-01-23 r85822)
Platform: x86_64-pc-linux-gnu
Running under: Ubuntu 22.04.3 LTS

Matrix products: default
BLAS:   /usr/lib/x86_64-linux-gnu/openblas-pthread/libblas.so.3 
LAPACK: /usr/lib/x86_64-linux-gnu/openblas-pthread/libopenblasp-r0.3.20.so;  LAPACK version 3.10.0

locale:
 [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C               LC_TIME=en_US.UTF-8        LC_COLLATE=en_US.UTF-8     LC_MONETARY=en_US.UTF-8   
 [6] LC_MESSAGES=en_US.UTF-8    LC_PAPER=en_US.UTF-8       LC_NAME=C                  LC_ADDRESS=C               LC_TELEPHONE=C            
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       

time zone: Etc/UTC
tzcode source: system (glibc)

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] crisprScore_1.7.2     crisprScoreData_1.7.0 ExperimentHub_2.11.1  AnnotationHub_3.11.1  BiocFileCache_2.11.1  dbplyr_2.4.0         
[7] BiocGenerics_0.49.1  

loaded via a namespace (and not attached):
 [1] KEGGREST_1.43.0         dir.expiry_1.11.0       Biobase_2.63.0          lattice_0.22-5          vctrs_0.6.5            
 [6] tools_4.4.0             bitops_1.0-7            generics_0.1.3          stats4_4.4.0            curl_5.2.0             
[11] parallel_4.4.0          tibble_3.2.1            fansi_1.0.6             AnnotationDbi_1.65.2    RSQLite_2.3.5          
[16] blob_1.2.4              pkgconfig_2.0.3         Matrix_1.6-5            S4Vectors_0.41.3        lifecycle_1.0.4        
[21] GenomeInfoDbData_1.2.11 compiler_4.4.0          stringr_1.5.1           Biostrings_2.71.2       GenomeInfoDb_1.39.5    
[26] RCurl_1.98-1.14         yaml_2.3.8              pillar_1.9.0            crayon_1.5.2            cachem_1.0.8           
[31] mime_0.12               basilisk_1.15.3         tidyselect_1.2.0        stringi_1.8.3           dplyr_1.1.4            
[36] purrr_1.0.2             BiocVersion_3.19.1      fastmap_1.1.1           grid_4.4.0              cli_3.6.2              
[41] magrittr_2.0.3          randomForest_4.7-1.1    utf8_1.2.4              withr_3.0.0             filelock_1.0.3         
[46] rappdirs_0.3.3          bit64_4.0.5             XVector_0.43.1          httr_1.4.7              bit_4.0.5              
[51] reticulate_1.34.0       png_0.1-8               memoise_2.0.1           IRanges_2.37.1          basilisk.utils_1.15.1  
[56] rlang_1.1.3             Rcpp_1.0.12             glue_1.7.0              DBI_1.2.1               BiocManager_1.30.22    
[61] rstudioapi_0.15.0       jsonlite_1.8.8          R6_2.5.1                zlibbioc_1.49.0     

.cache/R/basilisk/1.13.3/crisprScore/1.3.4/azimuth_basilisk/lib/libpython2.7.so: undefined symbol: PyType_GetFlags

Hello!

Thank you for this package! Could you help me, please, to fix this with new versions of Ubuntu 22.04?

R -e "library(basilisk); source('R/basilisk.R'); basiliskStart(env_azimuth)"

#44 0.450 R version 4.3.1 (2023-06-16) -- "Beagle Scouts"
#44 0.450 Copyright (C) 2023 The R Foundation for Statistical Computing
#44 0.450 Platform: x86_64-pc-linux-gnu (64-bit)
...
#44 0.537 > library(basilisk); source('R/basilisk.R'); basiliskStart(env_azimuth)
#44 1.652 trying URL 'https://repo.anaconda.com/miniconda/Miniconda3-py310_23.5.0-3-Linux-x86_64.sh'
#44 2.086 Content type 'application/x-sh' length 95815836 bytes (91.4 MB)
#44 2.189 ==================================================
#44 6.373 downloaded 91.4 MB
#44 6.373 
#44 6.387 PREFIX=/home/rstudio/.cache/R/basilisk/1.13.3/0
#44 6.627 Unpacking payload ...
...
#44 178.5   added / updated specs:
#44 178.5     - python=2.7
#44 178.5 
#44 178.5 
#44 178.5 The following packages will be downloaded:
#44 178.5 
#44 178.5     package                    |            build
#44 178.5     ---------------------------|-----------------
#44 178.5     _libgcc_mutex-0.1          |      conda_forge           3 KB  conda-forge
#44 178.5     _openmp_mutex-4.5          |            2_gnu          23 KB  conda-forge
#44 178.5     ca-certificates-2023.7.22  |       hbcca054_0         146 KB  conda-forge
#44 178.5     certifi-2019.11.28         |   py27h8c360ce_1         149 KB  conda-forge
#44 178.5     ld_impl_linux-64-2.40      |       h41732ed_0         688 KB  conda-forge
#44 178.5     libffi-3.2.1               |    he1b5a44_1007          47 KB  conda-forge
#44 178.5     libgcc-ng-13.1.0           |       he5830b7_0         758 KB  conda-forge
#44 178.5     libgomp-13.1.0             |       he5830b7_0         409 KB  conda-forge
#44 178.5     libsqlite-3.42.0           |       h2797004_0         809 KB  conda-forge
#44 178.5     libstdcxx-ng-13.1.0        |       hfd8a6a1_0         3.7 MB  conda-forge
#44 178.5     libzlib-1.2.13             |       hd590300_5          60 KB  conda-forge
#44 178.5     ncurses-6.4                |       hcb278e6_0         860 KB  conda-forge
#44 178.5     openssl-1.1.1v             |       hd590300_0         1.9 MB  conda-forge
#44 178.5     pip-20.1.1                 |     pyh9f0ad1d_0         1.1 MB  conda-forge
#44 178.5     python-2.7.15              |h5a48372_1011_cpython        12.2 MB  conda-forge
#44 178.5     python_abi-2.7             |         1_cp27mu           4 KB  conda-forge
#44 178.5     readline-8.2               |       h8228510_1         275 KB  conda-forge
#44 178.5     setuptools-44.0.0          |           py27_0         663 KB  conda-forge
#44 178.5     sqlite-3.42.0              |       h2c6b66d_0         799 KB  conda-forge
#44 178.5     tk-8.6.12                  |       h27826a3_0         3.3 MB  conda-forge
#44 178.5     wheel-0.37.1               |     pyhd8ed1ab_0          31 KB  conda-forge
#44 178.5     zlib-1.2.13                |       hd590300_5          91 KB  conda-forge
#44 178.5     ------------------------------------------------------------
#44 178.5                                            Total:        27.8 MB
#44 178.5 
#44 178.5 The following NEW packages will be INSTALLED:
#44 178.5 
#44 178.5   _libgcc_mutex      conda-forge/linux-64::_libgcc_mutex-0.1-conda_forge 
#44 178.5   _openmp_mutex      conda-forge/linux-64::_openmp_mutex-4.5-2_gnu 
#44 178.5   ca-certificates    conda-forge/linux-64::ca-certificates-2023.7.22-hbcca054_0 
#44 178.5   certifi            conda-forge/linux-64::certifi-2019.11.28-py27h8c360ce_1 
#44 178.5   ld_impl_linux-64   conda-forge/linux-64::ld_impl_linux-64-2.40-h41732ed_0 
#44 178.5   libffi             conda-forge/linux-64::libffi-3.2.1-he1b5a44_1007 
#44 178.5   libgcc-ng          conda-forge/linux-64::libgcc-ng-13.1.0-he5830b7_0 
#44 178.5   libgomp            conda-forge/linux-64::libgomp-13.1.0-he5830b7_0 
#44 178.5   libsqlite          conda-forge/linux-64::libsqlite-3.42.0-h2797004_0 
#44 178.5   libstdcxx-ng       conda-forge/linux-64::libstdcxx-ng-13.1.0-hfd8a6a1_0 
#44 178.5   libzlib            conda-forge/linux-64::libzlib-1.2.13-hd590300_5 
#44 178.5   ncurses            conda-forge/linux-64::ncurses-6.4-hcb278e6_0 
#44 178.5   openssl            conda-forge/linux-64::openssl-1.1.1v-hd590300_0 
#44 178.5   pip                conda-forge/noarch::pip-20.1.1-pyh9f0ad1d_0 
#44 178.5   python             conda-forge/linux-64::python-2.7.15-h5a48372_1011_cpython 
#44 178.5   python_abi         conda-forge/linux-64::python_abi-2.7-1_cp27mu 
#44 178.5   readline           conda-forge/linux-64::readline-8.2-h8228510_1 
#44 178.5   setuptools         conda-forge/linux-64::setuptools-44.0.0-py27_0 
#44 178.5   sqlite             conda-forge/linux-64::sqlite-3.42.0-h2c6b66d_0 
#44 178.5   tk                 conda-forge/linux-64::tk-8.6.12-h27826a3_0 
#44 178.5   wheel              conda-forge/noarch::wheel-0.37.1-pyhd8ed1ab_0 
#44 178.5   zlib               conda-forge/linux-64::zlib-1.2.13-hd590300_5 
...
#44 787.8 Processing /home/rstudio/R/library/crisprScore/python/azimuth
#44 787.9 Requirement already satisfied: scipy<=1.2.1 in /home/rstudio/.cache/R/basilisk/1.13.3/crisprScore/1.3.4/azimuth_basilisk/lib/python2.7/site-packages (from Azimuth==2.0) (1.2.1)
#44 787.9 Requirement already satisfied: numpy<=1.14 in /home/rstudio/.cache/R/basilisk/1.13.3/crisprScore/1.3.4/azimuth_basilisk/lib/python2.7/site-packages (from Azimuth==2.0) (1.11.3)
#44 787.9 Requirement already satisfied: matplotlib in /home/rstudio/.cache/R/basilisk/1.13.3/crisprScore/1.3.4/azimuth_basilisk/lib/python2.7/site-packages (from Azimuth==2.0) (2.2.3)
#44 788.0 Requirement already satisfied: nose in /home/rstudio/.cache/R/basilisk/1.13.3/crisprScore/1.3.4/azimuth_basilisk/lib/python2.7/site-packages (from Azimuth==2.0) (1.3.7)
#44 788.0 Requirement already satisfied: scikit-learn<0.18,>=0.17.1 in /home/rstudio/.cache/R/basilisk/1.13.3/crisprScore/1.3.4/azimuth_basilisk/lib/python2.7/site-packages (from Azimuth==2.0) (0.17.1)
#44 788.0 Requirement already satisfied: pandas in /home/rstudio/.cache/R/basilisk/1.13.3/crisprScore/1.3.4/azimuth_basilisk/lib/python2.7/site-packages (from Azimuth==2.0) (0.23.4)
#44 788.0 Requirement already satisfied: biopython<=1.76 in /home/rstudio/.cache/R/basilisk/1.13.3/crisprScore/1.3.4/azimuth_basilisk/lib/python2.7/site-packages (from Azimuth==2.0) (1.74)
#44 788.0 Requirement already satisfied: cycler>=0.10 in /home/rstudio/.cache/R/basilisk/1.13.3/crisprScore/1.3.4/azimuth_basilisk/lib/python2.7/site-packages (from matplotlib->Azimuth==2.0) (0.10.0)
#44 788.0 Requirement already satisfied: pyparsing!=2.0.4,!=2.1.2,!=2.1.6,>=2.0.1 in /home/rstudio/.cache/R/basilisk/1.13.3/crisprScore/1.3.4/azimuth_basilisk/lib/python2.7/site-packages (from matplotlib->Azimuth==2.0) (2.4.7)
#44 788.0 Requirement already satisfied: python-dateutil>=2.1 in /home/rstudio/.cache/R/basilisk/1.13.3/crisprScore/1.3.4/azimuth_basilisk/lib/python2.7/site-packages (from matplotlib->Azimuth==2.0) (2.8.1)
#44 788.0 Requirement already satisfied: pytz in /home/rstudio/.cache/R/basilisk/1.13.3/crisprScore/1.3.4/azimuth_basilisk/lib/python2.7/site-packages (from matplotlib->Azimuth==2.0) (2020.1)
#44 788.0 Requirement already satisfied: six>=1.10 in /home/rstudio/.cache/R/basilisk/1.13.3/crisprScore/1.3.4/azimuth_basilisk/lib/python2.7/site-packages (from matplotlib->Azimuth==2.0) (1.15.0)
#44 788.0 Requirement already satisfied: kiwisolver>=1.0.1 in /home/rstudio/.cache/R/basilisk/1.13.3/crisprScore/1.3.4/azimuth_basilisk/lib/python2.7/site-packages (from matplotlib->Azimuth==2.0) (1.1.0)
#44 788.0 Requirement already satisfied: backports.functools_lru_cache in /home/rstudio/.cache/R/basilisk/1.13.3/crisprScore/1.3.4/azimuth_basilisk/lib/python2.7/site-packages (from matplotlib->Azimuth==2.0) (1.6.1)
#44 788.0 Requirement already satisfied: subprocess32 in /home/rstudio/.cache/R/basilisk/1.13.3/crisprScore/1.3.4/azimuth_basilisk/lib/python2.7/site-packages (from matplotlib->Azimuth==2.0) (3.5.4)
#44 788.0 Requirement already satisfied: setuptools in /home/rstudio/.cache/R/basilisk/1.13.3/crisprScore/1.3.4/azimuth_basilisk/lib/python2.7/site-packages (from kiwisolver>=1.0.1->matplotlib->Azimuth==2.0) (44.0.0.post20200102)
#44 788.0 Building wheels for collected packages: Azimuth
#44 788.0   Building wheel for Azimuth (setup.py): started
#44 788.2   Building wheel for Azimuth (setup.py): finished with status 'done'
#44 788.2   Created wheel for Azimuth: filename=Azimuth-2.0-py2-none-any.whl size=163884 sha256=cb56e2d7a8bad3018036c51eaa65e25109f5668f4c195acd3477d5618d491688
#44 788.2   Stored in directory: /tmp/pip-ephem-wheel-cache-KOxihB/wheels/56/4b/66/e075652909d01dd3d766e57ba0d9a334f4ddbcce926d80fe70
#44 788.2 Successfully built Azimuth
#44 788.2 Installing collected packages: Azimuth
#44 788.3 Successfully installed Azimuth-2.0
#44 789.3 Error: PyType_GetFlags - /home/rstudio/.cache/R/basilisk/1.13.3/crisprScore/1.3.4/azimuth_basilisk/lib/libpython2.7.so: undefined symbol: PyType_GetFlags
#44 789.3 In addition: Warning message:
#44 789.3 In py_initialize(config$python, config$libpython, config$pythonhome,  :
#44 789.3   Python 2 reached EOL on January 1, 2020. Python 2 compatability will be removed in an upcoming reticulate release.
#44 789.3 Execution halted
#44 ERROR: process "/bin/sh -c cd \"$SOFT/crisprScore\" && R -e \"library(basilisk); source('R/basilisk.R'); basiliskStart(env_azimuth)\"" did not complete successfully: exit code: 1

Maybe this is a reason: https://foss.heptapod.net/pypy/pypy/-/issues/3173#note_160826 ?

I suppose, that some versions should be updated maybe here:
https://github.com/crisprVerse/crisprScore/blob/master/R/basilisk.R#L1

Error with addOnTargetScores

Hi,
Actually i use a custom nuclease sequence define like this:

nuc<- CrisprNuclease("nuc",
                           targetType="DNA",
                           pams="VVVTTTV(21/26)",
                           metadata=list(description="Custom nuclease."),
                           pam_side="5prime",
                           spacer_length=23)
                           
gs <- findSpacers(dna, crisprNuclease=nuc)
gs<- addOnTargetScores(gs, methods="enpamgb") 
Error in .validateOnTargetScoreMethods(methods = methods, crisprNuclease = crisprNuclease) : 
  No scoring method found for crisprNuclease

How can i define a correct method for my custom nuclease?

At the end, the idea is to obtain a GuideSet with on/Off target :)

Thx
Audrey

Issue with getRuleSet3 needing Python 3.6

Hey JP - I've been struggling with getting getRuleSet3() to work. I'm able to get rule set 1 scores and have formatted my data to have the correct spacers, but it seems like the issue may be more about connecting with python 3.6

I'm working from a mac with an M1 chip. I wonder whether this is the issue, as python 3.6 isn't available for my computer.

When I try to run the example as part of the package, I get the same error message as when I run it on my data. here is the error message that I get:

`> ?getRuleSet3Scores
PREFIX=/Users/Coding/Library/Caches/org.R-project.R/R/basilisk/1.14.2/0
Unpacking payload ...
Collecting package metadata (current_repodata.json): ...working... done
Solving environment: ...working... done

Package Plan

environment location: /Users/Coding/Library/Caches/org.R-project.R/R/basilisk/1.14.2/0

added / updated specs:
- brotlipy==0.7.0=py39h1a28f6b_1002
- ca-certificates==2022.4.26=hca03da5_0
- certifi==2022.5.18.1=py39hca03da5_0
- cffi==1.15.0=py39h22df2f2_1
- charset-normalizer==2.0.4=pyhd3eb1b0_0
- conda-content-trust==0.1.1=pyhd3eb1b0_0
- conda-package-handling==1.8.1=py39h1a28f6b_0
- conda==4.12.0=py39hca03da5_0
- cryptography==37.0.1=py39h834c97f_0
- idna==3.3=pyhd3eb1b0_0
- libcxx==12.0.0=hf6beb65_1
- libffi==3.4.2=hc377ac9_2
- ncurses==6.3=h1a28f6b_2
- openssl==1.1.1o=h1a28f6b_0
- pip==21.2.4=py39hca03da5_0
- pycosat==0.6.3=py39h1a28f6b_0
- pycparser==2.21=pyhd3eb1b0_0
- pyopenssl==22.0.0=pyhd3eb1b0_0
- pysocks==1.7.1=py39hca03da5_0
- python.app==3=py39h1a28f6b_0
- python==3.9.12=hbdb9e5c_0
- readline==8.1.2=h1a28f6b_1
- requests==2.27.1=pyhd3eb1b0_0
- ruamel_yaml==0.15.100=py39h1a28f6b_0
- setuptools==61.2.0=py39hca03da5_0
- six==1.16.0=pyhd3eb1b0_1
- sqlite==3.38.3=h1058600_0
- tk==8.6.11=hb8d0fd4_1
- tqdm==4.64.0=py39hca03da5_0
- tzdata==2022a=hda174b7_0
- urllib3==1.26.9=py39hca03da5_0
- wheel==0.37.1=pyhd3eb1b0_0
- xz==5.2.5=h1a28f6b_1
- yaml==0.2.5=h1a28f6b_0
- zlib==1.2.12=h5a0b063_2

The following NEW packages will be INSTALLED:

brotlipy pkgs/main/osx-arm64::brotlipy-0.7.0-py39h1a28f6b_1002
ca-certificates pkgs/main/osx-arm64::ca-certificates-2022.4.26-hca03da5_0
certifi pkgs/main/osx-arm64::certifi-2022.5.18.1-py39hca03da5_0
cffi pkgs/main/osx-arm64::cffi-1.15.0-py39h22df2f2_1
charset-normalizer pkgs/main/noarch::charset-normalizer-2.0.4-pyhd3eb1b0_0
conda pkgs/main/osx-arm64::conda-4.12.0-py39hca03da5_0
conda-content-tru~ pkgs/main/noarch::conda-content-trust-0.1.1-pyhd3eb1b0_0
conda-package-han~ pkgs/main/osx-arm64::conda-package-handling-1.8.1-py39h1a28f6b_0
cryptography pkgs/main/osx-arm64::cryptography-37.0.1-py39h834c97f_0
idna pkgs/main/noarch::idna-3.3-pyhd3eb1b0_0
libcxx pkgs/main/osx-arm64::libcxx-12.0.0-hf6beb65_1
libffi pkgs/main/osx-arm64::libffi-3.4.2-hc377ac9_2
ncurses pkgs/main/osx-arm64::ncurses-6.3-h1a28f6b_2
openssl pkgs/main/osx-arm64::openssl-1.1.1o-h1a28f6b_0
pip pkgs/main/osx-arm64::pip-21.2.4-py39hca03da5_0
pycosat pkgs/main/osx-arm64::pycosat-0.6.3-py39h1a28f6b_0
pycparser pkgs/main/noarch::pycparser-2.21-pyhd3eb1b0_0
pyopenssl pkgs/main/noarch::pyopenssl-22.0.0-pyhd3eb1b0_0
pysocks pkgs/main/osx-arm64::pysocks-1.7.1-py39hca03da5_0
python pkgs/main/osx-arm64::python-3.9.12-hbdb9e5c_0
python.app pkgs/main/osx-arm64::python.app-3-py39h1a28f6b_0
readline pkgs/main/osx-arm64::readline-8.1.2-h1a28f6b_1
requests pkgs/main/noarch::requests-2.27.1-pyhd3eb1b0_0
ruamel_yaml pkgs/main/osx-arm64::ruamel_yaml-0.15.100-py39h1a28f6b_0
setuptools pkgs/main/osx-arm64::setuptools-61.2.0-py39hca03da5_0
six pkgs/main/noarch::six-1.16.0-pyhd3eb1b0_1
sqlite pkgs/main/osx-arm64::sqlite-3.38.3-h1058600_0
tk pkgs/main/osx-arm64::tk-8.6.11-hb8d0fd4_1
tqdm pkgs/main/osx-arm64::tqdm-4.64.0-py39hca03da5_0
tzdata pkgs/main/noarch::tzdata-2022a-hda174b7_0
urllib3 pkgs/main/osx-arm64::urllib3-1.26.9-py39hca03da5_0
wheel pkgs/main/noarch::wheel-0.37.1-pyhd3eb1b0_0
xz pkgs/main/osx-arm64::xz-5.2.5-h1a28f6b_1
yaml pkgs/main/osx-arm64::yaml-0.2.5-h1a28f6b_0
zlib pkgs/main/osx-arm64::zlib-1.2.12-h5a0b063_2

Preparing transaction: ...working... done
Executing transaction: ...working...
done
installation finished.
Collecting package metadata (current_repodata.json): ...working... done
Solving environment: ...working... failed with repodata from current_repodata.json, will retry with next repodata source.
Collecting package metadata (repodata.json): ...working... done
Solving environment: ...working... failed

PackagesNotFoundError: The following packages are not available from current channels:

  • python=3.7.7

Current channels:

To search for alternate channels that may provide the conda package you're
looking for, navigate to

https://anaconda.org

and use the search bar at the top of the page.`

MacOS M1 chip

From https://github.com/Jfortin1/crisprScore/issues/8:

Hello, received an error in RStudio when trying to use getAzimuthScores()

Error in checkForRemoteErrors(lapply(cl, recvResult)) :
one node produced an error: /Users/nkuperwasser/Library/Caches/org.R-project.R/R/basilisk/1.8.0/crisprScore/1.0.0/azimuth_basilisk/lib/libpython2.7.dylib - dlopen(/Users/nkuperwasser/Library/Caches/org.R-project.R/R/basilisk/1.8.0/crisprScore/1.0.0/azimuth_basilisk/lib/libpython2.7.dylib, 0x000A): tried: '/Users/nkuperwasser/Library/Caches/org.R-project.R/R/basilisk/1.8.0/crisprScore/1.0.0/azimuth_basilisk/lib/libpython2.7.dylib' (mach-o file, but is an incompatible architecture (have (x86_64), need (arm64e)))

I am not a coding expert by a long shot, but was wondering if this is perhaps due to the M1 chip?

Thanks

NK

Hi @nkuperwasser, yes, the M1 chip is causing the problem, see the issue here from the basilisk dependency: Bioconductor/basilisk#18

getLindelScores Error

Hi, I'm running into the following error when I try to run getLindelScores as described in the documentation/

> flank5 <- "ACCTTTTAATCGA" #13bp
> spacer <- "TGCTGATGCTAGATATTAAG" #20bp
> pam    <- "TGG" #3bp
> flank3 <- "CTTTTAATCGATGCTGATGCTAGATATTA" #29bp
> input <- paste0(flank5, spacer, pam, flank3)
> results <- getLindelScores(input)
Error in checkForRemoteErrors(lapply(cl, recvResult)) : 
  one node produced an error: error in evaluating the argument 'x' in selecting a method for function 'query': Failed to collect lazy table.
Caused by error in `db_collect()`:
! Arguments in `...` must be used.
✖ Problematic argument:
• ..1 = Inf
ℹ Did you misspell an argument name?

I have run many of the other methods without issue - the exception being getDeepHFScores, which I have opened a separate issue for.

Session info:
> sessionInfo(package = NULL)
R version 4.3.2 (2023-10-31)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Pop!_OS 22.04 LTS

Matrix products: default
BLAS:   /usr/lib/x86_64-linux-gnu/blas/libblas.so.3.10.0 
LAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.10.0

locale:
 [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C               LC_TIME=en_US.UTF-8        LC_COLLATE=en_US.UTF-8    
 [5] LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8    LC_PAPER=en_US.UTF-8       LC_NAME=C                 
 [9] LC_ADDRESS=C               LC_TELEPHONE=C             LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       

time zone: America/Los_Angeles
tzcode source: system (glibc)

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] crisprScore_1.4.0     crisprScoreData_1.4.0 ExperimentHub_2.8.1   AnnotationHub_3.8.0   BiocFileCache_2.8.0   dbplyr_2.4.0         
[7] BiocGenerics_0.46.0  

Bump version

I noticed that you updated the DESCRIPTION file but didn't increment your version so the Bioconductor builders don't have the update. Could you update your version and push to Bioconductor?

CRISPRon

From https://github.com/Jfortin1/crisprScore/issues/6:

Hi @Jfortin1 ,
Thank you for considering adding CRISPRoff score method to the off-target score collection.
I am working with a system that involves paired dCas9 and found free energy based method- CRISPRon score-performs better than other scores. Will you also consider adding this one to your on-target score methods collection? It was developed by the same team as the CRISPRoff package. This one looks pretty straightforward as well.
https://github.com/RTH-tools/crispron
Thank you for considering.
Best
Zhibo

MIT score calculation

I've been looking at the MIT score calculation and wondering if it is correct or how to square it with the same calculation in CRISPOR (https://github.com/maximilianh/crisporWebsite).

I'm new to this whole area of CRISPR guide scoring but my understanding is that the higher the individual score for an off-target match, the more significant it is in reducing the efficiency of the guide. When combining several individual scores, the MIT score is calculated as 100 / (100 + sum(scores)) and sometimes reported as an integer by multiplying by 100 and rounding. So higher individual off-target scores lead to a lower overall MIT score.

The getMITScores function gives scores of zero for single mismatch protospacers where the mismatch is at positions 13, 16, 17, 19 and 20, because the tolerance weights at each of these positions is zero (mit.weights vector). For example, a single mismatch at that last position:

> getMITScores("ACACCGCTCCCATAAAGCCA", "ACACCGCTCCCATAAAGCCG", "TGG")
                spacer          protospacer score
1 ACACCGCTCCCATAAAGCCA ACACCGCTCCCATAAAGCCG     0

This doesn't seem right to me. I had a look at the Python source code for the CRISPOR website and found that the calculation for individual off-target match scores (https://github.com/maximilianh/crisporWebsite/blob/master/crispor.py#L1999) differs in two ways:

  1. The position (in)tolerance weights are the same values but in reverse order, i.e. position 20 has a weight of 0.585 in CRISPOR but this is the weight for position 1 in crisprScore, similarly position 19 has a weight of 0.685 in CRISPOR but this is the weight at position 2 in crisprScore, etc. The weights are given in the same order as CRISPOR in inst/mit/mit.weights.txt but inst/mit/processWeights.R reverses the order.

  2. These weights are subtracted from 1 in CRISPOR prior to being multiplied together for each of the mismatches, i.e. these weights appear to be measures of intolerance for a mistmatch at each position rather than a measure of tolerance as indicated in inst/mit/processWeights.R.

Is the implementation in crisprScore correct?

error in getDeepHFScores example

Hello I'm running into the following error using the provided example for the getDeepHFScores function

> spacer  <- "ATCGATGCTGATGCTAGATA" #20bp
> pam     <- "AGG" #3bp 
> input   <- paste0(spacer, pam) 
> results <- getDeepHFScores(input)
Error in (function (cond)  : 
  error in evaluating the argument 'x' in selecting a method for function 'query': Failed to collect lazy table.
Caused by error in `db_collect()`:
! Arguments in `...` must be used.
✖ Problematic argument:
• ..1 = Inf
ℹ Did you misspell an argument name?

I have run many of the other methods without issue - the exception being getLindelScores, which I have opened a separate issue for.

Session info:

> sessionInfo(package = NULL)
R version 4.3.2 (2023-10-31)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Pop!_OS 22.04 LTS

Matrix products: default
BLAS:   /usr/lib/x86_64-linux-gnu/blas/libblas.so.3.10.0 
LAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.10.0

locale:
 [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C               LC_TIME=en_US.UTF-8        LC_COLLATE=en_US.UTF-8    
 [5] LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8    LC_PAPER=en_US.UTF-8       LC_NAME=C                 
 [9] LC_ADDRESS=C               LC_TELEPHONE=C             LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       

time zone: America/Los_Angeles
tzcode source: system (glibc)

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] crisprScore_1.4.0     crisprScoreData_1.4.0 ExperimentHub_2.8.1   AnnotationHub_3.8.0   BiocFileCache_2.8.0   dbplyr_2.4.0         
[7] BiocGenerics_0.46.0  

CRISPRoff

From https://github.com/Jfortin1/crisprScore/issues/5:

Hi,
I have been using your new CRISPR Design tools recently and found it to be very helpful in CRISPR gRNA design. While I was searching for the best performing off-target prediction algorithms, I found those two more recent method: Microsoft ML-based Elevation score (sister algorithm of the Azimuth on-target prediction), and the gRNA binding free energy based ML algorithm-CRISPRoff.
Both showed superior performance than the MIT score and CDF scores, especially the CRIPSRoff Score.
I wonder if you could integrate those two methods in your off-target prediction methods collection. Below are the links:
https://github.com/microsoft/Elevation
https://github.com/RTH-tools/crisproff
Thank you for considering.
Best,
Zhibo

python 2.7 issue

Hi,
Thanks for making the package available. I try to use the addOnTargetScore function, but ran into the complain about python 2.7 is not available in current conda channel. Could you please suggest a way to work around it?

Thanks

Xiaoyun

On-target scores for SaCas9

Hi! Thanks for developing such a comprehensive tool for sgRNA design. I am wondering if it is possible to add on-target scores for SaCas9 using models like Azimuth 2.0 or something else. It will be very helpful!

scoring method not working on M1 environment

Hi, first of all , thank you for making such a detailed tutorial!
I had a similar problem, where azimuth, lindel and other scoring methods that depend on python 2.7 did not work in my local computer. I saw another comment you posted on a previous issue-post refering to how these scoring algorithms cannot be run on a M1 machine and was wondering if that is the issue as my computer is a Apple M1 Max. Is there no work-around?

This is the conda channel on my local computer for your reference :
(base) 01-5651:$ conda install python=2.7
(base) 01-5651:$ conda config --add subdirs osx-64
(base) 01-5651:$ conda search python
Loading channels: done
Name Version Build Channel
python 2.7.13 h32f5f24_13 pkgs/main
python 2.7.13 h89fad4f_16 pkgs/main
python 2.7.13 hdada7c8_15 pkgs/main
python 2.7.14 h001abdc_23 pkgs/main
python 2.7.14 h138c1fe_30 pkgs/main
python 2.7.14 h138c1fe_31 pkgs/main
python 2.7.14 h50fefbe_18 pkgs/main
python 2.7.14 ha6acbcf_22 pkgs/main
python 2.7.14 ha7e29e4_26 pkgs/main
python 2.7.14 hd74e306_15 pkgs/main
python 2.7.14 hde5916a_29 pkgs/main
python 2.7.14 he768d2d_19 pkgs/main
python 2.7.14 hed931fe_16 pkgs/main
python 2.7.15 h138c1fe_0 pkgs/main
python 2.7.15 h8f8e585_2 pkgs/main
python 2.7.15 h8f8e585_4 pkgs/main
python 2.7.15 h8f8e585_6 pkgs/main
python 2.7.16 h97142e2_0 pkgs/main
python 2.7.16 h97142e2_1 pkgs/main
python 2.7.16 h97142e2_2 pkgs/main
python 2.7.16 h97142e2_3 pkgs/main
python 2.7.16 h97142e2_4 pkgs/main
python 2.7.16 h97142e2_5 pkgs/main
python 2.7.16 h97142e2_6 pkgs/main
python 2.7.16 h97142e2_7 pkgs/main
python 2.7.17 h97142e2_0 pkgs/main
python 2.7.18 h441ce09_3 pkgs/main
python 2.7.18 h47d645e_1 pkgs/main
python 2.7.18 hc817775_0 pkgs/main
python 3.5.4 h4bd9b1b_18 pkgs/main
python 3.5.4 h821eb87_14 pkgs/main
python 3.5.4 h8f450c2_22 pkgs/main
python 3.5.4 hb8880cc_19 pkgs/main
python 3.5.4 hc167b69_27 pkgs/main
python 3.5.4 hdd9bdb2_21 pkgs/main
python 3.5.4 he1de2d4_12 pkgs/main
python 3.5.4 he720263_23 pkgs/main
python 3.5.4 hf91e954_15 pkgs/main
python 3.5.5 h0a44026_3 pkgs/main
python 3.5.5 hc167b69_0 pkgs/main
python 3.5.5 hc167b69_1 pkgs/main
python 3.5.6 hc167b69_0 pkgs/main
python 3.6.2 h26d10c0_12 pkgs/main
python 3.6.2 h9e63aee_14 pkgs/main
python 3.6.2 ha11d96e_18 pkgs/main
python 3.6.2 hd04bb42_19 pkgs/main
python 3.6.2 hd0bf7f1_15 pkgs/main
python 3.6.3 h47c878a_7 pkgs/main
python 3.6.3 h5ce8c04_4 pkgs/main
python 3.6.3 h6804ab2_0 pkgs/main
python 3.6.3 h794556d_2 pkgs/main
python 3.6.3 hc655967_3 pkgs/main
python 3.6.4 hc167b69_0 pkgs/main
python 3.6.4 hc167b69_1 pkgs/main
python 3.6.4 hc167b69_3 pkgs/main
python 3.6.5 hc167b69_0 pkgs/main
python 3.6.5 hc167b69_1 pkgs/main
python 3.6.6 hc167b69_0 pkgs/main
python 3.6.7 haf84260_0 pkgs/main
python 3.6.8 haf84260_0 pkgs/main
python 3.6.9 h359304d_0 pkgs/main
python 3.6.10 h359304d_0 pkgs/main
python 3.6.10 hc70fcce_1 pkgs/main
python 3.6.10 hf48f09d_2 pkgs/main
python 3.6.10 hfe9666f_1 pkgs/main
python 3.6.12 h26836e1_2 pkgs/main
python 3.6.13 h88f2d9e_0 pkgs/main
python 3.7.0 hc167b69_0 pkgs/main
python 3.7.1 haf84260_3 pkgs/main
python 3.7.1 haf84260_7 pkgs/main
python 3.7.2 haf84260_0 pkgs/main
python 3.7.3 h359304d_0 pkgs/main
python 3.7.4 h359304d_0 pkgs/main
python 3.7.4 h359304d_1 pkgs/main
python 3.7.5 h359304d_0 pkgs/main
python 3.7.6 h359304d_2 pkgs/main
python 3.7.7 hc70fcce_0_cpython pkgs/main
python 3.7.7 hf48f09d_4 pkgs/main
python 3.7.7 hfe9666f_0_cpython pkgs/main
python 3.7.9 h26836e1_0 pkgs/main
python 3.7.10 h88f2d9e_0 pkgs/main
python 3.7.11 h88f2d9e_0 pkgs/main
python 3.7.13 hdfd78df_0 pkgs/main
python 3.7.13 hdfd78df_1 pkgs/main
python 3.7.15 h218abb5_1 pkgs/main
python 3.7.15 h4319210_0 pkgs/main
python 3.7.16 h218abb5_0 pkgs/main
python 3.8.0 h359304d_0 pkgs/main
python 3.8.0 h359304d_1 pkgs/main
python 3.8.0 h359304d_2 pkgs/main
python 3.8.1 h359304d_1 pkgs/main
python 3.8.2 hc70fcce_0 pkgs/main
python 3.8.2 hf48f09d_13 pkgs/main
python 3.8.2 hfe9666f_0 pkgs/main
python 3.8.3 h26836e1_1 pkgs/main
python 3.8.3 h26836e1_2 pkgs/main
python 3.8.5 h26836e1_0 pkgs/main
python 3.8.5 h26836e1_1 pkgs/main
python 3.8.8 h88f2d9e_4 pkgs/main
python 3.8.8 h88f2d9e_5 pkgs/main
python 3.8.10 h88f2d9e_7 pkgs/main
python 3.8.11 h88f2d9e_1 pkgs/main
python 3.8.12 h88f2d9e_0 pkgs/main
python 3.8.13 hdfd78df_0 pkgs/main
python 3.8.13 hdfd78df_1 pkgs/main
python 3.8.15 h218abb5_2 pkgs/main
python 3.8.15 h4319210_0 pkgs/main
python 3.8.16 h218abb5_2 pkgs/main
python 3.8.16 h218abb5_3 pkgs/main
python 3.8.16 h5ee71fb_4 pkgs/main
python 3.8.17 h218abb5_0 pkgs/main
python 3.8.17 h5ee71fb_0 pkgs/main
python 3.8.18 h218abb5_0 pkgs/main
python 3.8.18 h5ee71fb_0 pkgs/main
python 3.9.0 h88f2d9e_1 pkgs/main
python 3.9.0 h88f2d9e_2 pkgs/main
python 3.9.1 h88f2d9e_2 pkgs/main
python 3.9.2 h88f2d9e_0 pkgs/main
python 3.9.4 h88f2d9e_0 pkgs/main
python 3.9.5 h88f2d9e_3 pkgs/main
python 3.9.6 h88f2d9e_0 pkgs/main
python 3.9.6 h88f2d9e_1 pkgs/main
python 3.9.7 h88f2d9e_1 pkgs/main
python 3.9.11 hdfd78df_1 pkgs/main
python 3.9.11 hdfd78df_2 pkgs/main
python 3.9.12 hdfd78df_0 pkgs/main
python 3.9.12 hdfd78df_1 pkgs/main
python 3.9.13 hdfd78df_1 pkgs/main
python 3.9.13 hdfd78df_2 pkgs/main
python 3.9.15 h218abb5_2 pkgs/main
python 3.9.15 hdfd78df_0 pkgs/main
python 3.9.16 h218abb5_0 pkgs/main
python 3.9.16 h218abb5_1 pkgs/main
python 3.9.16 h218abb5_2 pkgs/main
python 3.9.16 h5ee71fb_3 pkgs/main
python 3.9.17 h218abb5_0 pkgs/main
python 3.9.17 h5ee71fb_0 pkgs/main
python 3.9.18 h218abb5_0 pkgs/main
python 3.9.18 h5ee71fb_0 pkgs/main
python 3.10.0 h88f2d9e_0 pkgs/main
python 3.10.0 h88f2d9e_1 pkgs/main
python 3.10.0 hdfd78df_2 pkgs/main
python 3.10.0 hdfd78df_3 pkgs/main
python 3.10.0 hdfd78df_5 pkgs/main
python 3.10.3 hdfd78df_5 pkgs/main
python 3.10.4 hdfd78df_0 pkgs/main
python 3.10.6 hdfd78df_0 pkgs/main
python 3.10.6 hdfd78df_1 pkgs/main
python 3.10.8 h218abb5_1 pkgs/main
python 3.10.8 hdfd78df_0 pkgs/main
python 3.10.9 h218abb5_0 pkgs/main
python 3.10.9 h218abb5_1 pkgs/main
python 3.10.9 h218abb5_2 pkgs/main
python 3.10.10 h218abb5_2 pkgs/main
python 3.10.11 h218abb5_2 pkgs/main
python 3.10.11 h5ee71fb_3 pkgs/main
python 3.10.12 h218abb5_0 pkgs/main
python 3.10.12 h5ee71fb_0 pkgs/main
python 3.10.13 h218abb5_0 pkgs/main
python 3.10.13 h5ee71fb_0 pkgs/main
python 3.11.0 h1fd4e5f_2 pkgs/main
python 3.11.0 h1fd4e5f_3 pkgs/main
python 3.11.2 h1fd4e5f_0 pkgs/main
python 3.11.3 h1fd4e5f_0 pkgs/main
python 3.11.3 hf27a42d_1 pkgs/main
python 3.11.4 h1fd4e5f_0 pkgs/main
python 3.11.4 hf27a42d_0 pkgs/main
python 3.11.5 h1fd4e5f_0 pkgs/main
python 3.11.5 hf27a42d_0 pkgs/main
python 3.11.7 hf27a42d_0 pkgs/main
python 3.11.8 hf27a42d_0 pkgs/main
python 3.12.0 hd58486a_0 pkgs/main
python 3.12.1 hd58486a_0 pkgs/main
python 3.12.2 hd58486a_0 pkgs/main

and even after downloading the development version of crisprScore (v.1.7.2) and crisprScoreData from this github
I still faced similar errors, shown below, please help!

guideSet <- addOnTargetScores(guideSet, methods = c("azimuth", "ruleset1", "ruleset3", "lindel", "deephf", "deepspcas9", "crisprater"))
[addOnTargetScores] Adding azimuth scores.

  • /Users/dskuen/Library/Caches/org.R-project.R/R/basilisk/1.14.3/0/bin/conda 'create' '--yes' '--prefix' '/Users/dskuen/Library/Caches/org.R-project.R/R/basilisk/1.14.3/crisprScore/1.7.2/azimuth_basilisk' 'python=2.7' '--quiet' '-c' 'bioconda' '-c' 'conda-forge'
    Collecting package metadata (current_repodata.json): ...working... done
    Solving environment: ...working... failed with repodata from current_repodata.json, will retry with next repodata source.
    Collecting package metadata (repodata.json): ...working... done
    Solving environment: ...working... done

Package Plan

environment location: /Users/dskuen/Library/Caches/org.R-project.R/R/basilisk/1.14.3/crisprScore/1.7.2/azimuth_basilisk

added / updated specs:
- python=2.7

The following NEW packages will be INSTALLED:

ca-certificates conda-forge/osx-64::ca-certificates-2024.2.2-h8857fd0_0
certifi conda-forge/osx-64::certifi-2019.11.28-py27h8c360ce_1
libcxx conda-forge/osx-64::libcxx-16.0.6-hd57cbcb_0
libffi bioconda/osx-64::libffi-3.2.1-1
libsqlite conda-forge/osx-64::libsqlite-3.45.1-h92b6c6a_0
libzlib conda-forge/osx-64::libzlib-1.2.13-h8a1eda9_5
ncurses conda-forge/osx-64::ncurses-6.4-h93d8f39_2
openssl conda-forge/osx-64::openssl-1.1.1w-h8a1eda9_0
pip conda-forge/osx-64::pip-20.0.2-py27_1
python conda-forge/osx-64::python-2.7.15-h8e446fc_1011_cpython
python_abi conda-forge/osx-64::python_abi-2.7-1_cp27m
readline conda-forge/osx-64::readline-8.2-h9e318b2_1
setuptools conda-forge/osx-64::setuptools-44.0.0-py27_0
sqlite conda-forge/osx-64::sqlite-3.45.1-h7461747_0
tk conda-forge/osx-64::tk-8.6.13-h1abcd95_1
wheel conda-forge/osx-64::wheel-0.34.2-py27_0
zlib conda-forge/osx-64::zlib-1.2.13-h8a1eda9_5

Preparing transaction: ...working... done
Verifying transaction: ...working... done
Executing transaction: ...working... done

  • /Users/dskuen/Library/Caches/org.R-project.R/R/basilisk/1.14.3/0/bin/conda 'install' '--yes' '--prefix' '/Users/dskuen/Library/Caches/org.R-project.R/R/basilisk/1.14.3/crisprScore/1.7.2/azimuth_basilisk' 'python=2.7'
    Collecting package metadata (current_repodata.json): ...working... done
    Solving environment: ...working... done

==> WARNING: A newer version of conda exists. <==
current version: 4.12.0
latest version: 24.1.2

Please update conda by running

$ conda update -n base -c defaults conda

Package Plan

environment location: /Users/dskuen/Library/Caches/org.R-project.R/R/basilisk/1.14.3/crisprScore/1.7.2/azimuth_basilisk

added / updated specs:
- python=2.7

The following packages will be UPDATED:

openssl conda-forge::openssl-1.1.1w-h8a1eda9_0 --> pkgs/main::openssl-3.0.13-hca72f7f_0
python conda-forge::python-2.7.15-h8e446fc_1~ --> pkgs/main::python-2.7.18-hc817775_0

The following packages will be SUPERSEDED by a higher-priority channel:

ca-certificates conda-forge::ca-certificates-2024.2.2~ --> pkgs/main::ca-certificates-2023.12.12-hecd8cb5_0

Preparing transaction: ...working... done
Verifying transaction: ...working... done
Executing transaction: ...working... done

  • /Users/dskuen/Library/Caches/org.R-project.R/R/basilisk/1.14.3/0/bin/conda 'install' '--yes' '--prefix' '/Users/dskuen/Library/Caches/org.R-project.R/R/basilisk/1.14.3/crisprScore/1.7.2/azimuth_basilisk' '-c' 'bioconda' '-c' 'conda-forge' 'python=2.7' 'python=2.7' 'biopython=1.74' 'certifi=2019.11.28' 'cycler=0.10.0' 'futures=3.3.0' 'kiwisolver=1.1.0' 'matplotlib=2.2.3' 'mmtf-python=1.1.2' 'nose=1.3.7' 'numpy=1.11.3' 'olefile=0.46' 'pandas=0.23.4' 'Pillow=6.2.1' 'pip=20.1.1' 'pyparsing=2.4.7' 'python-dateutil=2.8.1' 'pytz=2020.1' 'reportlab=3.5.42' 'scipy=1.2.1' 'setuptools=44.0.0' 'six=1.15.0' 'subprocess32=3.5.4' 'tornado=5.1.1' 'wheel=0.36.2'
    Collecting package metadata (current_repodata.json): ...working... done
    Solving environment: ...working... failed with initial frozen solve. Retrying with flexible solve.
    Collecting package metadata (repodata.json): ...working... done
    Solving environment: ...working... failed with initial frozen solve. Retrying with flexible solve.

PackagesNotFoundError: The following packages are not available from current channels:

  • mmtf-python=1.1.2
  • pytz=2020.1
  • pyparsing=2.4.7
  • wheel=0.36.2
  • python-dateutil=2.8.1

Current channels:

To search for alternate channels that may provide the conda package you're
looking for, navigate to

https://anaconda.org

and use the search bar at the top of the page.

Error: one or more Python packages failed to install [error code 1]

Originally posted by @codingrookie123 in #9 (comment)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.