유전자 목록에서 유전자 식별

유전자 목록에서 유전자 식별

유전자 목록 파일이 있습니다. 이 같은

    SWT21
    SSA1
    NRP1
    EFB1
    TFC3
    MDM10

목록에 있는 유전자의 이름과 이에 대한 기타 기본 정보가 포함된 또 다른 파일이 있습니다. 두 번째 파일은 다음과 같습니다.

chrI    147593  151166  YAL001C -   TFC3
chrI    143706  147531  YAL002W +   VPS8
chrI    142173  143160  YAL003W +   EFB1
chrI    140759  141407  YAL004W +   YAL004W
chrI    139502  141431  YAL005C -   SSA1
chrI    137697  138345  YAL007C -   ERP2
chrI    136913  137510  YAL008W +   FUN14
chrI    135853  136633  YAL009W +   SPO7
chrI    134183  135665  YAL010C -   MDM10

첫 번째 파일의 유전자 이름과 동일한 유전자 이름을 가진 두 번째 파일의 줄을 추출하고 싶습니다.

답변1

필요한 것은 간단합니다 grep.

grep -Fwf gene_list.txt gene_info.txt

사용되는 옵션은 다음과 같습니다.

  • -w : 전체 단어를 검색합니다. 이는 유전자 이름이 ERK1유전자와 일치하지 않도록 보장합니다 ERK12( -w표준 옵션은 아니지만 상당히 일반적임).
  • -f : 파일에서 검색할 패턴을 읽어옵니다. 이 경우에는 gene_list.txt.
  • -F : 패턴을 정규식 대신 문자열로 처리합니다. 이렇게 하면 이와 같은 유전자 이름 TOR*(그런 것이 존재하는 경우)이 일치하지 않게 됩니다 TORRRRRR.

참고: 이는 다음과 같이 가정합니다.공간 없음목록에서 유전자 이름을 둘러싸십시오. 있는 경우 먼저 제거해야 합니다(여기서 GNU 사용 sed).

sed -i 's/ //g' gene_list.txt

답변2

예에서앗 위키:

awk 'FNR==NR {arr[$0];next} $6 in arr' gene_list info_list

Wiki 항목에서 복사된 설명:

  • FNR == NR: 이 테스트는 레코드 수가 파일의 레코드 수와 같을 때 참입니다. 이는 첫 번째 파일에서만 작동하며, 두 번째 파일의 경우 NR은 file1 + FNR의 줄 수와 같습니다.
  • arr[$0]: 이는 전체 행을 기준으로 배열 요소 인덱스를 생성하는 고전적인 기술입니다. 그러면 file1 이름을 포함하는 배열이 생성됩니다.
  • next: 다음 레코드로 이동하므로 file1은 더 이상 처리되지 않습니다.
  • $6 in arr: $1이 arr, 즉 file1에 존재하면 기본 작업이 수행되고 해당 줄이 인쇄되기 때문에 이것은 file2의 레코드에서만 발생합니다.

답변3

더욱 견고하게 하려면 유전자 목록을 줄 끝에서 일치하는 정규식으로 변경할 수 있습니다. 이것은 작동해야 하며 POSIX와 호환됩니다.

sed 's/[[:space:]]*$/[[:space:]]*$/' gene_list | grep -wf - gene_info

gene_list또는 (질문의 예에 따라) 앞에 공백을 추가하십시오.

sed 's/$/[[:space:]]*$/; s/[[:space:]]//' gene_list |
  grep -wf - gene_info

물론, 유전자 이름에 정규식으로 해석되는 문자가 포함되어 있으면 작동하지 않습니다. 그러나 이 경우에는 sed이를 이스케이프 처리하기 위해 추가 대체 표현식을 추가해야 합니다(예 s:\[:\[:: .

답변4

egrep -wi "유전자 간 유도 파이프라인이 포함된 완전한 유전자 목록(1)" "파일 이름에 모든 유전자가 포함됨(2)"과 같은 명령을 제공하여 Linux에서 grep 명령을 사용할 수도 있습니다. 여기서 genelist(1)은 유전자 목록입니다(번호 20이고 gene(2))에는 전체 유전자 파일(번호 1000)이 포함되어 있습니다.

관련 정보