kuroの覚え書き

96の個人的覚え書き

Flask

SQLAlchemy関連参照リンク一覧

SQLAlchemy 0.6.5 ドキュメント (和訳) http://omake.accense.com/static/doc-ja/sqlalchemy/index.html Flask-SQLAlchemy is a SQLAlchemy extension for Flask. http://flask-sqlalchemy.pocoo.org/2.1/ SQLAlchemyについて http://study-flask.readthedoc…

Flask-SQLAlchemyと普通のSQLAlchemyはいろいろ違う

FlaskのextentionのFlask-SQLAlchemyと素のSQLAlchemyはどうやら色々と仕様が異なっている模様。 ネットの情報は素のSQLAlchemyの情報がほとんどなので、Flask-SQLAlchemyにこだわっていると、うまく動かない事が多い。 これはbootstrapのときもそうだった。…

phpのSQLクエリをSQLalchemyに移植

$query1 = "SELECT * FROM `$table_name1` left join ( select sum(case when `V_count` <= $value1 and `A`='x' then 1 when `V_count` <= $value1 and `A`='y' then 2 else 0 end) as count,`N`,`M` from `$table_name1` group by `N`, `M`) as tbls using…

IGV.jsのreferenceトラックにアミノ酸情報を表示できるか?

https://github.com/igvteam/igv.js/issues/182 結論だけ書くと、いまのところ対応できていないとのこと。(2017 3月現在)

apache + flask +wsgiで動かす

サーバに上げて運用できそうな感じになってきたのでwwwサーバをapacheに切り替えてみたい。まずはローカルでテストっと。 なになに最近のOSXはweb共有コントロールパネルがなくなっちゃったから sudo apachectl startで手動起動すると。 $ ps aux | grep htt…

IGV.jsのカスタマイズ

javascriptに関する知識が乏しいので、なかなか思うようにプログラムを作れないでいる。https://github.com/igvteam/igv.jsここにリポジトリは集約されているのだが、結構いっぱいの人がそれぞれにカスタマイズを加えながらプロジェクトが展開されており、追…

サーバで起動

とりあえずここまでlocalhostでのテストであったが、いよいよサーバに上げてネットワーク経由で動作させてみる。manage.pyの記述をちょっと変えるだけなんだけど。 from flask_script import Shell, Server from flask_migrate import Migrate, MigrateComma…

環境を移すと機能しない

MacBook Airで作成してきちんと動いたのに、iMacに持ってくるとエラーが出る。 USBメモリ上に作成してそれを直接起動しても同じ。 python3のバージョンもライブラリ環境もvirtualenvで同じにしているのにBAMファイルを読み込もうとするとエラーが出る。 これ…

IGV.jsの操作

https://github.com/igvteam/igv.js/wiki/API ココを参照する。Trackを読み込むには igv.browser.loadTrack({ url: 'http://data.broadinstitute.org/igvdata/1KG/b37/data/HG02450/alignment/HG02450.mapped.ILLUMINA.bwa.ACB.low_coverage.20120522.bam', …

bootstrap/base.htmlって

そういえばbootstrap/base.htmlの基本構造をきちんとみてなかったことに気がつく。 {% block doc -%} <html{% block html_attribs %}{% endblock html_attribs %}> {%- block html %} <head> {%- block head %} <title>{% block title %}{{title|default}}{% endblock title %}</title> {%- block metas %} </head></html{%>

IGV.jsのインテグレート

プロジェクトとしては停止したが、個人的スキルアップのために片手間でぼちぼち開発。 IGV.js-Flaskじゃなくて素のIGV.jsをアプリに組み込む方法はわかった。現状ではポジションを指定して開くまではできるが、そのときに該当するBAMやvcfを自動的に読み込む…

IGVjsにBAMファイルとゲノムpositionを読み込む

今のところIGVjsをインテグレートできていないが、単独のアプリとしては使い方がわかったのでメモ スナップショットの通りigv.htmlのtrackListの部分に表示させたいBAMファイルを書いておき、locus:というところに遺伝子名やポジションを12:100000000のよう…

MySQLからSQLiteへ移植してみる

これまでMySQLベースで開発を進めてきたが、そもそも開発が中断の決定と相成ったため、現在の成果物をもって公式にはアップデートしないことになる。(個人的には何らかの完成まで持っていっておきたいが)といって成果物をそのまま放置しておくのも何なので…

BAMファイルの閲覧

今更感はありありなのだけれど、実は参考にしようとしていたGA4GHのAPIはIGVのJavascript版IGV.JSを使っているのだね。 https://igv.org/doc/doc.html そうすると こんな感じにBAMだろうとなんだろうとIGV同様に読み込めるわけだ。ついでにいうとこのデモペ…

表示カラムの分割

ここに来てプロジェクトが打ち切られることになってしまった。なんか中途半端で不完全燃焼だがやむをえまい。 まだまだ完成するまでには実装すべき項目が残っているが、あとは出来る限りの取りまとめをしておくくらいしかない。ユーザー認証は安全な運用に欠…

パスワードの設定

パスワードはハッシュアルゴリズムによって暗号化してファイルに記載するのが重要なのだが、今時はハッシュ化をさらに何回も繰り返すことで攻撃者を撃退するらしい。そのためにBcryptを導入する。app/__init__.pyに以下を追加 from flask_bcrypt import Bcry…

相対インポート

ここまで、あえて避けてきたのだが、あちこちのサイトで紹介されているコードを組み合わせようとすると、人によってディレクトリの構成やネーミングにばらつきがあったりで、部分的にコピーしてもうまく動かないことが多い。なので、自分の構築している環境…

ディレクトリ階層の変更ほか

先に進む前にディレクトリ構成をちょっと変更しておく。 ここまででBlueprintを導入してview.pyからexone.pyやdemo.pyを分離してview.pyと同階層に格納していたが、view.pyをhome.pyと改名した上でviewsディレクトリを新たに設けて、views以下にhome.py、exo…

ユーザー認証 Flask-Login

昨日いちにち本と首っ引きで作業したがやはりどこかおかしく、うまく動作しない。 今日はちょっとアプローチを変えてやってみよう。あと、作業を逐一記録しないとホントわけがわからなくなる。Login-managerの登録をapp/__init__.pyに追記 login_manager = L…

ユーザー認証はややこしい

丸一日かかってもまだうまく動かない。こまったな。その過程でちょっと悩んでいたことが理解できたようなきがするので整理。 manage.py 起動に関わるスクリプト app/view.py アプリのコアとなるスクリプト app/__init__.py モジュールなど、アプリ全体で使う…

肥大化するアプリを分割管理 Blueprint

データベースをあれこれ詰め込んでいき始めると@app.route()が増えていってややこしくなってくる。 そこでBlueprintの機能を用いて分割して管理していくことになる。たとえばいまview.pyには @app.route('/') @app.route('/exome/', methods['GET', 'POST'])…

部分一致 AND, OR その他細々とした検索オプション

>>>SELECT * FROM User WHERE username Like %kiというふうな部分一致検索をするなら user = user.filter(User.username.like(form.name.data))このように.like()を使ってやって検索ワードに%kiを入力してやるといいようだ。部分一致は検索に時間がかかるか…

外部ページリンク

前回、データベースからAND検索で抽出したデータをリスト化して表示するところまでできていた。 次に、リストされたデータから外部のwwwページにリンクを張ってみる。遺伝子名から遺伝子データベースサイトにリンクを張るなどに利用する。これは実は簡単だっ…

複数のカラムから検索する

検索フォーム用クラスを一つ追加してみる class ExomeForm(FlaskForm): name = StringField('Search for Username') sex = StringField('male or female') submit = SubmitField('Search')いままで検索窓が一つあってボタンを押すとそれを検索ワードとしてMy…

複数のページを作る

これまで作ったページでは1ページしかできていなかった。今度はページ内のメニューから別のページにいけるようにする。 HomeでUser Listの全項目一覧表示(最初に試したリストのページ)が開き、Experiments→exomeとたどるとUser検索ページにいけるようにす…

データベースのリストを表示させてみよう。

アプリケーションの基本骨格の作り方はだいたいわかってきたので、ちょっとデータベース検索の方を進めてみよう。 まずは先だって作ったアプリのデータベース(ユーザー管理)を流用して、保存されているデータを一覧で表示することをやってみる。 models.py…

Blueprintってなんだ?

-+-manage.py | +-app-+-__init__.py | +-models.py | +-view.py | +-form.pyという構成だったとして app以下の各pythonスクリプトには「Blueprintでアプリケーションを定義」というのをする。 例えばmodels.pyに from flask import Blueprint apps = Bluepr…

__init__.pyってなんだ?

基本はpythonスクリプトがあるディレクトリを表すもので、中身は空でいいようだ。 つまり、メインのスクリプトがmanage.pyだとして -+-manage.py | +-app-+-__init__.py | +-models.pyというような構成になっているとappフォルダにはスクリプトが入っている…

データベースを検索 再び

あちこちのサイトを見て回りなんとなく感触がつかめてきたので、本格的に作り込んでいこう。 まず、現状コードを1枚のスクリプトに全部乗っけているが、今後データベースなど拡張していくといらんところを弄って混乱を招く可能性が増えるので、パートごとに…

flaskr 再び

MySQL移植が途中になっていたFlaskrの方もMySQLで動くようにしてみよう。まずはやはりデータベースをちゃんと作ってやらないとだめってこと。というかそれさえちゃんとやればほとんど問題なく動く。 mysql> USE flaskr mysql> show variables like 'char%'; …