TEdb project on Starrydata

日本熱電学会の熱電特性データベースWGが主催する、学術論文からの熱電特性データベース構築プロジェクトのブログです。

Starrydata APIの使い方

Starrydataに登録されている情報を、コマンドから直接ダウンロードする機能(API)ができましたので紹介します。

1. 試料検索

WebブラウザのURLバーに以下の文字列を入れます。

https://www.starrydata2.org/paperlist/api/paper/search?atom=Bi,Te

すると、組成式にBiとTeを含む試料を含む論文のpaperid(SID)のリストがブラウザに表示されます。出力はJSON形式です。(見やすくするため出力結果に改行を加えています)

{
    "paperid": [161, 3, 7975, 11497, 18603, 3282, 1711, 3792, 721, 2098, 18569, 18616, 18096, 13057, 1533, 8702], 
    "sampleid": [], 
    "figureid": []
}

デフォルトはAND検索です。atom=Bi,Te,orと書けばOR検索となり、BiまたはTeを含む論文のリストが表示されます。

上の作業は、コマンドライン(UNIX)で以下のように打ち込んでもできます。

# BiとTeを含む試料を含む「論文」のID (paperid)
$ curl https://www.starrydata2.org/paperlist/api/paper/search?atom=Bi,Te

# BiとTeを含む「試料」そのもののID (sampleid)
$ curl https://www.starrydata2.org/paperlist/api/sample/search?atom=Bi,Te

# BiとTeを含む試料を含む「図表」のID (figureid)
$ curl https://www.starrydata2.org/paperlist/api/figure/search?atom=Bi,Te

出力結果はそれぞれ以下のようになります。欲しいところ以外は空の配列が返ってきます。

# paper
{"paperid": [161, 3, 7975, 11497, 18603, 3282, 1711, 3792, 721, 2098, 18569, 18616, 18096, 13057, 1533, 8702], "sampleid": [], "figureid": []}
# sample
{"paperid": [], "sampleid": [135, 407, 6071, 24, 1426, 1427, 404, 1429, 22, 535, 536, 411, 1308, 1309, 1310, 1311, 1312, 1313, 1314, 1315, 1316, 1317, 1318, 1319, 5928, 48, 306, 2547, 181, 6070, 2505, 56, 2933, 195, 6084, 6085, 6086, 1479, 201, 2506, 2507, 80, 6072, 3041, 85, 2553, 346, 3035, 3037, 3038, 3039, 3040, 208, 3042, 3043, 2551, 2928, 2545, 2546, 243, 2548, 2549, 2550, 375, 2552, 1428, 2554, 2555, 380, 5498, 3093], "figureid": []}
# figure
{"paperid": [], "sampleid": [], "figureid": [2048, 2049, 2050, 3, 2052, 2053, 2054, 2051, 43, 4657, 4658, 4660, 4661, 54, 4663, 4664, 4665, 4667, 4668, 5181, 3143, 1608, 3145, 1963, 86, 4794, 98, 1640, 1641, 1642, 1643, 1644, 1645, 1646, 1647, 72, 129, 131, 140, 4205, 151, 156, 4786, 4787, 181, 182, 184, 4793, 186, 3144, 4662, 4844, 237, 238, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 4881, 4882, 4886, 4887, 4888, 835, 836, 837, 870, 871, 872, 4846, 1960, 1961, 1962, 1607, 1964, 1965, 1966, 1967, 1968, 1969, 1609, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2047]}

2. 取得したIDからの個別情報の取得

各IDについて特定の情報がほしい場合は、以下のように書けば取得できます。

# paperid=161の論文のタイトルを取得
$ curl https://www.starrydata2.org/paperlist/api/paper/161/title
"Surfactant-Free Scalable Synthesis of Bi2Te3and Bi2Se3Nanoflakes and Enhanced Thermoelectric Properties of Their Nanocomposites"

# paperid=161の論文の著者リストを取得
$ curl https://www.starrydata2.org/paperlist/api/paper/161/author
[{"affiliation": [], "given": "Yuho", "family": "Min"}, {"affiliation": [], "given": "Jong Wook", "family": "Roh"}, {"affiliation": [], "given": "Heeseung", "family": "Yang"}, {"affiliation": [], "given": "Minwoo", "family": "Park"}, {"affiliation": [], "given": "Sang Il", "family": "Kim"}, {"affiliation": [], "given": "Sungwoo", "family": "Hwang"}, {"affiliation": [], "given": "Sang Mock", "family": "Lee"}, {"affiliation": [], "given": "Kyu Hyoung", "family": "Lee"}, {"affiliation": [], "given": "Unyong", "family": "Jeong"}]

# sampleid=135の試料の組成を取得
$ curl https://www.starrydata2.org/paperlist/api/sample/135/composition
"Sn0.96Bi0.04Te1"

# sampleid=3089の試料の名前を取得
$ curl https://www.starrydata2.org/sample/3089/samplename
"x=0.1"

3. 取得したIDに関する全データの一括取得

以下のように書けば、各IDについて、関連するデータをJSON形式ですべて取得することができます。出力結果は長すぎるので省略します。

# paperid=161の論文の情報をすべて取得
curl https://www.starrydata2.org/paperlist/api/paper/161
# sampleid=135の試料の情報をすべて取得
curl https://www.starrydata2.org/paperlist/api/sample/135
# figureid=2048の図表の情報をすべて取得
curl https://www.starrydata2.org/paperlist/api/figure/2048

4. PythonでのAPIの利用

以下のサイトに詳しいコーディング例を載せています。よかったら参考にしてください。
qiita.com