본문 바로가기
Bioinformatics/Tip

bacteria fungi 다운로드 받기

by 임은천 2015. 5. 21.

다운로드는 다음 경로를 통해서 받을 수 있다.



가장 최근의 release에 접근할 수 있다.

다음과 같이 파일 리스트를 먼저 만든다. 박테리아의 경우 파일이 많기 때문에 약간 다른 명령을 이용한다.


lftp -c "open ftp.ensemblgenomes.org:/pub/current/bacteria/fasta && ls -Rl | grep dna | grep -v cdna && exit" > bacteria_files

wget -A "*.gz" -r --spider ftp://ftp.ensemblgenomes.org/pub/current/fungi/fasta/ > fungi_lists 2>&1

wget -A "*.gz" -r --spider ftp://ftp.ensemblgenomes.org/pub/current/protists/fasta/ > protists_lists 2>&1


그리고 박테리아 파일의 경우 다음과 같이 처리한다.


vi read_lines.py

parent = ""

with open("bacteria_files") as f:

        for line in f:

                line = line.strip()

                if ":" == line[-1]:

                        parent = "ftp://ftp.ensemblgenomes.org/pub/current/bacteria/fasta/" + line[:-1][2:] + "/"

#                       print parent

                else:

                        lines = line.split()

                        if ("dna" != lines[-1]) and ("dna.genome" in lines[-1]):

                                print parent+lines[-1]

:wq

python read_lines.py > download_bacteria


다음은 비슷한 일을 수행하는 bash script이다. 속도가 느리고, 추가적으로 grep으로 dna.genome을 포함하는 파일명만 선택해야 한다.


#!/bin/bash

parent=""

temp=""

while read line

do


        if [[ "$line" =~ :$ ]]; then

                temp=${line%%?}

                temp=${temp:2}

                parent=ftp://ftp.ensemblgenomes.org/pub/current/bacteria/fasta/$temp

        else

                a_path=`echo ${line} | awk -F " " {'print $9'}`

                if [ ${a_path} != "dna" ]; then

                        echo ${parent}/${a_path}

                fi

        fi

done < bacteria_files


다음으로 필요에 따라서 파일 내용을 정리해 본다.

가령, 


cat fungi_lists | grep -E "^--.*gz$" | grep dna.genome | awk -F " " {'print $3'} > download_fungi


또는


cat fungi_lists | grep -E "^--.*gz$" | grep -v dna_rm | grep -v dna_sm | grep -v cdna | grep -v ncrna | grep -v pep | grep -v cds | awk -F " " {'print $3'} > download_fungi


만약 genome만 다운로드 하려면 전자를, 다른 파일도 다운로드 하려면 후자를 이용한다.

다음은 나머지 파일이다.


cat protists_lists | grep -E "^--.*gz$" | grep dna.genome | awk -F " " {'print $3'} > download_protists


이제 병렬로 다운로드를 수행한다. 물론 다운로드를 시작하기 전에 따로 따로 폴더를 fungi, protists, bacteria로 나눠서 만들고 개별적인 폴더에서 아래의 다운로드 명령을 각각 실행하는 것이 좋다.


cat download_fungi | xargs -n 1 -P 8 wget -q

cat download_protists | xargs -n 1 -P 8 wget -q

cat download_bacteria | xargs -n 1 -P 8 wget -q 


댓글