azimuth_dependencies <- c("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")
azimuth_dependencies_pip <- c("scikit-learn==0.17.1")

deephf_dependencies <- c("python==3.6",
                         "viennarna==2.4.5",
                         "absl-py==0.12.0",
                         "astor==0.8.1",
                         "biopython==1.71",
                         "bleach==1.5.0",
                         "certifi==2020.12.5",
                         "cycler==0.10.0",
                         "decorator==4.4.2",
                         "dotmap==1.2.20",
                         "gast==0.4.0",
                         "GPy==1.9.8",
                         "GPyOpt==1.2.6",
                         "grpcio==1.36.1",
                         "h5py==2.9.0",
                         "html5lib==0.9999999",
                         "importlib-metadata==3.7.2",
                         "Keras==2.1.6",
                         "kiwisolver==1.3.1",
                         "Mako==1.1.4",
                         "Markdown==3.3.4",
                         "MarkupSafe==1.1.1",
                         "matplotlib==3.1.1",
                         "numpy==1.14.0",
                         "pandas==0.25.3",
                         "paramz==0.9.5",
                         "pip==21.0.1",
                         "protobuf==3.15.5",
                         "pygpu==0.7.6",
                         "pyparsing==2.4.7",
                         "python-dateutil==2.8.1",
                         "pytz==2021.1",
                         "PyYAML==5.4.1",
                         "scikit-learn==0.19.1",
                         "scipy==1.1.0",
                         "setuptools==49.6.0",
                         "six==1.15.0",
                         "tensorboard==1.8.0",
                         "tensorflow==1.8.0",
                         "termcolor==1.1.0",
                         "Theano==1.0.5",
                         "tornado==6.1",
                         "typing-extensions==3.7.4.3",
                         "webencodings==0.5.1",
                         "Werkzeug==1.0.1",
                         "wheel==0.36.2",
                         "zipp==3.4.1")

deepcpf1_dependencies <- c("python==2.7",
                           "funcsigs==1.0.2",
                           "h5py==2.10.0",
                           "Keras==2.1.5",
                           "linecache2==1.0.0",
                           "Mako==1.1.4",
                           "MarkupSafe==1.1.1",
                           "mock==3.0.5",
                           "numpy==1.16.5",
                           "pip==20.1.1",
                           "protobuf==3.11.4",
                           "pygpu==0.7.6",
                           "PyYAML==5.3.1",
                           "scipy==1.2.1",
                           "setuptools==44.0.0",
                           "six==1.15.0",
                           "tensorflow==1.0.0",
                           "Theano==1.0.1",
                           "traceback2==1.4.0",
                           "unittest2==1.1.0",
                           "wheel==0.36.2")



enpamgb_dependencies <- c("python==3.6",
                          "absl-py==0.12.0",
                          "astunparse==1.6.3",
                          "biopython==1.78",
                          "cachetools==4.2.1",
                          "certifi==2020.12.5",
                          "chardet==4.0.0",
                          "flatbuffers==1.12",
                          "gast==0.3.3",
                          "google-auth==1.27.1",
                          "google-auth-oauthlib==0.4.3",
                          "google-pasta==0.2.0",
                          "grpcio==1.32.0",
                          "h5py==2.10.0",
                          "idna==2.10",
                          "importlib-metadata==3.7.2",
                          "joblib==1.0.1",
                          "Keras-Preprocessing==1.1.2",
                          "Markdown==3.3.4",
                          "numpy==1.19.5",
                          "oauthlib==3.1.0",
                          "pandas==1.1.5",
                          "pip==21.0.1",
                          "protobuf==3.15.5",
                          "pyasn1==0.4.8",
                          "pyasn1-modules==0.2.8",
                          "python-dateutil==2.8.1",
                          "pytz==2021.1",
                          "requests==2.25.1",
                          "requests-oauthlib==1.3.0",
                          "rsa==4.7.2",
                          "scikit-learn==0.21.2",
                          "scipy==1.5.3",
                          "setuptools==49.6.0",
                          "six==1.15.0",
                          "termcolor==1.1.0",
                          "typing-extensions==3.7.4.3",
                          "urllib3==1.26.3",
                          "Werkzeug==1.0.1",
                          "wheel==0.36.2",
                          "wrapt==1.12.1",
                          "zipp==3.4.1")
enpamgb_dependencies_pip <- c("tensorflow==2.4.1")


lindel_dependencies <- c("python==3.6",
                         "certifi==2020.12.5",
                         "numpy==1.19.5",
                         "pip==21.0.1",
                         "scipy==1.5.3",
                         "setuptools==49.6.0",
                         "wheel==0.36.2")

crisprai_dependencies <- c("python==2.7.18",
                           "biopython==1.68",
                           "bx-python==0.7.3",
                           "pysam==0.15.3",
                           "scikit-learn==0.17.1",
                           "scipy==0.18.1",
                           "viennarna==2.4.18",
                           "wheel==0.36.2")
crisprai_dependencies_pip <- c("pandas==0.15.0")


deepspcas9_dependencies <- c("python==2.7",
                             "scipy==1.1.0",
                             "numpy==1.14.5")
deepspcas9_dependencies_pip <- c("tensorflow==1.4.1")



rs3_dependencies <- c("python==3.7.7",
                      "joblib==1.0.1",
                      "pandas==1.3.5",
                      "scikit-learn==1.0.2",
                      "biopython==1.78",
                      "lightgbm==3.2.1",
                      "tqdm==4.64.0",
                      "requests==2.27.1")
rs3_dependencies_pip <- c("sglearn==1.2.5")




#' @importFrom basilisk BasiliskEnvironment
env_azimuth <- BasiliskEnvironment(envname="azimuth_basilisk",
                                   pkgname="crisprScore",
                                   paths="python/azimuth",
                                   packages=azimuth_dependencies,
                                   channels = c("bioconda", "conda-forge"),
                                   pip=azimuth_dependencies_pip)

env_lindel <- BasiliskEnvironment(envname="lindel_basilisk",
                                  pkgname="crisprScore",
                                  paths="python/lindel",
                                  packages=lindel_dependencies,
                                  channels=c("conda-forge", "bioconda"))

env_crisprai <- BasiliskEnvironment(envname="crisprai_basilisk",
                                    pkgname="crisprScore",
                                    packages=crisprai_dependencies,
                                    channels = c("main",
                                                 "anaconda",
                                                 "bioconda",
                                                 "conda-forge"),
                                    pip=crisprai_dependencies_pip)

env_deepspcas9 <- BasiliskEnvironment(envname="deepspcas9__basilisk",
                                      pkgname="crisprScore",
                                      packages=deepspcas9_dependencies,
                                      channels = c("bioconda", "conda-forge"),
                                      pip=deepspcas9_dependencies_pip)

env_rs3 <- BasiliskEnvironment(envname="rs3__basilisk",
                               pkgname="crisprScore",
                               packages=rs3_dependencies,
                               channels = c("bioconda", "conda-forge"),
                               pip=rs3_dependencies_pip)

if (.Platform$OS.type!="windows"){
    env_deephf <- BasiliskEnvironment(envname="deephf_basilisk",
                                      pkgname="crisprScore",
                                      paths="python/deephf",
                                      packages=deephf_dependencies,
                                      channels=c("conda-forge", "bioconda"))



    env_enpamgb <- BasiliskEnvironment(envname="enpamgb_basilisk",
                                       pkgname="crisprScore",
                                       paths="python/enpamgb",
                                       packages=enpamgb_dependencies,
                                       channels=c("conda-forge", "bioconda"),
                                       pip=enpamgb_dependencies_pip)

    env_deepcpf1 <- BasiliskEnvironment(envname="deepcpf1_basilisk",
                                        pkgname="crisprScore",
                                        paths="python/deepcpf1",
                                        packages=deepcpf1_dependencies,
                                        channels=c("conda-forge", "bioconda"))

} else {
    env_deephf   <- NULL
    env_enpamgb  <- NULL
    env_deepcpf1 <- NULL
}