갤럭시를 이용한 Planeemo Virtual Appliance 중 하나

16108 단어 GalaxyPlanemo
갤럭시 유틸리티 제작을 위한 유틸리티Planemo의 실행 환경을 제공했기 때문에 이를 활용해 보았다
설명 내용
  • Dokcer를 사용한 Planeemo Virtual Appliance 사용법
  • planemo tool_init를 이용하여 갤럭시 제작용 xml
  • planeemo lint의 문법 검사
  • planeemo test의 테스트
  • Planemo Virtual Appliance
    플랜에모의 이미지는요.
  • Docker Container
  • Open Virtual Format의 OVA 형식
  • 둘 다 제공하지만 Docker Contaainer
    확인 사항
  • docker
  • 설치
  • 인터넷 연결
  • planeemo의 실행
    터미널을 시작하고 도구를 만드는 디렉터리로 이동하여 다음 명령을 실행합니다
    (갤럭시 자체도 내부에 포함돼 있어 시동을 걸 때 시간이 좀 걸린다)
    $ docker run -p 8010:80 -p 9009:9009 -v `pwd`:/opt/galaxy/tools -i -t planemo/interactive /bin/bash
    
    다음은 모든 용기의 조작입니다
    # source ./planemo-virtualenv/bin/activate
    # cd /opt/galaxy/tools
    
    # planemo tool_init --force \
    --id 'line_count' \
    --name 'Count number of lines (wc -l)' \
    --example_command 'wc -l target.txt > result.txt' \
    --example_input target.txt \
    --example_output result.txt 
    
    Tool written to line_count.xml
    
    line_count.파일 이름은 xml이고 내용은 다음과 같습니다
    <tool id="line_count" name="Count number of lines (wc -l)" version="0.1.0">
        <requirements>
        </requirements>
        <command detect_errors="exit_code"><![CDATA[
            wc -l "$input1" > "$output1"
        ]]></command>
        <inputs>
            <param type="data" name="input1" format="txt" />
        </inputs>
        <outputs>
            <data name="output1" format="txt" />
        </outputs>
        <help><![CDATA[
            TODO: Fill in help.
        ]]></help>
    </tool>
    
    테스트 용례를 자동으로 생성할 때
    테스트용 데이터 사전 제작
    # seq 1 9 > target.txt
    # wc -l target.txt > result.txt
    
    # planemo tool_init --force \
    --id 'line_count' \
    --name 'Count number of lines (wc -l)' \
    --example_command 'wc -l target.txt > result.txt' \
    --example_input target.txt \
    --example_output result.txt \
    --test_case
    Tool written to line_count.xml
    Copying test-file target.txt
    cp 'target.txt' 'test-data'
    Copying test-file result.txt
    cp 'result.txt' 'test-data'
    
    테스트용 파일을 복사하기 위해test-data 디렉터리를 생성합니다
    # ls -aR
    .:
    .  ..  line_count.xml  result.txt  target.txt  test-data
    
    ./test-data:
    .  ..  result.txt  target.txt
    
    제작된 xml 파일은 다음과 같다
    <tool id="line_count" name="Count number of lines (wc -l)" version="0.1.0">
        <requirements>
        </requirements>
        <command detect_errors="exit_code"><![CDATA[
            wc -l "$input1" > "$output1"
        ]]></command>
        <inputs>
            <param type="data" name="input1" format="txt" />
        </inputs>
        <outputs>
            <data name="output1" format="txt" />
        </outputs>
        <tests>
            <test>
                <param name="input1" value="target.txt"/>
                <output name="output1" file="result.txt"/>
            </test>
        </tests>
        <help><![CDATA[
            TODO: Fill in help.
        ]]></help>
    </tool>
    
    문법 검사
    planeemo lint을 이용한 문법 검사
    # planemo lint line_count.xml 
    Linting tool /opt/galaxy/tools/planemo/line_count.xml
    Applying linter tests... CHECK
    .. CHECK: 1 test(s) found.
    Applying linter output... CHECK
    .. INFO: 1 outputs found.
    Applying linter inputs... CHECK
    .. INFO: Found 1 input parameters.
    Applying linter help... WARNING
    .. WARNING: Help contains TODO text.
    .. CHECK: Tool contains help section.
    .. CHECK: Help contains valid reStructuredText.
    Applying linter general... CHECK
    .. CHECK: Tool defines a version [0.1.0].
    .. CHECK: Tool defines a name [Count number of lines (wc -l)].
    .. CHECK: Tool defines an id [line_count].
    .. CHECK: Tool targets 16.01 Galaxy profile.
    Applying linter command... CHECK
    .. INFO: Tool contains a command.
    Applying linter citations... WARNING
    .. WARNING: No citations found, consider adding citations to your tool.
    Applying linter tool_xsd... CHECK
    .. INFO: File validates against XML schema.
    Failed linting
    
    경고 내용은 다음과 같습니다.
  • Help 섹션은 TODO
  • 유지
  • citations에 대한 설명이 없음
  • (Help의 내용을 적당히 기술한 다음에 뒤에 기입하면..."Failed"가 되지 않고 lint을 성공시킬 수 있다)
    실행 테스트
    이번에는 Warning이 테스트를 이렇게 하도록 하겠습니다.
    # planemo test line_count.xml
    git clone --bare  'https://github.com/galaxyproject/galaxy' '/root/.planemo/gx_repo'
    Cloning into bare repository '/root/.planemo/gx_repo'...
    remote: Counting objects: 344814, done.
    remote: Compressing objects: 100% (6/6), done.
    remote: Total 344814 (delta 2), reused 1 (delta 1), pack-reused 344807
    Receiving objects: 100% (344814/344814), 434.19 MiB | 3.79 MiB/s, done.
    Resolving deltas: 100% (274423/274423), done.
    Checking connectivity... done.
    cd /tmp/tmp76zZ8I; git clone  --branch 'master' '/root/.planemo/gx_repo' 'galaxy-dev'; cd galaxy-dev; if [ -d .venv ] || [ -f dist-eggs.ini ]; then GALAXY_VIRTUAL_ENV=.venv;  else GALAXY_VIRTUAL_ENV=/root/.planemo/gx_venv; fi; export GALAXY_VIRTUAL_ENV; if [ ! -e $GALAXY_VIRTUAL_ENV ]; then /home/ubuntu/planemo-virtualenv/bin/virtualenv -p /home/ubuntu/planemo-virtualenv/bin/python2.7 $GALAXY_VIRTUAL_ENV; fi; [ -e $GALAXY_VIRTUAL_ENV ] && . $GALAXY_VIRTUAL_ENV/bin/activate; COMMON_STARTUP_ARGS=; $(grep -q 'skip-venv' run_tests.sh) && COMMON_STARTUP_ARGS="--dev-wheels"; export COMMON_STARTUP_ARGS; echo "Set COMMON_STARTUP_ARGS to ${COMMON_STARTUP_ARGS}"; ./scripts/common_startup.sh ${COMMON_STARTUP_ARGS}
    Cloning into 'galaxy-dev'...
    ...
    
    처음 실행할 때는 갤럭시 다운로드 등 실행 환경을 준비해야 하기 때문에 상당한 시간이 걸린다
    커피타임
    그리고 결국 실패했어요.
    ======================================================================
    FAIL: Count number of lines (wc -l) ( line_count ) > Test-1
    ----------------------------------------------------------------------
    Traceback (most recent call last):
      File "/tmp/tmpbwFF2Q/galaxy-dev/test/functional/test_toolbox.py", line 316, in test_tool
        self.do_it(td)
      File "/tmp/tmpbwFF2Q/galaxy-dev/test/functional/test_toolbox.py", line 82, in do_it
        raise e
    JobOutputsError: History item  different than expected, difference (using diff):
    ( /opt/galaxy/tools/planemo/test-data/result.txt v. /tmp/tmpVsOQVBresult.txt )
    --- local_file
    +++ history_data
    @@ -1 +1 @@
    -9 target.txt
    +9 /tmp/tmpbwFF2Q/files/000/dataset_1.dat
    
    ----------------------------------------------------------------------
    XML: /tmp/tmpbwFF2Q/xunit.xml
    ----------------------------------------------------------------------
    Ran 1 test in 8.632s
    
    FAILED (failures=1)
    
    실행wc -l target.txt > result.txt하면 출력 결과에 파일 이름이 포함되지만 갤럭시 실행 환경에서는 출력 파일을 포함하는 경로의 파일 이름을 제공합니다
  • target.txt(테스트 데이터): "9target.txt"
  • result.txt(갤럭시 실행 결과): "9/tmp/tmpbwFF2Q/files/000/dataset 1.dat"
  • 테스트 실패, 원인 및
    테스트 데이터 및 명령 변경 및 재시도
    테스트용 데이터 다시 만들기
    (파일 이름을 출력하지 않기 위해 wc 명령에 데이터를 제공하는 방법이 변경되었습니다)
    # seq 1 9 > target.txt
    # wc -l < target.txt > result.txt
    # cat result.txt
    9
    
    planeemo를 이용하여 xml 다시 만들기
    # planemo tool_init --force \
    --id 'line_count' \
    --name 'Count number of lines (wc -l)' \
    --example_command 'wc -l < target.txt > result.txt' \
    --example_input target.txt \
    --example_output result.txt \
    --test_case
    
    테스트 수행
    (출력 결과가 길기 때문에 두 위치에서 생략...
    # planemo test
    git --git-dir /root/.planemo/gx_repo fetch >/dev/null 2>&1
    ...
    ----------------------------------------------------------------------
    XML: /tmp/tmpQiOVQK/xunit.xml
    ----------------------------------------------------------------------
    Ran 1 test in 8.370s
    
    OK
    ...
    Testing complete. HTML report is in "/opt/galaxy/tools/planemo/tool_test_output.html".
    All 1 test(s) executed passed.
    line_count[0]: passed
    
    시험에 붙다
    내부에서 갤럭시 실례를 실행한 후 테스트를 실행하기 때문에 테스트에 시간이 좀 걸린다
    실행 결과 tooltest_output.>로 출력된 것이기 때문에 브라우저로 열어 보십시오

    오늘 여기까지
    갤럭시 Docker contaainer 내부에서 Planema를 사용하는 방법에 대해서는 @youyuh48씨의 갤럭시용 도구 개발을 시도해 보다를 참조하는 것이 좋습니다.

    좋은 웹페이지 즐겨찾기