Извлечение начальных и конечных координат в соответствии с определенной длиной нефиксированного интервала [закрыто]

Википедия говорит:

Для угроз, специфичных для Microsoft Windows

Эти приложения полезны для компьютеров (обычно серверов), которые передают файлы пользователям MS Windows. Они не ищут угрозы, специфичные для Linux.

Avast! (proprietary; freeware version available)
AVG (proprietary; freeware version available)
Avira (proprietary; freeware version was available, discontinued due to lack of demand)[10]
BitDefender (proprietary; freeware version available)
Comodo (proprietary; freeware version available) [11]
ClamAV (free and open source software)[12]
Dr.Web (proprietary) [13]
EScan for Linux (proprietary)
F-Prot (proprietary; freeware version available)[14]
F-Secure Linux (proprietary)
Kaspersky Linux Security (proprietary)[15]
McAfee VirusScan Enterprise for Linux (proprietary)[16]
Panda Security for Linux (proprietary)[17]
Sophos (proprietary) (versions for UNIX and Linux too)
Symantec AntiVirus for Linux (proprietary)[18]
Trend Micro ServerProtect for Linux (proprietary)

из:

https://askubuntu.com/a/229065/45156

1
28.01.2017, 00:41
2 ответа

Проблема заключается в объединении строк, грубо говоря. Строка может быть «объединена» с предыдущей строкой, если ее начальная координата совпадает с конечной координатой строки выше.

Линии, вероятно, соответствуют геномным особенностям. И цель состоит в том, чтобы объединить признаки, которые соседствуют в геномной последовательности.

Это сценарий awk , который делает следующее:

$2 == end {
    # This line merges with the previous line.
    # Update end and continue with next line.

    end = $3;
    next;
}

{
    # This is an unmergeable line (start doesn't correspond to end on
    # previous line).

    # If we've processed at least the header line, print the data collected.
    # The if statement avoids printing an empty output line at the 
    # start of the output.

    if (NR > 1) {
        print chr, start, end, score, len;
    }

    # Get data from this line.

    chr = $1;
    start = $2;
    end = $3;
    score = $4;
    len = $5;
}

END {
    # At the end of input, print the data as above to output last line.
    print chr, start, end, score, len;
}

Сценарий предполагает сортировку ввода и то, что все начальные координаты строго меньше конечных координат (то есть все функции лежат на положительной ветви).

Тестирование:

$ awk -f script.awk data
chr start end score length
chr1 237592 237912 176 320
chr1 521409 521729 150 320
chr1 714026 714346 83 320
chr1 805100 805440 323 340
2
27.01.2020, 23:34

Для меня это выглядит как текстовый файл, колонки которого разделены пробелами. Его можно элегантно обработать с помощью R, но сценарий оболочки тоже может это сделать. Что вам нужно, так это читать файл строка за строкой, используя цикл for. Внутри цикла простым способом будет присвоить значение каждого столбца (для этого можно использовать cut) переменной, а затем вывести переменные в нужном порядке. Переменные 2-го и 5-го столбцов, сложенные вместе, дают на выходе 3-й столбец. Вы можете вывести на экран каждую из ваших строк вывода с помощью echo из цикла for. Когда вы увидите, что строки на экране печатаются в соответствии с вашими предпочтениями, вы просто перенаправляете вывод вашего скрипта в файл следующим образом your_script.sh > your new output.txt

0
27.01.2020, 23:34

Теги

Похожие вопросы