summaryrefslogtreecommitdiffstats
path: root/pkgs/development/r-modules
diff options
context:
space:
mode:
authorJustin Bedő <cu@cua0.org>2024-05-27 10:19:33 +1000
committerGitHub <noreply@github.com>2024-05-27 10:19:33 +1000
commit9ca3f649614213b2aaf5f1e16ec06952fe4c2632 (patch)
treeeb3c12372910ae5443b97eac27b3a6b4d95520b4 /pkgs/development/r-modules
parent0415aec2006bb384175851751e6ba915877486e7 (diff)
parentd69d444fe1d1628782a911820fd8d17c2b7906e9 (diff)
Merge pull request #307071 from Kupac/fix_immunotation
rPackages.immunotation: cache external URLs
Diffstat (limited to 'pkgs/development/r-modules')
-rw-r--r--pkgs/development/r-modules/default.nix37
-rw-r--r--pkgs/development/r-modules/patches/immunotation.patch47
2 files changed, 84 insertions, 0 deletions
diff --git a/pkgs/development/r-modules/default.nix b/pkgs/development/r-modules/default.nix
index 8d4004d7580f..ce5f581be1bc 100644
--- a/pkgs/development/r-modules/default.nix
+++ b/pkgs/development/r-modules/default.nix
@@ -1498,6 +1498,43 @@ let
buildInputs = [ cacert ] ++ attrs.buildInputs;
});
+
+ immunotation = let
+ MHC41alleleList = fetchurl {
+ url = "https://services.healthtech.dtu.dk/services/NetMHCpan-4.1/allele.list";
+ hash = "sha256-CRZ+0uHzcq5zK5eONucAChXIXO8tnq5sSEAS80Z7jhg=";
+ };
+
+ MHCII40alleleList = fetchurl {
+ url = "https://services.healthtech.dtu.dk/services/NetMHCIIpan-4.0/alleles_name.list";
+ hash = "sha256-K4Ic2NUs3P4IkvOODwZ0c4Yh8caex5Ih0uO5jXRHp40=";
+ };
+
+ # List of valid countries, regions and ethnic groups
+ # The original page is changing a bit every day, but the relevant
+ # content does not. Use archive.org to get a stable snapshot.
+ # It can be updated from time to time, or when the package becomes
+ # deficient. This may be difficult to know.
+ # Update the snapshot date, and add id_ after it, as described here:
+ # https://web.archive.org/web/20130806040521/http://faq.web.archive.org/page-without-wayback-code/
+ validGeographics = fetchurl {
+ url = "https://web.archive.org/web/20240418194005id_/http://www.allelefrequencies.net/hla6006a.asp";
+ hash = "sha256-m7Wkmh/cPxeqn94LwoznIh+fcFXskmSGErUYj6kTqak=";
+ };
+ in old.immunotation.overrideAttrs (attrs: {
+ patches = [ ./patches/immunotation.patch ];
+ postPatch = ''
+ substituteInPlace "R/external_resources_input.R" --replace-fail \
+ "nix-NetMHCpan-4.1-allele-list" ${MHC41alleleList}
+
+ substituteInPlace "R/external_resources_input.R" --replace-fail \
+ "nix-NETMHCIIpan-4.0-alleles-name-list" ${MHCII40alleleList}
+
+ substituteInPlace "R/AFND_interface.R" --replace-fail \
+ "nix-valid-geographics" ${validGeographics}
+ '';
+ });
+
rstan = old.rstan.overrideAttrs (attrs: {
env = (attrs.env or { }) // {
NIX_CFLAGS_COMPILE = attrs.env.NIX_CFLAGS_COMPILE + " -DBOOST_PHOENIX_NO_VARIADIC_EXPRESSION";
diff --git a/pkgs/development/r-modules/patches/immunotation.patch b/pkgs/development/r-modules/patches/immunotation.patch
new file mode 100644
index 000000000000..2019e8e50a02
--- /dev/null
+++ b/pkgs/development/r-modules/patches/immunotation.patch
@@ -0,0 +1,47 @@
+diff --git a/R/AFND_interface.R b/R/AFND_interface.R
+index b62e8e0..0f22d85 100644
+--- a/R/AFND_interface.R
++++ b/R/AFND_interface.R
+@@ -244,9 +244,9 @@ check_population <- function(hla_population) {
+ #' @return list of valid countries, regions and ethnic origin
+ #' @keywords internal
+ get_valid_geographics <- function() {
+- url <- "http://www.allelefrequencies.net/hla6006a.asp?"
+- html_input <- getURL(url, read_method = "html")
+-
++ # http://www.allelefrequencies.net/hla6006a.asp?
++ html_input <- xml2::read_html("nix-valid-geographics")
++
+ rvest_tables <- rvest::html_table(html_input, fill = TRUE)
+
+ # country
+diff --git a/R/external_resources_input.R b/R/external_resources_input.R
+index c4b1dc1..8fc5881 100644
+--- a/R/external_resources_input.R
++++ b/R/external_resources_input.R
+@@ -74,16 +74,17 @@ getURL <- function(URL, N.TRIES=2L,
+ # MHC I
+ # netmhcI_input_template is an internal variable containing list of valid
+ # NetMHCpan input alleles
+-netmhcI_input_template <- getURL(
+- URL="https://services.healthtech.dtu.dk/services/NetMHCpan-4.1/allele.list",
+- read_method = "delim", delim = "\t",
+- col_names = c("netmhc_input", "hla_chain_name", "HLA_gene"))
++netmhcI_input_template <- readr::read_delim(
++ # https://services.healthtech.dtu.dk/services/NetMHCpan-4.1/allele.list
++ "nix-NetMHCpan-4.1-allele-list",
++ delim = "\t",
++ skip = 0,
++ col_names = c("netmhc_input", "hla_chain_name", "HLA_gene")
++ )
+
+ # MHC II
+-lines <- getURL(
+- URL = paste0("https://services.healthtech.dtu.dk/services/",
+- "NetMHCIIpan-4.0/alleles_name.list"),
+- read_method = "lines")
++# https://services.healthtech.dtu.dk/services/NetMHCIIpan-4.0/alleles_name.list
++lines <- readr::read_lines("nix-NETMHCIIpan-4.0-alleles-name-list")
+ lines_rep <- stringr::str_replace_all(lines, "\t+|\\s\\s+", "\t")
+ netmhcII_input_template <- suppressWarnings(
+ suppressMessages(read.delim(textConnection(lines_rep), sep = "\t")))