SST Lab Dokuwiki Header
内容へ移動
@surface
ユーザ用ツール
ログイン
サイト用ツール
検索
ツール
文書の表示
以前のリビジョン
バックリンク
最近の変更
メディアマネージャー
サイトマップ
ログイン
>
最近の変更
メディアマネージャー
サイトマップ
トレース:
seminar:プログラミング実習
この文書は読取専用です。文書のソースを閲覧することは可能ですが、変更はできません。もし変更したい場合は管理者に連絡してください。
====== プログラミング実習 ====== ===== 実用データ処理 ===== データを処理する際のちょっとしたテクニック <note tip> **Keep It Simple Stupid.**\\ 頭文字をとってKISSの原則と呼ばれるが、複雑で高機能なプログラムを作るよりも、単純な機能だけをもったプログラムを組み合わせて使うことを考えよ。そのためには、後述する基本的なunixコマンド、リダイレクト、スクリプト言語の一行プログラムの柔軟な使用法を習得する必要がある。 特に効果的な概念は「[[スクリプト(主にシェルスクリプト)を作るスクリプト]]」という発想である。ぜひ、身に着けてほしい。 </note> スクリプトで有効に使えるTips * unixコマンド * grep * sort * uniq * リダイレクション * One Liner * sed * awk * perl * ruby * python <note tip> ** You Ain't Gonna Need It.** 頭文字をとってYAGNIと呼ばれるが、なんかよさげな機能を思いついても、実際に必要となるまでは実装してはいけない。できるだけ単機能で例外がないのが望ましい。 </note> ===== 自分用のコマンドを作る ===== <code sh> $ mkdir ~/bin $ cd bin (ファイルgetatomsをつくる) $ ls -l getatoms -rw-r--r-- 1 kimi sstlab 1350 Apr 17 16:38 getatoms $ chmod a+x getatoms $ ls -l getatoms -rwxr-xr-x 1 kimi sstlab 1350 Apr 17 16:38 getatoms $ cd $ getatoms usage: getatoms [-r R1 R2 R3] input_nc_file output_xyz_file </code> ===== リダイレクト ===== プログラム「moge_exec」に、ファイル「hoge_in.data」から入力を読み込んで、出力をファイル「hage_out.data」に書き込むには <code sh> $ ./moge_exec < hoge_in.data > hage_out.data </code> または <code sh> $ cat hoge_in.data | ./moge_exec > hage_out.data </code> とする。 ===== シェルスクリプト ===== 自動的に実行したいUNIXコマンドを単に羅列したファイルを用意しておき、逐次自動実行することができる。簡単な制御構造も備えているし、ちょっと おまじないをすることによって、自前のunixコマンドのようにも使うことができる。 ==== シェルプログラミング ==== * ファイル名は○○○○.shにする。 * ターミナルで <code> $ sh ○○○○.sh △△△△ </code> と入力することにより実行される。スクリプト中で、△△△△という文字列は''$@''で参照できる。 <code> $ cat hogehoge.sh #!/bin/sh なんとかかんとか $ chmod +x hogehoge.sh $ ./hogehoge.sh </code> ===== awk ===== ファイル名は''○○○○.awk''にする。 ターミナルで <code> $ awk -f ○○○○.awk △△△△ </code> と入力することにより△△△△という名前のファイルを処理する。 <code> $ awk -f hogehoge.awk datafile.data </code> で実行できるawk fileの最初に <code sh> #!/usr/bin/awk -f </code> を書いておくと、 <code> $ chmod +x hogehoge.awk </code> とすることによって、あたかも独立したコマンドのように $ ./hogehoge.awk datafile.data で、実行することができる。 ==== awk実習 ==== * [[データの抽出]] ===== Pythonガイド ===== ASEを用いてDacapoによる計算を行うためには、若干のPythonの知識が必要です。 Pythonはオブジェクト指向の汎用言語で覚えておくと非常に便利なものです。 インタープリタとして実装されているため速度面ではcやFORTRANに比べて不利ですが、非常に柔軟な拡張性を持っており、各種モジュールを読み込むことによりVTKを使った描画から、RasMolやGnuPlotの自動実行までも行うことができます。 変数宣言がいらないこと、インタープリタでその場で試しながらプログラムを書いたりデバッグしたりできること、簡単な手順でグラフィックスを扱うことができることなどを考え合わせると、現代版BASICといった趣もあります。 * [[:python_seminor|即席ヘビ使い講座]] * ファイル名は''○○○○.py''にする。 * ターミナルで<code> $ python ○○○○.py </code>と入力することにより実行される。 * VTKやRasMol, GnuPlotで描画する場合は<code> $ python -i ○○○○.py </code>のように、''-i''をつけること。<fc #ff0000>これをつけないと絵を描く前にプログラムが終了してしまう</fc>。 ==== Pythonで「コマンド」をつくるときの雛形 ==== <code python> #!/usr/bin/env python from optparse import OptionParser cmd = OptionParser(usage = '%prog [-t] [-p X Y Z] input_file output_file') cmd.add_option('-t', '--toggle', action = "store_true", default = False, help = 'ON/OFFを与えるだけのオプション') cmd.add_option('-p', '--position', type = 'int', nargs = 3, help = 'オプションとして3個の整数X Y Zを与える', metavar = 'X Y Z') (opt, argv) = cmd.parse_args() if len(argv) != 2: cmd.print_help() raise SystemExit input_file = argv[0] output_file = argv[1] option_on_off = opt.toggle option_xyz = opt.position </code> ---- 詳細は[[:python_seminor |即席ヘビ使い講座]]を参照のこと。 ===== FORTRAN簡単ガイド ===== - [[fortran入門]] - [[:関数値出力のプログラム]] - [[数値積分のプログラム]] - [[構造因子のプログラム]] * [[:fortran文法]]
seminar/プログラミング実習.txt
· 最終更新: 2023/03/01 15:09 by
kimi
ページ用ツール
文書の表示
以前のリビジョン
バックリンク
文書の先頭へ