調査結果メモ:無料のメーラー“Thunderbird”

2018-02-23 :  PCクリニック
これまで使っていたメーラーには不満があった。

今回、
無料で使い勝手の良いメーラーを捜した。

やはり、「Thunderbird」でしょうか?

  Thunderbird 機能概要
  あなたにピッタリのメールソフトをお届けします。
  Thunderbird へのアップグレードがさらに簡単になりました。



  すぐに使える

  メールアカウント設定ウィザード
  これまで、メールアカウントを作成する際は、送受信サーバーの詳細な
  設定情報をすべて入力する必要がありました。新しい Thunderbird では、
  名前とメールアドレス、パスワードさえ入力すれば、Mozilla の
  プロバイダーデータベースから自動的にサーバー設定情報が取得されます。

  ワンクリックアドレス帳
  差出人のメールアドレスを、素早くしかも簡単にアドレス帳へ登録できる
  ようになりました。受信したメッセージ上の☆印のアイコンをクリックする
  だけで、新たな連絡先として追加できます。写真、誕生日、その他の連絡先
  情報を編集するには、このアイコンを再度クリックします。

  添付ファイルの付け忘れ防止
  メッセージの作成中、本文に「添付」などの単語が入力されたとき、
  情報バーを表示して、送信前に必要なファイルを添付するよう促します。

  ・・・・・
  ・・・・・


ウィキペディアでは、
Mozilla Thunderbird

  Mozilla Thunderbird(モジラ・サンダーバード)は Mozilla(モジラ)を起源
  とし、オープンソースで開発が行われている電子メールクライアントである。
  プロジェクト開始当初は Minotaur (ミノタウアー)と呼ばれていた。
  レンダリングエンジン Gecko(ゲッコー)を使用し、優れた描画性能、高速性、
  拡張機能、テーマ機能など拡張性に富む。Mozilla Suite(モジラ・スイート)
  あるいは Netscape Mail/News(ネットスケープ・メール/ニューズ)と
  同様の機能を持つ。

  RSS を取得・購読するためのRSSリーダーや、ベイズ理論による学習型迷惑
  メールフィルタ機能(受信時に迷惑メールと判断されたメールに迷惑メールの
  印を付け、設定によってはさらに「迷惑メールフォルダ」へ振り分けることも
  可能)、タブ表示インターフェイスを標準で備えるなど、他の電子メール
  クライアントに見られない独自の利便性を打ち出している。
  Outlook Express(アウトルック・エクスプレス)などの他の電子メール
  クライアントからの容易な移行機構も備える。

  ・・・・・
  ・・・・・


本日はここまで。


各種ツールの代替品調査は続く。


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


171206
スポンサーサイト

調査結果メモ:“波乗野郎”代替“CompleteGetter”

2018-02-21 :  PCクリニック
その昔、「波乗野郎」を使っていた。

“ウィキペディア”での解説は、

  PerMan Surfer 波乗野郎(パーマン・サーファー なみのりやろう)は、
  株式会社ビー・ユー・ジー(現・ビー・ユー・ジーDMG森精機)が開発した
  MacintoshおよびMicrosoft Windows用のWWWオートパイロットソフトウェア。
  略称は波乗野郎。

  1996年3月にプレビュー版のリリースを経て、1996年7月に販売が開始された。

  概要
  波乗野郎は予め収集を行いたいウェブサイトやそれを収集する時間帯を設定する
  必要がある。指定した時間になると自動的にインターネットに接続され、
  指定されたサイトを条件に従ってローカルに複製し、指定したウェブサイトの
  収集が完了すると自動的に回線を切断する機能を持っている。
  そのため、電話代を気にしないで後からゆっくりとウェブサイトを
  閲覧することができるという特徴があった。
  ・・・・・
  ・・・・・


今回、
この“波乗野郎”の代替ツールを捜してみた。


CompleteGetter」が良さそうダ。

  指定したページ以下の階層のリンク先ページを丸ごと保存し、
  バナー広告も一括削除できる


 ソフト詳細説明
 指定したページ以下の階層にある全てのリンク先のページを、
 画像なども含めて丸ごと保存します。

 ・操作が極めてシンプル。基本的にクリック一発で保存。
 ・保存後に、バナー広告等を一括削除。
 ・アンカー記述のみならず、Javascriptによるリンク記述や、
   埋め込みフラッシュにも対応。(一部未対応)

 ・CPU占有率を指定できるので、裏で走らせながら
   表で別の動作を軽快に実行可能。
 ・基本操作ではレジストリを汚さず。
 ・追跡するリンク先ページを選べる(ブログのカテゴリー単位での保存も可能)。
 ・上位階層へ遡っての保存。
 ・このソフトで保存されたファイル群以外のHtmlファイルからも、広告を削除。
 ・IEから右クリックで実行することも可能。

 ・保存したファイル群に対して、「それがどんな内容のものなのか」や
   関連するリンクなどをメモ出来る。
 ・保存後に、サイトの更新部分のみを追加保存。
 ・GUIでの入力のみならず、コマンドラインからパラメータを与えての実行に対応。

 ・簡易ダウンローダーとしても利用でき、連番ファイルも自動で検索し保存。
 ・リジューム機能付きなので、大きいファイルサイズの保存でも安心。
 ・埋め込みフラッシュや動画、BGM等を、ページから本体のみを保存。
 ・Yahoo!フォト から画像の一括保存。

 ・Cpgファイル内コメントの横断検索や、最近開いたCpgファイルや
   DLしたファイルへのアクセス支援ツール付き。


本日はここまで。


各種ツールの代替品調査は続く。


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


171126

Go 言語ってどうかナ?

2018-02-19 :  PCクリニック
ふと「Python wget Windows」と検索していたら、・・・・・

Windowsでwgetする色々な方法 - Qiita」が見つかり、

この中に、
  ・・・・・
  ・・・・・
  Go
  Goでなんか用意されているんじゃないかと思って調べてみた。
  goはインストール不要で使えて、exeが作れるので自作の場合はこれが良さげ。

  wget-go
  v0.5で完全版じゃないみたい。動くかどうか試してないです。
  https://github.com/laher/wget-go
  ・・・・・
  ・・・・・

との情報が載っていた。


そこで、
「GoLang」と検索したら、
ドキュメント - The Go Programming Language」が見つかった。

ここから

  Goのインストール
  インストール

  Goディストリビューションのダウンロード
  Download Go クリックして…

と辿って
Downloads - The Go Programming Language
に行き、
 Stable versions (2017-12-21時点)
   go1.9.2
 go1.9.2.windows-amd64.zip」 Archive Windows x86-64 104MB
   2017-10-25 付
をダウンロードした。

これを、
  D:/TOOL/Go/ に展開し、
Path には、
  D:\TOOL\Go\bin を登録した。

そして、上記ドキュメントに従い。
環境変数を追加した:
  GOROOT=D:\TOOL\Go


それから、
プログラミング用に、
  E:/_PD/_Go/ を確保し、

そして、上記ドキュメントに従い。
環境変数を追加した:
  GOPATH=E:\_PD\_Go


さて、試し。

(1) 実際にコーディングして、実行するには、

[E:\_PD\_Go\]  に、/src/hello/ を作り、
そこで、“hello.go”をコーディング:
package main
import( "fmt" )
func main(){ fmt.Printf( "hello, world.\n" ) }
の様なもの。

そして、
  コマンド:go build
でコンパイル(&リンク)
  hello.exe
ができる。
( この名前'hello'は、“hello.go”の方じゃなくて、フォルダ名の方 )


(2) パッケージ( 例: newmath の、Sqrt 関数 )を使う場合、

[E:\_PD\_Go\]  に、/src/newmath/ を作り、・・・ /hello と同列
そこで、“sqrt.go”をコーディング: ( 大文字小文字に注意! )
package newmath
func Sqrt( x float64 ) float64{
z := 1.0
for i := 0; i < 1000; i++{
z -= ( z*z - x ) / ( 2 * z )
}
return z
}
の様なもの。

そして、これを使う hello.go は、
package main
import( "fmt"; "newmath" )
func main(){ fmt.Printf( "hello, world. Sqrt(2)=%v\n", newmath.Sqrt(2) ) }
の様なもの。

(1)同様に、( /hello/ フォルダで )
  コマンド:go build
でコンパイル(&リンク)
  hello.exe
ができる。


なお、出来た“hello.exe”は
他に何も無くても、単独で実行出来る。

但し、<紙>の環境では、AVG でウイルスチェックが走る?!?!?!



本日はここまで。


Go 学習は続く?


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


171220-22

Anaconda 学習:Plotly

2018-02-16 :  PCクリニック
先週(2018-02-05)の記事「Anaconda 学習:pandas と matplotlib」では、

  前(2018-02-02)の記事「Anaconda 学習:cufflinks って何?」では、
  pandasplotlyとを結びつけるcufflinksでした。

  ここで、
  cufflinkscondaじゃなくてpipで導入すべき。
  さらに、plotlyは別途導入が必要(?)
  ・・・・・
  ・・・・・

と書いていたが、


“Anaconda”に含まれるパッケージ:
Packages for 64-bit Windows with Python 2.7
を見てみると、
“plotly”については、2.1.0 が入っているとある。
だが、インストール時点では入っていない。


そこで、
Anaconda Cloud」を調べたら、

conda-forge / packages / plotly 2.2.3
  An interactive, browser-based graphing library for Python

  Documentation: https://plot.ly/python/

  To install this package with conda run:
   conda install -c conda-forge plotly

があった。

  Description
  Plotly's Python graphing library makes interactive,
  publication-quality graphs online.
  Examples of how to make line plots, scatter plots, area charts,
  bar charts, error bars, box plots, histograms, heatmaps,
  subplots, multiple-axes, polar charts and bubble charts.


なので、早速インストール:

  2つダウンロード:conda-4.3.32 ・・・ 4.4.7 からダウングレード
           plotly-2.2.3 ・・・ 追加インストール。

“conda”がダウングレードする。
と云うので、ヤメた。


1つバージョンが古い(?)が、
anaconda / packages / plotly 2.2.2
はどうか?

バージョンと、インストールコマンド以外は同じ記述?

  To install this package with conda run:
   conda install -c anaconda plotly


こっちで、インストール:

5つダウンロード:
   conda-4.4.7 ・・・・・・ 同Ver.   anaconda へ
   ca-certificates-2017.08.26 ・・・ 2017.11.5-0 から downgrade
   openssl-1.0.2n・・・・・ 同Ver. conda-forge から anaconda へ
   certifi-2017.11.5 ・・・ 同Ver. conda-forge から amaconda へ
   plotly-2.2.2・・・・・・ 追加インストール。

結果は1つ追加。


それで、
Documentation サイト: https://plot.ly/python/

「Basic Charts」の「Line Charts

Simple Line Plot
のコードをコピー&ペースト:
# -*- coding: utf-8 -*-
import plotly.plotly as py
import plotly.graph_objs as go

# Create random data with numpy
import numpy as np

N = 500
random_x = np.linspace(0, 1, N)
random_y = np.random.randn(N)

# Create a trace
trace = go.Scatter(
x = random_x,
y = random_y
)

data = [trace]

py.iplot(data, filename='basic-line')
だが、エラー!?!?!?


日本語の解説記事は?

[Python] Plotlyでぐりぐり動かせるグラフを作る

この記事のコードをコピー&ペースト:
# -*- coding: utf-8 -*-
# データの取り込みや操作には、Pandasを用いる
import pandas as pd
raw = pd.read_csv("birth.csv")

# グラフの作成
# 初期化
import plotly
plotly.offline.init_notebook_mode(connected=False)
# connectedをTrueにすると、PlotlyのJavascriptをインターネットから取得する

# プロットするデータの指定
data = [
plotly.graph_objs.Bar(x=raw["year"], y=raw["births"], name="Births"),
plotly.graph_objs.Scatter(x=raw["year"], y=raw["birth rate"], name="Birth Rate", yaxis="y2")
]

# グラフレイアウトの指定
layout = plotly.graph_objs.Layout(
title="Births and Birth Rate in Japan",
legend={"x":0.8, "y":0.1},
xaxis={"title":"Year"},
yaxis={"title":"Births"},
yaxis2={"title":"Birth Rate", "overlaying":"y", "side":"right"},
)

# プロット
fig = plotly.graph_objs.Figure(data=data, layout=layout)
# plotly.offline.iplot(fig) ##### Jupyter内で表示:グラフ作成はiplot
plotly.offline.plot(fig) ##### Jupyter外で表示や、HTMLを作成:plotを呼ぶ
# ファイル名を指定しない場合は、同一フォルダにtemp-plot.htmlが作成される
これで動作した。


本家ドキュメントの例は何故ダメ?

もっと学習ダ。


本日はここまで。


Anaconda ( Python ) 学習は続く。


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


180121

Anaconda 学習:“null オブジェクトの比較”、“整数か否か”

2018-02-14 :  PCクリニック
この1~2ヶ月ほどの期間で発見(?)した、
注意すべき事項を纏めた。


今年初め(2018-01-03)の記事「GSL Shell から、Python に
では、
  ・・・・・
  ・・・・・
  既存の、WinPython 32bit Ver.2.7.6.3 で作ったプログラムを実行。

  NumPy、SciPy、Pillow、matplotlib そして、OpenCV3 も行けそう?

  1点エラーとなったのは:
    “if hoge == None:”
  これは、
    “if hoge is None:”
  で無いとダメでした。
  ・・・・・
  ・・・・・



GSL Shell 言語との違いとして、
先月下旬(2018-01-26)の記事「Anaconda 学習:整数の除算には要注意」では、
  ・・・・・
  ・・・・・
  整数除算の結果は整数と云うこと!!!

  つまり、for の変数 n は整数なので、

  ÷2 じゃなくて、÷2.とすべし!
  ・・・・・
  ・・・・・



また、リスト/アレイ/配列 の添字は、

整数型データで無いとダメ。

 A = [ 1, 2, 3 ]

に対して、

 n = 1
 m = 1.0

の時、

 A[n] はOK
 A[m] はエラー

これ、n、m が計算した結果だった場合は、要注意ダ。



本日はここまで。


Anaconda ( Python ) 学習は続く。


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


171215,180109F,0114

Anaconda 学習:py2exe はどうか?

2018-02-12 :  PCクリニック
前(2018-02-09)の記事「Anaconda 学習:スクリプトを exe ファイル化」では、
“cx_Freeze”は、Python 2.7 では使えず、
“PyInstaller”は、時間が掛かる上に、生成物のサイズが巨大すぎ。


そこで、古株(?) py2exe に挑戦。

導入は「kieranharding / packages / py2exe 0.9.2.0
から。

  conda install -c kieranharding py2exe

これではダメ、Python 3.4* と出た。


それでは「SasView / packages / py2exe 0.6.9
からは?

  conda install -c sasview py2exe

これで、1つ追加された。


そして、参考サイト:Python-izm
exe変換 (py2exe)
  Pythonのスクリプト(.py)をWindowsの実行形式であるexeファイルへ
  変換することができます。py2exeを使用し、exe化を行ってみましょう。

  ・・・・・
  ・・・・・
  exe変換例
  pyからexeへの変換にあたり、必要なものは下記4つとなります。
  1.Python (Python実行環境)
  2.py2exe (変換ライブラリ)
  3.main.py(変換元ソースファイル、ファイル名は任意)
  4.setup.py(セットアップスクリプト、ファイル名は任意)

  1つ目と2つ目はすでにあるはずなので、3つ目と4つ目を用意しましょう。
  まずはソースファイルです。

  --- “main.py”

  上記ソースコードは、実行するとnowtime.txtというファイルに
  現在時刻を出力するプログラムです。
  次はセットアップスクリプトです。

  --- “setup.py”

これは、上手く行かなかった???
なので、
本家サイト(?)「py2exe

Tutorialの添付ファイル:setup.py
を真似て:
from distutils.core import setup
import py2exe
setup( console = [ 'main.py' ] )
とした。

そして、

  python setup.py py2exe

で、

  /dist/ に、main.exe 23.5KB

その他多数。 で合計 7MB ほど。


動作結果は、OK
(やはり、AVG のウイルスチェックが動き出したが)


これ“main.py”に、

  import matplotlib.pyplot as plt

1行追加してみたが、

  /lib/site-packages/jinja2/asyncsupport.py failed
  SyntaxError: invalid syntax (asyncsupport.py, line 22)

と出て、生成されなかった。

“matplotlib”は使えない???


本日はここまで。


Anaconda ( Python ) 学習は続く。


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


180113

Anaconda 学習:スクリプトを exe ファイル化

2018-02-09 :  PCクリニック
“Python”スクリプトをコンパイルして、exeファイルを作る。
と云うことでは無いですが、・・・・・


「Python windows exe」で検索した。


Pythonのexe化、Pyinstaller使用メモ - Qiita
  PyinstallerはPythonの実行環境を固めてexe化してくれるツールです。
  使い方は簡単ですが、自分が使う上で注意点があったのでメモしておきます。
--- これ“Pyinstaller”は良さそう


Python スクリプトを exe ファイル化したい
  Python の良いところにはマルチプラットフォームで動くというのがありますが、
  ・・・仕方ないところは、そのための実行環境を入れないといけません。
  自分で使う分には良いですが、・・・、そこがハードルになります。
  そのハードルを取り除くため、
  Windows 環境で動く exe ファイルにする方法を調べました。
--- これは、3方法 ( py2exe、PyInstaller、cx_Freeze ) の比較


Python §78:これは画期的!python3のコードをEXE化するツール登場
  ●1.Python3用のEXE化ツールの登場
  ●2.そのツール「HCpy-Standalone-B」とは
  ●3.EXEファイルへ変換する方法
  ● ・・・・・
--- これは、将来用のメモ


cx_FreezeでPythonをexeにしてみた - lisz-works
  cx_Freezeというもので、Pythonのコードをexeファイルに変換してみました。
  今回はその手順などをご紹介します。
--- これ“cx_Freeze”はどうか?


以上4つのサイト URL をメモした。



そこで、手始めに“Pyinstaller”を試してみた。

導入は「conda-forge / packages / pyinstaller 3.3.1
から。

  conda install -c conda-forge pyinstaller

これで、6つ追加された。

  pyinstaller --version

では、3.3.1 と出た。



上記2番目のサイトの記事:
  ・・・・・
  ・・・・・
  補足:過剰にパッケージを取り込んでしまう場合がある

  Pyinstaller で Python スクリプトを Windows で実行可能な .exe にする
  ・・・・・
  ・・・・・
この記事に飛び、
“hello.py”を作った:
# -*- coding: utf-8 -*-
print "hello world"
この実質1行のもの。
そして、

  pyinstaller hello.py

これだけで、(面倒な setup.py の記述も何もなし)

/dist/hello/ 以下に hello.exe と必要なライブラリ群が出来上がる。

この、hello.exe ( 850KB ) で動作した。
(AVG のウイルスチェックが動き出したが)


それから、件の記事の如く、

  import matplotlib.pyplot as plt

1行を追加してみた。

それなりの(じゃなくて相当な)時間が掛かって、
やっとのことで、hello.exe が出来た。
<紙>にとってはとても耐えられない位に長い時間ダ。

また、コンパイル中(?)に
  Microsoft.VC90.CRT version ・・・
とかかんとかとも出ていた。

しかも、hello.exe のサイズは、なんと10.0MB


これは駄目ダ。


そこで、“cx_freeze”はどうかと考えた。

導入は「pyzo / packages / cx_freeze 4.3.3
から。

  conda install -c pyzo cx_freeze

これは、ダメ

Python 3.4* と出て進まない。


そうすると、py2exe と云うこと???


本日はここまで。


Anaconda ( Python ) 学習は続く。


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


180113

Anaconda 学習:matplotlib の quiver

2018-02-07 :  PCクリニック
「Python magnetic」と検索していたら、

Stack Overflow の、
magnetic field visualization with quiver-function
が見つかった。

 I want to visualize the magnetic field of a wire with the quiver function.
===
 私は、震え機能を備えた電線の磁場を視覚化したい。???
じゃなくて、
 磁場(ベクトル場)を quiver 関数を使って表示したい。

で、
これの回答[1]は:

 it looks like quiver only supports 2d plots right now,
 but you could make it 3d by plotting multiple 2d layers into a 3d plot.
 You can follow my example to see how to do these layers.
===
 それは、今のところ2dプロットしかサポートしていないようですが、
 複数の2Dレイヤを3次元プロットにプロットすることで3dを作ることができます。
 私の例に従えば、これらのレイヤーをどのように行うかを知ることができます。


それで、回答者の“example”を見ると:
 「Plotting implicit equations in 3d
の回答[36]ですね。

 You can trick matplotlib into plotting implicit equations in 3D.
 Just make a one-level contour plot of the equation for each z value
  within the desired limits.
 You can repeat the process along the y and z axes as well for
  a more solid-looking shape.
===
 matplotlibをトリックして暗黙の方程式を3Dでプロットすることができます。
 それぞれのz値の方程式の1レベル等高線プロットを目的の範囲内で
  作成してください。
 より強固な形状のために、y軸とz軸に沿ってプロセスを繰り返す
  ことができます。


“quiver”についてイマイチなので、日本語の説明を探した:
矢印(ベクトル)の描画方法①:quiver(x,y,u,v)

  x-y平面に座標(x,y)を基点として,成分(u,v)のベクトル(矢印)を描きます。

  matplotlibモジュールでは、quiverメソッドを利用することで
  ベクトルの描画ができます。


と云うことですか。


つまり、
matplotlibquiver関数を使うと、ベクトルを表示できる。

でも、
これは2次元(平面)図のみ。

だが、
3次元の陰関数(implicit equations in 3d)を
表示する方法がある。[上記参照記事]
  from mpl_toolkits.mplot3d import axes3d
  import matplotlib.pyplot as plt
  import numpy as np
として、
関数 plot_implicit( fn, bbox=(-2.5,2.5) ) の定義を行う。
すると、

以下のコードで、Goursat Tangle をプロットできる。
def goursat_tangle(x,y,z):
a,b,c = 0.0,-5.0,11.8
return x**4+y**4+z**4+a*(x**2+y**2+z**2)**2+b*(x**2+y**2+z**2)+c

plot_implicit(goursat_tangle)


本日はここまで。


Anaconda ( Python ) 学習は続く。


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


180112

Anaconda 学習:pandas と matplotlib

2018-02-05 :  PCクリニック
前(2018-02-02)の記事「Anaconda 学習:cufflinks って何?」では、
pandasplotlyとを結びつけるcufflinksでした。

ここで、
cufflinkscondaじゃなくてpipで導入すべき。
さらに、plotlyは別途導入が必要(?)

なので、
Anacondaだけ(?)で行ける、
pandasmatplotlibとの組み合わせはどうか?
と調べてみた。


「Python pandas matplotlib」検索
で、
pandas + matplotlib による多彩なデータプロッティング - Qiita
が見つかった。

この記事中の、
  pandas + matplotlib によるプロッティング

  シリーズのプロッティング
に載っているコードを一部修正して:
# -*- coding: utf-8 -*-
#----- plot_pandas+matplotlib.py

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
ts = pd.Series( np.random.randn(1000), index=pd.date_range( '1/1/2000', periods=1000 ) )
ts = ts.cumsum() ### DataFrame.cumsum( axis=None, skipna=True, *args, **kwargs )
### Returns: Series
ts.plot() ### The plot method on Series and DataFrame is
### just a simple wrapper around plt.plot():
plt.show()
では、
出来た!

これは、pandas 0.22.0 documentation
Visualization
に載っているコードですネ。


別の記事では、
Python pandas プロット機能を使いこなす
も参考になる。


要は、

  The plot method on Series and DataFrame is just
  a simple wrapper around plt.plot():
===
  SeriesとDataFrameのplotメソッドは、
  単に plt.plot() を囲む単純なラッパーです。

と云うことですか。
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
の3行ダケ。
他には要らない?


更に、
4年前(2014-06-11)に「Python 学習:pandas 利用?
を書いていた。

そこでは、
 「matplotlib (+ pandas) によるデータ可視化の方法 (3)
 「matplotlib (+ pandas) によるデータ可視化の方法 (5)
 「pandas + matplotlib による多彩なデータプロッティング
等を参照していた。


本日はここまで。


Anaconda ( Python ) 学習は続く。


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


180115

Anaconda 学習:cufflinks って何?

2018-02-02 :  PCクリニック
Python関連で探しモノをしていたら、・・・・・

こんなページを見つけた:
jupyter notebook上で金融データの描画・取得・操作

曰く:
  この記事はplotlyとpandasを結びつけるライブラリ"cufflinks"の紹介、
  およびそれを利用した金融関連のデータ描画、pandas_datareaderや
  自作モジュールによる金融データの取得、
  自作モジュールによる金融データの操作を行います。

そして、
cufflinks とは、

  公式: GitHub - santosjorge/cufflinks

から、

  This library binds the power of plotly with the flexibility of
  pandas for easy plotting.

  このライブラリーは簡単なプロットのために「plotlyの力」と
  「pandasの柔軟性」を結びつけます。


と云うことですね。


なお、

  2017年12月現在、condaではインストールできません。

  anaconda cloudで探すと(またはぐぐると) biocondaでRNAがなんとか・・・
  ・・・・・
  ・・・・・
  正しくインストールするにはpipを使って下さい。

   $ pip install cufflinks

とある。


そう云えば、

前回(2018-01-31)の記事:
Anaconda 学習:Atomic Simulation Environment(ASE)
でも、
  ・・・・・
  ・・・・・
  「 ・・・・・ PLAMS」
  でも、これはconda cloudには無かった。
  導入はpip install plams云うこと?
  ・・・・・
  ・・・・・

と書いている。


ここで、脇道に逸れるが、

conda じゃ無くて、pip で導入するときについて
若干学習した?

anaconda環境にpythonのモジュールを追加する方法

  ・・・・・
  ・・・・・
  condaパッケージにない場合:

   $ source activate 
   $ pip install <モジュール名>

  anacondaで作成した環境名は以下の方法でわかります。

   $ conda info --envs

  アスタリスクが付いているのが今の環境でデフォルトは root です。
  ・・・・・
  ・・・・・


pip vs conda - Qiita

  ・・・・・
  ・・・・・
  condaはanacondaというパッケージインストーラの
  インストーラ用のコマンド名である。
  pythonは一般的には[c:\python27]とかいう配下に[\lib\site-packages]に
  パッケージをインストールするんだが、
  anacondaをインストールすると、[c:\anaconda2]の配下に[\packages]に
  インストールする。
  ここにはpythonのみならずqtとかGDALとかのpython外パッケージもはいる。
  つまり、pipというよりはyumやapt-getに近いともいえる。
  ・・・・・
  ・・・・・


<紙>の場合は、・・・・・
以前のWinPythonでは、

  [D:/TOOL/WinPython32_2763/python-2.7.6]配下の、
              [/Lib/site-packages/]にインストールされていた。

これに対して、Anacondaでは、

  [D:/TOOL/Anaconda2/]配下の[Lib/site-packages/]に入る?


このことは、しっかり学習しよう。



本日はここまで。


Anaconda ( Python ) 学習は続く。


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


180115

Anaconda 学習:Atomic Simulation Environment(ASE)

2018-01-31 :  PCクリニック
3年前(2015-10-15)の記事「Python 学習:RDKit パッケージ」で、
  ・・・・・
  ・・・・・
  そこで、
  Python パッケージに、構造最適化パッケージがないか探してみた。
  「MMFF atom」で検索したら、
  上位に、
  「Getting Started with the RDKit in Python
  があった。
  「RDKit」ですか!
  ・・・・・
  ・・・・・
と書いていた。

今回、
「Python MOPAC」と検索していて、

1つ目「Atomic Simulation Environment - ASE
を見つけた。
これは、condaで簡単に入れられますネ:
conda-forge / packages / ase 3.15.0
  ASE is a set of tools and Python modules for setting up, manipulating,
  running, visualizing and analyzing atomistic simulations. Python 2.6-3.6

Documentation: http://wiki.fysik.dtu.dk/ase
にある“サンプル・コード”では“BFGS”法で最適化している。


2つ目「Python Library for Automating Molecular Simulations - PLAMS
では、これはconda cloudには無かった。
導入はpip install plams云うこと?

を見つけた。


それで、1つ目の ASEを入れてみた:
  conda install -c conda-forge ase

初めに、
  conda update -n base conda
で、condaをアップデート(4.4.2 → 4.4.7)し、
それから再度、目的のコマンド入力。
18ヶほどインストールされた。


いざテスト実行、・・・・・

上記の“BFGS”法による最適化の“サンプル・コード”では、
NWChem でエラーとなって、実行できない。


ドキュメントを眺めていて、見つけた
Structure optimization の例“H2O”の構造最適化

実行できた様だが?

結果は、
 O - H 間距離が、1.0987 と正解(?)の 0.9572 より大きい。
また、H - O - H 角度が、102度と正解(?)の 104度より小さい。


どうも、
MOPAC
とか、
CP2K
とか、
「Gaussian」
とかとか、のインストールが必要の様ダ?



本日はここまで。


Anaconda ( Python ) 学習は続く。


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


180111

Anaconda 学習:バイナリデータのファイル出力

2018-01-29 :  PCクリニック
“Pythonでバイナリ・データを扱う”
と云っても、

例えば、
PythonでバイナリをあつかうためのTips
の様に、
structモジュールを使う方法ctypes.Structureクラスを使う方法
とは若干違う。

この記事の内容が悪い訳では無いが、<紙>的には若干不満がある。


で、3週間前(2018-01-10)の記事:
Anaconda 学習:NumPy 配列と ctypes 配列」で書いた、
  ・・・・・
  ・・・・・
  方式1(例) ファイル全体をNumPyアレイ(・・・)として読み込む:
  “NumPy v1.13 Manual”のnumpy.fromfile
    Construct an array from data in a text or binary file.
  ・・・・・
  ・・・・・
に対応する(?)逆方向の方法。

同じ“SciPy.org”の“NumPy v1.13 Manual”にある:
  numpy.ndarray.tofile
  ndarray.tofile( fid, sep="", format="%s" )
   Write array to a file as text or binary (default).

   Data is always written in 'C' order, independent of the order of a.
   The data produced by this method can be recovered using
   the function fromfile().
  ・・・・・
  ・・・・・

<紙>的一例:
import numpy as np
npT = np.array( [1, 2, 3], dtype=np.uint16 )
npT.tofile( 'hoge.dat' )
といった感じ。
これで、
サイズが6バイトのファイルが出来る。


本日はここまで。


Anaconda ( Python ) 学習は続く。


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


180114

Anaconda 学習:整数の除算には要注意

2018-01-26 :  PCクリニック
今年初め(2018-01-03)の記事「GSL Shell から、Python に
  訳あって、GSL Shell から足を洗う?ことになった。
  ・・・・・
  ・・・・・
の如くで、

以前の記事:
例えば「GSL Shell/OpenCV 学習:cvFitEllipse2
  このところ、Python プログラムを“GSL Shell”に移植している。

とは逆に、

GSL Shell プログラムを“Anaconda”:Python に移植している。


ここで、
原因がなかなか判からなかった事態に陥った。

元の GSL Shell のコードは:
C = matrix.vec { 0, 0.2, 0.4, 0.6, 0.8, 1.0 }  --  一例
N = #C
F = matrix.new( N, 1 )

for n=1,N do
F[n] = C[n] * 2^n / math.sqrt(math.pi) * sf.gamma(n/2+1) / sf.gamma((n+1)/2)
end
の様なもの

なので、Python では、
ほぼそのまま、右から左に変換した:
# -*- coding: utf-8 -*-
import math
import numpy as np
import scipy.special as sf

C = np.array( [ 0, 0.2, 0.4, 0.6, 0.8, 1.0 ] )
N = len(C)
F = np.zeros( N )

for n in range(N):
F[n] = C[n] * 2**(n+1) / math.sqrt(math.pi) * sf.gamma((n+1)/2+1) / sf.gamma((n+2)/2)
と云った感じ。

だが、結果が一致しない???


可成り悩んだが、

原因がやっと判明した。

最後の for 文は、
for n in range(N):
F[n] = C[n] * 2**(n+1) / math.sqrt(math.pi) * sf.gamma((n+1)/2.+1) / sf.gamma((n+2)/2.)
とすべきだった。

何処が問題?

整数除算の結果は整数と云うこと!!!


つまり、for の変数 n は整数なので、

÷2 じゃなくて、÷2.とすべし!


本日はここまで。


Anaconda ( Python ) 学習は続く。


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


180109F

Anaconda 学習:見た目の前方参照(素直に)?

2018-01-24 :  PCクリニック
4年前(2014-03-20)の記事「Python 学習:無いコトねだり」で、
  ・・・・・
  ・・・・・
  以下に示すコトについては、Perl には全て有る。
  1. goto 文
  2. 多分岐文(switch とか、case とか)
  3. 多重ループを抜ける命令文
  4. “++”/“--”演算子
  5. 関数の前方参照
  6. ブロックの終端

  これらは、Python には無いコトですね。
  ・・・・・
  ・・・・・
と書き、
その後、
Python 学習:見た目の前方参照(gotoで)
Python 学習:見た目の前方参照(forとifで)
Python 学習:見た目の前方参照(classで)
を書いていた。

だが、よくよく考えて見ると、・・・・・

某ブログの
Python で定義前の変数、関数、クラスの参照するときは・・・
この記事の半ばにある、

  ・・・・・
  ・・・・・
  モジュールとして再利用しやすくする。

  main 関数に加えて if __name__ == '__main__': を合わせて
  書かれるシーンをたまに見かけます。
  Python に標準で付いてくるモジュールも、
  この書き方がなされているのを見たことがあります。
# -*- coding: utf-8 -*-
def main():
# 未定義の関数 date
date()

def date():
print("Hello, world!")

if __name__ == '__main__':
main()
  ・・・・・
  ・・・・・

この流儀でコーディングすれば、

自然に見た目の前方参照が出来ている!


つまり、
プログラムは「def main():」から初め、
最終行に、「if __name__ == '__main__': main()」を書く。

その間では、前方参照可(?)


結論:
Python 言語仕様? コーディング流儀?
に忠実に書けば、
それだけで見た目の前方参照が可能であった。



本日はここまで。


Anaconda ( Python ) 学習は続く。


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


180102

Anaconda 学習:leap year ( 閏年 ) 判定

2018-01-22 :  PCクリニック
Python 関連で検索していたら、・・・・・

“TomoProgの技術書”サイトの記事:
Pythonで閏年を判定してみた」が見つかった。

この記事の前半は、
  Python で「閏年判定プログラムを書いてみる」
  ・・・・・
  ・・・・・

と云うことですが、

後半には、
  「calendarモジュールで閏年を判定する」

と云うことで、

  上記のように自分で閏年判定を実装してもよいですが、
  Pythonにはもっと簡単に閏年を判定する方法があります。

  その方法がcalendarという標準モジュールを使う方法です。

  実はcalendarモジュールには年を渡すと閏年かどうかを判定して
  くれるisleapという関数がすでに実装されています。

  isleap関数を使った場合のプログラムを書いてみました。

  ・・・・・
  ・・・・・


これで初めて、
「calendarモジュール」&「isleap関数」
を知りました。

Python > English 2.7.14 > Documentation >
 The Python Standard Library > 8. Data Types >
  8.2. calendar - General calendar-related functions

または、

Python > Japanese 3.6.4 > ドキュメント >
 ドキュメント > 8. データ型 >
  8.2. calendar - 一般的なカレンダーに関する関数群

  このモジュールは Unix の cal プログラムのようなカレンダー出力を行い、
  それに加えてカレンダーに関する有益な関数群を提供します。
  標準ではこれらのカレンダーは(ヨーロッパの慣例に従って)月曜日を
  週の始まりとし、日曜日を最後の日としています。
  setfirstweekday() を用いることで、
  日曜日(6)や他の曜日を週の始まりに設定することができます。
  日付を表す引数は整数値で与えます。
  関連する機能として、 datetime と time モジュールも参照してください。

  このモジュールで提供する関数とクラスのほとんどは datetime に依存しており、
  過去も未来も現代のグレゴリオ暦を利用します。
  この方式は Dershowitz と Reingold の書籍「Calendrical Calculations」
  にある先発グレゴリオ暦に一致しており、
  同書では全ての計算の基礎となる暦としています。

  ・・・・・
  ・・・・・

  calendar.isleap(year)
   year が閏年なら True を、そうでなければ False を返します。

  ・・・・・
  ・・・・・


ところで、
英語豆知識ノート
うるう年が leap year な理由は?
を見つけました。
  ・・・・・
  ・・・・・
  さて、その『 閏年 』。
  英語では leap year というのですが・・・*2

  ふと湧きあがる疑問がひとつ。
  leap は ”跳ねる(跳んで移動する)”意味の英単語です。
  なぜ1日増えているのに leap 年なの?

  調べてみたところ、
  アメリカの San Marcos Daily Record という新聞のサイトに、
  わかりやすい説明が載せられているページがありました。(参考記事(英語))

  で、なにを leap するのかというと・・・ 曜日!
  ・・・・・
  ・・・・・
  どうやら語源には諸説あるようです。
  というわけで、ここで紹介した説が正解なのかどうか断言はできませんが(汗)、
  とりあえず一番もっともらしい説明だと思います。
  ・・・・・
  ・・・・・

なるほど、・・・・・



本日はここまで。


Anaconda ( Python ) 学習は続く。


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


180102,19

Anaconda 学習:インデックスソート

2018-01-19 :  PCクリニック
4年前(2014-04-07)に「Python 学習:インデックスソート」を書いている。

今回、
OpenCV 即ち
先日(2018-01-08)の記事「Anaconda2_x64 本格導入」で書いた
opencv3 ( 3.2.0 )
を使ったらどうなるか?

学習した。


当時のコードは、
x = [ 1, 6, 3, 8, 4 ]
t = sorted( range(len(x)), key=lambda k: x[k] )
# ----- t[] はインデックス
# ----- 実際の並べ替え結果は、
y = [x[t[i]] for i in range(len(x))]
でしたが、・・・・・


“OpenCV 2.4.13.5 documentation”の
cv2.sortIdx (Python function, in Operations on Arrays)

  Sorts each row or each column of a matrix.

  cv2.sortIdx( src, flags[, dst] ) → dst

   ・src - input single-channel array.
   ・dst - output array of the same size and type as src.
   ・flags - operation flags, a combination of the following values:
        ・・・・・

これは、cv2.sort と違って、
  Instead of reordering the elements themselves,
  it stores the indices of sorted elements in the output array.
すなわち、
  要素自体を並べ替える代わりに、
  並べ替えられた要素のインデックスを出力配列に格納します。


と云うことで、
import  cv2
import numpy as np
x = np.array( [ 1, 6, 3, 8, 4 ] )
t = cv2.sortIdx( x, 1 ) ### 昇順の場合( 降順では、17 )
# ----- t[] はインデックス
# ----- 実際の並べ替え結果は、
y = [ x[t[i,0]] for i in range(len(x)) ]
ですネ。


これ ( NumPyOpenCV ) を使うと、

どんな(?)データ型のアレイ(配列)についても
“ソート”=“並べ替え”をやれますネ。


本日はここまで。


Anaconda ( Python ) 学習は続く。


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


171231

Anaconda 学習:pydicom は簡単!

2018-01-17 :  PCクリニック
DICOM画像ファイルをTIFF画像ファイルに変換することになった。

追加で入れたpydicomパッケージを使ってみた。
参照:「Anaconda2_x64 本格導入」2018-01-08 付


テストで、DICOMファイル1つを変換:
# -*- coding: utf-8 -*-
# test_dicom-to-tiff.py
import pydicom, cv2

d = pydicom.read_file( 'hoge.dcm' )
cv2.imwrite( 'out_TIFF.tif', d.pixel_array )
これダケ!


因みに、
データ:d.pixel_array は、Numpy アレイの様ですネ。

また、
縦/横サイズは、
  d.Rows / d.Columns
ですネ。


本日はここまで。


ところで、
“GSL Shell”時代(?)の昨年9月(2017-09-15)に、
DICOM 学習:Pydicom」を書いていたが、・・・・・

当時は、導入にかなり手間取っていた。


Anaconda ( Python ) 学習は続く。


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


171226

Anaconda 学習:pandas と NumPy

2018-01-15 :  PCクリニック
前回(2018-01-12)の記事「:
Anaconda 学習:Python の JIT は Numba ?」で検索していたとき、

Pandas で CSV ファイルやテキストファイルを読み込む
  このページでは、
  CSV ファイルやテキストファイル (タブ区切りファイル, TSV ファイル) を
  読み込んで Pandas のデータフレームに変換する方法について説明します。

とか、

標準python、numpy、pandasを行ったり来たりするために①
  scikitlearnはnumpyしか受け付けないので、
  pandasでデータ加工した後numpy配列に変換する必要があるし、
  標準python、numpy、pandasは機能が重複していて混乱するので、
  まずは基礎の基礎をまとめる。

が気になって、ブックマークしてた。


ところで、
「Python pandas」で過去ブログを検索すると、
この様な記事」が見つかる。


当時(3~4年前)は、殆ど気にしていなかったが、

CSV ファイルは、
pandasの read_csv() メソッドで読み込み、
(これは、pandasデータフレーム?)
そして、NumPyアレイに変換する?

サンプルコード:
# -*- coding: utf-8 -*-
import numpy as np
import pandas as pd

d = pd.read_csv( 'hoge.csv' )
A = np.array( d.values )

print( A[0,1] )
こんな感じ?


今回見つけた2つのサイトは、
<紙>にとっては良い学習教材だ。


本日はここまで。


Anaconda ( Python ) 学習は続く。


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


171224

Anaconda 学習:Python の JIT は Numba ?

2018-01-12 :  PCクリニック
基本 Python は遅い???


「Python JIT」で検索してみた。

Qiita の
Pythonを速くしたいときにやったこと -Numba編-
が見つかった。

JITNumba ですか?


Qiita の記事のコードでチェック:
import numba

@numba.jit
def sumation(num):
sum=0
for i in range(num):
sum += i
return sum

sum = sumation(100)
print(sum)
できました。


上記検索では、他の Qiita に、
PythonコードをNumbaで高速化したときのメモ
もあった。



そう云えば、過去(2014-12-25)に記事にしていた:
Python 学習:Numba
当時は、
導入には若干手間が掛かったが、Anaconda なら、手間無しダ。


これは大いに活用しよう。


本日はここまで。


Anaconda ( Python ) 学習は続く。


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


171224

Anaconda 学習:NumPy 配列と ctypes 配列

2018-01-10 :  PCクリニック
前(2018-01-08)の記事「Anaconda2_x64 本格導入」で書いた如く、
常用マシンへの 64-Bit 版 Python2.7.14 の導入が完了した。

早速、学習を始めた。

先ずは、
バイナリデータファイルの読み込みについて


方式1(例) ファイル全体をNumPyアレイ(8バイトfloat配列)として読み込む:
“NumPy v1.13 Manual”のnumpy.fromfile
  Construct an array from data in a text or binary file.
で行けますね。
import  numpy  as  np
fp = open( 'hoge.dat', 'rb' )
npT = np.fromfile( fp, dtype=np.float64 )
# print len( npT ), npT[0]
といった感じ。


方式2(例) ファイル全体をctypes オブジェクトとして読み込む:
import  os
import ctypes as ct
C = ct.cdll.msvcrt
voidA = lambda x: ct.cast( x, ct.POINTER(ct.c_void_p) )
SZ = os.path.getsize( 'hoge.dat' )
fp = C.fopen( 'hoge.dat', 'rb' )
buf = ct.create_string_buffer(SZ)
sz = C.fread( buf, 1, SZ, fp )
ctT = ct.cast( buf, ct.POINTER(ct.c_double) )
# print ctT[0]
といった感じでしょうか?

ダメ。これは正しくない。
参照:“StackOverFlow”の「Using msvcrt in 64-bit python ctypes
  The default ctypes result type is a 32 bit integer
  but a file handle is pointer width, i.e. 64 bits.
  You are therefore losing half of the information in the file pointer.
つまり、
  デフォルトのctypes結果型は32ビット整数であるが、
  ファイルハンドルはポインタ幅、すなわち64ビットである。
  したがって、ファイルポインタの情報の半分が失われています。

と云うことで、
import  os
import ctypes as ct
C = ct.cdll.msvcrt
voidA = lambda x: ct.cast( x, ct.POINTER(ct.c_void_p) )
SZ = os.path.getsize( 'hoge.dat' )
C.fopen.restype = ct.c_void_p ##### この行が必要
fp = C.fopen( 'hoge.dat', 'rb' )
buf = ct.create_string_buffer(SZ)
sz = C.fread( buf, 1, SZ, voidA(fp) ) ##### voidA(fp) が必要
ctT = ct.cast( buf, ct.POINTER(ct.c_double) )
# print ctT[0]
といった感じで行ける。



ところで、

以上の2通りの方式に対して、
NumPy 配列と ctypes 配列との双方向の変換については?

・・・・・・・・・・

Python ドキュメントの、
numpy.ctypeslib」に載っていた。

numpy.ctypeslib.as_ctypes(obj)
  Create and return a ctypes object from a numpy array.
  Actually anything that exposes the
    __array_interface__ is accepted.
実例:
import ctypes as ct
import numpy as np
from numpy import ctypeslib as npct
doubleA = lambda x: ct.cast( x, ct.POINTER(ct.c_double) )
npT = np.array( [ 1, 2, 3 ] )
ctT = npct.as_ctypes( npT )
print( ctT[2] ) # ---> 3
これで、npT から ctT を作る。


numpy.ctypeslib.as_array(obj, shape=None)
  Create a numpy array from a ctypes array or a ctypes POINTER.
  The numpy array shares the memory with the ctypes object.
実例:
import ctypes as ct
from numpy import ctypeslib as npct
cInt5 = ct.c_int * 5
ctT = cInt5()
ctT[2] = 5
npT = npct.as_array( ctT )
print npT[2] # ---> 5
これで、ctT を npT と見なせれる。


本日はここまで。


Anaconda ( Python ) 学習は続く。


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


171223,0106-08
おきてがみ/blogram
blogram投票ボタン



おきてがみ

最新記事
カレンダー
01 | 2018/02 | 03
- - - - 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 - - -
月別アーカイブ
カテゴリ
最新コメント
検索フォーム
リンク
プロフィール

<紙>

Author:<紙>
ようこそ。
「パソコンヲタクの雑記帳」
もろもろなことを綴っています。
パソコン ヲタクってねくら?
画像は kami でなく kani です。

カウンター(fc2、i2i) /Google Analytics


i2i(from 2010-08-24)
Total =
Today  =  
Yesterday=
アンチエイジング

Google Analytics
ブックマーク