kuroの覚え書き

96の個人的覚え書き

Programing

2つのファイルを比較して、一方に含まれる文字列を他方から抽出

a.txt AT1G01000:10 AT1G01000:15 AT1G01000:20 AT1G01000:25 AT1G01001:10 AT1G01001:15 AT1G01001:20 AT1G01001:25 AT1G01002:10 AT1G01002:15 AT1G01002:20 AT1G01002:25 AT1G01003:10 AT1G01003:15 AT1G01003:20 AT1G01003:25 AT1G01004:10 AT1G01004:15…

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

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

SQLとBLASTの連携

まず、SQLで抽出された遺伝子のIDを元にtranscriptのFASTAファイルから配列を抽出。 抽出した配列をfasta形式で一時保存し、Arabidopsisの遺伝子データベースに対してtblastxでサーチ。 結果をwebに表示。こんな流れを構築した。 https://pypi.python.org/py…

BLASTとの連携

生物種間で発現を比較しようとすると、アノテーションデータベースで橋渡ししてデータを見るということになるわけだが、アノテーションにはどうしても限界がある。 例えば生物Aで発現変動が見られた遺伝子について、生物Bでの発現を見る分にはアノテーション…

python3を整備

python3をlinuxbrewでインストールしたが、どうもすっきりしないのでここは一旦brew uninstallして王道どおりyumでインストールし直してみる。https://weblabo.oscasierra.net/python3-centos7-yum-install/基本このページの指示通りにインストールするのだ…

google compute engineの環境構築

今時の環境構築というかMacと同じようにやりたいということでHomebrewのLinux forkであるLinuxbrewをインストールすることから始めよう。 http://linuxbrew.sh 基本はこのサイトに書かれたとおりで良いだろう。その上で何はともあれPython3をインストール。…

改行コードに要注意

uniqコマンドで抽出作業をしているときに、不用意にデータファイルをmacのエディタで触ってしまうと改行コードがCRに置き換わってしまうことがある。そうするとその後の操作でuniqなどがちゃんと働かなくなる。 かなり注意しないといけない。あとpythonのcsv…

in_()に入るlistのサイズは最大で999らしい

あるqueryを組み立てて、結果出てくるものからlistを作って、そのlistに含まれるものをin_()を使って別のqueryの中でfilterしたいと思った。 q = session.query(Rna_snp) snp = q.distinct(Rna_snp.snp_hash).group_by(Rna_snp.snp_hash)snp.all() snp_list …

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('/'…

matplotlib

とりあえずグラフの描写を試してみる。 >>> import matplotlib.pyplot as plt >>> import random >>> fig, ax = plt.subplots() >>> ax.set_title(u'Random') Text(0.5,1,'Random') >>> x_ax = range(1, 256) >>> y_ax = [random.randint(512,1024) for x in…

StringIO

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

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

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

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

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…