kuroの覚え書き

96の個人的覚え書き

Flask

avconv (ffmpeg)でmp4ビデオを作成してwebに埋め込む

いやーはまったはまった。 ラズパイ3で作ったwebカメラアプリを3+に入れてやったところ、ほんの数ヶ月の間にソフトウェアの構成がかなり変わったらしく、いろいろ言うことを聞かない。 最後まで手こずったのはタイムラプスで撮った写真をパラパラ漫画的にビ…

flask runをデーモンサービスに

flaskで作ったwebアプリの起動を python3 manage.py runserver で行っていたが、このままではシステム立ち上げ時にそのまま起動できるようにならないので、uWSGIを介した起動をしないといけないのかなと思っていたが、flaskをpythonから読み込むのじゃなくて…

SQLからmatplotlibでグラフを作ってFlaskで表示

@app.route('/') def index(): import matplotlib.pyplot from matplotlib.backends.backend_agg import FigureCanvasAgg import io import random session = Session() q = session.query(Diff).filter(Diff.id <6).filter(Diff.id > 1).all() fig, ax = ma…

matplotlibでグラフをWeb上に表示

さて、Pythonでグラフをかけるようになったので、今度はそれをFlaskでweb上に表示させてみたい。 まえに参照したページはpython2系のコードだったようで、そのままではPython3ではエラーが出る。 なので、エラーを一つずつ潰していったところ @app.route('/'…

StringIO

matplotlibでグラフを描画するプログラムの中でcStringIOというモジュールが使われているのだけれど、Python3のモジュールには該当するものが見つからない。で、調べてみるとPython3では標準モジュールのioにStringIOが含まれているので from io import Stri…

sqlのDBからグラフを作って表示

集計してテーブルを作って、個々のデータから生データであるBAMを参照することはできるようになったが、テーブルを眺めていてもそれ以上進まないので、テーブルからグラフを描かせていきたい。https://qiita.com/5t111111/items/3d9efdbcc630daf0e48f この辺…

Bootstap的画面構成であちこち統一する

ファイルアップロードボタン周りの統一感がほしい。 https://qiita.com/nakapython/items/46d44793827920282f75 ここを参考に。 また、WTFーFlaskのhtmlの書き方は簡単に書くなら <h3>Edit</h3> <form class="form form-group form-group-sm" method="post" role="form"> {{ wtf.form_field(form.edit) }} {{ wtf.form_field(form.colum) }} {</form>…

tail -fのようにlogファイルをどんどん書き換えてwebに表示する。

https://stackoverflow.com/questions/35540885/display-the-contents-of-a-log-file-as-it-is-updated ここに出ているテクニックが使えそうなんだけど、肝心のFlaskの動作ログを開こうとすると固まってしまう。

改行を入れてコードを見やすく

あるテーブルから別のテーブルに内容をコピーしたいとき q = session.query(Test.id, Test.samp, Test.gene, Test.zygo, Test.count, Test.z_id) ins = insert(Test_temp).from_select( (Test_temp.id, Test_temp.samp, Test_temp.gene, Test_temp.zygo, Tes…

同じ動作にならないもの

q = select(["exome_temp.SampleName_phenotype, exome_temp.variant_id, exome_temp.variant_id, exome_temp.variant_id"], from_obj=['exome_temp']) ins = insert(Exome_sub2).from_select((Exome_sub2.SampleName_phenotype, Exome_sub2.variant_id, Exo…

ログ記録とflashでメッセージ

まず、お気楽にプログラム中に print('===============') print('process complete') print('===============')みたいな行を挟みまくって標準出力に表示させていたわけだが、 これだとプログラムを走らせているウインドウをずっと見ておかないとならないわけ…

Blueprintを使っているページでconfigを呼び出す

Flaskのお作法では config.pyで設定を定義しておいて UPLOAD_FOLDER = '/User/hogehoge/'__init__.pyで app = Flask(__name__) app.config.from_object('app.config')とやっておくと、メインなプログラム中で app.config['UPLOAD_FOLDER']という感じで使いま…

テーブルをexportして、ファイルとしてローカルにダウンロードなど

sample = session.query(Samples) if form.back_drop.data: outfile = open('samples.txt', 'w') outtsv = csv.writer(outfile, delimiter='\t') for record in sample.all(): outtsv.writerow([record.id, record.samplename, record.phenotype, record.alt…

csvをローカルからアップロードしてテーブルをアップデート

まずはcsvファイルをサーバにアップロードする手順から。 当初Flask-wtfからファイルをアップロードさせようと思っていたが、思いの外要領を得ないため、素のFlaskでまずは構築してみる。 http://flask.pocoo.org/docs/0.12/patterns/fileuploads/ ここを参…

nginx+uWSGIふたたび

https://qiita.com/ekzemplaro/items/a570f79de254428a151d こんどはこのページを参考に進める。まずはFlaskのアプリを適当に作成。 foovar.py from flask import Flask app = Flask(__name__) @app.route("/") def hello(): return "Hello World!" if __nam…

nginx+uWSGIでFlaskアプリをデプロイ

https://qiita.com/mykysyk@github/items/3ebbd5a787fdbefaf5e8 ここの情報に従ってまずは必要なものをインストールしていく。 ここまでのインストールでepelの部分は入っているようなので yum install nginx --enablerepo=epelflaskはすでに入れたので飛ば…

SQLite版とMySQL版の比較

Macローカルで初期画面をロードしてから、すぐにデータベースを開く操作をしてみるとSQLite版 127.0.0.1 - - [25/Dec/2017 19:24:29] "GET / HTTP/1.1" 200 - elapsed_time:0.0034799575805664062[sec] 127.0.0.1 - - [25/Dec/2017 19:24:36] "GET /exome/ H…

MySQLへの移植2

メインのデータベーステーブルexome_subが子テーブルになっていて、親テーブルexome_countからカラムを読み込んでいるときに、exome_countをDropしようとしたら Cannot delete or update a parent row: a foreign key constraint failsというエラーが出て消…

MySQLへの移植

データベースをSQLiteからMySQLに移植し始めた。出来上がったテーブルを検索したり、カラムにコメントを書き込むだけだと、SQLAlchemyのお陰で、ほとんど手を加えることなく移行ができた。しかし、データベース(テーブル)にデータを追加し、そこから情報を…

やっとリレーションの使い方がわかってきた

テーブル定義を class User_comments(Base): __tablename__ = 'user_comments' id = Column(Integer, primary_key=True, autoincrement=True) user1_comments = Column(String(255)) user2_comments = Column(String(255)) user3_comments = Column(String(2…

SelectMultipleFieldでなくBooleanFieldを使って複数選択

これまで、複数項目を選択してORで検索項目に使うとき func = SelectMultipleField('Function', choices=[('exonic', 'exonic'), ('splicing', 'splicing'),・・・・ if form.func.data: exome = exome.filter(Exome_sub.Func_wgEncodeGencodeCompV19.in_(fo…

検索条件等をアコーディオンで折りたたむ

http://kishiken.com/bootstrap/collapse.html インターフェイスをすっきりさせるべく、こちらの記事を参考に、項目の折りたたみを導入してみた。 1項目をボタンで開閉するパターンと複数項目を順に開閉するパターンを付けてみた。

実際一番時間がかかっているのは

elapsed_time:0.0021708011627197266[sec] elapsed_time:0.0022499561309814453[sec] elapsed_time:0.002342700958251953[sec] elapsed_time:0.0023527145385742188[sec] elapsed_time:0.002480745315551758[sec] elapsed_time:0.002567768096923828[sec] el…

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

データベースの検索速度がどうにも遅いわけだが、はたしてプログラムのどこで時間を食っているのか? 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"これでいい。 …