kuroの覚え書き

96の個人的覚え書き

Programing

大きいカラムを遅延ロードするとパフォーマンスが上がるかもしれない

http://nauthiz.hatenablog.com/entry/20101024/1287938261これは有用かもしれない。

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('===============')みたいな行を挟みまくって標準出力に表示させていたわけだが、 これだとプログラムを走らせているウインドウをずっと見ておかないとならないわけ…

sqlalchemy or sqlalchemy.sql or sqlalchemy.sql.expression

黙々とデバッグ&コードの整理を行っているわけだが・・・コードをツギハギで書いていると from sqlalchemy import func from sqlalchemy.sql import func from sqlalchemy.sql.expression import func と同じfuncを3箇所からimportしていたりする。これら…

JBrowse

JBrowseのインストールについてhttp://koke.asrc.kanazawa-u.ac.jp/HOWTO/JBrowse.htmlとりあえずダウンロードして展開までやった。setupしようとしたら please make sure that at least ExtUtils::MakeMaker is installed と怒られた。perlのモジュールをイ…

文字列内に変数を展開してコマンドを投げる。

Pythonからshellスクリプトを実行するとして、shellに変数を渡したいときはどうすればいいのか? cmd = "ls /data/file/folder/*/*.bam > list.txt" subprocess.call(cmd, shell=True)この/data/file/folder/*/*.bamをPythonから引数として渡したい。 そうい…

リンクファイルを自動で作成するスクリプト

まずリンク元のファイルをlsで列挙する ls /data/file/folder/*/*.bam > list.txtつぎにsedで行頭に'ln -s'をくっつける sed -e "s/^/ln -s /" list.txt >list_tmp.txtファイル名だけを取り出して列記する ls /data/file/folder/*/*.bam | xargs -i basename…

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…

todo

あと2週間でやっておくべきorやっておきたいことnginxとuwsgiの連携 Flaskページからshellを操作して、ファイルのリンクを自動生成する =>OK JBrowseの試験運転バグテストーフィックス UIの整理、改善など =>OK?

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はすでに入れたので飛ば…

MySQL版データベースアプリを実機サーバでテスト(するためのサーバ環境構築)

Python3が入ってないし。 https://weblabo.oscasierra.net/python3-centos7-yum-install/ を参考にPython3のインストールから。 # yum install -y https://centos7.iuscommunity.org/ius-release.rpm3.6系を入れることにする # yum install -y python36u pyt…

UPDATEの速度

SQLAlchemyでUPDATEを行うときの書式は for target in session.query(tableA).filter(tableA.gene.in_(session.query(tableB.gene))).all(): target.Gene_comments = target.Gene_comments + 'commentXXX' session.commit()まあこんな感じ。色々関係ない要素…

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のお陰で、ほとんど手を加えることなく移行ができた。しかし、データベース(テーブル)にデータを追加し、そこから情報を…

MySQLにTSVファイルをインポート

$ mysqlimport -u ユーザー名 --password=パスワード --local データベース名 テーブル名.txtであり、.my.cnfをホームディレクトリに [mysqlimport] user=ユーザー名 password=パスワード default-character-set=utf8 localこんな感じで作っておけば $ mysql…

リレーションでテーブル結合したときの検索

リレーションを張ってテーブルを結合したとき、普通にメインテーブルのカラムでfilterするときは特に変わりがないが、結合先のカラムでfilterするときはちょっと工夫がいる。 session = Session() q = session.query(Test) q = q.filter(Test.sample == "N00…

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

テーブル定義を 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…

Pythonのスクリプトをデスクトップアプリ化する

自分で作成したアプリを自分の環境において使う分にはコマンド操作で全然問題ないが、人にわたして使ってもらうとなると モジュール等揃えてインストールしてもらって・・・となかなかハードルが高くなる。 なので簡単にデスクトップアプリ化できるならそれ…

PythonでCSVのリストに従ってGoogleで検索し、結果をスクレイピングする

詳細検索画面の初期設定で検索キーワードを入れて検索をする動作を自動化する。 https://www.google.co.jp/advanced_search?q= たとえば上の検索は https://www.google.co.jp/search?as_q=Python+Flask+SQLAlchemy+k-kuro&as_epq=&as_oq=&as_eq=&as_nlo=&as_…

csvファイルを読み込んでgoogleに検索を投げてトップヒット10件を集めてくる

import requests r = requests.get('http://www.google.co.jp/search?as_q=キーワード1+キーワード2・・・・') r.textとりあえずこれだけで検索の結果のhtmlファイルが得られる。なので import csv with open('some.csv', 'r') as f: reader = csv.reader(…

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…