Amon2::Lite 안녕 3. bl2seq 하는 Web App
7329 단어 PerlMacbioinformatics
2.의 예는 너무 간단하고,
Kolon
의 활약이 거의 없다. 그럼 굉장히 안 되니까.할 일
blastn
html로,
두 가지가 필요합니다.
perl
의 경우 외부 명령을 실행하여 결과를 캡처해야 합니다.마지막으로 마지막 app.psgi를 편집하십시오.
blastn
가 들어 있지 않은 경우.여기 에서 최신 버전 다운로드
OSX의 경우 ncbi-blast-2.2.31+-universal-macosx.tar.gz 배포
$ wget -q ftp://ftp.ncbi.nlm.nih.gov/blast/executables/blast+/LATEST/ncbi-blast-2.2.31+-universal-macosx.tar.gz
$ tar zxf ncbi-blast-2.2.31+-universal-macosx.tar.gz
$ mv ncbi-blast-2.2.31+ ~/cmd/bin
bl2seq
라고 말하면서, legacy 쪽에는 링크조차 붙이지 않는다. perl 코드 부분
먼저 perl 코드 부분을.
get /
직전까지는 이전의 코드와 완전히 같다. 그래서 get /
는 index.tx 를 그릴 뿐입니다.get '/' => sub { return shift->render('index.tx'); };
그런 다음
index.tx
에서 게시된 내용을 받는 컨트롤러를 작성합니다. 우선 /bl2seq
로 한다.post '/bl2seq' => sub {
my $c = shift;
my ( $out_fh1, $seq1 ) = tempfile ;
my ( $out_fh2, $seq2 ) = tempfile ;
print { $out_fh1 } $c->req->param('seq1') ;
print { $out_fh2 } $c->req->param('seq2') ;
my $result = qx{/Users/bunzaemon/cmd/bin/ncbi-blast-2.2.31+/bin/blastn -query $seq1 -subject $seq2 } ;
return $c->render('result.tx', { result => $result });
};
$c->req->param('')
에서 던진 요청을 받을 수 있으므로 두 개의 시퀀스를 각각 seq1
seq2
use File::Temp qw( tempfile ) ;
의 실행은 각 사람의 환경에 맞춘다. blastn
를 사용하고 싶은 곳이지만, IPC::Open3
qx{}
에. 이것만으로 매우 간단한 것.
html 편집
sequence 던지는 페이지
@@ index.tx
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>BL2SEQ</title>
</head>
<body>
<h1>input</h1>
<form method="get" action="/">
<textarea name="seq1" rows="4">input sequence1</textarea><br>
<textarea name="seq2" rows="4">input sequence2'</textarea><br>
<input type="submit" value="submit" /></br>
<p>それぞれのテキストエリアにシーケンスを入力してください。</p>
</body>
</html>
result.tx
필요. 결과를 표시하는 페이지
@@ result.tx
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>BL2SEQ</title>
</head>
<body>
<h1>result</h1>
<pre><: $result :></pre>
<p>結果が出ました。</p>
<form method="get" action="/">
<input type="submit" value="了解" /></br>
</form>
</body>
</html>
use utf8;
로 곧바로 표시시키겠습니까? <pre>
로 돌아가는 것도 생각해 봅시다. app.psgi
이번 app.psgi의 모든 코드.
간단하지만 html 부분이 중복되는 느낌이 든다.
use strict;
use warnings;
use Amon2::Lite;
use utf8 ;
use File::Temp qw( tempfile ) ;
sub load_config {
+{
'Text::Xslate' => +{
syntax => 'Kolon',
suffix => '.tx',
module => undef,
cache => 0,
},
}
}
get '/' => sub { return shift->render('index.tx'); };
post '/bl2seq' => sub {
my $c = shift;
my ( $out_fh1, $seq1 ) = tempfile ;
my ( $out_fh2, $seq2 ) = tempfile ;
print { $out_fh1 } $c->req->param('seq1') ;
print { $out_fh2 } $c->req->param('seq2') ;
my $result = qx{${HOME}/cmd/bin/ncbi-blast-2.2.31+/bin/blastn -query $seq1 -subject $seq2 } ;
return $c->render('result.tx', { result => $result });
} ;
__PACKAGE__->to_app(handle_static => 1);
__DATA__
@@ index.tx
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>BL2SEQ</title>
</head>
<body>
<h1>input</h1>
<form method="post" action="/bl2seq">
<textarea name="seq1" rows="15">input sequence1</textarea><br>
<textarea name="seq2" rows="15">input sequence2</textarea><br>
<input type="submit" value="submit" /></br>
<p>それぞれのテキストエリアにシーケンスを入力してください。</p>
</body>
</html>
@@ result.tx
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>BL2SEQ</title>
</head>
<body>
<h1>result</h1>
<pre><: $result :></pre>
<p>結果が出ました。</p>
<form method="get" action="/">
<input type="submit" value="了解" /></br>
</form>
</body>
</html>
브라우저를 리로드 1 한다.
움직여 보자.
적절한 배열을 두 가지 가져와 양식에 세트.
예를 들어, 2 및 이 이 3
4
에서, submit 그리고.
글쎄, 가벼운 시퀀스의 비교라면, 이것으로 충분하다. 후는, 옵션류의 ON/OFF 를 제어하는 라디오 버튼당을 실장해,,,
틀림없기 때문에, 거기엔은, 언급하지 않고.
후에는
/
의 기능 메모와 Kolon
의 메모.launchctl
반환 값은 파일 핸들과 경로입니다. tmpfile
하고 있는 전제. ↩인간의 비만 유전자와 꿀벌의 상응하는 유전자 ↩
bio 이외의 사람으로, 여기까지 한 취미인 사람.
plackup -r
의 행에서 를 복사합니다. ↩Reference
이 문제에 관하여(Amon2::Lite 안녕 3. bl2seq 하는 Web App), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/bunzaemon/items/5b3c893bc0528dc6427e텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)