Сохраняйте только часть строки 'id' перед шаблоном ("_") - PullRequest
0 голосов
/ 12 мая 2018

У меня есть небольшая проблема здесь:

У меня на самом деле есть файл фаста такой:

g1.t1_0035_0042
ATTAGGAGGAA
g2.t1_0042_0042
ATTAGGAGA
g3.t1_0042_0035
ATTGGAAT
etc

и я хотел бы получить только первую часть имени идентификатора, я использовал:

for record in SeqIO.parse(sp1_aa_corrected, 'fasta'):
    print(record.id[record.id.index("_")::-1])

но я получаю:

t.1g
t.2g
t.2g

и я хотел бы получить:

g1.t1
g2.t1
g3.t1

без _number_number Спасибо за вашу помощь.

другой вопрос: Если у меня есть датафрейм такой:

gene_name   scaf_name       scaf_length cov_depth       GC
g3.t1       scaffold 6      56786         79            0.39
g4.t1       scaffold 6      56786         79            0.39
g1.t1       scaffold 256    789765        86            0.42
g2.t1       scaffold 890    3456          85            0.40
g5.t1       scaffold 1234   590           90            0.41

и если я хочу извлечь только необработанный файл, соответствующий имени_гена: "g2.t1", и создать новый фрейм данных, здесь для примера:

gene_name   scaf_name       scaf_length cov_depth       GC
g2.t1       scaffold 890    3456          85            0.40

Как я мог это сделать?

1 Ответ

0 голосов
/ 12 мая 2018

Используйте str.split для разделения на определенный символ.В этом случае вы также можете указать maxsplit=1.Поскольку это возвращает список, вам нужно проиндексировать первый элемент.

x = 'g1.t1_0035_0042'

res = x.split('_', maxsplit=1)[0]

print(res)

g1.t1

Чтобы отфильтровать ваш фрейм данных, просто используйте:

res = df[df['gene_name'] == 'g2.t1']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...