python.webpy - k821209/pipelines GitHub Wiki

#!/usr/bin/python

import web  # ๊ธฐ๋ณธ์œผ๋กœ ๋ถˆ๋Ÿฌ์™€์ค˜์•ผํ•œ๋‹ค. 
import kang

file_fa = 'Creinhardtii_281_v5.0.fa'
dicHD2seq = kang.Fasta2dic(file_fa)

### ์›ํ•˜๋Š”๋Œ€๋กœ ๋ณ€์ˆ˜๋ฅผ ๋งŒ๋“ค๋˜ ๋ญ˜ ๋งŒ๋“ค๋˜ ์ •์˜ํ•ด๋†“์„ ์ˆ˜ ์žˆ๋‹ค. 

urls = ('/', 'index') # ์ด ์›น์•ฑ์— ๋ฃจํŠธ (/) ๋กœ ์ ‘์†ํ•˜๋ฉด index๋ผ๋Š” ํด๋ ˆ์Šค๋กœ ๊ฐ€๋ผ. ์•ˆ๋‚ด์ž.

render = web.template.render('templates/') # ํ…œํ”Œ๋ฆฟ์ด๋ผ๋Š” ํด๋”์—์„œ html์ฐพ์•„์„œ ์ฝ”๋”ฉ๋œ ๋‚ด์—ญ์„ ์ด์ค˜๋ผ. 

# ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ์–ด๋–ค ํ•จ์ˆ˜๋“  ๋‹ค ๋„ฃ์–ด๋‘˜ ์ˆ˜ ์žˆ๋‹ค. 
def get_chopped(strin):
    window = 50
    out_list = []
    for i in range(len(strin)/window+1):
        try:
            out_list.append(strin[(i)*50:(i+1)*50])
        except IndexError:
            out_list.append(strin[(i)*50:])
    return out_list


# ์•ˆ๋‚ด์ž๊ฐ€ ๋ฃจํŠธ๋กœ ๋“ค์–ด์˜ค๋ฉด ๋‹ค์Œ์˜ index๋กœ ์•ˆ๋‚ดํ•œ๋‹ค.
class index:
    # form api, ์ด ํผ์€ html์•ˆ์—์„œ renderํ•จ์ˆ˜์— ์˜ํ•ด์„œ html๋ชจ์–‘์œผ๋กœ ์•Œ์•„์„œ ์ธ์‹๋œ๋‹ค. 
    form = web.form.Form(
                 web.form.Textbox('chromosome',web.form.notnull, description="Chromosome number"),
                 web.form.Textbox('left',web.form.notnull, description="Left postion"),
                 web.form.Textbox('right',web.form.notnull, description="Right postion"),
                 web.form.Button('Submit'),
                )
    # GET์ด๋ผ๋Š”๊ฒƒ์€ ์›นํŽ˜์ด์ง€๊ฐ€ ์—ด๋ฆฌ๊ณ  ๋ฐ”๋กœ ๋ณด์ด๋Š” ๊ฒƒ, ์ฝ๊ธฐ์— ํ•ด๋‹นํ•œ๋‹ค. 
    def GET(self):
        chromosome_list = set(dicHD2seq.keys())
        # form์„ ๊ฐ€์ ธ์˜จ๋‹ค. 
        form = self.form()
        # render์— ์„ ์–ธ๋œ templates ํด๋”๋กœ ๊ฐ€์„œ index.html์„ ๋กœ๋”ฉ, ์ด๋•Œ chromosome_list, form ์ด๋ผ๋Š” ๋ณ€์ˆ˜๋“ค์„ ๋„˜๊ฒจ์ค€๋‹ค. 
        return render.index(chromosome_list,form)
    # POST๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์–ด๋–ค ๊ฐ’์„ ๋„ฃ์–ด์ฃผ๋ฉด ์›น์„œ๋ฒ„๊ฐ€ ์–ด๋–ป๊ฒŒ๋“  ๋ฐ˜์‘ํ•˜๋Š” ํ•จ์ˆ˜
    def POST(self):
        # ๊ฐ™์ด form์„ ๋ถˆ๋Ÿฌ์˜ด, ์•ž์—์„œ GET์—์„œ ๋ฐ€์–ด๋„ฃ์€ form์ •๋ณด๊ฐ€ ๊ทธ๋Œ€๋กœ ๋“ค์–ด๊ฐ€๋Š”๋“ฏ. 
        form = self.form()
        # ํผ์ด ๊ฑฐ์ง€๊ฐ™์œผ๋ฉด ๋‹ค์‹œ ๋ฐ›์œผ๋ผ. 
        if not form.validates():
            return render.index(form)
        # ํผ์—์„œ ๋ฐ›์€ ๊ฐ’๋“ค์„ ์‰ฌ์šด ๋ณ€์ˆ˜๋กœ ์ผ๋‹จ ๋‹ค ๋ฐ”๊พธ์ž
        chromosome = form.d.chromosome
        left = int(form.d.left)-1
        right = int(form.d.right)
        # ํผ์—์„œ ๋ฐ›์€ ๊ฐ’๋“ค์„ ์šฐ๋ฆฌ db์—์„œ ๋ถˆ๋Ÿฌ์˜ค์ž
        seq = dicHD2seq[chromosome][left:right]
        seqs = get_chopped(seq)
        # showseq.html์„ ๋กœ๋”ฉ, seqs, form ๋ณ€์ˆ˜๋ฅผ ๋ฐ€์–ด์ค€๋‹ค. 
        return render.showseq(seqs, form)
# ์•ฑ์ด ์‹คํ–‰๋˜๋ฉด ์„œ๋ฒ„์ƒ์ฃผ
if __name__ == "__main__":
    app = web.application(urls, globals())
    app.run()
#<!--index.html--> 
<!--์‹œ์ž‘์€ ํŒŒ์ด์„  ์ฝ”๋“œ์—์„œ index.html๋กœ ๋ฐ€์–ด์ฃผ๋Š” ๋ณ€์ˆ˜๋ฅผ ๋ฐ›๋Š” ๊ฒƒ์œผ๋กœ ์‹œ์ž‘-->  
$def with (chromosome_list,form)

<!--์•„๋ฌด๋ ‡๊ฒŒ ์ œ๋ชฉ์„ ์จ์ค€๋‹ค. ๋‹ค์Œ์€ ํฐ์ œ๋ชฉ์„ ๋ฐ•์•„์ฃผ๋Š” ํ…Œ๊ทธ-->  
<h1> Chlamydomonas reinhardtii sequence extractor </h1>

<!--post๋ฅผ ํ•ด์ค€๋‹ค.๋ฐ›์•„์˜จ form์— ๋ Œ๋” ํ•จ์ˆ˜๋ฅผ ์ ์šฉ์‹œ์ผœ์„œ ํ™”๋ฉด์— ํ…์ŠคํŠธ ๋ฐ•์Šค๋ฅผ ๋ฟŒ๋ ค์ค€๋‹ค.-->  
<form action="" method="post">
$:form.render()
</form>
<!--ํ…์ŠคํŠธ ๋ฐ•์Šค์— ๋ญ˜ ์จ๋„ฃ์„ ์ˆ˜ ์žˆ๋Š”์ง€์— ๋Œ€ํ•œ ์„ค๋ช…-->  
<h1>Use following chromosomes</h1>
<!--๋‹ค์Œ๊ณผ ๊ฐ™์ด html์•ˆ์—์„œ๋„ ํŒŒ์ด์„  ๋ช…๋ น์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค ํ…์œผ๋กœ indent์ค˜์•ผํ•จ-->  
<code>
$for chromosome in chromosome_list:
    $chromosome
</code>
<!--showseq.html-->
<!--ํŒŒ์ด์„  ์ฝ”๋“œ์—์„œ ๋ฐ€์–ด์ค€ seqs, form์„ ๋ฐ›๋Š”๋‹ค-->
$def with (seqs,form)

<FIELDSET stype="PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; MARGIN: 0px; LINE-HEIGHT: 20pt; WIDTH: 400px; PADDING TOP: 0px; TEXT-ALIGN: "left" border="0">
<LEGEND style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">
[requested sequence]
</LEGEND>
<!--๋ฐ›์•„์˜จ seqs๋ฆฌ์ŠคํŠธ๋ฅผ html์— ๋ฟŒ๋ฆฐ๋‹ค.-->
<pre>
$for seq in seqs:
        $seq
</pre>

</FIELDSET>



<form action="" method="post">
$:form.render()
</form>
โš ๏ธ **GitHub.com Fallback** โš ๏ธ