CODで遊ぶ
をテンプレートにして作成
AND検索
OR検索
開始行:
*CODで遊ぶ (2016/04/16作成)(2017/05/25追加、訂正など) [#h...
#contents
----
-(2019/01/08) cod_list.txtを使わない[[結晶構造検索COD_SQL...
-(2018/08/09) CODをupdateしたら、cifが別のdirectoryにも入...
-(2018/04/06) cod_list.txtを最新にupdateした。04/05にuplo...
-(2017/05/26) Xojoで簡単なGUI検索プログラムを作ってみた(M...
-結晶構造データベース・無料(Google検索用)
**CODとは [#s11136dc]
-Crystallography Open Database([[COD:https://www.crystall...
-CODは個人のPC等に自由にダウンロードすることができるので...
**CODのダウンロード [#d6805521]
-CODのwikiにダウンロード方法が書かれているのでそれを参考...
次のコマンドで、CODをダウンロードする。
% svn co svn://www.crystallography.net/cod
CODは常に更新しているので、時々アップデートする必要がある...
% cd cod
% svn update
もしアップデートで怒られたら、指示通りにclean upを実行する
% svn cleanup
アップデートしようとしたら、アップグレードするように言わ...
% svn upgrade
**鉱物名を取り出す [#s004ce3d]
-膨大なcifファイルがあるが、そこから情報を取り出してみよ...
#!/usr/bin/python
import os,sys
base = '/Users/masami/cod/cif/' # cif base directory, ch...
list_basedir = ['1','2','3','4','5','6','7','8','9']
#list_basedir = ['1'] # for test purpose, use limited li...
for i in range(0,len(list_basedir)):
dir1 = base + list_basedir[i] + '/' # first-level direc...
os.chdir(dir1) # move to second-level directory
list_1 = os.listdir('.') #
if '.DS_Store' in list_1: # .DS_Store exists?
list_1.remove('.DS_Store') # remove .DS_Store
for j in range(0,len(list_1)):
dir2 = dir1 + list_1[j] + '/'
os.chdir(dir2) # move to 3rd-level directory
list_2 = os.listdir('.')
if '.DS_Store' in list_2: # .DS_Store exists?
list_2.remove('.DS_Store') # remove .DS_Store
for k in range(0,len(list_2)):
dir3 = dir2 + list_2[k] + '/'
os.chdir(dir3) # move to 4th-level directory
list_3 = os.listdir('.')
if '.DS_Store' in list_3: # .DS_Store exists?
list_3.remove('.DS_Store') # remove .DS_Store
# list_3 contains cif file name list in this directory
for l in range(0,len(list_3)): # process cif file
fin = open(list_3[l],'r') # open cif file
contents = fin.readlines() # read all contents in me...
fin.close() # close cif file
for line in contents: # for each line of cif file (...
try:
if '_chemical_name_mineral' in line: # Does this ...
tmp = line.strip() # strip \n
t = len(tmp) # length of tmp string
mineral_name = tmp[33:t] # get mineral name
if len(mineral_name) == 0: # if empty, break
break
else: # next line, remove ' and spaces
mineral_name = mineral_name.replace("'","").stri...
# make first letter to lower case
mineral_name = mineral_name[0].lower() + mineral...
print mineral_name + ',' + list_3[l] #list_3[l] ...
break
except: # tag not available in this cif
break
-これを使っている時に問題があって、途中で止めるには、cont...
-(2016/05/13) COD内のファイルを眺めていたら、同じ様に抽出...
**Vestaでオープン [#xcb0ee21]
-上記の[[鉱物名リスト:https://mkanzaki.sakura.ne.jp/data/...
% grep forsterite minerals_in_cod.txt
forsterite,9000166.cif
forsterite,9000167.cif
forsterite,9000267.cif
以下省略
-実際にCOD全部をダウンロードしてなくても、その特定のcifフ...
https://www.crystallography.net/cod/9000166.cif
-COD自体をダウンロードしている場合には、cifファイル本体は...
#!/usr/bin/python
import sys,subprocess
base = '/Users/masami/cod/cif/' # cif base directory, ch...
fname = sys.argv[1]
dir = base + fname[0] + '/' + fname[1:3] + '/' + fname[3...
cmd = "open -a VESTA " + dir
subprocess.call(cmd.split(" "))
たとえばこれをvesta.pyとして保存し、実行権限をつけて以下...
% chmod 755 vesta.py
% ./vesta.py 9000166.cif
**さらに簡単にVestaでオープン(2016/04/26) [#i1aafb2e]
-上記ファイルを使ってみると、鉱物構造をちょっと調べるのに...
#!/usr/bin/python
import sys,subprocess
# curl version
list = ['' for i in range(500)]
min_name = sys.argv[1]
mineral_file = '/Users/masami/minerals_in_cod.txt' # min...
try: # text file open
fin = open(mineral_file,'r')
except IOError, (errno, msg): # file not found
print 'minerals_in_cod.txt is missing.'
exit()
contents = fin.readlines() # read all lines in cif file ...
fin.close() # close file
find = 0
for line in contents:
if min_name in line: # mineral name in a line?
find = find + 1
list[find] = line.strip() # strip \n
print str(find) + ": " + list[find]
if find == 0:
print "No such mineral in the list."
exit()
elif find == 1: # just one, no selection
input_no = 1
else: # select by number
print "Select by number? (0 to stop)."
input_no = input('>>> ')
if (input_no <= 0) or (input_no > find):
exit()
s = list[input_no].index(",")
t = len(list[input_no])
fname = list[input_no][s+1:t] # get file name
cmd = "curl -s -o" + " " + fname + " " + "https://www.cr...
subprocess.call(cmd.split(" ")) # Get specified cif file...
cmd = "open -a VESTA" + " " + fname
subprocess.call(cmd.split(" ")) # open VESTA using a dow...
#cmd = "open -a Jedit\ X" + " " + fname
#subprocess.call(cmd,shell=True) # open cif file by Jedi...
exit()
# end of the code, mkanzaki@me.com
使い方は、terminal上では次のような感じ。moganiteを検索す...
% ./vesta_curl.py moganite
1: moganite,9002648.cif
2: moganite,9002649.cif
3: moganite,9005115.cif
Select by number? (0 to stop).
>>> 2
**化学組成なども取り出したリストで検索(2016/05/06) [#ef24...
-上記は鉱物名だけだったが、化学組成、空間群、化学物質名、...
-なお、CODをダウンロードしている場合は、ローカルディスク...
-このPythonプログラムはGUIでないので、多くの方には使いず...
Dim Sh As New Shell
Sh.Execute( "curl -s -o ~/test.cif https://www.crystallo...
Sh.Execute( "open -a VESTA ~/test.cif" )
Sh.Execute( "open -a Jedit\ X ~/test.cif" )
-下図のような簡単なGUI検索プログラムを何とか作った。テス...
#image(https://www.misasa.okayama-u.ac.jp/~masami/images/...
**cifファイルから粉末回折パターンを計算する(2016/05/06) [...
-これらの結晶構造データ(cifファイル)から、粉末X線回折パタ...
**実測と計算回折パターンの比較 [#ab0833e4]
-まだ検索ソフトには取り掛かってないが、ちょうど測定データ...
--回折装置、私の場合はリガクの測定データ(.asc)をPlot2(Mac...
--検索コード(上記)で見つけたcifファイルを、これも上記の...
--insファイルから粉末パターンのシミュレーションをRIETAN-F...
--強度データ(gpd)をPlot2で読める様に変換(これもPythonコー...
--Plot2でそれらを読み込んで比較する
-Plot2に自動で読み込ませる部分がうまくいかなかった。Appst...
cmd = "/Applications/Plot2.1.1/Plot2x.app/Contents/MacOS...
subprocess.call(cmd,shell=True)
-Jeditは実行ファイル名やディレクトリー名にスペースを使う...
cmd = "open -a Jedit\ X" + " " + filename
subprocess.call(cmd,shell=True)
**他のCOD関連wikiページ [#vcdb184b]
-[[結晶構造検索COD_SQL版]] GUIのCOD検索プログラムでSQLを...
-[[結晶構造の検索]] Macのterminal上からPythonを使って検索...
-[[CODへデポジット]] CODデータベースはフリーですが、ボラ...
終了行:
*CODで遊ぶ (2016/04/16作成)(2017/05/25追加、訂正など) [#h...
#contents
----
-(2019/01/08) cod_list.txtを使わない[[結晶構造検索COD_SQL...
-(2018/08/09) CODをupdateしたら、cifが別のdirectoryにも入...
-(2018/04/06) cod_list.txtを最新にupdateした。04/05にuplo...
-(2017/05/26) Xojoで簡単なGUI検索プログラムを作ってみた(M...
-結晶構造データベース・無料(Google検索用)
**CODとは [#s11136dc]
-Crystallography Open Database([[COD:https://www.crystall...
-CODは個人のPC等に自由にダウンロードすることができるので...
**CODのダウンロード [#d6805521]
-CODのwikiにダウンロード方法が書かれているのでそれを参考...
次のコマンドで、CODをダウンロードする。
% svn co svn://www.crystallography.net/cod
CODは常に更新しているので、時々アップデートする必要がある...
% cd cod
% svn update
もしアップデートで怒られたら、指示通りにclean upを実行する
% svn cleanup
アップデートしようとしたら、アップグレードするように言わ...
% svn upgrade
**鉱物名を取り出す [#s004ce3d]
-膨大なcifファイルがあるが、そこから情報を取り出してみよ...
#!/usr/bin/python
import os,sys
base = '/Users/masami/cod/cif/' # cif base directory, ch...
list_basedir = ['1','2','3','4','5','6','7','8','9']
#list_basedir = ['1'] # for test purpose, use limited li...
for i in range(0,len(list_basedir)):
dir1 = base + list_basedir[i] + '/' # first-level direc...
os.chdir(dir1) # move to second-level directory
list_1 = os.listdir('.') #
if '.DS_Store' in list_1: # .DS_Store exists?
list_1.remove('.DS_Store') # remove .DS_Store
for j in range(0,len(list_1)):
dir2 = dir1 + list_1[j] + '/'
os.chdir(dir2) # move to 3rd-level directory
list_2 = os.listdir('.')
if '.DS_Store' in list_2: # .DS_Store exists?
list_2.remove('.DS_Store') # remove .DS_Store
for k in range(0,len(list_2)):
dir3 = dir2 + list_2[k] + '/'
os.chdir(dir3) # move to 4th-level directory
list_3 = os.listdir('.')
if '.DS_Store' in list_3: # .DS_Store exists?
list_3.remove('.DS_Store') # remove .DS_Store
# list_3 contains cif file name list in this directory
for l in range(0,len(list_3)): # process cif file
fin = open(list_3[l],'r') # open cif file
contents = fin.readlines() # read all contents in me...
fin.close() # close cif file
for line in contents: # for each line of cif file (...
try:
if '_chemical_name_mineral' in line: # Does this ...
tmp = line.strip() # strip \n
t = len(tmp) # length of tmp string
mineral_name = tmp[33:t] # get mineral name
if len(mineral_name) == 0: # if empty, break
break
else: # next line, remove ' and spaces
mineral_name = mineral_name.replace("'","").stri...
# make first letter to lower case
mineral_name = mineral_name[0].lower() + mineral...
print mineral_name + ',' + list_3[l] #list_3[l] ...
break
except: # tag not available in this cif
break
-これを使っている時に問題があって、途中で止めるには、cont...
-(2016/05/13) COD内のファイルを眺めていたら、同じ様に抽出...
**Vestaでオープン [#xcb0ee21]
-上記の[[鉱物名リスト:https://mkanzaki.sakura.ne.jp/data/...
% grep forsterite minerals_in_cod.txt
forsterite,9000166.cif
forsterite,9000167.cif
forsterite,9000267.cif
以下省略
-実際にCOD全部をダウンロードしてなくても、その特定のcifフ...
https://www.crystallography.net/cod/9000166.cif
-COD自体をダウンロードしている場合には、cifファイル本体は...
#!/usr/bin/python
import sys,subprocess
base = '/Users/masami/cod/cif/' # cif base directory, ch...
fname = sys.argv[1]
dir = base + fname[0] + '/' + fname[1:3] + '/' + fname[3...
cmd = "open -a VESTA " + dir
subprocess.call(cmd.split(" "))
たとえばこれをvesta.pyとして保存し、実行権限をつけて以下...
% chmod 755 vesta.py
% ./vesta.py 9000166.cif
**さらに簡単にVestaでオープン(2016/04/26) [#i1aafb2e]
-上記ファイルを使ってみると、鉱物構造をちょっと調べるのに...
#!/usr/bin/python
import sys,subprocess
# curl version
list = ['' for i in range(500)]
min_name = sys.argv[1]
mineral_file = '/Users/masami/minerals_in_cod.txt' # min...
try: # text file open
fin = open(mineral_file,'r')
except IOError, (errno, msg): # file not found
print 'minerals_in_cod.txt is missing.'
exit()
contents = fin.readlines() # read all lines in cif file ...
fin.close() # close file
find = 0
for line in contents:
if min_name in line: # mineral name in a line?
find = find + 1
list[find] = line.strip() # strip \n
print str(find) + ": " + list[find]
if find == 0:
print "No such mineral in the list."
exit()
elif find == 1: # just one, no selection
input_no = 1
else: # select by number
print "Select by number? (0 to stop)."
input_no = input('>>> ')
if (input_no <= 0) or (input_no > find):
exit()
s = list[input_no].index(",")
t = len(list[input_no])
fname = list[input_no][s+1:t] # get file name
cmd = "curl -s -o" + " " + fname + " " + "https://www.cr...
subprocess.call(cmd.split(" ")) # Get specified cif file...
cmd = "open -a VESTA" + " " + fname
subprocess.call(cmd.split(" ")) # open VESTA using a dow...
#cmd = "open -a Jedit\ X" + " " + fname
#subprocess.call(cmd,shell=True) # open cif file by Jedi...
exit()
# end of the code, mkanzaki@me.com
使い方は、terminal上では次のような感じ。moganiteを検索す...
% ./vesta_curl.py moganite
1: moganite,9002648.cif
2: moganite,9002649.cif
3: moganite,9005115.cif
Select by number? (0 to stop).
>>> 2
**化学組成なども取り出したリストで検索(2016/05/06) [#ef24...
-上記は鉱物名だけだったが、化学組成、空間群、化学物質名、...
-なお、CODをダウンロードしている場合は、ローカルディスク...
-このPythonプログラムはGUIでないので、多くの方には使いず...
Dim Sh As New Shell
Sh.Execute( "curl -s -o ~/test.cif https://www.crystallo...
Sh.Execute( "open -a VESTA ~/test.cif" )
Sh.Execute( "open -a Jedit\ X ~/test.cif" )
-下図のような簡単なGUI検索プログラムを何とか作った。テス...
#image(https://www.misasa.okayama-u.ac.jp/~masami/images/...
**cifファイルから粉末回折パターンを計算する(2016/05/06) [...
-これらの結晶構造データ(cifファイル)から、粉末X線回折パタ...
**実測と計算回折パターンの比較 [#ab0833e4]
-まだ検索ソフトには取り掛かってないが、ちょうど測定データ...
--回折装置、私の場合はリガクの測定データ(.asc)をPlot2(Mac...
--検索コード(上記)で見つけたcifファイルを、これも上記の...
--insファイルから粉末パターンのシミュレーションをRIETAN-F...
--強度データ(gpd)をPlot2で読める様に変換(これもPythonコー...
--Plot2でそれらを読み込んで比較する
-Plot2に自動で読み込ませる部分がうまくいかなかった。Appst...
cmd = "/Applications/Plot2.1.1/Plot2x.app/Contents/MacOS...
subprocess.call(cmd,shell=True)
-Jeditは実行ファイル名やディレクトリー名にスペースを使う...
cmd = "open -a Jedit\ X" + " " + filename
subprocess.call(cmd,shell=True)
**他のCOD関連wikiページ [#vcdb184b]
-[[結晶構造検索COD_SQL版]] GUIのCOD検索プログラムでSQLを...
-[[結晶構造の検索]] Macのterminal上からPythonを使って検索...
-[[CODへデポジット]] CODデータベースはフリーですが、ボラ...
ページ名: