public Boolean cargarArchivo() { logger.EscribirLog("Cargamos la información de Metada de PharmaGKB", Logger.Tipo.Informativo, false); logger.EscribirLog("Chequeamos si existe el archivo " + filePath, Logger.Tipo.Informativo, false); if (!File.Exists(filePath)) { logger.EscribirLog("No existe el archivo " + filePath, Logger.Tipo.Informativo, false); return(false); } foreach (string CMAMetadata in File.ReadAllLines(filePath)) { string[] varsa = CMAMetadata.Split('\t'); int ClinicalAnnotationID = 0; if (int.TryParse(varsa[0], out ClinicalAnnotationID)) { CAMetaData cAMeta = new CAMetaData(); cAMeta.ClinicalAnnotationID = ClinicalAnnotationID; String[] location = varsa[1].Split(','); foreach (String s in location) { if (s.Contains("\"")) { cAMeta.Location.Add(s.Split('"')[1]); } else { cAMeta.Location.Add(s); } } String[] GenId = varsa[2].Split(','); foreach (String s in GenId) { if (s.Contains("\"")) { string genid = s; if (s.Contains("(")) { genid = s.Split('"')[1].Split('(')[1].Split(')')[0]; } cAMeta.GeneId.Add(genid); cAMeta.Gen.Add(GenController.Instance.getByID(genid)); } else { string genid = s; if (s.Contains("(")) { genid = s.Split('(')[1].Split(')')[0]; } cAMeta.GeneId.Add(genid); cAMeta.Gen.Add(GenController.Instance.getByID(genid)); } } cAMeta.LevelofEvidence = varsa[3]; cAMeta.ClinicalAnnotationTypes = varsa[4]; String[] GenotipoID = varsa[5].Split(','); foreach (String s in GenotipoID) { if (s.Contains("\"")) { cAMeta.GenotypePhenotypeIDs.Add(int.Parse(s.Split('"')[1])); Genotipo genotipo = GenotipoController.Instance.getById(int.Parse(s.Split('"')[1])); if (genotipo != null) { cAMeta.Genotipos.Add(genotipo); } Phenotype phenotype = PhenotypesController.Instance.getById(s.Split('"')[1]); if (phenotype != null) { cAMeta.Phenotypes.Add(phenotype); } } else { cAMeta.GenotypePhenotypeIDs.Add(int.Parse(s)); Genotipo genotipo = GenotipoController.Instance.getById(int.Parse(s)); if (genotipo != null) { cAMeta.Genotipos.Add(genotipo); } Phenotype phenotype = PhenotypesController.Instance.getById(s); if (phenotype != null) { cAMeta.Phenotypes.Add(phenotype); } } } cAMeta.AnnotationText = varsa[6]; String[] Anotaciones = varsa[7].Split(','); foreach (String s in Anotaciones) { if (s.Contains("\"")) { cAMeta.VariantAnnotationsIDs.Add(int.Parse(s.Split('"')[1])); cAMeta.Anotaciones.Add(AnotacionesController.Instance.getById(int.Parse(s.Split('"')[1]))); } else { cAMeta.GeneId.Add(s); cAMeta.Gen.Add(GenController.Instance.getByID(s)); } } cAMeta.VariantAnnotations = varsa[8]; String[] pmids = varsa[9].Split(';'); foreach (String s in pmids) { if (s.Contains("\"")) { cAMeta.PMIDs.Add(int.Parse(s.Split(',')[1])); } else { cAMeta.PMIDs.Add(int.Parse(s)); } } cAMeta.EvidenceCount = int.Parse(varsa[10]); string[] relatedchemicals = varsa[11].Split(','); foreach (string s in relatedchemicals) { if (s != "") { if (s.Contains("\"")) { cAMeta.RelatedChemicalsId.Add(s.Split('"')[1]); cAMeta.chemicals.Add(ChemicalsController.Instance.getById(s.Split('"')[1])); } else { cAMeta.RelatedChemicalsId.Add(s); cAMeta.chemicals.Add(ChemicalsController.Instance.getById(s)); } } } string[] relatedDiseases = varsa[12].Split('"'); foreach (string s in relatedDiseases) { if (s != "" && s != ",") { if (s.Contains("\"")) { if (s.Contains("(")) { string PhenotypeID = s.Split('"')[0].Split('(')[1].Split(')')[0]; cAMeta.RelatedDiseasesId.Add(PhenotypeID); cAMeta.Phenotypes.Add(PhenotypesController.Instance.getById(PhenotypeID)); } else { cAMeta.Phenotypes.Add(PhenotypesController.Instance.getById(s.Split('"')[1])); } } else { string PhenotypeID = string.Empty; string[] lista = s.Split('('); foreach (string auxs in lista) { if (auxs.StartsWith("PA")) { PhenotypeID = auxs.Split(')')[0]; } } cAMeta.RelatedDiseasesId.Add(PhenotypeID); Phenotype ph = PhenotypesController.Instance.getById(PhenotypeID); if (ph != null) { cAMeta.Phenotypes.Add(ph); } else { Console.WriteLine("Tuvimos problemas con {0}" + s); } } } } cAMeta.BiogeographicalGroups = varsa[13]; cAMeta.Chromosome = varsa[14]; CAMetaDatas.Add(cAMeta); } } logger.EscribirLog("Cargamos " + CAMetaDatas.Count + " Metadatas", Logger.Tipo.Informativo, true); return(true); }