URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 10452
[ Назад ]

Исходное сообщение
"Правка header в fasta"

Отправлено labradorka2112 , 12-Авг-23 12:22 
Добрый день! Вероятно, совсем простая задачка, решается многими способами, но я что-то пока не нашел подходящего.

Входные данные:
есть файл txt, в нем, в том числе, есть строки вида >NC00001 (прочее из этих строк удалено sed -r 's/xxxxx.+//' ) файл.ext
Таких строк 5572 штуки (всего строк в файле существенно больше), т.е. имеем диапазон строк указанного вида >NC00001 - >NC05572, между которыми другие строки. Количество других строк между целевыми строками вида >NC00001 рандомное, но уменьшается к концу файла.

Задача:
получить уникальные числа после константного тэга >NC, так чтобы строка вида >NC****** встечались только один раз в файле )

Условия: 1) нужно чтобы в числовой части строки присутствовало не более одной цифры 0
         2) В подстановке допустимы только цифры, не более 5-6 знаков(цифр) после >NC.
         3) Могут быть в порядке возрастания
         3) нужна проверка вхождения, т.е. что каждый из полученных идентификаторов уникален.
         4) решить на bash, можно и python

Что нашел: если вместо 0000 тупо клеить какие-нибудь числа, с учетом количества строк,очевидно, возникают повторы.
Рассматриваю sed, rev, tac, seq, grep, uniq
Из любопытного, но пока не разобрался : cut -d'' -f1|sort|uniq-c|grep -Ev'^[[:space:]]+1[[:space:]]'


Содержание

Сообщения в этом обсуждении
"Правка header в fasta"
Отправлено labradorka2112 , 12-Авг-23 15:13 
>[оверквотинг удален]
>          3) Могут быть
> в порядке возрастания
>          3) нужна проверка
> вхождения, т.е. что каждый из полученных идентификаторов уникален.
>          4) решить на
> bash, можно и python
> Что нашел: если вместо 0000 тупо клеить какие-нибудь числа, с учетом количества
> строк,очевидно, возникают повторы.
> Рассматриваю sed, rev, tac, seq, grep, uniq
> Из любопытного, но пока не разобрался : cut -d'' -f1|sort|uniq-c|grep -Ev'^[[:space:]]+1[[:space:]]'

Написал говнокод генератора для подстановки в строки, но мне нужны 6-ти значные числа, а тут цифры только 1-9 судя по первой странице.

import random

f = open('randlist.txt', "w")
S = ""
D = (random.sample(range(321456, 879456), k=5675))
for i in D:
    S = S + str(i)
f.write('\n'. join(S))
f.close()