The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Правка 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, 15:13 , 12-Авг-23 (1)
    >[оверквотинг удален]
    >          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()




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру