2011-07-07 40 views
5

Hiện tại, tôi đang thiết kế một số công cụ chuyển đổi định dạng trong lĩnh vực glycobiology. Việc chuyển đổi định dạng liên quan đến việc chuyển từ một tệp văn bản sang tệp XML là tiêu chuẩn trong trường. Hầu hết thời gian, dữ liệu chúng tôi nhận được chứa thông tin quan tâm trong một tệp văn bản thuần túy như dưới đây. Các tập tin thực tế có tất cả điều này trong một dòng. Đọc và tách văn bản này để lấy thông tin là tầm thường (có lẽ không trực quan) nhưng XML là nơi mà vấn đề là.Trích xuất thông tin từ Văn bản thuần tuý và Viết sang XML Sử dụng DOM

[][b-D-GlcpNAc] 
    {[(4+1)][b-D-GlcpNAc] 
     {[(4+1)][b-D-Manp] 
      {[(3+1)][a-D-Manp] 
       {[(2+1)][a-D-Manp]{} 
      } 
     [(6+1)][a-D-Manp] 
      {[(3+1)][a-D-Manp]{} 
      [(6+1)][a-D-Manp]{} 
     } 
    } 
} 

Làm thế nào để giải thích điều này:

  1. Tất cả mọi thứ có dạng w-w-w + là một loại đường được liên kết với nhau. Liên kết được hiển thị bằng dấu {.
  2. 4 + 1, 3 + 1 và cứ như vậy cho biết liên kết cacbon nào trên một đường đến đường khác. Vì vậy, carbon thứ 4 trên một trước đó liên kết với carbon đầu tiên trên một trong những thành công.
  3. {} Điều này cho biết không có đường bổ sung nào được liên kết với đường đó
  4. } cuộn chỉ đóng cấp đó.

Bạn có thể đọc XML và tìm hiểu cách liên kết hoạt động. Nhưng nếu các bạn thích giải thích chi tiết hơn, chỉ cần hỏi.

Loại XML sẽ trông như thế nào được hiển thị bên dưới.

<?xml version="1.0" encoding="UTF-8"?> 
<GlydeII> 
    <molecule subtype="glycan" id="From_GlycoCT_Translation"> 
      <residue subtype="base_type" partid="1" ref="http://www.monosaccharideDB.org/GLYDE-II.jsp?G=b-dglc-HEX-1:5" /> 
      <residue subtype="substituent" partid="2" ref="http://www.monosaccharideDB.org/GLYDE-II.jsp?G=n-acetyl" /> 
      <residue subtype="base_type" partid="3" ref="http://www.monosaccharideDB.org/GLYDE-II.jsp?G=b-dglc-HEX-1:5" /> 
      <residue subtype="substituent" partid="4" ref="http://www.monosaccharideDB.org/GLYDE-II.jsp?G=n-acetyl" /> 
      <residue subtype="base_type" partid="5" ref="http://www.monosaccharideDB.org/GLYDE-II.jsp?G=b-dman-HEX-1:5" /> 
      <residue subtype="base_type" partid="6" ref="http://www.monosaccharideDB.org/GLYDE-II.jsp?G=a-dman-HEX-1:5" /> 
      <residue subtype="base_type" partid="7" ref="http://www.monosaccharideDB.org/GLYDE-II.jsp?G=a-dman-HEX-1:5" /> 
      <residue subtype="base_type" partid="8" ref="http://www.monosaccharideDB.org/GLYDE-II.jsp?G=a-dman-HEX-1:5" /> 
      <residue subtype="base_type" partid="9" ref="http://www.monosaccharideDB.org/GLYDE-II.jsp?G=a-dman-HEX-1:5" /> 
      <residue subtype="base_type" partid="10" ref="http://www.monosaccharideDB.org/GLYDE-II.jsp?G=a-dman-HEX-1:5" /> 
      <residue_link from="2" to="1"> 
       <atom_link from="N1H" to="C2" to_replace="O2" bond_order="1" /> 
      </residue_link> 
      <residue_link from="3" to="1"> 
       <atom_link from="C1" to="O4" from_replace="O1" bond_order="1" /> 
      </residue_link> 
      <residue_link from="4" to="3"> 
       <atom_link from="N1H" to="C2" to_replace="O2" bond_order="1" /> 
      </residue_link> 
      <residue_link from="5" to="3"> 
       <atom_link from="C1" to="O4" from_replace="O1" bond_order="1" /> 
      </residue_link> 
      <residue_link from="6" to="5"> 
       <atom_link from="C1" to="O3" from_replace="O1" bond_order="1" /> 
      </residue_link> 
      <residue_link from="7" to="6"> 
       <atom_link from="C1" to="O2" from_replace="O1" bond_order="1" /> 
      </residue_link> 
      <residue_link from="8" to="5"> 
       <atom_link from="C1" to="O6" from_replace="O1" bond_order="1" /> 
      </residue_link> 
      <residue_link from="9" to="8"> 
       <atom_link from="C1" to="O3" from_replace="O1" bond_order="1" /> 
      </residue_link> 
      <residue_link from="10" to="8"> 
       <atom_link from="C1" to="O6" from_replace="O1" bond_order="1" /> 
      </residue_link> 
    </molecule> 
</GlydeII> 

Cho đến giờ tôi đã có thể nhận được tất cả các trường dư lượng và ghi chúng vào XML. Nhưng tôi đang gặp rắc rối ngay cả khi viết mã giả cho các trường residue_link. Ngay cả khi tôi chỉ có thể nhận được sự giúp đỡ và ý tưởng về làm thế nào để đi về việc thêm các thông tin liên kết trong xml tôi sẽ đánh giá cao nó.

+0

Tôi nghĩ bạn đang thiếu dấu ngoặc nhọn. Bạn có thể sử dụng định dạng mã, dòng mới và thụt đầu dòng để có giải thích trực quan tốt hơn về văn bản nguồn không? – Udi

+0

[] hiện những gì đứng cho? – Udi

+0

Chắc chắn, tôi xin lỗi vì đau mắt. – arkestra

Trả lời

1

OK! Vấn đề mát mẻ, nó làm tổn thương não của tôi một cách tốt đẹp.

Đầu tiên ... cho sự tỉnh táo của tôi, tôi tab dữ liệu thô của bạn thành một cách có ý nghĩa:

[][b-D-GlcpNAc] { 
    [(4+1)][b-D-GlcpNAc] { 
     [(4+1)][b-D-Manp] { 
      [(3+1)][a-D-Manp] { 
       [(2+1)][a-D-Manp] { } 
      } 
      [(6+1)][a-D-Manp] { 
       [(3+1)][a-D-Manp] { } 
       [(6+1)][a-D-Manp] { } 
      } 
     } 
    } 

Tôi nghĩ rằng chìa khóa để này là tìm hiểu những gì các cặp đang có, và bạn muốn lập trình tìm hiểu xem bạn đang ở cấp độ nào.

Mã giả:

hierarchy = 0 
nextChar = getNextChar() 
while (Parsing): 
    if (nextChar = "{"): 
     hierarchy += 1 
    elif (nextChar = "}"): 
     hierarchy -= 1 
    if (nextChar = "["): 
     storeSugar(hierarchy) 

Bạn cũng sẽ muốn theo dõi trong đó đường là trước "cha mẹ" đường.

+0

hm ... vì vậy tôi có một cái gì đó như thế này thiết lập. Hãy để tôi suy nghĩ thêm về đề xuất của bạn. Tôi sẽ có thể tìm ra cách để thực hiện điều này. Cảm ơn bạn. – arkestra

Các vấn đề liên quan