Суммирование 3 разреженных матриц в одну полную матрицу - PullRequest
0 голосов
/ 21 апреля 2019

Допустим, у меня есть три таблицы: patients, samples и mutations:

  • patients Таблица содержит уникальные строки, каждая из которых имеет уникальный patient_id.

  • samples таблица содержит уникальные строки, каждая из которых имеет уникальный sample_id, но также patient_id, который можно найти в таблице пациентов.В таблице сэмплов может быть несколько строк с одной и той же таблицей patient_id.

  • mutations, имеющей НЕ уникальные строки.Каждая строка в таблице мутаций содержит только два столбца: gene и sample_id.

Мне нужно создать новую таблицу, назовите ее summary, с patient_id впервый столбец sample_id, за которым следует столбец для каждого отдельного гена в таблице мутаций.

Каждая строка новой сводной таблицы должна содержать

  • patient_id от пациентовтаблица,
  • sample_id из таблицы samples,
  • a число 1 в каждом последующем столбце gene для каждого gene в таблице mutations, котораяимеет sample_id для конкретного patient или число 0, если нет.

Новая сводная таблица выглядит примерно так:

patient_id, sample_id, gene A, gene B, gene C, gene D, etc
12345678,54321,1,0,0,0
23456789,65432,0,1,1,0
34567890,76543,0,0,1,0
34567890,87654,0,1,0,1
etc

В новой сводной таблице должна быть запись: 0 или 1 для каждого отдельногоgene найдено в таблице mutations, даже если в таблице мутаций нет записей, у которых sample_id принадлежит пациенту для определенной строки.

Помните, что может быть несколько образцов, принадлежащих одному и тому же пациенту, поэтому сводная таблица может содержать несколько строк для данного пациента - каждая строка для другого образца.

Спасибо за любые рекомендации -R является относительно новым для меня ...:)

Пример данных:

таблица пациентов:

PATIENT_ID, AGE, PARTC_CONSENTED_12_245, AGE_CURRENT, RACE, RELIGION, ETHNICITY, OS_STATUS, OS_MONTHS, PED_IND, SEX, RECURRENCE, POD_FIRST_LINE, SYSTEMIC_TREATMENT, TIME_TO_LAST_FOLLOWUP P-0000114,57, NO, 59, белый, CATHOLIC / ROMAN, неиспанский;не латиноамериканец, УЛУЧШЕНО, 15.16, Нет, Женский, 0, Да, самоцвет / вол + HAI FUDR, 15.16 P-0000127,62, NO, 64, Белый, НЕТ, Неиспанский;не латиноамериканец, УМЕНЬШЕН, 14,28, нет, мужской, 0, да, гем / цис, 14,28 P-0000147,40, NO, 45, черный, христианский, не испанский;неиспаноязычный, ЖИВЫЙ, 38.433, Нет, Женский, 0, Да, драгоценный камень, 38.45 P-0000154,76, НЕТ, 79, Белый, ЕВРЕЙСКИЙ, Неиспанский;неиспаноязычный, УМЕНЬШЕННЫЙ, 23.145, Нет, Мужской, 0, Да, гем / цис, 23.52 P-0000159,67, NO, 70, "Другие азиатские, в том числе азиатские, NOS и восточные, NOS", ХРИСТИАНСКИЙ, Неиспанский;неиспаноязычный, УМЕНЬШЕН, 18,773, Нет, Женский, 0, Да, драгоценный камень / цис, 18,78

Таблица образцов:

SAMPLE_ID, PATIENT_ID, HAS_MATCHED_NORMAL, TIME_TO_METASTASIS_MONTHS, SAMPLE_, SAMPLE_, SAMPLE_PRIMARY_SITE, ONCOTREE_CODE, GENE_PANEL, SO_COMMENTS, SAMPLE_COVERAGE, TUMOR_PURITY, MSI_COMMENT, MSI_SCORE, MSI_TYPE, ИНСТИТУТ, SOMATIC_STATUS, AGE_AT_SEQ_REPORT, Арчер, CVR_TMB_COHORT_PERCENTILE, CVR_TMB_SCORE, CVR_TMB_TT_COHORT_PERCENTILE, STAGE_4_DX Р-0000114-Т01-IM3, Р-0000114, Сопрягано, 0, МетастазированиеОпухоль, Лимфатический узел, Печень, IHCH, IMPACT341,, 938,60, Недоступно, 0,47, Стабильный, MSKCC, Подходящий, 58, НЕТ, 58,6,4,5,75,9, Да P-0000114-T02-IM3, P-0000114Соответствует, 0, Первичный, Опухоль, Неприменимо, Печень, IHCH, IMPACT341,, 409,60, Недоступно, 0,26, Стабильно, MSKCC, Соответствует, 59, Нет, 58.6,4.5,75.9, Да P-0000127-T01-IM3, P-0000127, совпало, 0, метастазирование, опухоль, лимфатический узел, печень, IHCH, IMPACT341,, 623,30, недоступно, 0, стабильно, MSKCC, совпало, 64, NO, 29.9,2.2,36,Да P-0000127-T02-IM3, P-0000127, Совпадение, 0, Метастазирование, Опухоль, Лимфатический узел, Печень, IHCH, IMPACT341, 255,0, Недоступно, 0, Стабильный, MSKCC, Совпадение, 64, НЕТ, 29.9,2.2,36, Да P-0000147-T01-IM3, P-0000147, Совпадение, 25, Первичный, Опухоль, НеПрименимо, Печень, IHCH, IMPACT341, 1051,80, MICROSATELLITE STABLE (MSS).См. Примечание MSI ниже., 0,17, Стабильный, MSKCC, Соответствует, 41, NO, 0,0,0, Нет P-0000154-T01-IM3, P-0000154, Соответствует, 0, Первичный, Опухоль, Не применимо, Печень,IHCH, IMPACT341, 767,70, Недоступно, 1,2, Стабильный, MSKCC, Совпадение, 78, НЕТ, 44,1,3,3,59,4, Да

таблица мутаций:

Hugo_Symbol, Tumor_Sample_Barcode BAP1, P-0009513-T01-IM5 PDGFRA, P-0000114-T01-IM5 BAP1, P-0009513-T01-IM5 KRAS, P-0000114-T02-IM3Cdkn1b, Р-0000192-Т02-IM3 IDH1, Р-0000327-Т01-IM3 ARID1A, Р-0000327-Т01-IM3 DOT1L, Р-0000327-Т01-IM3 NOTCH4, Р-0001539-Т01-IM3 ABL1, Р-0001539-Т01-IM3 SUFU, Р-0001539-Т01-IM3 PBRM1, Р-0000114-Т01-IM3 IDH1, Р-0002143-Т01-IM3 KRAS, Р-0002143-Т01-IM3 ARID1A, Р-0000114-Т01-IM3 MLL3, Р-0000127-Т01-IM3 ErbB3, Р-0000117-Т01-IM3 ARID1A, Р-0002211-Т01-IM3 ТР53, Р-0003407-Т01-IM5 ARID1A, Р-0000127-Т01-IM3 ErbB3, Р-000012707-Т01-IM5 STAG2, Р-0003407-Т01-IM5 KRAS, Р-0003473-Т01-IM5 PBRM1, Р-0003590-Т01-IM5 TET2, Р-0003590-Т01-IM5 IDH1, Р-0003795-Т01-IM5 ТР53, Р-0003795-Т01-IM5 SPEN, P-0003795-T01-IM5

1 Ответ

0 голосов
/ 24 апреля 2019

Это делает трюк в MySQL:

select cs.patient_id, g.* from clynical_sample cs inner join ( select * from (with cp as (select * from (select gene from mutations group by gene) c cross join (select sample_id from clynical_sample group by sample_id) m) select cp.gene, cp.sample_id, ifnull(m.id,0) id from cp left join (select gene, sample_id, 1 id from mutations) m on m.gene=cp.gene and m.sample_id=cp.sample_id)<br> pivot ( max(id) for gene in ('BAP1','PDGFRA','KRAS','CDKN1B','IDH1','ARID1A','DOT1L','NOTCH4','ABL1','PBRM1','MLL3','TET2','SPEN','CCND2','DDR2','RICTOR','SMAD4','GLI1','RASA1','MAP2K1','CSF3R','HIST1H3D','DNMT3B','CEBPA','GATA2','ARID1B','BRCA2','EPHA7','CTNNB1','EPHA5','EP300','RAF1','NF1','EGFR','NBN','INHA','CARD11','ANKRD11','ERBB3','TERT','DNMT1','ATM','RIT1','PDCD1','SMARCA4','FOXP1','DICER1','TGFBR2','PTPRS','FANCC','APC','NCOA3','NTRK1','PTPRD','NSD1','GRIN2A','SMARCB1','PTCH1','KEAP1','KDR','IRS2','PIK3R3','SUFU','STAG2','MAP3K13','SOX9','SETD2','FAT1','ZFHX3','NRAS','MAP3K1','ERBB4','JAK3','NF2','PGR','KDM6A','RPTOR','TP53','CIC','MSH2','MAP2K4','AXIN2','PTEN','XPO1','ERCC4','AXL','RNF43','DNMT3A','ERG','NOTCH2','RFWD2','IGF1R','GATA1','SMAD3','TMPRSS2','MLL','BRAF','TET1','BCOR','YAP1','HLA-A','PLCG2','CBL','IRS1','PIK3CA','POLE','LATS2','MST1','H3F3B','IRF4','AR','B2M','NCOR1','FUBP1','NOTCH3','ATR','RPS6KB2','TSC2','PIK3CG','MDM2','ROS1','TCF3','TSC1','FGFR2','FBXW7','FOXA1','MEN1','CDKN2Ap16INK4A','EPHA3','PMS1','PAK1','E2F3','PIK3CD','PLK2','MPL','RHEB','RBM10','ASXL2','MSH6','RAD21','BRIP1','PTPRT','GNA11','CDKN1A','RAD50','BRD4','STK11','ARID2','RUNX1','MTOR','JAK1','TBX3','MALT1','RYBP','MLL2','PIK3CB','SMO','AXIN1','MAPK3','VHL','JUN','KDM5A','ARID5B','AMER1','PPM1D','ASXL1','MLH1','CASP8','BARD1','DAXX','CDH1','PALB2','AKT3','RECQL4','IGF2','MED12','FLT3','HIST3H3','MST1R','EIF4A2','CREBBP','STAT5B','PHOX2B','BRCA1','ERBB2','MITF','RB1','CD79A','TMEM127','MAPK1','CDKN2A','CDKN2Ap14ARF','CSF1R','FLT4','CENPA','RPS6KA4','SRC','ERCC3','NEGR1','RET','ACVR1','SYK','ICOSLG','FYN','SOX17','ETV6','NTRK3','HIST1H1C','IDH2','CHEK1','GNAS','PPP6C','EZH2','MYCL1','SDHA','MDC1','ARAF','RAC1','KDM5C','PARP1','NKX2-1','CXCR4','SMAD2','IL7R','TGFBR1','U2AF1','SF3B1','FGFR4','ERRFI1','SMARCD1','FGFR1','EPHB1','PDPK1','FLCN','RAD54L','MGA','PPP2R1A')) ) g on g.sample_id = cs.sample_id;

...