2013-01-08 6 views
2

하나의 ID 열을 포함하는 텍스트 파일 (이름이 ids.file)을 읽을 수있게 훌륭하게 작동하는 기존의 perl one-liner (Edwards 연구소에서)를 가지고 있으며 특별히 형식이 지정된 두 번째 텍스트 파일 (이 예에서 fasta.file은 생물 정보학을 알고있는 사람들을위한 "fasta"형식으로되어 있음) 첫 번째 파일의 ID와 일치하는 시퀀스를 반환합니다. 나는 두 가지 추가 작업을 수행하기 위해이 스크립트를 확장 기대했다 :펄 시퀀스 추출 루프

  1. 현재 펄 ids.file가 하나의 데이터 열이 포함 된 경우 작동하는 것 같다 한 줄. 두 열 (공백으로 구분)을 포함하는 파일에서 작업하고 데이터의 두 번째 열 (실제로 데이터의 모든 열)에 대해 작업하고 싶습니다. 그러나 누군가가
  2. 새 파일 대신 세 번째 열로 검색 결과에서 반환 된 결과를 추가하고 싶습니다.

예를 들어 설명 할만큼 친절하지만 시간 중 하나에 대해서만 기울이면, # 2를 풀려고합니다. # 1을 (를) awk를 사용하여 두 번째 열에서 Perl 코드 만 사용하는 루프 - 아직 얻지 못했지만 닫습니다. 따라서 # 2는 나에게 더 어려운 것 같습니다. 다음과 같이

펄 하나의 라이너입니다 : 당신이 줄 수있는 모든 도움을 주셔서 감사합니다

perl -ne 'if(/^>(\S+)/){$c=$i{$1}}$c?print:chomp;$i{$_}=1 if @ARGV' ids.file fasta.file 

!

+2

하나의 샘플 입출력은 세 개 이상의 단락을 말합니다. 그리고 읽기가 훨씬 쉬워졌습니다. – TLP

+0

나는 완전히 동의한다. 예제를 추가하십시오. – ikegami

+0

죄송합니다 - 여기에 두 개의 입력 파일의 샘플은 다음과 같습니다 파일 ids.file은 다음과 같습니다 개 시보레 곰 기아 고양이 포드 및 파일 fasta.file은 다음과 같습니다 > 시보레 (334) 3434 (5) 232 TGAGAGAGAGAGAGAGGAGAGAGAGAGGAGAGAG > 기아 2,223 2,323 23 ACACACACACACACACACC 원하는 출력 ids.file에서 fasta.file 2 열을 사용하여 검색이 보이는 출력 파일 생성하는 스크립트 : TGAGAGAGAGAGAGAGGAGAGAGAGAGGAGAGAG 를 개 체비> 시보레 334 3434 5 232 곰 기아> 기아 2223 2323 23 ACACACACACACACACACC 고양이 f ord –

답변

2

잘 모르겠지만 이럴 수 있습니까?

perl -ne 'chomp; s/^>(\S+).*/$c=$i{$1}/e; print if $c; 
    $i{(/^\S*\s(\S*)$/)[0]}="$_ " if @ARGV' 
    ids.file fasta.file 
+1

사랑스러운 "Perreal"은 실제로 작동하는 것처럼 보입니다! 서로 다른 간격을 갖는 시퀀스가 ​​있습니다 (하나의 세 세트의 항목과 다음 세 개의 항목을 얼마나 많이 구분하는지에 따라 일관성이없는 것처럼 보입니다).하지만 이는 화면에 표시되는 방식 일 수 있습니다. CSV 파일로 옮겨 가면 도움이 될 것입니다. 정말 고맙습니다! –