OSCR

Phase 1 study of intracranial T cell therapy with pemetrexed for refractory brain metastases and glioblastomas.

Code ↔ Paper

The paper beside its authors' code: matches between them have not been computed for this paper yet.

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

  1. /* QSufSort.c
  2. Original source from qsufsort.c
  3. Copyright 1999, N. Jesper Larsson, all rights reserved.
  4. This file contains an implementation of the algorithm presented in "Faster
  5. Suffix Sorting" by N. Jesper Larsson ([email hidden]) and Kunihiko
  6. Sadakane ([email hidden]).
  7. This software may be used freely for any purpose. However, when distributed,
  8. the original source must be clearly stated, and, when the source code is
  9. distributed, the copyright notice must be retained and any alterations in
  10. the code must be clearly marked. No warranty is given regarding the quality
  11. of this software.
  12. Modified by Wong Chi-Kwong, 2004
  13. Changes summary: - Used long variable and function names
  14. - Removed global variables
  15. - Replace pointer references with array references
  16. - Used insertion sort in place of selection sort and increased insertion sort threshold
  17. - Reconstructing suffix array from inverse becomes an option
  18. - Add handling where end-of-text symbol is not necessary < all characters
  19. - Removed codes for supporting alphabet size > number of characters
  20. No warrenty is given regarding the quality of the modifications.
  21. */
  22. #include <stdio.h>
  23. #include <stdlib.h>
  24. #include <limits.h>
  25. #include "QSufSort.h"
  26. #define min(value1, value2) ( ((value1) < (value2)) ? (value1) : (value2) )
  27. #define med3(a, b, c) ( a<b ? (b<c ? b : a<c ? c : a) : (b>c ? b : a>c ? c : a))
  28. #define swap(a, b, t); t = a; a = b; b = t;
  29. // Static functions
  30. static void QSufSortSortSplit(qsint_t* __restrict V, qsint_t* __restrict I, const qsint_t lowestPos,
  31. const qsint_t highestPos, const qsint_t numSortedChar);
  32. static qsint_t QSufSortChoosePivot(qsint_t* __restrict V, qsint_t* __restrict I, const qsint_t lowestPos,
  33. const qsint_t highestPos, const qsint_t numSortedChar);
  34. static void QSufSortInsertSortSplit(qsint_t* __restrict V, qsint_t* __restrict I, const qsint_t lowestPos,
  35. const qsint_t highestPos, const qsint_t numSortedChar);
  36. static void QSufSortBucketSort(qsint_t* __restrict V, qsint_t* __restrict I, const qsint_t numChar, const qsint_t alphabetSize);
  37. static qsint_t QSufSortTransform(qsint_t* __restrict V, qsint_t* __restrict I, const qsint_t numChar, const qsint_t largestInputSymbol,
  38. const qsint_t smallestInputSymbol, const qsint_t maxNewAlphabetSize, qsint_t *numSymbolAggregated);
  39. /* Makes suffix array p of x. x becomes inverse of p. p and x are both of size
  40. n+1. Contents of x[0...n-1] are integers in the range l...k-1. Original
  41. contents of x[n] is disregarded, the n-th symbol being regarded as
  42. end-of-string smaller than all other symbols.*/
  43. void QSufSortSuffixSort(qsint_t* __restrict V, qsint_t* __restrict I, const qsint_t numChar, const qsint_t largestInputSymbol,
  44. const qsint_t smallestInputSymbol, const int skipTransform)
  45. {
  46. qsint_t i, j;
  47. qsint_t s, negatedSortedGroupLength;
  48. qsint_t numSymbolAggregated;
  49. qsint_t numSortedPos = 1;
  50. qsint_t newAlphabetSize;
  51. if (!skipTransform) {
  52. /* bucketing possible*/
  53. newAlphabetSize = QSufSortTransform(V, I, numChar, largestInputSymbol, smallestInputSymbol,
  54. numChar, &numSymbolAggregated);
  55. QSufSortBucketSort(V, I, numChar, newAlphabetSize);
  56. I[0] = -1;
  57. V[numChar] = 0;
  58. numSortedPos = numSymbolAggregated;
  59. }
  60. while ((qsint_t)(I[0]) >= -(qsint_t)numChar) {
  61. i = 0;
  62. negatedSortedGroupLength = 0;
  63. do {
  64. s = I[i];
  65. if (s < 0) {
  66. i -= s; /* skip over sorted group.*/
  67. negatedSortedGroupLength += s;
  68. } else {
  69. if (negatedSortedGroupLength) {
  70. I[i+negatedSortedGroupLength] = negatedSortedGroupLength; /* combine preceding sorted groups */
  71. negatedSortedGroupLength = 0;
  72. }
  73. j = V[s] + 1;
  74. QSufSortSortSplit(V, I, i, j - 1, numSortedPos);
  75. i = j;
  76. }
  77. } while (i <= numChar);
  78. if (negatedSortedGroupLength) {
  79. /* array ends with a sorted group.*/
  80. I[i+negatedSortedGroupLength] = negatedSortedGroupLength; /* combine sorted groups at end of I.*/
  81. }
  82. numSortedPos *= 2; /* double sorted-depth.*/
  83. }
  84. }
  85. void QSufSortGenerateSaFromInverse(const qsint_t* V, qsint_t* __restrict I, const qsint_t numChar)
  86. {
  87. qsint_t i;
  88. for (i=0; i<=numChar; i++)
  89. I[V[i]] = i + 1;
  90. }
  91. /* Sorting routine called for each unsorted group. Sorts the array of integers
  92. (suffix numbers) of length n starting at p. The algorithm is a ternary-split
  93. quicksort taken from Bentley & McIlroy, "Engineering a Sort Function",
  94. Software -- Practice and Experience 23(11), 1249-1265 (November 1993). This
  95. function is based on Program 7.*/
  96. static void QSufSortSortSplit(qsint_t* __restrict V, qsint_t* __restrict I, const qsint_t lowestPos,
  97. const qsint_t highestPos, const qsint_t numSortedChar) {
  98. qsint_t a, b, c, d;
  99. qsint_t l, m;
  100. qsint_t f, v, s, t;
  101. qsint_t tmp;
  102. qsint_t numItem;
  103. numItem = highestPos - lowestPos + 1;
  104. if (numItem <= INSERT_SORT_NUM_ITEM) {
  105. QSufSortInsertSortSplit(V, I, lowestPos, highestPos, numSortedChar);
  106. return;
  107. }
  108. v = QSufSortChoosePivot(V, I, lowestPos, highestPos, numSortedChar);
  109. a = b = lowestPos;
  110. c = d = highestPos;
  111. while (1) {
  112. while (c >= b && (f = KEY(V, I, b, numSortedChar)) <= v) {
  113. if (f == v) {
  114. swap(I[a], I[b], tmp);
  115. a++;
  116. }
  117. b++;
  118. }
  119. while (c >= b && (f = KEY(V, I, c, numSortedChar)) >= v) {
  120. if (f == v) {
  121. swap(I[c], I[d], tmp);
  122. d--;
  123. }
  124. c--;
  125. }
  126. if (b > c)
  127. break;
  128. swap(I[b], I[c], tmp);
  129. b++;
  130. c--;
  131. }
  132. s = a - lowestPos;
  133. t = b - a;
  134. s = min(s, t);
  135. for (l = lowestPos, m = b - s; m < b; l++, m++) {
  136. swap(I[l], I[m], tmp);
  137. }
  138. s = d - c;
  139. t = highestPos - d;
  140. s = min(s, t);
  141. for (l = b, m = highestPos - s + 1; m <= highestPos; l++, m++) {
  142. swap(I[l], I[m], tmp);
  143. }
  144. s = b - a;
  145. t = d - c;
  146. if (s > 0)
  147. QSufSortSortSplit(V, I, lowestPos, lowestPos + s - 1, numSortedChar);
  148. // Update group number for equal portion
  149. a = lowestPos + s;
  150. b = highestPos - t;
  151. if (a == b) {
  152. // Sorted group
  153. V[I[a]] = a;
  154. I[a] = -1;
  155. } else {
  156. // Unsorted group
  157. for (c=a; c<=b; c++)
  158. V[I[c]] = b;
  159. }
  160. if (t > 0)
  161. QSufSortSortSplit(V, I, highestPos - t + 1, highestPos, numSortedChar);
  162. }
  163. /* Algorithm by Bentley & McIlroy.*/
  164. static qsint_t QSufSortChoosePivot(qsint_t* __restrict V, qsint_t* __restrict I, const qsint_t lowestPos,
  165. const qsint_t highestPos, const qsint_t numSortedChar) {
  166. qsint_t m;
  167. qsint_t keyl, keym, keyn;
  168. qsint_t key1, key2, key3;
  169. qsint_t s;
  170. qsint_t numItem;
  171. numItem = highestPos - lowestPos + 1;
  172. m = lowestPos + numItem / 2;
  173. s = numItem / 8;
  174. key1 = KEY(V, I, lowestPos, numSortedChar);
  175. key2 = KEY(V, I, lowestPos+s, numSortedChar);
  176. key3 = KEY(V, I, lowestPos+2*s, numSortedChar);
  177. keyl = med3(key1, key2, key3);
  178. key1 = KEY(V, I, m-s, numSortedChar);
  179. key2 = KEY(V, I, m, numSortedChar);
  180. key3 = KEY(V, I, m+s, numSortedChar);
  181. keym = med3(key1, key2, key3);
  182. key1 = KEY(V, I, highestPos-2*s, numSortedChar);
  183. key2 = KEY(V, I, highestPos-s, numSortedChar);
  184. key3 = KEY(V, I, highestPos, numSortedChar);
  185. keyn = med3(key1, key2, key3);
  186. return med3(keyl, keym, keyn);
  187. }
  188. /* Quadratic sorting method to use for small subarrays. */
  189. static void QSufSortInsertSortSplit(qsint_t* __restrict V, qsint_t* __restrict I, const qsint_t lowestPos,
  190. const qsint_t highestPos, const qsint_t numSortedChar)
  191. {
  192. qsint_t i, j;
  193. qsint_t tmpKey, tmpPos;
  194. qsint_t numItem;
  195. qsint_t key[INSERT_SORT_NUM_ITEM], pos[INSERT_SORT_NUM_ITEM];
  196. qsint_t negativeSortedLength;
  197. qsint_t groupNum;
  198. numItem = highestPos - lowestPos + 1;
  199. for (i=0; i<numItem; i++) {
  200. pos[i] = I[lowestPos + i];
  201. key[i] = V[pos[i] + numSortedChar];
  202. }
  203. for (i=1; i<numItem; i++) {
  204. tmpKey = key[i];
  205. tmpPos = pos[i];
  206. for (j=i; j>0 && key[j-1] > tmpKey; j--) {
  207. key[j] = key[j-1];
  208. pos[j] = pos[j-1];
  209. }
  210. key[j] = tmpKey;
  211. pos[j] = tmpPos;
  212. }
  213. negativeSortedLength = -1;
  214. i = numItem - 1;
  215. groupNum = highestPos;
  216. while (i > 0) {
  217. I[i+lowestPos] = pos[i];
  218. V[I[i+lowestPos]] = groupNum;
  219. if (key[i-1] == key[i]) {
  220. negativeSortedLength = 0;
  221. } else {
  222. if (negativeSortedLength < 0)
  223. I[i+lowestPos] = negativeSortedLength;
  224. groupNum = i + lowestPos - 1;
  225. negativeSortedLength--;
  226. }
  227. i--;
  228. }
  229. I[lowestPos] = pos[0];
  230. V[I[lowestPos]] = groupNum;
  231. if (negativeSortedLength < 0)
  232. I[lowestPos] = negativeSortedLength;
  233. }
  234. /* Bucketsort for first iteration.
  235. Input: x[0...n-1] holds integers in the range 1...k-1, all of which appear
  236. at least once. x[n] is 0. (This is the corresponding output of transform.) k
  237. must be at most n+1. p is array of size n+1 whose contents are disregarded.
  238. Output: x is V and p is I after the initial sorting stage of the refined
  239. suffix sorting algorithm.*/
  240. static void QSufSortBucketSort(qsint_t* __restrict V, qsint_t* __restrict I, const qsint_t numChar, const qsint_t alphabetSize)
  241. {
  242. qsint_t i, c;
  243. qsint_t d;
  244. qsint_t groupNum;
  245. qsint_t currentIndex;
  246. // mark linked list empty
  247. for (i=0; i<alphabetSize; i++)
  248. I[i] = -1;
  249. // insert to linked list
  250. for (i=0; i<=numChar; i++) {
  251. c = V[i];
  252. V[i] = (qsint_t)(I[c]);
  253. I[c] = i;
  254. }
  255. currentIndex = numChar;
  256. for (i=alphabetSize; i>0; i--) {
  257. c = I[i-1];
  258. d = (qsint_t)(V[c]);
  259. groupNum = currentIndex;
  260. V[c] = groupNum;
  261. if (d >= 0) {
  262. I[currentIndex] = c;
  263. while (d >= 0) {
  264. c = d;
  265. d = V[c];
  266. V[c] = groupNum;
  267. currentIndex--;
  268. I[currentIndex] = c;
  269. }
  270. } else {
  271. // sorted group
  272. I[currentIndex] = -1;
  273. }
  274. currentIndex--;
  275. }
  276. }
  277. /* Transforms the alphabet of x by attempting to aggregate several symbols into
  278. one, while preserving the suffix order of x. The alphabet may also be
  279. compacted, so that x on output comprises all integers of the new alphabet
  280. with no skipped numbers.
  281. Input: x is an array of size n+1 whose first n elements are positive
  282. integers in the range l...k-1. p is array of size n+1, used for temporary
  283. storage. q controls aggregation and compaction by defining the maximum intue
  284. for any symbol during transformation: q must be at least k-l; if q<=n,
  285. compaction is guaranteed; if k-l>n, compaction is never done; if q is
  286. INT_MAX, the maximum number of symbols are aggregated into one.
  287. Output: Returns an integer j in the range 1...q representing the size of the
  288. new alphabet. If j<=n+1, the alphabet is compacted. The global variable r is
  289. set to the number of old symbols grouped into one. Only x[n] is 0.*/
  290. static qsint_t QSufSortTransform(qsint_t* __restrict V, qsint_t* __restrict I, const qsint_t numChar, const qsint_t largestInputSymbol,
  291. const qsint_t smallestInputSymbol, const qsint_t maxNewAlphabetSize, qsint_t *numSymbolAggregated)
  292. {
  293. qsint_t c, i, j;
  294. qsint_t a; // numSymbolAggregated
  295. qsint_t mask;
  296. qsint_t minSymbolInChunk = 0, maxSymbolInChunk = 0;
  297. qsint_t newAlphabetSize;
  298. qsint_t maxNumInputSymbol, maxNumBit, maxSymbol;
  299. maxNumInputSymbol = largestInputSymbol - smallestInputSymbol + 1;
  300. for (maxNumBit = 0, i = maxNumInputSymbol; i; i >>= 1) ++maxNumBit;
  301. maxSymbol = QSINT_MAX >> maxNumBit;
  302. c = maxNumInputSymbol;
  303. for (a = 0; a < numChar && maxSymbolInChunk <= maxSymbol && c <= maxNewAlphabetSize; a++) {
  304. minSymbolInChunk = (minSymbolInChunk << maxNumBit) | (V[a] - smallestInputSymbol + 1);
  305. maxSymbolInChunk = c;
  306. c = (maxSymbolInChunk << maxNumBit) | maxNumInputSymbol;
  307. }
  308. mask = (1 << (a-1) * maxNumBit) - 1; /* mask masks off top old symbol from chunk.*/
  309. V[numChar] = smallestInputSymbol - 1; /* emulate zero terminator.*/
  310. /* bucketing possible, compact alphabet.*/
  311. for (i=0; i<=maxSymbolInChunk; i++)
  312. I[i] = 0; /* zero transformation table.*/
  313. c = minSymbolInChunk;
  314. for (i=a; i<=numChar; i++) {
  315. I[c] = 1; /* mark used chunk symbol.*/
  316. c = ((c & mask) << maxNumBit) | (V[i] - smallestInputSymbol + 1); /* shift in next old symbol in chunk.*/
  317. }
  318. for (i=1; i<a; i++) { /* handle last r-1 positions.*/
  319. I[c] = 1; /* mark used chunk symbol.*/
  320. c = (c & mask) << maxNumBit; /* shift in next old symbol in chunk.*/
  321. }
  322. newAlphabetSize = 1;
  323. for (i=0; i<=maxSymbolInChunk; i++) {
  324. if (I[i]) {
  325. I[i] = newAlphabetSize;
  326. newAlphabetSize++;
  327. }
  328. }
  329. c = minSymbolInChunk;
  330. for (i=0, j=a; j<=numChar; i++, j++) {
  331. V[i] = I[c]; /* transform to new alphabet.*/
  332. c = ((c & mask) << maxNumBit) | (V[j] - smallestInputSymbol + 1); /* shift in next old symbol in chunk.*/
  333. }
  334. for (; i<numChar; i++) { /* handle last a-1 positions.*/
  335. V[i] = I[c]; /* transform to new alphabet.*/
  336. c = (c & mask) << maxNumBit; /* shift right-end zero in chunk.*/
  337. }
  338. V[numChar] = 0; /* end-of-string symbol is zero.*/
  339. *numSymbolAggregated = a;
  340. return newAlphabetSize;
  341. }

QSufSort.c at commit d82444c, under GPL-3.0 · at the source

Overview

Authors: Congcong Li1,2, Shuang Wang3,4, Xiumei Rong5, Chuxiong Zeng1, Feifei Huo5, Haiyang Zhao5, Dazhao Xu5, Lina Hu1, Linyao Lu1, Bo Sun1,2, Yanhua Yuan1, Xiaoli Wang5, Xinna Zhou6, Amy Hobeika7, Michael A. Morse8, Guanghui Ma3,4, Li Ren9, Jiyu Li1, Herbert Kim Lyerly7, Zhijun Bao10, Jun Ren1,2,5,8,10
  1. Department of Medical Oncology, Fudan University Pudong Medical Center, Shanghai 201399, P.R. China
  2. Solid Tumor Cell Therapy Center, Ruijin Hospital, Shanghai Jiao Tong University School of Medicine, Shanghai 200025, P.R. China
  3. State Key Laboratory of Biopharmaceutical Preparation and Delivery, Institute of Process Engineering, Chinese Academy of Sciences, Beijing 100190, P.R. China
  4. School of Chemical Engineering, University of Chinese Academy of Sciences, Beijing 100049, P.R. China
  5. Department of Medical Oncology, Beijing Zhongguancun Hospital, Chinese Academy of Sciences, Beijing 100190, P.R. China
  6. Department of Clinical Trial and Medical Management, Beijing Shijitan Hospital, Capital Medical University, Beijing 100038, P.R. China
  7. Department of Surgery, Duke University Medical Center, Durham, NC 27710, USA
  8. Department of Medicine, Duke University Medical Center, Durham, NC 27710, USA
  9. Department of Neurosurgery, Fudan University Pudong Medical Center, Shanghai 201399, P.R. China
  10. Center of Applied Therapeutic Oncology, Fudan University Huadong Medical Center, Shanghai 200040, P.R. China
Journal: Cell reports. Medicine, volume 7, issue 8, article 102967
Dates: received 28 November 2025; accepted 7 July 2026; published online 5 August 2026; in print August 2026
Type: Research article · Language: English
License: CC BY-NC-ND
Identifiers: DOI 10.1016/j.xcrm.2026.102967 · PMID 42556340 · PMCID PMC13522775 · OpenAlex W7172499102
Open access: gold, a free copy (OpenAlex)
Status: code verified
Categories: human (organism), other condition (population), clinical / translational (subfield)
Methods: Statistics, Preprocessing, Connectivity
Keywords: advanced intracranial malignancies, brain metastases, RetroNectin-activated killer cells, intracranial administration, pemetrexed, cell therapy
MeSH: Brain Neoplasms*, Glioblastoma*, Pemetrexed*, T-Lymphocytes*, Adult, Aged, Female, Humans, Interleukin-2, Male, Middle Aged (* major topic)
Topic: CAR-T cell therapy research (Oncology, Medicine), according to OpenAlex
Funding: Shanghai Pudong New Area Health Commission Discipline Construction Project-Clinical Plateau Discipline (PWYgy2021-01); Shanghai Pudong New Area Commission Discipline Construction (PWZxq2022-14); Shanghai Municipal Health Commission Medical New Technology Research and Transformative Cultivation; Shanghai Pudong New Area Health Commission-Scientific Research (PW2024B-10); Innovative Research Group Project of the National Natural Science Foundation of China (32030062, 82372130, T2394501); CAST Youth Talent Support (2024QNRC001); State Key Laboratory of Biopharmaceutical Preparation and Delivery (2024KF-01)
Citations: not cited yet (Europe PMC); 26 references in the paper
Research resources: Anti-human CD3 mAb RRID:AB_108833

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

License: GPL-3.0
State: the link answers, verified on 27 September 2026
Evidence: files inventoried
Commit: d82444c17edc2384420409f85557c6ae84019732, 7 August 2026
Languages: C (36), C/C++ (24), JavaScript (3), Perl (2), Shell (1)
Size: 80 files, 66 scripts
Software Heritage: archived
Found in: the text, “Tumor DNA analysis of CSF samples”
Holds: README, license file, continuous integration
Not found: CITATION.cff, environment file, tests, documentation
Availability: 1 check, the latest on 27 September 2026: the link answers
  • 27 September 2026: the link answers
68 files

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

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://doi.org/10.1016/j.xcrm.2026.102967

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/j.xcrm.2026.102967},
url = {https://doi.org/10.1016/j.xcrm.2026.102967},
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/08/05
VL - 7
IS - 8
SP - 102967
SN - 2666-3791
PB - Elsevier
DO - 10.1016/j.xcrm.2026.102967
UR - https://doi.org/10.1016/j.xcrm.2026.102967
LA - en
ER -

CSL-JSON

{
"id": "10.1016/j.xcrm.2026.102967",
"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": "Cell Rep Med",
"volume": "7",
"issue": "8",
"page": "102967",
"DOI": "10.1016/j.xcrm.2026.102967",
"PMID": "42556340",
"PMCID": "PMC13522775",
"ISSN": "2666-3791",
"publisher": "Elsevier",
"URL": "https://doi.org/10.1016/j.xcrm.2026.102967",
"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. Oncology
In 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: Cell
In 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: iScience
In 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-oncology
In 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 research
In 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 communications
In common: other condition, 2 references
[7] doi:10.1038/s41467-026-74888-y
Engineered zwitterion-nanodelivery for precision targeting of brain metastases.
Journal: Nature communications
In 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 letters
In common: other condition, 2 references
[9] doi:10.1126/sciadv.aeb1237
Magnetically actuated nanoantennas for wireless glioblastoma therapy.
Journal: Science advances
In 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-oncology
In 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.

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.