Мой соавтор хочет, чтобы я обработал входной текстовый файл в структурированную таблицу:
Необработанный текстовый файл ввода выглядит как
PMID 22224631
Title -765 G_C and -1195 A_G promoter variants of the cyclooxygenase-2 gene decrease the risk for preeclampsia.
Found 8 gene(s)
Gene CRP Mentions
Gene GC Mentions
Gene PTGS2 Mentions
Found 1 variant(s)
Variant I399V URL
Gene PTGS1 Mentions
Found 2 variant(s)
Variant L255L URL
Variant V255V URL
Gene CT49 Mentions
Gene GAA Mentions
Found 1 variant(s)
Variant Q255H URL
Gene CGA Mentions
Gene TAT Mentions
PMID 16076618
Title 1166C mutation of angiotensin II type 1 receptor gene is correlated with umbilical blood flow velocimetry in women with preeclampsia.
Found 13 gene(s)
Gene AGTR2 Mentions
Gene QTRT1 Mentions
Gene SLC25A10 Mentions
Gene ATM Mentions
Gene PIH Mentions
Gene CCL14 Mentions
Gene AGT Mentions
Gene REN Mentions
Gene ASAH1 Mentions
Gene AGTR1 Mentions
Gene SSD Mentions
Gene TAT Mentions
Found 1 variant(s)
Variant D389A URL
Gene ACE Mentions
Found 2 variant(s)
Variant D389A URL
Variant H389P URL
Вы можете видеть, для каждого PMID (id для научной публикации), есть некоторая информация о генах, для каждого гена может быть некоторая информация о вариантах.Входной текст во многом похож на вывод функции «печать» вместо таблицы.Затем каждый блок PMID отделяется пустой строкой.
Финальная таблица, которую хочет сотрудничать, похожа на таблицу длинного формата (.csv), состоящую из трех слоев: PMID, ген и вариант.PMID содержит гены, гены содержат (или нет) варианты.Возьмите приведенный выше пример входного файла:
PMID | Gene | Variant
22224631 | CRP | No
22224631 | GC | No
22224631 | PTGS2 | I399V
22224631 | PTGS1 | L255L
22224631 | PTGS1 | V255V
22224631 | CT49 | No
22224631 | GAA | Q255H
....... | .....
У меня нет большого опыта обработки необработанного текстового файла в таблицах на Python.
Мое мышление заключается в использовании регулярных выражений для удаления лишних слов в первую очередь.Я пытаюсь прочитать в этом текстовом файле, он генерирует большой список строк, в котором каждая строка является строкой во входном файле
with open ("gene and variants.txt", "r") as myfile:
data=myfile.readlines()
data2 = [x for x in data if not x.startswith('Title') and not
x.startswith('Found')]
data3 = [x for x in data2 if x != " \t\n"]
data4 = [x.strip(" Mentions\n") for x in data3]
data4 = [x.strip(" URL") for x in data4]
data4 = [x.replace("Gene\t", "Gene") for x in data4]
data4 = [x.replace("PMID\t", "PMID ") for x in data4]
data4 = [x.replace("Variant\t", "Variant") for x in data4]
К счастью, я могу удалить самую ненужную информацию, наконец, добраться доэтот список строк:
Список строк примерно такой:
Тогда я застрял .... что делатьзатем преобразовать этот список строк в мою целевую таблицу?Я думал использовать Pandas, но кажется, что каждая строка в кадре данных принимает только одну строку с одним столбцом.
Я на правильном пути?Если да, что мне делать дальше?
Если нет, есть ли у вас какие-либо предложения относительно того, как мне следует подойти к этой проблеме?