Выбор правильной структуры данных enum / struct / class? - PullRequest
1 голос
/ 16 февраля 2012

Я анализирую файл, который выглядит следующим образом:

test_data = {
{
  id = '001-000505',
  cnv = {
    e9 = 0,
    i6 = 0,
  },
  rel = {
    rs10850985 = '-',
    rs38932097 = '-',
    rs5030655 = '-',
    rs10655852 = '-',
    rs28371725 = '-',
  },
  result = '*5/*5',
  gt = {
    rs31080985 = { '-', '-' },
    rs16947 = { '-', '-' },
    rs3892097 = { '-', '-' },
    rs503350655 = { '-', '-' },
    rs50530865 = { '-', '-' },
    rs5030656 = { '-', '-' },
    rs106371706 = { '-', '-' },
    rs59421388 = { '-', '-' },
    rs7693258 = { '-', '-' },
    rs28371725 = { '-', '-' },
  },
},
{
  id = '004-AATTGG',
  cnv = {
    e9 = 1,
    i6 = 1,
  },
  rel = {
    rs1080985 = '>>',
    rs3892097 = '>>',
    rs505306d55 = '>>',
    rs1065852 = '>>',
    rs2837d1725 = '>>',
  },
  result = '*1/*5',
  gt = {
    rs10830985 = { 'C', 'C' },
    rs164947 = { 'C', 'C' },
    rs3892097 = { 'G', 'G' },
    rs5030e655 = { 'T', 'T' },
    rs5030865 = { 'G', 'G' },
    rs5030656 = { 'AAG', 'AAG' },
    rs1065852 = { 'C', 'C' },
    rs28371706 = { 'C', 'C' },
    rs59421388 = { 'G', 'G' },
    rs769258 = { 'G', 'G' },
    rs28371725 = { 'G', 'G' },
  },
},
{
  id = '003-0300101',
  cnv = {
    e9 = 1,
    i6 = 1,
  },
  rel = {
    rs1080985 = '>>',
    rs3892097 = '>>',
    rs50530655 = '>>',
    rs10365852 = '>>',
    rs283271725 = '<<',
  },
  result = '*41/*5',
  gt = {
    rs1080985 = { 'C', 'C' },
    rs16947 = { 'T', 'T' },
    rs3892097 = { 'G', 'G' },
    rs5030655 = { 'T', 'T' },
    rs5030865 = { 'G', 'G' },
    rs5030656 = { 'AAG', 'AAG' },
    rs1065852 = { 'C', 'C' },
    rs28371706 = { 'C', 'C' },
    rs593421388 = { 'G', 'G' },
    rs7659258 = { 'G', 'G' },
    rs28371725 = { 'A', 'A' },
  },
},
{
  id = '007-CCAA',
  cnv = {
    e9 = 1,
    i6 = 1,
  },
  rel = {
    rs1080985 = '>>',
    rs38922097 = '>>',
    rs50350655 = '>>',
    rs1065852 = '>>',
    rs283371725 = '<<',
  },
  result = '*41/*5',
  gt = {
    rs1080985 = { 'C', 'C' },
    rs16947 = { 'T', 'T' },
    rs3892097 = { 'G', 'G' },
    rs50350655 = { 'T', 'T' },
    rs50350865 = { 'G', 'G' },
    rs5030656 = { 'AAG', 'AAG' },
    rs106235852 = { 'C', 'C' },
    rs28371706 = { 'C', 'C' },
    rs59421388 = { 'G', 'G' },
    rs769258 = { 'G', 'G' },
    rs28371725 = { 'A', 'A' },
  },
},
{
  id = '001-000105',
  cnv = {
    e9 = 1,
    i6 = 1,
  },
  rel = {
    rs1080985 = '>>',
    rs38392097 = '>>',
    rs5030655 = '>>',
    rs10565852 = '>>',
    rs283371725 = '>>',
  },
  result = '*1/*5',
  gt = {
    rs10820985 = { 'C', 'C' },
    rs16947 = { 'C', 'C' },
    rs32892097 = { 'G', 'G' },
    rs53030655 = { 'T', 'T' },
    rs50303865 = { 'G', 'G' },
    rs50530656 = { 'AAG', 'AAG' },
    rs1065852 = { 'C', 'C' },
    rs283751706 = { 'C', 'C' },
    rs59421388 = { 'G', 'G' },
    rs769258 = { 'G', 'G' },
    rs28371725 = { 'G', 'G' },
  },
},

Мне нужно проанализировать все эти данные и записать их в какую-то структуру данных.

вот что я пришелс:

 struct LuaStructure
    {
        public string id { get; set; }

        public struct cnv
        {
            public string e9 { get; set; }
            public string x9 { get; set; }
            public string i6 { get; set; }
        }
        public struct rel
        {
            public string rs1080985 { get; set; }
            public string rs3892097 { get; set; }
            public string rs5030655 { get; set; }
            public string rs1065852 { get; set; }
            public string rs28371725 { get; set; }
        }

        public string result { get; set; }

        public struct gt
        {
            public string rs1080985 { get; set; }
            public string rs16947 { get; set; }
            public string rs3892097 { get; set; }
            public string rs5030655 { get; set; }
            public string rs5030865 { get; set; }
            public string rs5030656 { get; set; }
            public string rs1065852 { get; set; }
            public string rs28371706 { get; set; }
            public string rs59421388 { get; set; }
            public string rs769258 { get; set; }
            public string rs28371725 { get; set; }
        }

    }

Я не думаю, что это правильное решение, потому что я хотел бы сказать

string somestring=LuaStructure.gt.rs1080985;

, это было бы невозможно, потому что мне нужно было бы сначала объявить;

LuaStructure somestructure = new LuaStructure;

тогда мне нужно будет сделать

LuaStructure.gt somestructuregt = new LuaStructure.gt;

Я не хочу проходить весь этот процесс

какая комбинация класса / структуры / перечисления мне нужназахватить данные, которые я хочу?

1 Ответ

1 голос
/ 16 февраля 2012

Вы не получите выгоду от этого через struct s, поскольку свойства / типы потребуют явного анализа и присваивания.Я склонен избегать этого, но вы можете выиграть от использования RegEx или базовых манипуляций со строками для преобразования вашего ввода в JSON, поскольку формат довольно близок.Таким образом, вы могли бы по крайней мере использовать существующие парсеры, чтобы справиться с тяжелой работой за вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...