]
トップ «前の日記(2010-07-21) 最新 次の日記(2010-07-30)» 編集

Yukiharu YABUKI の tDiary



このtDiaryを検索します。

2010-07-29 [長年日記]

_ yc-el for Emacs23 のパッチを集積

Emacs から canna を利用する yc-el (upstream の場所は、YC's Room(http://www.ceres.dti.ne.jp/~knak/yc.html)です。) は、未だ熱心な利用者がいる。Debian の開発版において、Emacs 22が削除され、Emacs23 が、主流となる。しかし、XEmacs 21系も引き続き利用できるので、できうるなら yc-el はEmacs23 および XEmacs 21で動かしたいというのが私の想いであった。

upstream において、Emacs 23の対応は発表されていないので、yc-elのEmacs 23用パッチをとりまとめて、動いているパッチを upstream に提供するべく、github にリポジトリを作った。

現時点では完璧ではないが、yc-el が Emacs 23と XEmacs 21 (いずれも、Debianの開発版の上) が動いている。

動かしてみて、足りない部分があればパッチなどの、コードを送って欲しい。

_ [Awk] PDB原子座標入力形式 バージョン 3.2 の形式を扱う awk のコード

行きがかり上、awk で助けることになった。いちおう最低限のテストはやったけど、ご自分でもデバッグしてください。

10. Coordinate Section 10. 座標(Coordinate Section)
の操作を行うひな形になる。ライセンスは GPL v3
#!/usr/bin/env awk -f
# PDB data manipulator basics (awk version)
#
# This program give you skeleton of manipulating PDB data.
# Enjoy!
#
# * How to use
# $awk -f pdb_manipulate.awk < input.data > output.data
#  
# Author: Yukiharu YABUKI 
# License : GPL v3 
# If you don't know GPL v3 license.
# Please go to http://gplv3.fsf.org
#
# I got PDB data format(spec) from
#  http://homepage2.nifty.com/copper29/ipr/PDBformat.html#Coordinate
# I added padding comment.
#
#COLUMNS      DATA TYPE        FIELD      DEFINITION
#------------------------------------------------------
# 1 -  6      Record name      "ATOM    "
# 7 - 11      Integer          serial     Atom serial number.
#12                                       padding(yabuki)
#13 - 16      Atom             name       Atom name.
#17           Character        altLoc     Alternate location indicator.
#18 - 20      Residue name     resName    Residue name.
#21                                       padding(yabuki)
#22           Character        chainID    Chain identifier.
#23 - 26      Integer          resSeq     Residue sequence number.
#27           AChar            iCode      Code for insertion of residues
#28 - 30                                  padding(yabuki)
#31 - 38      Real(8.3)        x          Orthogonal coordinates for X in 
#                                         Angstroms
#39 - 46      Real(8.3)        y          Orthogonal coordinates for Y in 
#                                         Angstroms
#47 - 54      Real(8.3)        z          Orthogonal coordinates for Z in 
#                                         Angstroms
#55 - 60      Real(6.2)        occupancy  Occupancy.
#61 - 66      Real(6.2)        tempFactor Temperature factor.
#67 - 76                                  padding(yabuki)
#77 - 78      LString(2)       element    Element symbol, right-justified.
#79 - 80      LString(2)       charge     Charge on the atom.
#
#BEGIN {
#     printf("         1         2         3         4         5         6         7         8\n")
#     printf("12345678901234567890123456789012345678901234567890123456789012345678901234567890\n")
#     printf("Welcome to the awk world\n");
#}
{
     #
     # データ切り出し
     #
     data["RecordName"] = substr($0,1,6)
     data["serial"] = substr($0,7,5)
     data["name"] = substr($0,13,4)
#     printf "|%-4.4s|\n", data["name"]
     data["altLoc"] = substr($0, 17,1)
#     printf "|%c|\n", data["altLoc"]
     data["resName"] = substr($0, 18,3)
     data["chainID"] = substr($0, 22, 1)
#     printf "|%c|\n", data["chainID"]
     data["resSeq"] = substr($0, 23, 4)
#     printf "|%4d|\n", data["resSeq"]
     data["iCode"] = substr($0, 27, 1)
#     printf "|%c|\n", data["iCode"]
     data["x"] = substr($0, 31, 8)
     data["y"] = substr($0, 39, 8)
     data["z"] = substr($0, 47, 8)
     data["occpuancy"] = substr($0, 55, 6)
     data["tmpFactor"] = substr($0, 61, 6)
     data["element"] = substr($0, 77, 2)
     data["charge"] = substr($0, 79, 2)
     #
     # 数値変換
     #
#     data["x"] = data["x"] * -1
     #
     # 出力
     #
#     print $0
     printf("%6s", data["RecordName"])
     printf("%5d", data["serial"])
     printf("%1s", " ") # padding
     printf("%-4.4s", data["name"])
     printf("%c", data["altLoc"])
     printf("%3s", data["resName"])
     printf("%1s", " ") # padding
     printf("%c", data["chainID"])
     printf("%4d", data["resSeq"])
     printf("%c", data["iCode"])
     printf("%3s", "   ") # padding
     printf("%8.3f", data["x"])
     printf("%8.3f", data["y"])
     printf("%8.3f", data["z"])
     printf("%6s", data["occpuancy"])
     printf("%6s", data["tmpFactor"])
     printf("%10s", "          ")
     printf("%2s", data["element"])
     printf("%2s", data["charge"])
     printf("\n") # 改行
}
#END
#{
#     printf("See you soon.\n");
#}
本日のツッコミ(全4件) [ツッコミを入れる]
_ いくこ (2010-07-30 10:11)

うーむ コードを書くっていうのはこういうことを言うのだよな<br>私がもっぱらやってるのは 他人のコードの変更だけなので、、<br>大変判りやすいです どうもありがとうございました〜

_ yabuki (2010-08-14 15:29)

どもども、役に立っているようでよかったです。

_ nakao (2010-09-29 11:00)

"yc-el for Emacs23 のパッチ"を使わせていただいています!<br>これ、FreeBSDにもportして構わないでしょうか?

_ yabuki (2010-09-29 22:14)

こんにちは、upstream author が本日(2010/09/29) 対応版を出してくれたので、そちらの方がよいと思います。http://www.ceres.dti.ne.jp/~knak/yc.html