immunomind / immunarch

🧬 Immunarch: an R Package for Fast and Painless Exploration of Single-cell and Bulk T-cell/Antibody Immune Repertoires
https://immunarch.com
Apache License 2.0
302 stars 65 forks source link

repDiversity error #67

Closed aishu291 closed 4 years ago

aishu291 commented 4 years ago

Hi, I am trying to use the repDiversity on some of our samples. The data was analyzed using MiXCR but I converted the files to immunarch format. In both formats I get the following error.

ALTCL_diversity = repDiversity(ALTCL_top30, "gini.simp") Error: Can't subset columns that don't exist. x Column CDR3.aa doesn't exist.

This is example of my file columns-

Clones Proportion CDR3.nt CDR3.aa V.name D.name J.name V.end D.start D.end J.start VJ.ins VD.ins DJ.ins Sequence
5 0.2631579 TGTGCCAGCAGCAAAGGTGACGGCCGCGATCCACTCAACTCGCACAGCGGAGTTGGAGCTGAGGCCCAT CASSKGDGRDPLNSHSGVGAEAH TRBV21-1 TRBD2 TRBJ2-6 16 NA 2 69 46 28 18 TGTGCCAGCAGCAAAGGTGACGGCCGCGATCCACTCAACTCGCACAGCGGAGTTGGAGCTGAGGCCCAT
2 0.10526316 TGTGCCAGCAGGACTGGGTAGTCCAAAGAATCGGCAAATGAGAGGT CASRTG*~KNRQMRG TRBV28 TRBD2 TRBJ2-3 11 1 5 45 26 6 20 TGTGCCAGCAGGACTGGGTAGTCCAAAGAATCGGCAAATGAGAGGT
2 0.10526316 TGGAACTTGATTGTCGATTTCACCTCATCCACTTT WNLIVD~HLIHF TRBV20-1   TRBJ1-6 2 NA NA 18 NA NA NA TGGAACTTGATTGTCGATTTCACCTCATCCACTTT
1 0.05263158 AATGCCAACCCTCCATTTTTCCTCTCCAGATATTTTTGGGAGTGACAAACATTCTCTCATCATACTTAGCCTACCTAGATTTCTCACGACGAGTAATGCATGTCCGTGGTTGGGTGCACCTGTAGTTCTGTTTATT NANPPFFLSRYFWE*QTFSHHT~LPRFLTTSNACPWLGAPVVLFI TRBV23-1, TRBV26 TRBD2 TRBJ1-4 7 6 NA 127 112 0 112 AATGCCAACCCTCCATTTTTCCTCTCCAGATATTTTTGGGAGTGACAAACATTCTCTCATCATACTTAGCCTACCTAGATTTCTCACGACGAGTAATGCATGTCCGTGGTTGGGTGCACCTGTAGTTCTGTTTATT
1 0.05263158 TTGCCCATCAGCACCACGGCCTTCCCTCGGAGCGACATGCGGATCTGCTGCATCTGCTTGGAGCCCACGTTGTCTGCTCCCACAATGAAGCATTTT LPISTTAFPRSDMRICCICLEPTLSAPTMKHF TRBV10-3 TRBD2 TRBJ1-5 11 NA 3 88 66 5 61 TTGCCCATCAGCACCACGGCCTTCCCTCGGAGCGACATGCGGATCTGCTGCATCTGCTTGGAGCCCACGTTGTCTGCTCCCACAATGAAGCATTTT
1 0.05263158 TGCACCAGCTGCCCCAGCTCCATCATCACCCTGAAGAGCGGGATTCAGAACATGCTGCAGTTTTATATTCCAGAAGTGGAAGGTGTGGAGCA CTSCPSSIITLKSGI~EHAAVLYSRSGRCGA TRBV1 TRBD2 TRBJ1-5 13 NA 2 92 70 22 48 TGCACCAGCTGCCCCAGCTCCATCATCACCCTGAAGAGCGGGATTCAGAACATGCTGCAGTTTTATATTCCAGAAGTGGAAGGTGTGGAGCA
1 0.05263158 TGTGCCACCTCCACTGCCCTGGCTGGGACCAGCTCCACCCTGGTTCCCTGAAGGGAATCTGAAGCTGCCAAAACCTCGACTCTGCTGCAG CATSTALAGTSSTLVP*RESEAAKTSTLLQ TRBV2, TRBV21-1, TRBV6-1 TRBD2 TRBJ2-2P 7 NA 2 81 63 16 47 TGTGCCACCTCCACTGCCCTGGCTGGGACCAGCTCCACCCTGGTTCCCTGAAGGGAATCTGAAGCTGCCAAAACCTCGACTCTGCTGCAG

Please help me resolve the error. Thank you!

vadimnazarov commented 4 years ago

Hi @aishu291

Thank you for letting us know about the issue! Can you provide a full code for your script, from data loading via repLoad to the diversity calculations?

aishu291 commented 4 years ago

ALTCL_top30 <- repLoad("/Users/aishwaryaiyer/Documents/TRB/ALTCL/top30/", "mixcr")

== Step 1/3: loading repertoire files... ==

Processing "/Users/aishwaryaiyer/Documents/TRB/ALTCL/top30/" ... -- Parsing "/Users/aishwaryaiyer/Documents/TRB/ALTCL/top30//GI11_exome_30_trb.txt" -- mixcr -- Parsing "/Users/aishwaryaiyer/Documents/TRB/ALTCL/top30//GI14_exome_30_trb.txt" -- mixcr -- Parsing "/Users/aishwaryaiyer/Documents/TRB/ALTCL/top30//GPS21_30_trb.txt" -- mixcr -- Parsing "/Users/aishwaryaiyer/Documents/TRB/ALTCL/top30//GPS22_exome_30_trb.txt" -- mixcr -- Parsing "/Users/aishwaryaiyer/Documents/TRB/ALTCL/top30//GPS23_exome_30_trb.txt" -- mixcr -- Parsing "/Users/aishwaryaiyer/Documents/TRB/ALTCL/top30//GPS24_exome_30_trb.txt" -- mixcr -- Parsing "/Users/aishwaryaiyer/Documents/TRB/ALTCL/top30//GPS25_exome_30_trb.txt" -- mixcr -- Parsing "/Users/aishwaryaiyer/Documents/TRB/ALTCL/top30//GPS27_exome_30_trb.txt" -- mixcr -- Parsing "/Users/aishwaryaiyer/Documents/TRB/ALTCL/top30//GPS28_exome_30_trb.txt" -- mixcr -- Parsing "/Users/aishwaryaiyer/Documents/TRB/ALTCL/top30//GPS32_exome_30_trb.txt" -- mixcr -- Parsing "/Users/aishwaryaiyer/Documents/TRB/ALTCL/top30//GPS33_exome_30_trb.txt" -- mixcr -- Parsing "/Users/aishwaryaiyer/Documents/TRB/ALTCL/top30//GPS36_exome_30_trb.txt" -- mixcr -- Parsing "/Users/aishwaryaiyer/Documents/TRB/ALTCL/top30//GPS37_30_trb.txt" -- mixcr -- Parsing "/Users/aishwaryaiyer/Documents/TRB/ALTCL/top30//GPS38_30_trb.txt" -- mixcr -- Parsing "/Users/aishwaryaiyer/Documents/TRB/ALTCL/top30//GPS39_exome_30_trb.txt" -- mixcr -- Parsing "/Users/aishwaryaiyer/Documents/TRB/ALTCL/top30//GPS40_exome_30_trb.txt" -- mixcr -- Parsing "/Users/aishwaryaiyer/Documents/TRB/ALTCL/top30//GPS41_exome_30_trb.txt" -- mixcr -- Parsing "/Users/aishwaryaiyer/Documents/TRB/ALTCL/top30//GPS42_30_trb.txt" -- mixcr -- Parsing "/Users/aishwaryaiyer/Documents/TRB/ALTCL/top30//GPS46_30_trb.txt" -- mixcr -- Parsing "/Users/aishwaryaiyer/Documents/TRB/ALTCL/top30//GPS56_30_trb.txt" -- mixcr -- Parsing "/Users/aishwaryaiyer/Documents/TRB/ALTCL/top30//GPS57_exome_30_trb.txt" -- mixcr -- Parsing "/Users/aishwaryaiyer/Documents/TRB/ALTCL/top30//GPS58_exome_30_trb.txt" -- mixcr -- Parsing "/Users/aishwaryaiyer/Documents/TRB/ALTCL/top30//GPS59_30_trb.txt" -- mixcr -- Parsing "/Users/aishwaryaiyer/Documents/TRB/ALTCL/top30//GPS60_30_trb.txt" -- mixcr -- Parsing "/Users/aishwaryaiyer/Documents/TRB/ALTCL/top30//GPS61_30_trb.txt" -- mixcr -- Parsing "/Users/aishwaryaiyer/Documents/TRB/ALTCL/top30//GPS62_exome_30_trb.txt" -- mixcr -- Parsing "/Users/aishwaryaiyer/Documents/TRB/ALTCL/top30//GPS63_exome_30_trb.txt" -- mixcr -- Parsing "/Users/aishwaryaiyer/Documents/TRB/ALTCL/top30//GPS64_30_trb.txt" -- mixcr -- Parsing "/Users/aishwaryaiyer/Documents/TRB/ALTCL/top30//GPS65_exome_30_trb.txt" -- mixcr -- Parsing "/Users/aishwaryaiyer/Documents/TRB/ALTCL/top30//GPS66_30_trb.txt" -- mixcr -- Parsing "/Users/aishwaryaiyer/Documents/TRB/ALTCL/top30//GPS67_30_trb.txt" -- mixcr -- Parsing "/Users/aishwaryaiyer/Documents/TRB/ALTCL/top30//GPS68_30_trb.txt" -- mixcr -- Parsing "/Users/aishwaryaiyer/Documents/TRB/ALTCL/top30//GPS69_30_trb.txt" -- mixcr -- Parsing "/Users/aishwaryaiyer/Documents/TRB/ALTCL/top30//GPS70_exome_30_trb.txt" -- mixcr -- Parsing "/Users/aishwaryaiyer/Documents/TRB/ALTCL/top30//GPS71_exome_30_trb.txt" -- mixcr -- Parsing "/Users/aishwaryaiyer/Documents/TRB/ALTCL/top30//GPS72_30_trb.txt" -- mixcr -- Parsing "/Users/aishwaryaiyer/Documents/TRB/ALTCL/top30//GPS73_30_trb.txt" -- mixcr -- Parsing "/Users/aishwaryaiyer/Documents/TRB/ALTCL/top30//GPS74_exome_30_trb.txt" -- mixcr -- Parsing "/Users/aishwaryaiyer/Documents/TRB/ALTCL/top30//GPS75_30_trb.txt" -- mixcr -- Parsing "/Users/aishwaryaiyer/Documents/TRB/ALTCL/top30//GPS76_exome_30_trb.txt" -- mixcr -- Parsing "/Users/aishwaryaiyer/Documents/TRB/ALTCL/top30//GPS77_30_trb.txt" -- mixcr -- Parsing "/Users/aishwaryaiyer/Documents/TRB/ALTCL/top30//GPS78_exome_30_trb.txt" -- mixcr -- Parsing "/Users/aishwaryaiyer/Documents/TRB/ALTCL/top30//GPS79_exome_30_trb.txt" -- mixcr -- Parsing "/Users/aishwaryaiyer/Documents/TRB/ALTCL/top30//GPS89_30_trb.txt" -- mixcr -- Parsing "/Users/aishwaryaiyer/Documents/TRB/ALTCL/top30//GPS90_30_trb.txt" -- mixcr -- Parsing "/Users/aishwaryaiyer/Documents/TRB/ALTCL/top30//GPS93_exome_30_trb.txt" -- mixcr -- Parsing "/Users/aishwaryaiyer/Documents/TRB/ALTCL/top30//GPS94_exome_30_trb.txt" -- mixcr

== Step 2/3: checking metadata files and merging... ==

Processing "/Users/aishwaryaiyer/Documents/TRB/ALTCL/top30/" ... -- Metadata file not found; creating a dummy metadata...

== Step 3/3: splitting data by barcodes and chains... ==

Done!

ALTCL_diversity = repDiversity(ALTCL_top30, "gini.simp") Error: Can't subset columns that don't exist. x Column CDR3.aa doesn't exist. Run rlang::last_error() to see where the error occurred. rlang::last_error() <error/vctrs_error_subscript_oob> Can't subset columns that don't exist. x Column CDR3.aa doesn't exist. Backtrace:

  1. immunarch::repDiversity(ALTCL_top30, "gini.simp")
  2. vctrs:::stop_subscript_oob(...)
  3. vctrs:::stop_subscript(...) Run rlang::last_trace() to see the full context. rlang::last_trace() <error/vctrs_error_subscript_oob> Can't subset columns that don't exist. x Column CDR3.aa doesn't exist. Backtrace: █
  4. ├─immunarch::repDiversity(ALTCL_top30, "gini.simp")
  5. │ └─base::lapply(...)
  6. │ └─immunarch:::FUN(X[[i]], ...)
  7. │ └─%>%(...)
  8. │ ├─base::withVisible(eval(quote(_fseq(_lhs)), env, env))
  9. │ └─base::eval(quote(_fseq(_lhs)), env, env)
  10. │ └─base::eval(quote(_fseq(_lhs)), env, env)
  11. │ └─immunarch:::_fseq(_lhs)
  12. │ └─magrittr::freduce(value, _function_list)
  13. │ └─function_list[i]
  14. │ ├─dplyr::select(., .col, IMMCOL$count)
  15. │ └─dplyr:::select.data.frame(., .col, IMMCOL$count)
  16. │ └─tidyselect::vars_select(tbl_vars(.data), !!!enquos(...))
  17. │ └─tidyselect:::eval_select_impl(...)
  18. │ ├─tidyselect:::with_subscript_errors(...)
  19. │ │ ├─base::tryCatch(...)
  20. │ │ │ └─base:::tryCatchList(expr, classes, parentenv, handlers)
  21. │ │ │ └─base:::tryCatchOne(expr, names, parentenv, handlers[[1L]])
  22. │ │ │ └─base:::doTryCatch(return(expr), name, parentenv, handler)
  23. │ │ └─tidyselect:::instrument_base_errors(expr)
  24. │ │ └─base::withCallingHandlers(...)
  25. │ └─tidyselect:::vars_select_eval(...)
  26. │ └─tidyselect:::walk_data_tree(expr, data_mask, context_mask)
  27. │ └─tidyselect:::eval_c(expr, data_mask, context_mask)
  28. │ └─tidyselect:::reduce_sels(node, data_mask, context_mask, init = init)
  29. │ └─tidyselect:::walk_data_tree(new, data_mask, context_mask)
  30. │ └─tidyselect:::as_indices_sel_impl(...)
  31. │ └─tidyselect:::as_indices_impl(x, vars, strict = strict)
  32. │ └─tidyselect:::chr_as_locations(x, vars)
  33. │ └─vctrs::vec_as_location(x, n = length(vars), names = vars)
  34. └─vctrs:::stop_subscript_oob(...)
  35. └─vctrs:::stop_subscript(...)
vadimnazarov commented 4 years ago

Hello @aishu291

Thank you for the very detailed answer! This is an ideal answer all developers would like to see. 👍

The immune repertoire data is stored in the "data" element in the data list:

ALTCL_diversity = repDiversity(ALTCL_top30$data, "gini.simp")
aishu291 commented 4 years ago

Understood. Thank you!

vadimnazarov commented 4 years ago

My pleasure! @aishu291 did it work?

aishu291 commented 4 years ago

Yes it did! Once again thank you for your quick response!