元バイオ系

元バイオウェット系がデータサイエンスやらを勉強していくブログ。 基本自分用のまとめ。

Google Driveで文献管理 Paperpileが凄い

研究者を悩ませる文献管理

研究者にとって、増え続ける論文は仕事の効率を悪くする。

  • ほしい文献がどこに行ったか覚えていない
  • supporting informationどこよ
  • ファイルがダブっている
  • てか読んだっけ?

なんてことは日常茶飯事で困っていた(情報整理とか豆なことは苦手)。

そこで文献管理ソフトを使うわけだが、日本では以下が有名どころのようだ。

文献管理ソフトの例

  • EndNote
  • ReadCube
  • Zotero
  • Mendeley
  • Papers (macのみ)

ただ、どれも容量に制限があったり、結構高いお金がかかったりとパッとしない。

求めることは

  • オンラインストレージに文献保存
  • クラウドでの文献管理環境
  • メモ的なものが書けて、かつ簡単に確認できる

こんなのないかなーとずっと思っていたら、あった。

Paperpile

Paperpileの特徴

  • 文献はGoogle Driveに保存
  • ブラウザからワンクリックでインポート&pdfダウンロード
  • メモが簡単&閲覧も簡単
  • Google Docsにcitationができる。
  • academic use(要学校のアドレス)なら家でも文献ダウンロードできる??(気がするだけ?)
  • ブラウザベースなので引用元を簡単に表示できる。

まぁとにかく凄い。

管理させるだけなら最強では?

残念な点

  • wordプラグインは開発中らしい(フォーラムによると優先度低め)
  • PCからでないと使えない。

タブレット版はベータテスト中らしいが、いつ正式版がでるのか不明。

ただ、Google DriveにあるpdfはGoogle Driveに追加できるMetaPDFでコメントをペタペタしながら読めたりするので別にいいかも。

日本語で紹介・解説している人を見たことがないので参考になれば。

os.walkでエラーが出た

pythonの話題。

なお環境はAnacondaで構築して、python3.5となっている。

普段使っていたスクリプトがファイル読み込みでエラーをはいたのでその原因を調べた。

pandasとかいう便利なやつ

データ分析する人なら御用達のpandas。

エクセルファイルを簡単に読み込める凄いやつ。

こいつで複数ファイルをループして読み込みまくろうとしたらことが起きた。

こいつのバージョンが問題なのではと色々調べたが、結局問題はもっと根本的なところにあった。

なんだかglobとかos.walkが怪しい…

細かい説明はすっ飛ばして結論を言うと、excelとかのofficeソフトって._XXXXXXって感じの隠しファイルを生成していて、Ubuntuはもれなく条件にヒットしたファイル名を拾ってしまう。

windowsではこれを自動で無視するらしくglobだろうがos.walkだろうが問題にならない。

この._XXXファイルが読めないよ!!ってエラーをはいていたのだった。

ありがた迷惑である。

.(ドット)で始まるファイルを除けばいい

ということで隠しファイルを除くサンプルスクリプトを書いた。

import os
parentPath = 探したいディレクトリのパス

for root, dirs, fnames in os.walk(parentPath):
    for fname in fnames:
        if not fname.startswith("."):
            print(fname)

わかってしまえば簡単だった。

Ubuntuをアップデートしたらネットに繋がらなくなった

いつもの調子でsudo update!!PC

すると突然、DNSエラーが出てネットに繋がらなくなった。

同じ症状で困っている人もいると思うので記録しておく(調べれば一瞬で解決だけど)。

DNSサーバーって?

雑な言い方をすると、google、yahooなどの名前からIPアドレスを教えてくれるサーバー。

PCはIPアドレスがわからないと、googleやyahooやその他のPCなどに接続できない。

でもIPアドレスを毎回打ち込むのも、覚えるのも大変。

ニックネームだけ覚えて、ユーザーとしては実際のIPアドレスは隠蔽したい。

そんな面倒くさい部分を管理してくれているのがDNSサーバー。

なんで突然繋がらなくなった?

細かいところはわからないが、DNSサーバーの指定だか何かが勝手に書き換わってしまうらしい。

なんだそれ。

書き換えられないようにハードコードして解決

/etc/resolvconf/resolv.conf.d/head

最終行に

nameserver 8.8.8.8

と追記。

再起動すればネット復活。

まとめ

勉強になりました。

UbuntuでOneDriveを使いたい

Ubuntuで直感的にOneDriveを使いたい。

rcloneとかいう便利なソフトがあるらしい。

GUIもあるから設定してみた。

そんなお話。

rcloneってなに

Linux使いならよーくご存じだと思われるrsyncクラウドバージョン。

それがrclone

色々なクラウドストレージに対応しているようだ。

インストール

まずはインストールする

snapとかいうパッケージ管理マネージャ的な何かをaptでインストールしておく

sudo apt install snapd

snapでインストール

sudo snap install rclone --classic

アップデートしたい時

sudo snap refresh rclone --classic

rcloneを設定する

rclone config

interactiveに設定できる。

一問一答形式なので困ることもない。

No remotes found - make a new one
n) New remote
s) Set configuration password
n/s> n
name> remote
Type of storage to configure.
Choose a number from below, or type in your own value
 1 / Amazon Drive
   \ "amazon cloud drive"
 2 / Amazon S3 (also Dreamhost, Ceph)
   \ "s3"
 3 / Backblaze B2
   \ "b2"
 4 / Dropbox
   \ "dropbox"
 5 / Google Cloud Storage (this is not Google Drive)
   \ "google cloud storage"
 6 / Google Drive
   \ "drive"
 7 / Hubic
   \ "hubic"
 8 / Local Disk
   \ "local"
 9 / Microsoft OneDrive
   \ "onedrive"
10 / Openstack Swift (Rackspace Cloud Files, Memset Memstore, OVH)
   \ "swift"
11 / Yandex Disk
   \ "yandex"
Storage> 9
Microsoft App Client Id - leave blank normally.
client_id> 
Microsoft App Client Secret - leave blank normally.
client_secret> 
Remote config
Use auto config?
 * Say Y if not sure
 * Say N if you are working on a remote or headless machine
y) Yes
n) No
y/n> y
If your browser doesn't open automatically go to the following link: http://XXXXXXXXXXX/auth
Log in and authorize rclone for access
Waiting for code...
Got code
--------------------
[remote]
client_id = 
client_secret = 
token = {"access_token":"XXXXXX"}
--------------------
y) Yes this is OK
e) Edit this remote
d) Delete this remote
y/e/d> y

上記のコマンドたちについて少し説明。

ここは空欄で良いです(この後自動設定で、OneDriveのページヘ行き認証を行うため)

Microsoft App Client Id - leave blank normally.
client_id> 
Microsoft App Client Secret - leave blank normally.
client_secret> 

もし、自動でブラウザが立ち上がらない場合、以下の部分に書かれているurlヘ飛ぶ。

If your browser doesn't open automatically go to the following link: http://XXXXXXXXXXX/auth

OneDriveの認証画面が現れるので、承認する。

最後に

e) Edit existing remote
n) New remote
d) Delete remote
r) Rename remote
c) Copy remote
s) Set configuration password
q) Quit config
e/n/d/r/c/s/q> 

と聞かれるので、qを入力して終了。

このままでもCUIでコマンドを叩けば使えるが、rsyncのdeleteオプションが付いている状態でファイルのやり取りがされるらしく…

クラウド上のファイル全削除なんて事故が頻繁に起こるらしい。

ましてやコマンドなんてしばらく使わなければ忘れるもの。

そこで、ファイル全削除なうえ復元不可…なんて惨劇を回避するためにGUIを導入します。

RcloneBrowserの導入

rcloneがインストールされて、設定が終わっていることが前提です。

インストールする

sudo add-apt-repository ppa:mmozeiko/rclone-browser
sudo apt-get update
sudo apt install rclone-browser

これだけでインストールができるらしい…が、私の環境ではなぜかパッケージのダウンロードの段階で404 not found。

メンテナンス中とかだったのだろうか…。

仕方ないのでRcloneBrowaer公式からdebをダウンロードして直接入れた。

ダウンロードしてきたフォルダに移動して以下のようにコマンドを入力。

sudo dpkg -i rclone-browser_1.2_amd64.deb 

準備は整った。

実行する。

rclone-browser

こんなwindowが立ち上がったら成功。

f:id:hotoke-X:20170903014007p:plain

rcloneの設定が終わっていないとポップアップがでてきて、rcloneの設定をさせられる。

出てきたウィンドウに、rclone locationと.rclone.confのpathを入力すれば導入完了。

rcloneの場所がわからなければ

which rclone

で調べられる。

.rclone.confの場所は人によって違うかもしれないが、

/home/yourname/.rclone.conf

あるいは、Ubuntuなら

/home/yourname/.config/rclone/rclone.conf

となっている…と思う。

まとめ

Ubuntuからwebブラウザを経由せずにOneDriveにアクセスできるようになった!

マウント機能もあるらしいがexperimentalなので触らないでおく。

ちゃんと使えるようになったらwindowsmacと遜色なくOneDriveが使えるようになるかも?

Ubuntuのアップグレード

アップグレードの前に設定を確認

英語版Ubuntu

    1. システム設定
  1. Software & Updates
  2. Updates のタブ を選択
  3. Notify me of a new Ubuntu version で「 For any new version 」を選択

日本語版Ubuntu

  1. システム設定
  2. ソフトウェアとアップグレード
  3. アップデート のタブを選択
  4. Ubuntuの新バージョンの通知 で「 すべての新バージョン 」(デフォルトは長期サポート(LTS)版)を選択

いよいよアップグレード

sudo apt update  
sudo do-release-upgrade

再起動

sudo reboot

development release versionを入れる場合、更に次のコマンドを実行して再起動。

sudo do-release-upgrade -d
sudo reboot

以上。

念の為バージョン確認

lsb_release -a

NeoVim + deinで快適なエディタ生活【Ubuntu 16.04 LTS】

Neovimの導入

neovimのよくあるインストール方法

sudo apt-get install software-properties-common
sudo add-apt-repository ppa:neovim-ppa/unstable
sudo apt-get update
sudo apt-get install neovim

これでとりあえずのインストールは完了。

deinのインストール

これまでのvimなら.vimrcファイルに設定をゴリゴリ書き込んだり、NeoBundleでパッケージしたりします。

なんだか最近はdeinというものでパッケージ管理するのが流行りらしい。

パッケージとneovimそのものの設定を分けて置けるので、パッケージ管理が格段に楽になる。

準備する設定ファイル

  • init.vim (vimでいう.vimrcに相当)
  • dein.toml (パッケージ設定を記述する)
  • dein_lazy.toml (とりあえずはなくても良い)

init.vimは今までの.vimrcと同じノリで書けば良い。

ただ、dein.tomlを読み込むために以下の内容を追記しておく必要がある。

let g:python_host_prog = 'python2のパス'   
let g:python3_host_prog = 'python3のパス'  

let s:dein_dir = expand('deinをインストールする場所のパス')
let s:dein_repo_dir = s:dein_dir . '/repos/github.com/Shougo/dein.vim'      
               
if &runtimepath !~# '/dein.vim'
    if !isdirectory(s:dein_repo_dir) 
        execute '!git clone https://github.com/Shougo/dein.vim' s:dein_repo_dir 
    endif
        execute 'set runtimepath^=' .
fnamemodify(s:dein_repo_dir, ':p')        
endif        

deinでプラグイン管理

deinは便利で良いが…一般人には書き方がわかりにくい。
F言語?というものらしいので、最低限必要なことをまとめておく。
Shogo氏のdenite.nvimを入れる場合、パッケージを入れたいだけならdein.vimにとりあえず以下のように記述する。

[[plugins]]
repo = 'Shougo/denite.nvim'   

同じようにして、どんどん追記していけばいい。
遅延読み込みがしたければdein_lazy.tomlに書き込んでおくらしいが、私は使っていないので紹介できない。

そのうち、プラグイン管理に必要なF言語について必要な部分だけまとめる。

markdownで論文・レポートを書く、実践編【Ubuntu 16.04 LTS】

markdownからwordへ変換する最も簡単な方法

test.mdの中に適当にマークダウン形式で何か書いておく。

<test.md>

# Heading1  
## Heading2  
hogeほげ  

- list
- list
- list

1. list1
1. list2
1. list3

で以下のコマンドを入力

pandoc test.md -o test.docx

test.docxという名前でワードファイルが生成されるはずだ。

もうちょっとステップアップ

ここからが本番。
細かいことは後述するが大まかに以下の3つがあればとりあえず論文が書ける。
図のreferenceは今回取り扱っていないが、(生物系の)投稿論文では図とメインテキストを分けることがほとんどなので問題にならないだろう。

おおまかな手順は以下の通り。 1. 予め、テンプレートとなる書式設定をしたtemplate.docxを準備しておく 1. bibtexやEndnote XMLで引用したいreferenceファイルを作っておく 1. citationスタイルを決めるcslファイルを準備しておく(後述) 引用はmarkdownファイル中の任意の場所で[@hogehoge]とでもすれば良い。

準備ができたら、以下のようにwordを生成すると投稿先スタイルになっている。
投稿先が変わったらテンプレートファイルやcslを差し替えれば良い。
めっちゃ楽!!

pandoc test.md -o test.docx --reference-doc template.docx --bibliography=references.bib --csl style.csl 

–reference-doc template.docx

で書式設定

–bibliography=references.bib

でリファレンス埋め込み

–csl style

でcitationスタイルを決定している。

さいごに

texを使いたいのに、texで論文書いてるとボスに殺される人もハッピー!!

markdownで論文・レポートを書く、環境準備編【Ubuntu 16.04 LTS】

論文やレポートの体裁を整えるのはひたすら苦痛だ。

  • ワードは書きやすいけど数式に弱いし面倒くさい。
  • Latexは数式や体裁を整えることが得意だが、可読性が低い。
  • markdownは数式にも強いし可読性も高いが、citationが苦手。

これらのいい所だけ集めたのがpandocだ。 markdown、word、texファイルを相互に変換できる。 (本当はもっと色々できる)

中途半端な感じかと思ったが、凄かったので備忘録を残しておく。 たくさん書くのは疲れるので環境準備編と実践編に分ける

Latex環境の構築

pandoc環境の前にLatexをインストールしておく。 細かい仕様は確認していないが、Latexを入れておかないとpdf化ができないらしい。

apt-get update

apt-get upgrade

sudo apt-add-repository ppa:texlive-backports/ppa

sudo apt-get install texlive-lang-cjk

test.texという名前で以下を保存

¥documentclass{jarticle}
¥begin{document}
hogeほげ
¥end{document}

正しくインストールされたことを確認

platex test.tex

dvipdfmx text.dvi

test.pdfが生成されたはず。

pandocのインストール

pandoc単独で入れてもいいが、anacondaを使ってpythonをインストールするとついてくる。

anacondaのubuntu版をダウンロード
https://www.continuum.io/downloads

ダウンロードしたディレクトリに移動して、以下のコマンドでインストール

bash ~/Downloads/Anaconda3-4.4.0-Linux-x86_64.sh
python –version

以下のようにpythonのバージョンが出力されればうまく行っている。
Python 3.6.1

pandocも確認しておく

which pandoc

pandocのpathが出力されれば成功している。

はじめました

ブログ作りなおすのももう何回目かわかりませんが、ユーザー登録しなおして個人が特定されない形にしました。

そのうちツイッターとの連携も取れたらいいと思っています。

このブログでは主にプログラミング(Python, Julia)だったり、統計だったりを書いていく予定です。

ときどきpythonで画像処理する方法とかについても書いていくかもしれません。

気が向いたら書いていきます。