Как я могу получить имена генов из рефератов

abstract.txt = "The insulin-like growth factor 1 (IGF1) signaling pathway has emerged as a major 

регулятор процесса старения, от грызунов до человека. Однако, учитывая плейотропное действие IGF1, его роль в старении мозга остается сложной и противоречивой. В то время как IGF1 явно необходим для нормального развития центральной нервной системы, в доклинических исследованиях и исследованиях на людях получены противоречивые данные относительно его связи с когнитивной функцией, а также цереброваскулярными и нейродегенеративными расстройствами. Этот обзор посвящен текущему состоянию данных, изучающих роль IGF1 в старении мозга, включая доклинические и клинические исследования. Широкое изучение данных показывает, что IGF1 действительно может играть противоположные роли в старении мозга, в зависимости от лежащей в основе патологии и контекста. Некоторые данные свидетельствуют о том, что в условиях нейродегенеративных заболеваний, которые проявляются аномальным отложением белков в головном мозге, таких как болезнь Альцгеймера, снижение передачи сигналов IGF1 может выполнять защитную роль, замедляя прогрессирование заболевания и увеличивая клиренс патологических белков для поддержания клеточного гомеостаза. Напротив, индукция дефицита IGF1 также связана с нарушением регуляции функции познания и нейроваскулярной системы, что позволяет предположить, что некоторая передача сигналов IGF1 может быть необходима для нормальной функции мозга. Кроме того, состояния острого повреждения нейронов, которые требуют сигналов роста, восстановления и выживания для продолжения, обычно демонстрируют полезные эффекты IGF1 в этом контексте. Оценка двойных, временами противоположных характеристик IGF1 «доктор Джекил» и «мистер Хайд» в стареющем мозге приблизит нас к пониманию его влияния и разработке более целенаправленных вмешательств, связанных с IGF1. "

Это мой текстовый файл, выдержка из опубликованного. этот реферат содержит некоторые названия генов. как я могу восстановить имена генов


person ram    schedule 18.03.2019    source источник
comment
Взгляните на пакет tm в R   -  person Clemsang    schedule 18.03.2019
comment
У меня есть куча опубликованных тезисов, поскольку текстовый файл связан с раком. теперь из этого мне нужно извлечь имена генов, доступные в этих рефератах. как я могу получить?   -  person ram    schedule 18.03.2019
comment
@Venkat Вы должны ознакомиться с рекомендациями SO по как задавать вопросы; среди прочего, вы всегда должны задавать по одному вопросу за раз; фундаментальное изменение вопроса после того, как вы уже получили ответы, считается очень плохой формой, поскольку делает существующие вопросы бесполезными. Не продолжайте задавать дополнительные вопросы после того, как получили ответ. Потратьте время на поиск решений, проведите самостоятельное исследование и, если у вас возникнет новая проблема, задайте новый вопрос.   -  person Maurits Evers    schedule 18.03.2019
comment
Возможный дубликат проверить заглавные слова в тексте и извлечь его   -  person divibisan    schedule 18.03.2019


Ответы (3)


Это должно работать, хотя регистр будет чувствительным.

Во-первых, вам нужно переименовать абстрактную переменную (она не может заканчиваться на .txt и считаться строкой):

abstract_text =  "The insulin-like growth factor 1 (IGF1) signaling pathway has emerged..."

Тогда вам НУЖЕН список всех генов, которые вы хотите найти:

genes = ["IGF1"]

Затем вы можете искать все гены.

from collections import Counter
import pandas

genes_dictionary = {}

for i in genes:
   if i in abstract_text:
      genes_dictionary[i] = 1

Преобразуйте словарь в таблицу и распечатайте ее.

table = pandas.Series(genes_dictionary, name = 'Count')
table.index.name = 'Gene'
table.reset_index()

Выход: Gene Count 0 IGF1 1

person arranjdavis    schedule 18.03.2019
comment
спасибо за ваш ответ arranjdavis. теперь я хочу написать это в виде таблицы, имена столбцов - это имя и частота. это небольшой пример, который я создал для своей проблемы, сэр. моя проблема в том, что у меня есть куча рефератов, которые я собрал из pubmed. теперь из этих рефератов мне нужно восстановить имена генов. Могу ли я узнать, как мне написать код для извлечения имен генов из рефератов. - person ram; 18.03.2019
comment
Если вы хотите сделать его нечувствительным к регистру, вы можете преобразовать и текст, и имя в нижний регистр: name_dictionary[i] = text.lower().count(i.lower()) - person arranjdavis; 18.03.2019
comment
Спасибо, сэр. теперь мое требование не зависит от регистра, сэр. У меня есть рефераты, связанные с раком легких. в этих рефератах имена генов доступны. Теперь мне нужно получить имена генов из этого текстового файла тезисов. - person ram; 18.03.2019
comment
Хорошо, я обновил свой ответ на то, что, по моему мнению, вы ищете. Дайте мне знать, если это сработает, пожалуйста. - person arranjdavis; 18.03.2019
comment
да, сэр, код работал отлично. теперь мое требование состоит в том, чтобы не передавать имена с использованием регулярных выражений или любым другим способом получить имена, которые включены в текстовый файл, без передачи параметра имен. - person ram; 18.03.2019
comment
это хорошо, сэр. спасибо за ваши ответы. возможно ли получить все имена, включенные в текстовый файл, без передачи параметра имен - person ram; 18.03.2019
comment
Я не верю, что можно получить все имена без передачи параметра имен. Функция должна знать, что искать. Например, все ли имена генов начинаются с одной и той же строки символов? Кроме того, поскольку я ответил на ваш первоначальный вопрос, не могли бы вы принять его как «отвеченный»? Пытаюсь немного расширить свой профиль :) - person arranjdavis; 18.03.2019
comment
да, я принял ответ, теперь я отредактировал свой вопрос. не могли бы вы ответить на вопрос. спасибо - person ram; 18.03.2019
comment
Недопустимо полностью менять вопрос при его редактировании, так как все предыдущие ответы становятся недействительными. - person arranjdavis; 18.03.2019
comment
@arranjdavis К сожалению, часто ничего не стоит кормить вампира-помощника. Как вы уже заметили, это очень плохая форма OP; отрицательные голоса на исходный вопрос ОП отражают низкое качество. - person Maurits Evers; 18.03.2019
comment
Венкат, я снова попытался ответить на твой вопрос. Я надеюсь, что это приемлемо. Если у вас есть другой вопрос, пожалуйста, задайте его в другом месте (вместо того, чтобы снова редактировать этот) и дайте мне знать. Спасибо. - person arranjdavis; 18.03.2019
comment
да сэр. хорошо, это нормально, когда я пытался так, но без передачи имен генов мне нужно получить все имена генов, доступные в аннотации. дайте мне знать ответ, сэр. - person ram; 19.03.2019
comment
Сценарий никак не может «знать», что такое имя гена. Вы должны сказать ему, каковы названия генов. Для сценария «собака» и «IGF1» — это одно и то же — они оба просто строки. Вам нужно указать скрипту, что искать. Если вам нужна помощь в попытке идентифицировать имена генов в скрипте, это другой вопрос. Вы должны пометить этот вопрос как ответ, а затем начать новый, другой вопрос, и я постараюсь помочь вам в этом. - person arranjdavis; 19.03.2019
comment
Arranjdavis, сэр, где я могу пометить это как ответ на вопрос, потому что я не знаю этого, я новичок в stackoverflow. - person ram; 20.03.2019
comment
Венкат, чтобы пометить мой ответ как принятый, нажмите на галочку рядом с моим ответом, чтобы переключить его с серого на заполненный (он должен стать зеленым). Благодарю вас! Вот более подробное объяснение: meta.stackexchange.com/questions/5234/ - person arranjdavis; 20.03.2019
comment
есть ли способ получить все имена генов из опубликованных рефератов, сэр. - person ram; 21.03.2019
comment
Venkat, я думаю, что этот вопрос лучше всего задать, создав НОВЫЙ вопрос (вы можете разместить ссылку на этот вопрос здесь, чтобы я мог его найти). Но, как я уже говорил (пожалуйста, обратите на это внимание), вам НУЖЕН СПИСОК НАЗВАНИЙ ГЕН, чтобы выполнить то, о чем вы просите. Возможно, вы могли бы получить этот список из Википедии (en.wikipedia.org/wiki/Chromosome_1). Затем нужно поискать гены из этого списка в имеющихся у вас рефератах. Это единственный способ сделать это. Если только в аннотациях все гены не написаны ЗАГЛАВНЫМИ БУКВАМИ, тогда вы можете найти их так. Но задайте НОВЫЙ ВОПРОС - там отвечу. - person arranjdavis; 21.03.2019

обычно вы можете сделать это с помощью table(), но сначала некоторые приготовления:

mytxt<-"I am venkatarao.studying matsers. I am going to complete masters. my friends are venkatarao. Naveen, reddy. all are studying masters."

#remove punctations
gsub('[[:punct:]]',' ',mytxt)

#separate words
mytxt<-strsplit(mytxt," ")[[1]]

#frequencies
table(mytxt)

Однако вам нужны были только имена, и вы не можете сделать это без предварительного определения имен... Или получения определения в другом месте. Итак, принимая ваше определение, вы можете сделать что-то вроде этого:

find_names<-c("venkatarao","Naveen","reddy","masters")
mytxt[mytxt%in%find_names]

Конечно, это не находит имена, если они написаны неправильно ;-)

person Igel_in_aspic    schedule 18.03.2019
comment
Благодарю за ваш ответ. моя цель состоит в том, что я не собираюсь давать файл find_names, но в результате мне нужно получить все имена людей, какие все имена доступны в текстовом файле. - person ram; 18.03.2019

Используя ваш образец набора данных, мы можем сделать следующее:

data.txt = "I am venkatarao.studying matsers. I am going to complete masters. my friends are venkatarao. Naveen, reddy. all are studying masters."

# Isolate words by space, remove periods and commas.
all.words = unlist(strsplit(data.txt, " "))
all.words = unlist(strsplit(all.words, "\\."))
all.words = unlist(strsplit(all.words, "\\,"))

count.table = table(all.words)

# Specify Names you are interested in
> count.table[names(count.table) %in% c("venkatarao", "Naveen")]
all.words
   masters     Naveen      reddy venkatarao 
         2          1          1          2 
person NM_    schedule 18.03.2019
comment
да Нишан спасибо. хорошо, что это нормально для этого примера. вот так у меня есть куча рефератов, которые я извлек из pubmed. из этих рефератов мне нужно получить только имена генов. возможно ли нишан. файл .txt содержит 300 рефератов статей, связанных с заболеваниями. теперь я хочу извлечь имена генов, которые включены в файл тезисов .txt. - person ram; 19.03.2019
comment
@Venkat, вы можете создать вектор всех имен генов, а затем посмотреть, какие из них находятся в текстовом файле. если gene.names ваш вектор, то измените код на count.table[names(count.table) %in% gene.names] - person NM_; 20.03.2019