kuroの覚え書き

96の個人的覚え書き

Flask

速度アップにはマシンパワー増強とインメモリデータベースの利用で

現状フルサイズ350カラム、実際に運用時30カラム程度で、165万件くらいのデータベースなんだが、ほぼすべてのカラムがTextとして構築されているためにMySQLに乗り切らないことは前に書いた。で、どうしてTextなんだということだが、要するにデータ解析の過程…

SQLiteのINSERTをSQLAlchemyで書くと

#sql>INSERT INTO Exome_sub(SampleName_phenotype, avinput_ref, avinput_alt, variant_id) SELECT SampleName_phenotype, avinput_ref, avinput_alt,variant_id FROM exome;こんな感じにテーブルexomeからテーブルexome_subにSampleName_phenotype, ref, a…

Flaskアプリでデータベースのテーブルを消したり作ったり

テーブルのclassを設計して起動時にテーブルを作成する事はできていたが、内部で操作をしてすでにあるテーブルを消して作り直すと言うのはやってなかった。 https://stackoverflow.com/questions/35918605/how-to-delete-a-table-in-sqlalchemy 結論としては…

Flask-wtfとFlask-bootstrapの融合

http://freshlex.com/2017/03/13/pass-bootstrap-html-attributes-to-flask-wtforms/ややこしいことをしなければ、結構単純な書式で調整できそう。

wtfによるformの利用

SQLAlchemyのときもそうだったけどFlaskってなまじプラグインで機能を簡単に取り込めるようにされているおかげで、ちょっとややこしいことをしようとすると、かえってどうやっていいかわからなくなる。今回も検索をするためのフォームをカスタマイズしたいの…

複数ワードあったらor検索をかける

現在の検索式では exome = exome.filter(Exome.SampleName_phenotype.like(form.name.data))こういうふうに検索ワード1個の入力に対して処理をしているが、2個だったら exome = exome.filter(Exome.SampleName_phenotype.like(form.name1.data) and Exome.Sa…

group by でcountしてjoinしてselectしてupdate?

name test1 test2 id count ---------------------------------------- A001 x a 1 A001 x a 2 A001 x b 3 A001 x b 4 A001 x b 5 A001 y b 6 A001 y b 7 A001 y c 8 A001 y c 9 A001 y c 10 A002 x a 11 A002 y a 12 A002 x b 13 A002 y b 14 A002 x b 15 A…

SQLite3のtable作成覚書

FlaskでSQLAlchemyを使ってSQLiteのデータベースを運用している。 前提 model.pyでtableの定義をおこない、データベース上にテーブルが作成されるように設定しているが、データ自体はあとからtsvから読み込む。 primary keyとしてIDをふるが、それはデータベ…

wtfの検索値を記憶する

SelectFieldの設定値を記憶させて次のセッションでそれを入れさせようとあれこれ考えたが、なかなかうまくいかない。 そこで違ったアプローチでの実現を考える。 要するに前回の検索値のセットをまとめて記憶しておいて、画面上の検索入力をすっ飛ばして記憶…

複数の検索ワードを選択肢から選んでOR検索

まず選択肢の設置 from wtforms import SelectMultipleField ex_func = SelectMultipleField('Exome function',choices=[('stopgain', 'stopgain'), (..........という感じにSelectMultipleFieldを使う。検索式の方はor_でなんとかなるかと思ったが実際はど…

テーブルの処理(横幅、スクロールなど)

UIの注文がいろいろ出てきたのでそれに対応。とりあえず表示させるカラムを選択できるようになって横幅にゆとりは出たが、1カラムで横幅を取っているカラムを表示させると、やっぱり狭くてみにくい。行内でおりかえすかスクロールバーを付けるなりしたいと…

テーブルをカラムを選んでソート

http://tablesorter.com/docs/ これを使ってテーブルにソート機能を付ける。 おまけでcssによるテーブルの見た目もこざっぱりした。使い方もjsやcssなどを指定の通り設置し、対象のテーブルに適当なIDを付与して、 <script> $(function(){ $('#result').tablesorter(</script>…

wtf検索値の保存と呼び出し

http://aroundthedistance.hatenadiary.jp/entry/2015/03/17/114542 ココが参考になるだろうか。 http://d.hatena.ne.jp/heavenshell/20160111/1452513582 こことか http://blog.karky7.com/2013/07/wtforms.html これなんかも使えそうな https://stackoverf…

bootstrapの横幅

Flask-bootstrapでな〜にも考えずにページを作り始めると <div class="container"> <div class="row"> <div class="col-md-12">という感じでセッティングされる。 そもそもFlask-bootstrapはbootstrap.cssが見えるところになくてブラックボックスに近くて困るのだが .containerのデフォルトセティングがmediumになってるっぽ</div></div></div>…

flaskで作ったアプリをdaemon化してserviceとして起動する(導入編)

Flaskで作ったアプリをサーバに置いて本格的に運用するなら、いちいちコマンドラインから起動するのは面倒くさい。 サーバを再起動する度にvncでログインして起動して、ログインしたまんまにしておかないとならないというのではイマイチだ。最初apacheをwww…

一つ前の結果を残して比較

localStorageで文字列をブラウザに記憶させておけば、直前に行った解析の履歴をとっておくこともできそうなので、やり方を考える。 bamファイルを表示させるときに表示させたファイル名をlocalStorageで保存。 次のbamファイルを開くときに、前回保存したloc…

localStrageを使って設定値をブラウザに記憶

どんどんとプログラムはjavascriptの深みにハマっていっているが、現状、折角選んでロードしたtrackが検索をしなおすとすっかり消えて、また選び直さなければならないという若干面倒な仕様になっている。これをjavascriptのWEBストレージ機能でなんとかしよ…

SQL表現言語

結局ナマのSQL文に近いSQL表現言語を使わないと、ややこしい検索はできない気がしてきた。 from sqlalchemy import select ... conn = engine.connect() s = select([Test]) sample = conn.execute(s) これが sample = session.query(Test)と等価であること…

group_byでsumしてquery

やりたいこと テーブルTestで、カラムz_idの数値をカラムnameとgeneが同じサンプルで合計してtotal_pointsとして各サンプルに付与し、total_pointsが2以上になるサンプルをqueryしたい 作ったコード total_points = func.sum(Test.z_id).label('total_points…

検索式のコードを単純化

デフォルトにあいまい検索を取り入れることで複雑なif分岐をできるだけなくし、コードをすっきりさせる。コードの可読性は若干落ちるが、複雑な検索式の組み合わせをifを多用して作ると長大でredundantなコードになってしまい、混乱の元になる。 if form.nam…

SQLalchemyの検索についてテストする簡易なページを作成

detest.py from flask import Flask, render_template from sqlalchemy import create_engine, Column, Integer, String, func from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import sessionmaker from sqlalchemy.sql.expr…

SQLite3にcsvからデータを取り込む

$ sqlite3 test.db sqlite> .show echo: off eqp: off explain: off headers: off mode: list nullvalue: "" output: stdout colseparator: "|" rowseparator: "\n" stats: off width: sqlite> .separator , sqlite> .show echo: off eqp: off explain: off …

SQLAlchemyを組み込む step by step

やることは データベースへの接続 テーブルの定義 マッピング先のPythonクラスを定義する セッションの作成 という感じ。まずはどのサイトでも書かれているimport しかしサイトごとに書き方が色々で、最もざっくりしたものだと from sqlalchemy import * fro…

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…