Phase 1 study of intracranial T cell therapy with pemetrexed for refractory brain metastases and glioblastomas.
Paper
Loaded from Europe PMC by your browser, not stored by OSCR: doi.org · Europe PMC
The paper is loaded when this pane is shown.
The authors' code
C · 402 lines · 12 KB · GPL-3.0
- /* QSufSort.c
- Original source from qsufsort.c
- Copyright 1999, N. Jesper Larsson, all rights reserved.
- This file contains an implementation of the algorithm presented in "Faster
- Suffix Sorting" by N. Jesper Larsson ([email hidden]) and Kunihiko
- Sadakane ([email hidden]).
- This software may be used freely for any purpose. However, when distributed,
- the original source must be clearly stated, and, when the source code is
- distributed, the copyright notice must be retained and any alterations in
- the code must be clearly marked. No warranty is given regarding the quality
- of this software.
- Modified by Wong Chi-Kwong, 2004
- Changes summary: - Used long variable and function names
- - Removed global variables
- - Replace pointer references with array references
- - Used insertion sort in place of selection sort and increased insertion sort threshold
- - Reconstructing suffix array from inverse becomes an option
- - Add handling where end-of-text symbol is not necessary < all characters
- - Removed codes for supporting alphabet size > number of characters
- No warrenty is given regarding the quality of the modifications.
- */
- #include <stdio.h>
- #include <stdlib.h>
- #include <limits.h>
- #include "QSufSort.h"
- #define min(value1, value2) ( ((value1) < (value2)) ? (value1) : (value2) )
- #define med3(a, b, c) ( a<b ? (b<c ? b : a<c ? c : a) : (b>c ? b : a>c ? c : a))
- #define swap(a, b, t); t = a; a = b; b = t;
- // Static functions
- static void QSufSortSortSplit(qsint_t* __restrict V, qsint_t* __restrict I, const qsint_t lowestPos,
- const qsint_t highestPos, const qsint_t numSortedChar);
- static qsint_t QSufSortChoosePivot(qsint_t* __restrict V, qsint_t* __restrict I, const qsint_t lowestPos,
- const qsint_t highestPos, const qsint_t numSortedChar);
- static void QSufSortInsertSortSplit(qsint_t* __restrict V, qsint_t* __restrict I, const qsint_t lowestPos,
- const qsint_t highestPos, const qsint_t numSortedChar);
- static void QSufSortBucketSort(qsint_t* __restrict V, qsint_t* __restrict I, const qsint_t numChar, const qsint_t alphabetSize);
- static qsint_t QSufSortTransform(qsint_t* __restrict V, qsint_t* __restrict I, const qsint_t numChar, const qsint_t largestInputSymbol,
- const qsint_t smallestInputSymbol, const qsint_t maxNewAlphabetSize, qsint_t *numSymbolAggregated);
- /* Makes suffix array p of x. x becomes inverse of p. p and x are both of size
- n+1. Contents of x[0...n-1] are integers in the range l...k-1. Original
- contents of x[n] is disregarded, the n-th symbol being regarded as
- end-of-string smaller than all other symbols.*/
- void QSufSortSuffixSort(qsint_t* __restrict V, qsint_t* __restrict I, const qsint_t numChar, const qsint_t largestInputSymbol,
- const qsint_t smallestInputSymbol, const int skipTransform)
- {
- qsint_t i, j;
- qsint_t s, negatedSortedGroupLength;
- qsint_t numSymbolAggregated;
- qsint_t numSortedPos = 1;
- qsint_t newAlphabetSize;
- if (!skipTransform) {
- /* bucketing possible*/
- newAlphabetSize = QSufSortTransform(V, I, numChar, largestInputSymbol, smallestInputSymbol,
- numChar, &numSymbolAggregated);
- QSufSortBucketSort(V, I, numChar, newAlphabetSize);
- I[0] = -1;
- V[numChar] = 0;
- numSortedPos = numSymbolAggregated;
- }
- while ((qsint_t)(I[0]) >= -(qsint_t)numChar) {
- i = 0;
- negatedSortedGroupLength = 0;
- do {
- s = I[i];
- if (s < 0) {
- i -= s; /* skip over sorted group.*/
- negatedSortedGroupLength += s;
- } else {
- if (negatedSortedGroupLength) {
- I[i+negatedSortedGroupLength] = negatedSortedGroupLength; /* combine preceding sorted groups */
- negatedSortedGroupLength = 0;
- }
- j = V[s] + 1;
- QSufSortSortSplit(V, I, i, j - 1, numSortedPos);
- i = j;
- }
- } while (i <= numChar);
- if (negatedSortedGroupLength) {
- /* array ends with a sorted group.*/
- I[i+negatedSortedGroupLength] = negatedSortedGroupLength; /* combine sorted groups at end of I.*/
- }
- numSortedPos *= 2; /* double sorted-depth.*/
- }
- }
- void QSufSortGenerateSaFromInverse(const qsint_t* V, qsint_t* __restrict I, const qsint_t numChar)
- {
- qsint_t i;
- for (i=0; i<=numChar; i++)
- I[V[i]] = i + 1;
- }
- /* Sorting routine called for each unsorted group. Sorts the array of integers
- (suffix numbers) of length n starting at p. The algorithm is a ternary-split
- quicksort taken from Bentley & McIlroy, "Engineering a Sort Function",
- Software -- Practice and Experience 23(11), 1249-1265 (November 1993). This
- function is based on Program 7.*/
- static void QSufSortSortSplit(qsint_t* __restrict V, qsint_t* __restrict I, const qsint_t lowestPos,
- const qsint_t highestPos, const qsint_t numSortedChar) {
- qsint_t a, b, c, d;
- qsint_t l, m;
- qsint_t f, v, s, t;
- qsint_t tmp;
- qsint_t numItem;
- numItem = highestPos - lowestPos + 1;
- if (numItem <= INSERT_SORT_NUM_ITEM) {
- QSufSortInsertSortSplit(V, I, lowestPos, highestPos, numSortedChar);
- return;
- }
- v = QSufSortChoosePivot(V, I, lowestPos, highestPos, numSortedChar);
- a = b = lowestPos;
- c = d = highestPos;
- while (1) {
- while (c >= b && (f = KEY(V, I, b, numSortedChar)) <= v) {
- if (f == v) {
- swap(I[a], I[b], tmp);
- a++;
- }
- b++;
- }
- while (c >= b && (f = KEY(V, I, c, numSortedChar)) >= v) {
- if (f == v) {
- swap(I[c], I[d], tmp);
- d--;
- }
- c--;
- }
- if (b > c)
- break;
- swap(I[b], I[c], tmp);
- b++;
- c--;
- }
- s = a - lowestPos;
- t = b - a;
- s = min(s, t);
- for (l = lowestPos, m = b - s; m < b; l++, m++) {
- swap(I[l], I[m], tmp);
- }
- s = d - c;
- t = highestPos - d;
- s = min(s, t);
- for (l = b, m = highestPos - s + 1; m <= highestPos; l++, m++) {
- swap(I[l], I[m], tmp);
- }
- s = b - a;
- t = d - c;
- if (s > 0)
- QSufSortSortSplit(V, I, lowestPos, lowestPos + s - 1, numSortedChar);
- // Update group number for equal portion
- a = lowestPos + s;
- b = highestPos - t;
- if (a == b) {
- // Sorted group
- V[I[a]] = a;
- I[a] = -1;
- } else {
- // Unsorted group
- for (c=a; c<=b; c++)
- V[I[c]] = b;
- }
- if (t > 0)
- QSufSortSortSplit(V, I, highestPos - t + 1, highestPos, numSortedChar);
- }
- /* Algorithm by Bentley & McIlroy.*/
- static qsint_t QSufSortChoosePivot(qsint_t* __restrict V, qsint_t* __restrict I, const qsint_t lowestPos,
- const qsint_t highestPos, const qsint_t numSortedChar) {
- qsint_t m;
- qsint_t keyl, keym, keyn;
- qsint_t key1, key2, key3;
- qsint_t s;
- qsint_t numItem;
- numItem = highestPos - lowestPos + 1;
- m = lowestPos + numItem / 2;
- s = numItem / 8;
- key1 = KEY(V, I, lowestPos, numSortedChar);
- key2 = KEY(V, I, lowestPos+s, numSortedChar);
- key3 = KEY(V, I, lowestPos+2*s, numSortedChar);
- keyl = med3(key1, key2, key3);
- key1 = KEY(V, I, m-s, numSortedChar);
- key2 = KEY(V, I, m, numSortedChar);
- key3 = KEY(V, I, m+s, numSortedChar);
- keym = med3(key1, key2, key3);
- key1 = KEY(V, I, highestPos-2*s, numSortedChar);
- key2 = KEY(V, I, highestPos-s, numSortedChar);
- key3 = KEY(V, I, highestPos, numSortedChar);
- keyn = med3(key1, key2, key3);
- return med3(keyl, keym, keyn);
- }
- /* Quadratic sorting method to use for small subarrays. */
- static void QSufSortInsertSortSplit(qsint_t* __restrict V, qsint_t* __restrict I, const qsint_t lowestPos,
- const qsint_t highestPos, const qsint_t numSortedChar)
- {
- qsint_t i, j;
- qsint_t tmpKey, tmpPos;
- qsint_t numItem;
- qsint_t key[INSERT_SORT_NUM_ITEM], pos[INSERT_SORT_NUM_ITEM];
- qsint_t negativeSortedLength;
- qsint_t groupNum;
- numItem = highestPos - lowestPos + 1;
- for (i=0; i<numItem; i++) {
- pos[i] = I[lowestPos + i];
- key[i] = V[pos[i] + numSortedChar];
- }
- for (i=1; i<numItem; i++) {
- tmpKey = key[i];
- tmpPos = pos[i];
- for (j=i; j>0 && key[j-1] > tmpKey; j--) {
- key[j] = key[j-1];
- pos[j] = pos[j-1];
- }
- key[j] = tmpKey;
- pos[j] = tmpPos;
- }
- negativeSortedLength = -1;
- i = numItem - 1;
- groupNum = highestPos;
- while (i > 0) {
- I[i+lowestPos] = pos[i];
- V[I[i+lowestPos]] = groupNum;
- if (key[i-1] == key[i]) {
- negativeSortedLength = 0;
- } else {
- if (negativeSortedLength < 0)
- I[i+lowestPos] = negativeSortedLength;
- groupNum = i + lowestPos - 1;
- negativeSortedLength--;
- }
- i--;
- }
- I[lowestPos] = pos[0];
- V[I[lowestPos]] = groupNum;
- if (negativeSortedLength < 0)
- I[lowestPos] = negativeSortedLength;
- }
- /* Bucketsort for first iteration.
- Input: x[0...n-1] holds integers in the range 1...k-1, all of which appear
- at least once. x[n] is 0. (This is the corresponding output of transform.) k
- must be at most n+1. p is array of size n+1 whose contents are disregarded.
- Output: x is V and p is I after the initial sorting stage of the refined
- suffix sorting algorithm.*/
- static void QSufSortBucketSort(qsint_t* __restrict V, qsint_t* __restrict I, const qsint_t numChar, const qsint_t alphabetSize)
- {
- qsint_t i, c;
- qsint_t d;
- qsint_t groupNum;
- qsint_t currentIndex;
- // mark linked list empty
- for (i=0; i<alphabetSize; i++)
- I[i] = -1;
- // insert to linked list
- for (i=0; i<=numChar; i++) {
- c = V[i];
- V[i] = (qsint_t)(I[c]);
- I[c] = i;
- }
- currentIndex = numChar;
- for (i=alphabetSize; i>0; i--) {
- c = I[i-1];
- d = (qsint_t)(V[c]);
- groupNum = currentIndex;
- V[c] = groupNum;
- if (d >= 0) {
- I[currentIndex] = c;
- while (d >= 0) {
- c = d;
- d = V[c];
- V[c] = groupNum;
- currentIndex--;
- I[currentIndex] = c;
- }
- } else {
- // sorted group
- I[currentIndex] = -1;
- }
- currentIndex--;
- }
- }
- /* Transforms the alphabet of x by attempting to aggregate several symbols into
- one, while preserving the suffix order of x. The alphabet may also be
- compacted, so that x on output comprises all integers of the new alphabet
- with no skipped numbers.
- Input: x is an array of size n+1 whose first n elements are positive
- integers in the range l...k-1. p is array of size n+1, used for temporary
- storage. q controls aggregation and compaction by defining the maximum intue
- for any symbol during transformation: q must be at least k-l; if q<=n,
- compaction is guaranteed; if k-l>n, compaction is never done; if q is
- INT_MAX, the maximum number of symbols are aggregated into one.
- Output: Returns an integer j in the range 1...q representing the size of the
- new alphabet. If j<=n+1, the alphabet is compacted. The global variable r is
- set to the number of old symbols grouped into one. Only x[n] is 0.*/
- static qsint_t QSufSortTransform(qsint_t* __restrict V, qsint_t* __restrict I, const qsint_t numChar, const qsint_t largestInputSymbol,
- const qsint_t smallestInputSymbol, const qsint_t maxNewAlphabetSize, qsint_t *numSymbolAggregated)
- {
- qsint_t c, i, j;
- qsint_t a; // numSymbolAggregated
- qsint_t mask;
- qsint_t minSymbolInChunk = 0, maxSymbolInChunk = 0;
- qsint_t newAlphabetSize;
- qsint_t maxNumInputSymbol, maxNumBit, maxSymbol;
- maxNumInputSymbol = largestInputSymbol - smallestInputSymbol + 1;
- for (maxNumBit = 0, i = maxNumInputSymbol; i; i >>= 1) ++maxNumBit;
- maxSymbol = QSINT_MAX >> maxNumBit;
- c = maxNumInputSymbol;
- for (a = 0; a < numChar && maxSymbolInChunk <= maxSymbol && c <= maxNewAlphabetSize; a++) {
- minSymbolInChunk = (minSymbolInChunk << maxNumBit) | (V[a] - smallestInputSymbol + 1);
- maxSymbolInChunk = c;
- c = (maxSymbolInChunk << maxNumBit) | maxNumInputSymbol;
- }
- mask = (1 << (a-1) * maxNumBit) - 1; /* mask masks off top old symbol from chunk.*/
- V[numChar] = smallestInputSymbol - 1; /* emulate zero terminator.*/
- /* bucketing possible, compact alphabet.*/
- for (i=0; i<=maxSymbolInChunk; i++)
- I[i] = 0; /* zero transformation table.*/
- c = minSymbolInChunk;
- for (i=a; i<=numChar; i++) {
- I[c] = 1; /* mark used chunk symbol.*/
- c = ((c & mask) << maxNumBit) | (V[i] - smallestInputSymbol + 1); /* shift in next old symbol in chunk.*/
- }
- for (i=1; i<a; i++) { /* handle last r-1 positions.*/
- I[c] = 1; /* mark used chunk symbol.*/
- c = (c & mask) << maxNumBit; /* shift in next old symbol in chunk.*/
- }
- newAlphabetSize = 1;
- for (i=0; i<=maxSymbolInChunk; i++) {
- if (I[i]) {
- I[i] = newAlphabetSize;
- newAlphabetSize++;
- }
- }
- c = minSymbolInChunk;
- for (i=0, j=a; j<=numChar; i++, j++) {
- V[i] = I[c]; /* transform to new alphabet.*/
- c = ((c & mask) << maxNumBit) | (V[j] - smallestInputSymbol + 1); /* shift in next old symbol in chunk.*/
- }
- for (; i<numChar; i++) { /* handle last a-1 positions.*/
- V[i] = I[c]; /* transform to new alphabet.*/
- c = (c & mask) << maxNumBit; /* shift right-end zero in chunk.*/
- }
- V[numChar] = 0; /* end-of-string symbol is zero.*/
- *numSymbolAggregated = a;
- return newAlphabetSize;
- }
QSufSort.c at commit d82444c, under GPL-3.0 · at the source
Overview
- Department of Medical Oncology, Fudan University Pudong Medical Center, Shanghai 201399, P.R. China
- Solid Tumor Cell Therapy Center, Ruijin Hospital, Shanghai Jiao Tong University School of Medicine, Shanghai 200025, P.R. China
- State Key Laboratory of Biopharmaceutical Preparation and Delivery, Institute of Process Engineering, Chinese Academy of Sciences, Beijing 100190, P.R. China
- School of Chemical Engineering, University of Chinese Academy of Sciences, Beijing 100049, P.R. China
- Department of Medical Oncology, Beijing Zhongguancun Hospital, Chinese Academy of Sciences, Beijing 100190, P.R. China
- Department of Clinical Trial and Medical Management, Beijing Shijitan Hospital, Capital Medical University, Beijing 100038, P.R. China
- Department of Surgery, Duke University Medical Center, Durham, NC 27710, USA
- Department of Medicine, Duke University Medical Center, Durham, NC 27710, USA
- Department of Neurosurgery, Fudan University Pudong Medical Center, Shanghai 201399, P.R. China
- Center of Applied Therapeutic Oncology, Fudan University Huadong Medical Center, Shanghai 200040, P.R. China
Abstract
The abstract is not reproduced here: the paper's license (CC BY-NC-ND) does not allow it. Read it in the paper, at the publisher or on Europe PMC.
Repository
Its files are read in the Code ↔ Paper reader above.
lh3/bwa
d82444c17edc2384420409f85557c6ae84019732, 7 August 2026Availability: 1 check, the latest on 27 September 2026: the link answers
- 27 September 2026: the link answers
68 files
- QSufSort.c, C, 402 lines
- QSufSort.h, C/C++, 45 lines
- bamlite.c, C, 210 lines
- bamlite.h, C/C++, 114 lines
- bntseq.c, C, 451 lines
- bntseq.h, C/C++, 92 lines
- bwa.c, C, 502 lines
- bwa.h, C/C++, 97 lines
- bwakit/
bwa-postalt.js , JavaScript, 524 lines - bwakit/
typeHLA-selctg.js , JavaScript, 62 lines - bwakit/
typeHLA.js , JavaScript, 496 lines - bwakit/
typeHLA.sh , Shell, 49 lines - bwamem.c, C, 1,264 lines
- bwamem.h, C/C++, 213 lines
- bwamem_extra.c, C, 172 lines
- bwamem_pair.c, C, 419 lines
- bwape.c, C, 784 lines
- bwase.c, C, 606 lines
- bwase.h, C/C++, 29 lines
- bwaseqio.c, C, 235 lines
- bwashm.c, C, 217 lines
- bwt.c, C, 469 lines
- bwt.h, C/C++, 132 lines
- bwt_gen.c, C, 1,623 lines
- bwt_lite.c, C, 98 lines
- bwt_lite.h, C/C++, 29 lines
- bwtaln.c, C, 321 lines
- bwtaln.h, C/C++, 153 lines
- bwtgap.c, C, 264 lines
- bwtgap.h, C/C++, 40 lines
- bwtindex.c, C, 323 lines
- bwtsw2.h, C/C++, 69 lines
- bwtsw2_aux.c, C, 776 lines
- bwtsw2_chain.c, C, 112 lines
- bwtsw2_core.c, C, 619 lines
- bwtsw2_main.c, C, 89 lines
- bwtsw2_pair.c, C, 274 lines
- example.c, C, 60 lines
- fastmap.c, C, 483 lines
- is.c, C, 223 lines
- kbtree.h, C/C++, 388 lines
- khash.h, C/C++, 614 lines
- kopen.c, C, 374 lines
- kseq.h, C/C++, 239 lines
- ksort.h, C/C++, 273 lines
- kstring.c, C, 37 lines
- kstring.h, C/C++, 131 lines
- ksw.c, C, 749 lines
- ksw.h, C/C++, 114 lines
- kthread.c, C, 147 lines
- kvec.h, C/C++, 94 lines
- main.c, C, 130 lines
- malloc_wrap.c, C, 57 lines
- malloc_wrap.h, C/C++, 47 lines
- maxk.c, C, 67 lines
- neon_sse.h, C/C++, 33 lines
- pemerge.c, C, 291 lines
- qualfa2fq.pl, Perl, 27 lines
- rle.c, C, 191 lines
- rle.h, C/C++, 77 lines
- rope.c, C, 318 lines
- rope.h, C/C++, 58 lines
- scalar_sse.h, C/C++, 119 lines
- utils.c, C, 306 lines
- utils.h, C/C++, 111 lines
- xa2multi.pl, Perl, 27 lines
- COPYING, License, 674 lines
- README.md, Text, 197 lines
The paper's code and data availability statement is in the Data section.
Tracing map
Proposed by the machine: these links were found in the paper and verified at the source, without human review. The map will receive a Zenodo DOI once one of the paper's authors has validated it with their ORCID.
What the map holds:
- 1 repository of the authors' code, each at its verified commit, with its license and how the link was found in the paper;
- 66 scripts, each with its path and the digest of its content;
- no match between paragraphs and code yet;
- neither the text of the paper nor the code itself.
Its JSON (tracing-map.json) is deposited on Zenodo with its DOI once the map is validated.
Data
Datasets cited
- figshare:31645183, at figshare; found in “Data and code availability”
Code and data availability statement
The paper has a code and data availability statement. Its license (CC BY-NC-ND) does not allow reproducing it here; in short, from what the harvester recognized in it:
- it points to a dataset: figshare 31645183
- it says that the data are available on request
- it says that the code is available on request
Read it in the paper: doi.org/10.1016/j.xcrm.2026.102967.
Versions
The history of this record: each version stored by the harvester or made by a correction of its authors or of the maintainers of its code, and what changed in its facts. The texts of the paper (its abstract, its availability statements) are not part of it; versions that changed only those are not listed.
Version 1, 27 September 2026: the first record
Recorded: type, language, journal, volume, issue, pages, dates, 21 authors, 6 keywords, 11 MeSH terms, 7 funders, 26 references, 1 RRID.
Cite
This paper
Li, C., Wang, S., Rong, X., Zeng, C., Huo, F., Zhao, H., Xu, D., Hu, L., Lu, L., Sun, B., Yuan, Y., Wang, X., Zhou, X., Hobeika, A., Morse, M. A., Ma, G., Ren, L., Li, J., Lyerly, H. K., . . . Ren, J. (2026). Phase 1 study of intracranial T cell therapy with pemetrexed for refractory brain metastases and glioblastomas. Cell reports. Medicine, 7(8), 102967. https://
BibTeX
@article{li2026phase,
author = {Li, Congcong and Wang, Shuang and Rong, Xiumei and Zeng, Chuxiong and Huo, Feifei and Zhao, Haiyang and Xu, Dazhao and Hu, Lina and Lu, Linyao and Sun, Bo and Yuan, Yanhua and Wang, Xiaoli and Zhou, Xinna and Hobeika, Amy and Morse, Michael A. and Ma, Guanghui and Ren, Li and Li, Jiyu and Lyerly, Herbert Kim and Bao, Zhijun and Ren, Jun},
title = {{Phase 1 study of intracranial T cell therapy with pemetrexed for refractory brain metastases and glioblastomas}},
journal = {Cell reports. Medicine},
year = {2026},
month = aug,
volume = {7},
number = {8},
pages = {102967},
publisher = {Elsevier},
issn = {2666-3791},
doi = {10.1016/
url = {https://
pmid = {42556340},
pmcid = {PMC13522775}
}
RIS
TY - JOUR
AU - Li, Congcong
AU - Wang, Shuang
AU - Rong, Xiumei
AU - Zeng, Chuxiong
AU - Huo, Feifei
AU - Zhao, Haiyang
AU - Xu, Dazhao
AU - Hu, Lina
AU - Lu, Linyao
AU - Sun, Bo
AU - Yuan, Yanhua
AU - Wang, Xiaoli
AU - Zhou, Xinna
AU - Hobeika, Amy
AU - Morse, Michael A.
AU - Ma, Guanghui
AU - Ren, Li
AU - Li, Jiyu
AU - Lyerly, Herbert Kim
AU - Bao, Zhijun
AU - Ren, Jun
TI - Phase 1 study of intracranial T cell therapy with pemetrexed for refractory brain metastases and glioblastomas
T2 - Cell reports. Medicine
J2 - Cell Rep Med
PY - 2026
DA - 2026/
VL - 7
IS - 8
SP - 102967
SN - 2666-3791
PB - Elsevier
DO - 10.1016/
UR - https://
LA - en
ER -
CSL-JSON
{
"id": "10.1016/
"type": "article-journal",
"title": "Phase 1 study of intracranial T cell therapy with pemetrexed for refractory brain metastases and glioblastomas",
"container-title": "Cell reports. Medicine",
"author": [
{
"family": "Li",
"given": "Congcong"
},
{
"family": "Wang",
"given": "Shuang"
},
{
"family": "Rong",
"given": "Xiumei"
},
{
"family": "Zeng",
"given": "Chuxiong"
},
{
"family": "Huo",
"given": "Feifei"
},
{
"family": "Zhao",
"given": "Haiyang"
},
{
"family": "Xu",
"given": "Dazhao"
},
{
"family": "Hu",
"given": "Lina"
},
{
"family": "Lu",
"given": "Linyao"
},
{
"family": "Sun",
"given": "Bo"
},
{
"family": "Yuan",
"given": "Yanhua"
},
{
"family": "Wang",
"given": "Xiaoli"
},
{
"family": "Zhou",
"given": "Xinna"
},
{
"family": "Hobeika",
"given": "Amy"
},
{
"family": "Morse",
"given": "Michael A."
},
{
"family": "Ma",
"given": "Guanghui"
},
{
"family": "Ren",
"given": "Li"
},
{
"family": "Li",
"given": "Jiyu"
},
{
"family": "Lyerly",
"given": "Herbert Kim"
},
{
"family": "Bao",
"given": "Zhijun"
},
{
"family": "Ren",
"given": "Jun"
}
],
"container-title-short":
"volume": "7",
"issue": "8",
"page": "102967",
"DOI": "10.1016/
"PMID": "42556340",
"PMCID": "PMC13522775",
"ISSN": "2666-3791",
"publisher": "Elsevier",
"URL": "https://
"language": "en",
"issued": {
"date-parts": [
[
2026,
8,
5
]
]
}
}
The tracing map gets a citation of its own once an author has validated it and it has a DOI.
Similar papers
The papers with a page that share the most with this one: the tools found in their code, their categories, datasets, cited references and authors, the rarest counting most.
- [1] doi:10.1016/j.omton.2026.201201
- Enable CAR T cell immunotherapy in glioblastoma by modifying its microenvironment via oncolytic adenovirus encoding bispecific T cell engager.Journal: Molecular therapy. OncologyIn common: other condition, 4 references
- [2] doi:10.1016/j.cell.2026.05.026 [code]
- The critical role of the endogenous immune compartment after CAR T cell therapy in recurrent GBM.Journal: CellIn common: other condition, 3 references
- [3] doi:10.1016/j.isci.2026.116517 [code]
- Spatially resolved transcriptomics in human brain metastases identifies macrophage-tumor interactions associated with survival.Journal: iScienceIn common: clinical / translational, other condition, 2 references
- [4] doi:10.1007/s11060-026-05635-y
- From relapse to survival: real-world clinical impact of a multimodal approach in first-time recurrent glioblastoma : FROST: multimodal treatment for GBM recurrence.Journal: Journal of neuro-oncologyIn common: clinical / translational, other condition, 2 references
- [5] doi:10.1158/0008-5472.can-25-4018 [code]
- MIF-Induced CD74+ Microglia and Macrophages Promote Progression of Brain Metastasis and Are Clinically Relevant across Central Nervous System Disorders.Journal: Cancer researchIn common: other condition, 2 references
- [6] doi:10.1038/s41467-026-71021-x
- Developing a multimodal therapy for glioblastoma using oncolytic virus delivering CD19 and EGFRvIII antigens and bi-specific CARs.Journal: Nature communicationsIn common: other condition, 2 references
- [7] doi:10.1038/s41467-026-74888-y
- Engineered zwitterion-nanodelivery for precision targeting of brain metastases.Journal: Nature communicationsIn common: other condition, 2 references
- [8] doi:10.1186/s11658-026-00957-1
- Lactate-activated astrocytes promote NSCLC brain metastasis through extracellular vesicle-mediated miR-8085/
TRIM67/ ELK1 signaling axis. Journal: Cellular & molecular biology lettersIn common: other condition, 2 references - [9] doi:10.1126/sciadv.aeb1237
- Magnetically actuated nanoantennas for wireless glioblastoma therapy.Journal: Science advancesIn common: clinical / translational, other condition, 1 reference
- [10] doi:10.1093/neuonc/noag128 [code]
- Spatially-resolved single-cell imaging of melanoma brain metastases identifies localized immune patterns predictive of immune checkpoint blockade response.Journal: Neuro-oncologyIn common: clinical / translational, other condition, 1 reference
Contribute
The authors of this paper can claim it, correct its record and validate its tracing map, and the maintainers of its code (its owner, or a public member of its organization) correct what it says of their repository; anyone signed in can ask for its removal. Every request goes to OSCR's own machine, which answers it; your account page follows them.
Sign in with ORCID to claim this paper as one of its authors, correct its record or validate its tracing map: when the paper's metadata lists your ORCID iD, you are recognized at once. Maintainers of its code: sign in with GitHub, then claim the repository on your account page.
Claim this paper
Correct its record
Say what each link of this record is, remove the ones that are not the paper's, add the ones that are missing. The correction becomes a new version of the record, in its Versions section.
Validate its tracing map
You validate the map as this page shows it: 1 repository of the authors' code, each at its verified commit and with its license, 66 scripts, and 0 matches between paragraphs and code (see the Code and Map sections). It then receives a DOI on Zenodo, with you (your ORCID iD) and OSCR as its creators; the code itself is not deposited.
The map's fingerprint: sha256:8bd4e3fb620cdd52…
Add the badge to its README
The badge links the code to this page. Copy one of these into the README of the paper's code: only you decide where it goes, and nothing is changed for you.
Markdown
[, paste the snippet at the top, then “Commit changes…” and, to review it first, “Create a new branch and start a pull request”. You open the pull request; OSCR asks for no permission.
Request its removal
To ask OSCR to remove this record, the copies of its authors' scripts or its tracing map, use the removal request page: signed in, you say who you are, what to remove and why, then review and confirm the request. Published rules decide every request (how).
Discussion, reproductions, activity
Discussion: questions and error reports about this paper and its code, from signed-in readers and its authors. It opens with sign-in.
Reproductions: reports from readers who ran the authors' code: what they reproduced, with which environment, commit and data. It opens with sign-in.
Activity: what happens around this paper: new versions of its record, its map's validation, discussions and reproductions. It opens with sign-in.
