Проблема слияния списка - PullRequest
1 голос
/ 18 января 2010

Извините за плохой заголовок, но вопрос было не просто сжать в одно предложение ...

У меня есть два списка контигов (list1 и list2).Они содержат в основном уникальные контиги, но с некоторым перекрытием.Я хочу сравнить list1 и list2, а затем создать list3, который содержит все контиги в list1 минус те, которые также присутствуют в list2.Возможно ли это с помощью простой пакетной команды cat / paste / grep / sort / uniq?

Спасибо!

Ответы [ 5 ]

1 голос
/ 18 января 2010

вы можете сделать это с sort и uniq:

sort list1 list2 list2 | uniq -u 

любые строки в списке 2 появятся как минимум дважды в отсортированном выводе и будут отфильтрованы фильтром uniq

0 голосов
/ 19 марта 2010

Я также работаю в области биоинформатики и геномики.

Вам лучше использовать python или perl, чтобы решить эту проблему с помощью цепочки с перекрытием / неправильным отображением, если вы действительно хотите получить последовательность uniq contig!

BY GentleYang из BGI Шэньчжэнь в Китае :)

0 голосов
/ 18 января 2010

вы не показывали примерные данные о своих списках, поэтому я составил их. предположим

$ cat file1
11
12
5
13
7
14
15

$ cat file2
6
7
8
5
4
1

$ awk 'FNR==NR { a[$0]; next } (! ($0 in a) ) ' file2 file1
11
12
13
14
15

Если это не то, что вы хотите, опишите более четко с примерами ваших списков и желаемого результата

0 голосов
/ 18 января 2010

попробуй comm -23

пример (первый список: цифры 1-10, второй список содержит цифры 5-8)

comm -23 <(seq 1 10) <(seq 5 8)

предполагается, что ваш список1 и список2 отсортированы

0 голосов
/ 18 января 2010

Взгляните на библиотеку Iesi.Collections, см. Также статью в Codeproject. http://www.codeproject.com/KB/recipes/sets.aspx#xx703510xx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...