kuroの覚え書き

96の個人的覚え書き

Flask

一体どこで時間がかかっているのか

データベースの検索速度がどうにも遅いわけだが、はたしてプログラムのどこで時間を食っているのか? import time .... @app.route('/exome_s/', methods=['GET', 'POST']) def exome_s_index(): start = time.time() .... .... elapsed_time = time.time() …

multiprocessor, multithread

https://qiita.com/petitviolet/items/64965e9ba236ebbdd37fhttps://qiita.com/yukiB/items/d6a70da802cb5731dc01

ユーザー個別データベースにもコメント欄を

やはりデータベース上に各自でコメントを入れておきたいという需要はあるだろうから、ユーザーテーブルにもコメント入力できるようにしよう。 データを書き換える可能性を考えて、書き換え時にユーザーごとのコメント保存テーブルにIDと紐付けて保存し、再構…

ユーザーページのデータベーステーブル

さて、ユーザーごとにカスタマイズしたページを作るならば、テーブルの構成も自由に設定できるようになるのでないかということでmodels.pyのテーブル設定を考えてみた。実際にコピーできるカラムは元のテーブルにすでに載っているカラムからだけなわけだが、…

Raspberry pi でexome database

試しにRaspberry piで動くかやってみた。結果、まあ動きます。 ただし、ものすごく遅い。やっぱりメモリが足らんのだろうか。 サーバ上でローカルにアクセスしてて、より遅いかもしれないな。 別PCからアクセスしたらどうだろうか。多分変わらんだろうな。名…

ディスク保存のデータベースからテーブルをメモリーデータベースに読み込んで利用するには

いろいろやってみているんだけど、なかなか成功しない。 https://stackoverflow.com/questions/4019081/how-to-copy-a-sqlite-table-from-a-disk-database-to-a-memory-database-in-python https://stackoverflow.com/questions/3850022/how-to-load-existin…

Pythonを使ってSQLiteにTSVファイルをimport

sqlite3からは > .separator "\t" > .import hoge.txt hogeとすればhoge.txtというTSVファイルからデータをhogeテーブルにインポートできる。 これをshell scriptからやるには $ sqlite3 -separator $'\t' ./data.db ".import ./hoge.txt hoge"これでいい。 …

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

現状フルサイズ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…