private static string FormatSampleGenotype(SnpResult snp, List<string> alleles, string reference) { string[] variants = snp.Genotype.ToArray().Select(x => x.ToString()).ToArray(); List<string> map = new List<string>(); foreach (var variant in variants) { if (snp.RSID == "rs397515963") { if (variant == "-") { map.Add("0"); } else { map.Add("1"); } } else { if (variant == reference) { map.Add("0"); } else { map.Add((alleles.IndexOf(variant) + 1).ToString()); } } } return string.Join("|", map); }
public override void LoadData(string filePath) { string[] data = File.ReadAllLines(filePath); foreach (var dataLine in data.Skip(1)) { var patientRepo = new PatientRepository(); var sourceRepo = new SourceRepository(); var entityRepo = new EntityRepository(); var fields = dataLine.Split(Delimiter); var patient = patientRepo.AddPatient(fields[0], fields[1], fields[2], fields[3], DateTime.Parse(fields[4])); var resultedOn = DateTime.Parse(fields[5]); var lab = fields[6]; var snps = new List<SnpResult>(); for (int fieldIndex = 7; fieldIndex < 135; fieldIndex += 4) { var snp = new SnpResult() { RSID = fields[fieldIndex], Chromosome = fields[fieldIndex + 1], Position = int.Parse(fields[fieldIndex + 2]), Genotype = fields[fieldIndex + 3], ReferenceBase = referenceBases[fields[fieldIndex]] }; snps.Add(snp); } var source = sourceRepo.AddSource(lab, string.Empty); var file = AddResultFile(filePath, source); entityRepo.AddSnps(file, patient, resultedOn, snps); } }
static string GetVariant(SnpResult snp) { char[] variant = snp.Genotype.ToCharArray(); if (variant[0] != variant[1]) { return string.Format("Variant_seq={0},{1};Variant_reads=10,10;Genotype=heterozygous", variant[0], variant[1]); } else { return string.Format("Variant_seq={0};Variant_reads=10;Genotype=homozygous", variant[0]); } }
static void Main(string[] args) { // Read in our list of patients and their corresponding randomization variables var data = File.ReadAllLines(ConfigurationManager.AppSettings["GVFList"]); foreach (var dataLine in data.Skip(1)) { var fields = dataLine.Split(Delimiter); var dataRow = new DataRow() { MRN = fields[0], MRNSource = fields[1], FirstName = fields[2], LastName = fields[3], DOB = DateTime.Parse(fields[4]), ResultedOn = DateTime.Parse(fields[5]), Lab = fields[6], SNPs = new List<SnpResult>() }; for (int fieldIndex = 7; fieldIndex < 135; fieldIndex += 4) { var snp = new SnpResult() { RSID = fields[fieldIndex], Chromosome = fields[fieldIndex + 1], Position = int.Parse(fields[fieldIndex + 2]), Genotype = fields[fieldIndex + 3] }; dataRow.SNPs.Add(snp); } GenerateGVF(dataRow); } }
static List<string> GetVariants(SnpResult snp, string reference) { string[] variants = snp.Genotype.ToArray().Select(x => x.ToString()).ToArray(); List<string> results = new List<string>(); foreach (var variant in variants) { // Special handling for the insertion SNP if (snp.RSID == "rs397515963") { if (variant != "-" && !results.Contains("GG")) { results.Add("GG"); } } else if (variant != reference && !results.Contains(variant)) { results.Add(variant); } } return results; }