Skip to content

RDEToolKitのデータ登録モード

RDEの構造化処理でサポートしているデータ登録モードは、以下5つのモードをサポートしています。

モード名 起動条件
invoiceモード デフォルトのデータ登録モード
Excelinvoiceモード 入力ファイルに*._excel_invoice.xlsxを格納
SmartTableInvoiceモード 入力ファイルにsmarttable_*.{xlsx,csv,tsv}を格納
マルチデータタイル 設定ファイルにextended_mode: 'MultiDataTile'を追加
RDEフォーマットモード 設定ファイルにextended_mode: 'rdeformat'を追加

マルチデータタイルと、RDEフォーマットモードは、invoiceモードの拡張機能になります。

flowchart LR
  ModeA-->ModeB
  ModeA-->ModeE
  ModeA-->ModeF
  ModeB-->ModeC
  ModeB-->ModeD
  ModeA[RDEデータ登録モード]
  ModeB[invoiceモード]
  subgraph extended mode
  ModeC[マルチデータタイル]
  ModeD[RDEフォーマットモード]
  end
  ModeE[Excelinvoiceモード]
  ModeF[SmartTableInvoiceモード]

ここでは、各種モードの説明と実行例をまとめました。

invoiceモード

説明

このモードは、通常のRDE登録画面でデータを登録するモードを指します。一番、基本的かつデフォルトのモードになります。

以下のように、Entry画面から、データを投入するモードです。

invoice_mode

起動条件

デフォルトのデータ登録モード。設定等は必要ありません。

invoiceモード実行例

投入データ

登録ファイル 説明
data/inputdata/test23_1.csv 登録するデータ
data/invoice/invoice.json ローカルで事前に準備・作成/システムが自動的に生成
data/tasksupport/invoice.schema.json ローカルで事前に準備・作成/システムに事前に登録
data/tasksupport/metadata-def.json ローカルで事前に準備・作成/システムに事前に登録
1
2
3
4
5
6
7
8
9
data
├── inputdata
│   └── test23_1.csv
├── invoice
│   └── invoice.json
└── tasksupport
    ├── rdeconfig.yaml
    ├── invoice.schema.json
    └── metadata-def.json

configファイル

モードの指定等を指定する必要はありません。

1
2
3
save_raw: true
magic_variable: false
save_thumbnail_image: ture

構造化処理実行実行後ファイル構成

上記の設定で、構造化処理を実行すると、以下の出力が得られます。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
data
├── inputdata
│   └── test23_1.csv
├── invoice
│   └── invoice.json
├── logs
│   └── rdesys.log
├── main_image
├── meta
├── other_image
├── raw
│   └── test23_1.csv
├── structured
├── tasksupport
│   ├── rdeconfig.yaml
│   ├── invoice.schema.json
│   └── metadata-def.json
├── temp
└── thumbnail

ExcelInvoiceモード

説明

このモードは、一度に複数件のデータセットを登録するものモードです。通常のinvoiceモードでは、一件ずつしかデータセットの登録実行できませんが、Excelinvoiceモードを使うと、一度に複数データセットを登録することができます。

このモードの起動条件として、入力ファイルに、*._excel_invoice.xlsxという命名規則を持つExcelファイルを投入するとExcelinvoiceとして登録されます。

このExcelinvoiceのテンプレートファイルはRDEへ問い合わせください。

excelinvoice

Documents

ExcelInvoiceには、ファイルモードとフォルダモードという概念があります。File Mode / Folder Modeを参照ください。

起動条件

入力ファイルに*._excel_invoice.xlsxを格納する

ExcelInvoiceモード実行例

投入データ

  • 登録ファイル(data/inputdata)
  • data.zip (投入ファイルをzip圧縮したもの)
  • sample_excel_invoice.xlsx (この事例では3行3データタイル分を記載)
  • tasksupport
  • 追加なし

実行前ディレクトリ構成

data/invoice/invoice.jsonは、空のjsonファイルでも構いません。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
container/
├── main.py
├── requirements.txt
├── modules/
│   ├── <任意の構造化処理モジュール>
└── data
    ├── inputdata
       ├── data.zip
       └── sample_excel_invoice.xlsx
    ├── invoice
       └── invoice.json
    └── tasksupport
        ├── invoice.schema.json
        └── metadata-def.json

data.zipの内容は、エクセルインボイスに3行追加するため3ファイルzip化する。

1
2
3
4
5
$ unzip -t data.zip
Archive:  data.zip
    testing: data0000.dat
    testing: data0001.dat
    testing: data0002.dat

excelinvoice_demo

構造化処理実行後のディレクトリ構造

上記の設定で、構造化処理を実行すると、以下の出力が得られます。

  • data.zipの内容は展開される
  • sample_excel_invoice.xlsxの記入内容に従ってdividedを含むフォルダに展開
  • 各invoice.jsonは、excel_invoiceの各行から読み出した情報が入力される
 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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
data
├── divided
│   ├── 0001      ├── invoice
│         └── invoice.json
│      ├── logs
│      ├── main_image
│      ├── meta
│      ├── other_image
│      ├── raw
│         └── data0001.dat
│      ├── structured
│      ├── temp
│      └── thumbnail
│   └── 0002       ├── invoice
│          └── invoice.json
│       ├── logs
│       ├── main_image
│       ├── meta
│       ├── other_image
│       ├── raw
│          └── data0002.dat
│       ├── structured
│       ├── temp
│       └── thumbnail
├── inputdata
│   ├── data.zip
│   └── sample_excel_invoice.xlsx
├── invoice
│   └── invoice.json
├── logs
│   └── rdesys.log
├── main_image
├── meta
├── other_image
├── raw
│   └── data0000.dat
├── structured
├── tasksupport
│   ├── invoice.schema.json
│   └── metadata-def.json
├── temp
│   ├── data0000.dat
│   ├── data0001.dat
│   ├── data0002.dat
│   └── invoice_org.json
└── thumbnail

dividedフォルダ以下の内容について

divided/0001/invoice/invoice.jsonの内容は、事前に配置されたinvoice.jsonがコピーされbasic/dataName, basic/dataOwnerId がエクセルインボイスの内容で書き換えが行われている。

書き換え後の、data/invoice/invoice.json

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
{
    "datasetId": "ab9536f2-5fe4-49c4-bb82-dd8212453d85",
    "basic": {
        "dateSubmitted": "2023-03-14",
        "dataOwnerId": "153cbe4798cb8c1c3c0fc66062c7e55a9b4255fe3364613035643239",
        "dataName": "dumm.dat",
        "instrumentId": null,
        "experimentId": null,
        "description": null
    },
    "custom": null
}

書き換え後の、data/divided/0001/invoice/invoice.json

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
{
    "datasetId": "e751fcc4-b926-4747-b236-cab40316fc49",
    "basic": {
        "dateSubmitted": "2023-03-14",
        "dataOwnerId": "97e05f8b9ed6b4b5dd6fd50411a9c163a2d4e38d6264623666383663",
        "dataName": "data0001.dat",
        "instrumentId": null,
        "experimentId": null,
        "description": null
    }
}

Warning

  • smple.zipに不要なファイルが含まれていないか確認する。Mac特有の.DS_Storeファイルが格納されている場合、実行エラーが発生します。
  • エクセルインボイスファイルを開いたまま実行している場合、Microsoft特有のファイル(~$から始まるファイル)が残ってしまい、実行エラーが発生します。
  • ローカルで実行する場合、tempフォルダに前回の実行結果が残っているとエラーが発生します。

フォルダを含むzipのExcelInvoiceモード実行例

フォルダを含むzipファイルを登録する方法は、zipファイルは以下の通りです。

Documents

ExcelInvoiceには、ファイルモードとフォルダモードという概念があります。File Mode / Folder Modeを参照ください。

1
2
3
4
5
6
# フォルダありでzip
$ zip data_folder.zip -r ./inputdata -x \*/.DS_Store *\.xlsx
  adding: inputdata/ (stored 0%)
  adding: inputdata/data0001.dat (stored 0%)
  adding: inputdata/data0000.dat (stored 0%)
  adding: inputdata/data0002.dat (stored 0%)

SmartTableInvoiceモード

説明

SmartTableInvoiceモードは、テーブルファイル(Excel/CSV/TSV)からメタデータを読み取り、自動的にinvoice.jsonファイルを生成する新しい登録モードです。ExcelInvoiceモードと同様に複数のデータセットを一度に登録できますが、より柔軟なメタデータマッピング機能を提供します。

このモードの特徴: - 多形式対応: Excel (.xlsx)、CSV、TSVファイルの読み込み - 2行ヘッダー形式: 1行目に表示名、2行目にマッピングキーを配置 - 自動メタデータマッピング: basic/custom/sample/プレフィックスによる構造化データ生成 - 配列データサポート: generalAttributesおよびspecificAttributesへの適切なマッピング - zipファイル統合: データファイルを含むzipとテーブルファイルの自動関連付け

smarttable_invoice

起動条件

入力ファイルにsmarttable_*.{xlsx,csv,tsv}を格納する

テーブルファイル形式

ヘッダー構成

テーブルファイルは以下の形式で作成します:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
# 1行目: 表示名(ユーザー向けの説明、処理対象外)
データ名,入力ファイル1,入力ファイル2,サイクル,厚さ,温度,試料名,試料ID,一般項目

# 2行目: マッピングキー(実際の処理で使用)
basic/dataName,inputdata1,inputdata2,custom/cycle,custom/thickness,custom/temperature,sample/names,sample/sampleId,sample/generalAttributes.3adf9874-7bcb-e5f8-99cb-3d6fd9d7b55e

# 3行目以降: データ
実験1,file1.txt,file2.txt,1,2mm,25,sample001,S001,value1
実験2,file3.txt,file4.txt,2,3mm,30,sample002,S002,value2
20250601_exp1,file1,sub/file11,file12,3,25,sample001,0,value1
20250601_exp2,file2,sub/file21,file22,4,30,sample002,1,value2
20250601_exp3,,,,5,50,sample003,2,value3

snarttable_excel_sample

マッピングキーの仕様

  • basic/xxxx: invoice.jsonのbasicオブジェクト内のxxxxキーにマッピング
  • custom/xxxx: invoice.jsonのcustomオブジェクト内のxxxxキーにマッピング
  • sample/xxxx: invoice.jsonのsampleオブジェクト内のxxxxキーにマッピング
  • sample/generalAttributes.<termId>: generalAttributes配列内の該当するtermIdvalueにマッピング
  • sample/specificAttributes.<classId>.<termId>: specificAttributes配列内の該当するclassIdtermIdvalueにマッピング
  • inputdataX: zipファイル内のファイルパスを指定(X=1,2,3...)
  • meta/xxxx: メタ情報として扱われ、invoice.jsonには出力されない

SmartTableInvoiceモード実行例

投入データ

ファイル 説明
data/inputdata/smarttable_experiment.xlsx メタデータを含むテーブルファイル
data/inputdata/data.zip データファイルを含むzipファイル(オプション)
data/invoice/invoice.json 既存のinvoice.json(値が継承される)
data/tasksupport/invoice.schema.json スキーマファイル
1
2
3
4
5
6
7
8
9
data
├── inputdata
│   ├── smarttable_experiment.xlsx
│   └── data.zip
├── invoice
│   └── invoice.json
└── tasksupport
    ├── invoice.schema.json
    └── metadata-def.json

処理フロー

  1. SmartTableファイルの各行を個別のCSVファイルに分割
  2. ファイル名: fsmarttable_experiment_0001.csv, fsmarttable_experiment_0002.csv...
  3. zipファイルがある場合はdata/tempに展開
  4. inputdataX列の値とzipファイル内のファイルを関連付け
  5. 各CSVファイルからinvoice.jsonを生成
  6. 既存のinvoice.jsonがある場合は値を継承

構造化処理実行後のファイル構成

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
data
├── divided
│   ├── 0001      ├── invoice
│         └── invoice.json  # smarttableの1行目から生成      ├── raw
│         ├── file1.txt
│         └── file2.txt
│      └── (その他の標準フォルダ)   └── 0002       ├── invoice
│          └── invoice.json  # smarttableの2行目から生成       ├── raw
│          ├── file3.txt
│          └── file4.txt
│       └── (その他の標準フォルダ)
├── temp
│   ├── fsmarttable_experiment_0001.csv
│   ├── fsmarttable_experiment_0002.csv
│   ├── file1.txt
│   ├── file2.txt
│   ├── file3.txt
│   └── file4.txt
└── (その他の標準フォルダ)

生成されるinvoice.jsonの例

divided/0001/invoice/invoice.json:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
{
    "datasetId": "999999884-1111-41b0-1dea-23bf4dh09g12",
    "basic": {
        "dataName": "実験1",
        "dateSubmitted": "2024-01-15",
        "dataOwnerId": "xxx"
    },
    "custom": {
        "polymerName": "PVC",
        "cycle": "1",
        "thickness": "2mm",
        "temperature": "25"
    },
    "sample": {
        "names": ["sample001"],
        "sampleId": "S001",
        "generalAttributes": [
            {
                "termId": "3adf9874-7bcb-e5f8-99cb-3d6fd9d7b55e",
                "value": "value1"
            }
        ]
    }
}

注意事項

  • テーブルファイルの命名規則(smarttable_*.{xlsx,csv,tsv})に従う必要があります
  • Excelファイルの場合、最初のシート(インデックス0)が読み込まれます
  • 既存のinvoice.jsonがある場合、SmartTableで指定されていない値は保持されます
  • meta/プレフィックスのデータはinvoice.jsonに出力されません
  • zipファイルがない場合でも動作しますが、inputdataX列は無視されます

RDEformatモード

説明

RDEフォーマットモードは、データセットのモックを作成するモードです。データ登録時に、具体的な構造化処理は行わず、指定された入力データをRDEデータセットの形式に登録をします。

入力データとして、以下のフォーマットを持つzip形式のファイルを投入する必要があります。zipファイルの中に、invoice, main_image, other_image, structuredというディレクトリがあり、その中に、それぞれのデータを格納してください。zipファイルは、すでに構造化処理が実行され出力された想定のファイルを格納し、そのデータを指定フォルダに格納するイメージです。

1
2
3
4
5
6
7
8
9
└── sample.zip
    ├── invoice/
    │   └── invoice.json
    ├── main_image/
    │   └── xxxx.png
    ├── other_image/
    │   └── xxxx.png
    └── structured/
        └── sample.csv

rdeformat

起動条件

設定ファイルにextended_mode: 'rdeformat'を追加

1
extended_mode: 'rdeformat'

RDEformatモード実行例

投入データ

  • 登録ファイル
  • structured.zip (RDEformat形式で展開されたファイル一式をzipでまとめたもの)
  • tasksupport
  • rdeconfig.yml

Documents

設定ファイルrdeconfig.ymlは、設定ファイル - configを参照ください。

structured.zipの内容は下記の通りです。

 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
29
30
31
32
33
# unzip -t structured.zip
Archive: structured.zip
    testing: divided/
    testing: divided/0002/
    testing: divided/0002/meta/
    testing: divided/0002/meta/metadata.json
    testing: divided/0002/structured/
    testing: divided/0002/structured/test23_2-output.html
    testing: divided/0002/structured/test23_2-output.csv
    testing: divided/0002/main_image/
    testing: divided/0002/main_image/test23_2-output.png
    testing: divided/0002/raw/
    testing: divided/0002/raw/test23_2.csv
    testing: divided/0001/
    testing: divided/0001/meta/
    testing: divided/0001/meta/metadata.json
    testing: divided/0001/structured/
    testing: divided/0001/structured/test23_1-output.html
    testing: divided/0001/structured/test23_1-output.csv
    testing: divided/0001/main_image/
    testing: divided/0001/main_image/test23_1-output.png
    testing: divided/0001/raw/
    testing: divided/0001/raw/test23_1.csv
    testing: meta/
    testing: meta/metadata.json
    testing: structured/
    testing: structured/test23_0-output.html
    testing: structured/test23_0-output.csv
    testing: main_image/
    testing: main_image/test23_0-output.png
    testing: raw/
    testing: raw/test23_0.csv
No errors detected in compressed data of data/inputdata/structured.zip.

実行後ファイル構成

上記の設定で、構造化処理を実行すると、以下の出力が得られます。

 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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
data
├── divided
│   ├── 0001      ├── invoice
│         └── invoice.json
│      ├── logs
│      ├── main_image
│         └── test23_1-output.png
│      ├── meta
│         └── metadata.json
│      ├── other_image
│      ├── raw
│         └── test23_1.csv
│      ├── structured
│         ├── test23_1-output.csv
│         └── test23_1-output.html
│      ├── temp
│      └── thumbnail
│          └── test23_1-output.png
│   └── 0002       ├── invoice
│          └── invoice.json
│       ├── logs
│       ├── main_image
│          └── test23_2-output.png
│       ├── meta
│          └── metadata.json
│       ├── other_image
│       ├── raw
│          └── test23_2.csv
│       ├── structured
│          ├── test23_2-output.csv
│          └── test23_2-output.html
│       ├── temp
│       └── thumbnail
│           └── test23_2-output.png
├── inputdata
│   └── structured.zip
├── invoice
│   └── invoice.json
├── logs
│   └── rdesys.log
├── main_image
│   └── test23_0-output.png
├── meta
│   └── metadata.json
├── other_image
├── raw
│   └── test23_0.csv
├── structured
│   ├── test23_0-output.csv
│   └── test23_0-output.html
├── tasksupport
│   ├── invoice.schema.json
│   └── metadata-def.json
├── temp
│   ├── divided
│      ├── 0001         ├── invoice
│            └── invoice.json
│         ├── main_image
│            └── test23_1-output.png
│         ├── meta
│            └── metadata.json
│         ├── raw
│            └── test23_1.csv
│         └── structured
│             ├── test23_1-output.csv
│             └── test23_1-output.html
│      └── 0002          ├── invoice
│             └── invoice.json
│          ├── main_image
│             └── test23_2-output.png
│          ├── meta
│             └── metadata.json
│          ├── raw
│             └── test23_2.csv
│          └── structured
│              ├── test23_2-output.csv
│              └── test23_2-output.html
│   ├── invoice
│      └── invoice.json
│   ├── invoice_org.json
│   ├── main_image
│      └── test23_0-output.png
│   ├── meta
│      └── metadata.json
│   ├── raw
│      └── test23_0.csv
│   └── structured
│       ├── test23_0-output.csv
│       └── test23_0-output.html
└── thumbnail
    └── test23_0-output.png

structured.zipがtempフォルダに展開されたのちに規程のフォルダに展開されます。

invoice.jsonをzipに含めた場合

RDEformatモードでは、投入したinvoice.jsonは利用されずinvoice/invoice.jsonがコピーされる

Warning

  • RDEformatモードでは、invoice/invoice.jsonが利用される(dividedにもコピー)
  • tempフォルダに展開されるが終了後削除されない

マルチデータタイル(MultiDataTile)

説明

マルチデータタイルは、一度に複数のデータセットを追加するモードです。このモードは、ブラウザのRDEデータ受け入れ画面より登録します。下記の例の場合、rdeconfig.ymlをデータセットテンプレートに格納し、extended_mode: 'MultiDataTile'を追加すると、登録したデータ数ごとに、データセットタイルが作成されます。rdeconfig.ymlがない場合、もしくは、extended_modeの指定がない場合、一つのデータセットタイルに登録したファイルがすべて登録されます。

multifile_mode

起動条件

設定ファイルにextended_mode: 'MultiDataTile'を追加

1
extended_mode: 'MultiDataTile'

Documents

設定ファイルrdeconfig.ymlは、設定ファイル - configを参照ください。

マルチデータタイル(MultiDataTile) 実行例

投入データ

  • 登録ファイル
  • tdata0000.dat
  • data0001.dat
  • tasksupport
  • rdeconfig.yaml

実行前ファイル構成

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
$ tree data
data
├── inputdata
│   ├── data0000.dat
│   └── data0001.dat
├── invoice
│   └── invoice.json
└── tasksupport
    ├── rdeconfig.yml
    ├── invoice.schema.json
    └── metadata-def.json

実行後ファイル構成

上記の設定で、構造化処理を実行すると、以下の出力が得られます。

 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
29
30
31
32
33
34
data
├── divided
│   └── 0001       ├── invoice
│          └── invoice.json
│       ├── logs
│       ├── main_image
│       ├── meta
│       ├── other_image
│       ├── raw
│          └── data0000.dat
│       ├── structured
│       ├── temp
│       └── thumbnail
├── inputdata
│   ├── data0000.dat
│   └── data0001.dat
├── invoice
│   └── invoice.json
├── logs
│   └── rdesys.log
├── main_image
├── meta
├── other_image
├── raw
│   └── data0001.dat
├── structured
├── tasksupport
│   ├── rdeconfig.yml
│   ├── metadata-def.json
│   └── invoice.schema.json
├── temp
│   └── invoice_org.json
└── thumbnail