Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

odML to graphML converter.

オープン
#175 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

評価

難易度
4/5
見積もり時間
3〜5日
初心者へのやさしさ
35/100
issue の種類
機能追加
明瞭さ
おおむね明確
活発さ
停滞
技術スタック
python
領域
databases

調査の方向性

リポジトリのファイルやテストは指定されていません。埋め込まれた Python の例から始め、このリポジトリで odML の変換がどのように公開されているかを、ET.parse、Graph、GraphMLParser のエントリポイントを含めて調査してください。対応する odML から GraphML へのコンバーターが統合され、グラフデータベースへのインポートに利用できれば完了です。

索引モデルが issue の本文から書いたものです。

説明

graphML link is used in graphics community a lot. Here is a simple conversion code that can be used in odML. This would be helpful for importing odML to graph databases natively. Here is an example conversion that can be used as a basic starting point.

"""

 odml2graphml

 Basic odML to graphML converter

 (c) 2017 German Neuroinformatics Node (G-Node)

"""

import xml.etree.ElementTree as ET
from pygraphml import Graph
from pygraphml import GraphMLParser
import uuid

# Files
base_name     = 'rg_dummy'
odml_fname    = base_name + '.odml'
graphml_fname = base_name + '.graphml'

# Read odml
tree = ET.parse(odml_fname)
root = tree.getroot()

odml_graph            = Graph()
child_id              = 0
is_terminal_node_prev = False
prev_uuid_value       = 0
prev_node             = 0
is_odml_rel_node      = 0
prev_tag              = 'odML
for elem in tree.iter(): # iter over elements
    is_terminal_node = elem.getchildren() == []
    is_odml_tag      = elem.tag in ['section', 'odML', 'property']
    if(is_odml_tag):
        uuid_value          = str(uuid.uuid4()) # generate UUID for an element
        node                = odml_graph.add_node(uuid_value)
        node["odml_entity"] = elem.tag
        node["uuid"]        = uuid_value
        child_id            = 1
        is_odml_rel_node    = 0
        if(elem.tag == "odML"):
           odml_node = node
    else:
        node[elem.tag]        = elem.text
        node["labels"]        = ":reach2Grasp"
        is_terminal_node_prev = is_terminal_node
    if(is_odml_rel_node < 1 and child_id > 0 and is_odml_tag == True and prev_tag in ['section', 'property']):
       edge = odml_graph.add_edge(prev_node, node, directed=True)
       edge = odml_graph.add_edge(odml_node, node, directed=True)
       edge['relation'] = 'child'
    if(elem.tag in ['section', 'odML']):
       is_odml_rel_node   = 1
       prev_node          = node
       prev_uuid_value    = uuid_value
       prev_tag           = elem.tag
parser = GraphMLParser()
parser.write(odml_graph, graphml_fname)

主要言語
Python
スター
25
フォーク
30
PR マージ指標
30日以内にマージされた PR はありません

コントリビューションガイド

コントリビューションガイドを開く

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

G-Node/python-odml のほかの issue

G-Node/python-odml の issue をすべて見る

似ている issue

Python の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。