Как найти количество уникальных строк в столбце с последующим положением данной строки - PullRequest
0 голосов
/ 11 февраля 2020

Мне нужно получить 2 вещи из входного файла tsv:

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

$awk < input.tsv '{print $5}' | sort | uniq | wc -l

Пример входного файла с заголовком (6 столбцов) и 10 строками:

$cat hum1003.tsv
p-Value Score   Disease-Id  Disease-Name    Gene-Symbols    Entrez-IDs
0.0463  4.6263  OMIM:117000 #117000 CENTRAL CORE DISEASE OF MUSCLE;;CCD;;CCOMINICORE MYOPATHY, MODERATE, WITH HAND INVOLVEMENT, INCLUDED;;MULTICORE MYOPATHY, MODERATE, WITH HAND INVOLVEMENT, INCLUDED;;MULTIMINICORE DISEASE, MODERATE, WITH HAND INVOLVEMENT, INCLUDED;;NEUROMUSCULAR DISEASE, CONGENITAL, WITH UNIFORM TYPE 1 FIBER, INCLUDED;CNMDU1, INCLUDED  RYR1 (6261) 6261
0.0463  4.6263  OMIM:611705 MYOPATHY, EARLY-ONSET, WITH FATAL CARDIOMYOPATHY    TTN (7273)  7273
0.0513  4.6263  OMIM:609283 PROGRESSIVE EXTERNAL OPHTHALMOPLEGIA WITH MITOCHONDRIAL DNA DELETIONS,AUTOSOMAL DOMINANT, 2 POLG2 (11232), SLC25A4 (291), POLG (5428), RRM2B (50484), C10ORF2 (56652)   11232, 291, 5428, 50484, 56652
0.0539  4.6263  OMIM:605637 #605637 MYOPATHY, PROXIMAL, AND OPHTHALMOPLEGIA; MYPOP;;MYOPATHY WITH CONGENITAL JOINT CONTRACTURES, OPHTHALMOPLEGIA, ANDRIMMED VACUOLES;;INCLUSION BODY MYOPATHY 3, AUTOSOMAL DOMINANT, FORMERLY; IBM3, FORMERLY   MYH2 (4620) 4620
0.0577  4.6263  OMIM:609284 NEMALINE MYOPATHY 1 TPM2 (7169), TPM3 (7170)    7169, 7170
0.0707  4.6263  OMIM:608358 #608358 MYOPATHY, MYOSIN STORAGE;;MYOPATHY, HYALINE BODY, AUTOSOMAL DOMINANT    MYH7 (4625) 4625
0.0801  4.6263  OMIM:255320 #255320 MINICORE MYOPATHY WITH EXTERNAL OPHTHALMOPLEGIA;;MINICORE MYOPATHY;;MULTICORE MYOPATHY;;MULTIMINICORE MYOPATHY MULTICORE MYOPATHY WITH EXTERNAL OPHTHALMOPLEGIA;;MULTIMINICORE DISEASE WITH EXTERNAL OPHTHALMOPLEGIA    RYR1 (6261) 6261
0.0824  4.6263  OMIM:256030 #256030 NEMALINE MYOPATHY 2; NEM2   NEB (4703)  4703
0.0864  4.6263  OMIM:161800 #161800 NEMALINE MYOPATHY 3; NEM3MYOPATHY, ACTIN, CONGENITAL, WITH EXCESS OF THIN MYOFILAMENTS, INCLUDED;;NEMALINE MYOPATHY 3, WITH INTRANUCLEAR RODS, INCLUDED;;MYOPATHY, ACTIN, CONGENITAL, WITH CORES, INCLUDED  ACTA1 (58)  58
0.0939  4.6263  OMIM:602771 RIGID SPINE MUSCULAR DYSTROPHY 1    MYH7 (4625), SEPN1 (57190), TTN (7273), ACTA1 (58)  4625, 57190, 7273, 58

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

2- Далее порядок данных фиксирован и упорядочен в соответствии с оценкой столбца 2. Итак, я хочу знать, где находится ген интереса, помещенный в этот ранжированный список в столбце 5 (Gene-Symbols). И это должно быть сделано после удаления дубликатов, поскольку одни и те же гены повторяются на основе других параметров в остальных столбцах, но это не касается моего окончательного результата. Мне нужно сосредоточиться только на ранжированном списке согласно столбцу 2. Как мне это сделать? Есть ли команда, которую я могу передать вышеупомянутой команде, чтобы получить позицию заданного значения?

Ожидаемый результат: Если я наберу команду в точке 1, то она должна дать мне уникальные гены в столбце 5. У меня всего 18 гены в столбце 5. Но уникальные значения равны 14. Если интересующий ген равен TTN , то его первое вхождение было на второй позиции в исходном ранжированном списке. Следовательно, ожидаемый ответ о том, где находится мой ген интереса, должен быть 2.

$14
$2

Спасибо

...