UBESP-DCTV / simulomicsr

2 stars 0 forks source link

Error in get_proteingroups_filepath #7

Closed lucavd closed 1 year ago

lucavd commented 1 year ago

La funzione extract_with_proteins restituisce un vettore di caratteri con NA quando non è presente il file "proteinGroups.txt".

Quindi get_proteingroups_filepath cerca nel database online un PXD di nome "NA" che ovviamente non esiste.

Querying ProteomeXchange for NA.
Error in `purrr::map()`:
ℹ In index: 1.
Caused by error in `open.connection()`:
! cannot open the connection to 'https://www.ebi.ac.uk/pride/ws/archive/v2/projects/NA'

I test passano perché tutti i PXD nei test sono veri, senza NA.

Forse nella funzione extract_with_proteins ci va un purrr::discard(is.na) o una cosa simile per levare tutti gli NA. Ho provato ma mi dà altri errori quindi forse non lo uso correttamente

CorradoLanera commented 1 year ago

non mi risulta, infatti il test

test_that("get_proteingroups_filepath works", {
  # setup
  prot_22 <- compose_pxds(c(1, 4, 22, 44))

  # eval
  res <- pull_pxd_listfile(prot_22) |>
    extract_with_proteins() |>
    get_proteingroups_filepath() |>
    suppressMessages()

  # test
  expect_character(res, pattern = "proteinGroups\\.txt$", len = 2)
  purrr::walk(res, expect_file_exists)
})

mostra proprio quello.

Riesci a mandarmi un reprex? (o a scrivere direttamente un test che fallisca?)

lucavd commented 1 year ago

questa fallisce

test_that("get_proteingroups_filepath works", {
  # setup
  prot_22 <- compose_pxds(c(22, NA))

  # eval
  res <- pull_pxd_listfile(prot_22) |>
    extract_with_proteins() |>
    get_proteingroups_filepath() |>
    read_proteingroups()

  # test
  expect_tibble(res)
})

Il problems è in extract_with_proteins() perché se non trova il PXD, restituisce un NA che se passato a get_proteingroups_filepath() dà errore come sopra. Bisognerebbe "pulire" il vettore di caratteri che esce da extract_with_proteins() ed eliminare tutti gli NA prima di passarlo a get_proteingroups_filepath().

CorradoLanera commented 1 year ago

ok, ma non capisco perché richiedere

compose_pxds(c(22, NA))

hai un esempio "realistico"? In ogni caso ok, per check and fix. 👍

lucavd commented 1 year ago

Un esempio realistico è:

pxds <- compose_pxds(1:40) #scan per i primi 40 entries nella repo 

pxd_list <- pull_pxd_listfile(pxds) #lista dei file per ogni pxd (i primi 40)

have_prot_gropus <- extract_with_proteins(pxd_list) #retrieve di quelli che hanno "proteinGroups.txt"
> have_prot_gropus
 [1] NA          NA          NA          NA          "PXD000022"
 [6] NA          NA          NA          NA          NA  

Che è giusto: dei primi 40 repo solo 10 sono veri (gli altri sono skippati) e solo 1 ha il file che cerchiamo

CorradoLanera commented 1 year ago

Il problema è che pull_pxd_listfile() ha NA per alcuni PXD, ovvero non hanno proprio alcun file... ora, bisogna decidere se eliminarli da quel risultato o gestire gli NA in input a extract_with_proteins()

lucavd commented 1 year ago

Non ci interessano gli NA. Sono repo inesistenti. Possiamo eliminarli

On Wed, Mar 8, 2023, 21:04 Corrado Lanera @.***> wrote:

Il problema è che pull_pxd_listfile() ha NA per alcuni PXD, ovvero non hanno proprio alcun file... ora, bisogna decidere se eliminarli da quel risultato o gestire gli NA in input a extract_with_proteins()

— Reply to this email directly, view it on GitHub https://github.com/UBESP-DCTV/simulomicsr/issues/7#issuecomment-1460791833, or unsubscribe https://github.com/notifications/unsubscribe-auth/AB4JXGCQN3KASSKKNODGWBDW3DQ5BANCNFSM6AAAAAAVRK4Q64 . You are receiving this because you authored the thread.Message ID: @.***>