odML to graphML converter.

Đang mở
#175 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Chưa có ai nhận issue này.

Đánh giá

Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức phù hợp với người mới
35/100
Loại issue
Tính năng
Độ rõ ràng
Khá rõ ràng
Mức độ hoạt động
Đình trệ
Công nghệ
python
Lĩnh vực
databases

Hướng nghiên cứu

Không có tệp hoặc bài kiểm thử nào trong repository được nêu tên. Hãy bắt đầu với ví dụ Python được nhúng và kiểm tra cách việc chuyển đổi odML được cung cấp trong repository này, bao gồm các điểm vào ET.parse, Graph và GraphMLParser. Công việc được xem là hoàn tất khi một trình chuyển đổi odML sang GraphML được hỗ trợ đã được tích hợp và có thể sử dụng để nhập vào cơ sở dữ liệu đồ thị.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

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)

Ngôn ngữ chính
Python
Star
25
Fork
30
Chỉ số merge pull request
Không có pull request nào được merge trong 30 ngày

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của G-Node/python-odml

Tất cả issue của G-Node/python-odml

Issue tương tự

Thêm issue về Python

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.