Example #1
0
        public AmericanGut(FileInfo file)
        {
            SampleId = file.Name;
            char[] sep1 = { '\t' };
            char[] sep2 = { ';' };
            _dataTable = DataInterfaces.GetTaxNameRankDataTable();
            var lines = File.ReadAllLines(file.FullName);

            //First line is the header
            for (var i = 1; i < lines.Length; i++)
            {
                if (!string.IsNullOrWhiteSpace(lines[i]))
                {
                    var parts1 = lines[i].Split(sep1, StringSplitOptions.RemoveEmptyEntries);
                    if (parts1.Length == 2)
                    {
                        var    rank  = "no rank";
                        var    name  = "";
                        double count = 0.0;
                        double.TryParse(parts1[1], out count);
                        count = count * 1000000;
                        var parts2 = parts1[0].Split(sep2, StringSplitOptions.RemoveEmptyEntries);
                        // We start with the last one and walk back.
                        for (var j = parts2.Length - 1; j > 0; j--)
                        {
                            var part = parts2[j];
                            if (part.Length > 5) //elimate empty ones, i.e. ;g__ with nothing
                            {
                                switch (part.Substring(0, 1))
                                {
                                case "k": rank = "kingdom"; break;

                                case "p": rank = "phylum"; break;

                                case "c": rank = "class"; break;

                                case "o": rank = "order"; break;

                                case "f": rank = "family"; break;

                                case "g": rank = "genus"; break;

                                case "s": rank = "species"; break;
                                }
                                name = part.Substring(3);
                                break;
                            }
                        }
                        if (name.Length > 3)
                        {
                            var row = _dataTable.NewRow();
                            row["tax_rank"]       = rank;
                            row["tax_name"]       = name;
                            row["BaseOneMillion"] = count;
                            _dataTable.Rows.Add(row);
                        }
                    }
                }
            }
        }
Example #2
0
        public Thryve(FileInfo ubiomeFile)
        {
            char[] sep   = { ',' };
            var    lines = File.ReadAllLines(ubiomeFile.FullName);

            _dataTable = DataInterfaces.GetTaxonDataTable();
            for (var i = 1; i < lines.Length; i++)
            {
                if (string.IsNullOrWhiteSpace(lines[i]))
                {
                    var parts = lines[i].Split(sep, StringSplitOptions.None);
                    int count = 0;
                    int.TryParse(parts[parts.Length - 1], out count);
                    var row = _dataTable.NewRow();
                    row["taxon"] = parts[0];
                    row["taxonBaseOneMillion"] = (double)count;
                    row["count"] = count;
                    _dataTable.Rows.Add(row);
                }
            }
            SampleId = Guid.NewGuid().ToString();;
            DateTime sampleDate = DateTime.UtcNow;

            SampleDateTime = sampleDate;
        }
Example #3
0
        public static void ComputeAllLabs(int quantiles)
        {
            var labTests = DataInterfaces.GetLabTests();

            foreach (DataRow row in labTests.Rows)
            {
                ComputeOneLab((int)row["LabTestId"], quantiles);
            }
        }
Example #4
0
        static void Main(string[] args)
        {
            DataInterfaces.ConnectionString = "Server=LAPTOP-BQ764BQT;Database=MicrobiomeV2;Trusted_Connection=True; Connection Timeout=1000";
            var export = DataInterfaces.GetFlatTaxonomy("species").ToCsvString();

            File.WriteAllLines("DataScience_Taxon.csv", DataInterfaces.GetFlatTaxonomy("species").ToCsvString());
            File.WriteAllLines("DataScience_Continuous.csv", DataInterfaces.GetFlatContinuous( ).ToCsvString());
            File.WriteAllLines("DataScience_Category.csv", DataInterfaces.GetFlatCategory().ToCsvString());
            File.WriteAllLines("DataScience_LabReport.csv", DataInterfaces.GetLabReport().ToCsvString());
        }
Example #5
0
        static void Main(string[] args)
        {
            DataInterfaces.ConnectionString = "Server=LAPTOP-BQ764BQT;Database=MicrobiomeV2;Trusted_Connection=True; Connection Timeout=1000";
            var data   = DataInterfaces.GetNonParametricCategoryDataSet(1, 1, "Q4_", 20);
            var matrix = MicrobiomeLibrary.Statistics.NonParametric.CategoricSignficance(data);

            if (matrix.Rows.Count > 0) //Only write when we have data
            {
                matrix.WriteXml("Matrix.xml");
            }
        }
Example #6
0
        public static void ComputeFull()
        {
            var labTests = DataInterfaces.GetLabTests();

            foreach (DataRow row in labTests.Rows)
            {
                for (var q = 3; q < 20; q++)
                {
                    if (!ComputeOneLab((int)row["LabTestId"], q))
                    {
                        break;
                    }
                }
            }
        }
Example #7
0
        static void Main(string[] args)
        {
            DataInterfaces.ConnectionString = "Server=LAPTOP-BQ764BQT;Database=OnlineClone;Trusted_Connection=True; Connection Timeout=1000";
            var exportFile = new FileInfo("data\\Biome2Data.xml");
            var schemaFile = new FileInfo("data\\Biome2Schema.xml");

            if (!(exportFile.Exists && schemaFile.Exists))
            {
                throw new Exception($"Data file does not exits {exportFile.FullName} or schema {schemaFile.FullName}");
            }
            var import = new DataSet();

            import.ReadXmlSchema(schemaFile.FullName);
            import.ReadXml(exportFile.FullName);
            DataInterfaces.Import(import);
            LabTests.ComputeFull();
        }
Example #8
0
        static void Main(string[] args)
        {
            var exportName = "some site";
            var filename   = "MyExport";

            if (args.Length > 0)
            {
                exportName = args[0];
            }
            if (args.Length > 1)
            {
                filename = args[1];
            }
            DataInterfaces.ConnectionString = "Server=LAPTOP-BQ764BQT;Database=MicrobiomeV2;Trusted_Connection=True; Connection Timeout=1000";
            var schemaFile = new FileInfo($"{filename}Schema.xml");
            var exportFile = new FileInfo($"{filename}.xml");
            var export     = DataInterfaces.Export(exportName);

            export.WriteXmlSchema(schemaFile.FullName);
            export.WriteXml(exportFile.FullName);
        }
Example #9
0
        public static bool ComputeOneLab(int labTestId, int quantiles)
        {
            var dataTable   = DataInterfaces.GetTaxonReports(labTestId);
            var statistics  = new CoreStatistics(quantiles);
            int activeTaxon = -1;
            var values      = new List <double>();

            foreach (DataRow row in dataTable.Rows)
            {
                var id = (int)row["taxon"];
                if (activeTaxon < 0)
                {
                    activeTaxon = id;
                }
                if (activeTaxon != id)
                {
                    if (values.Count > 0 && activeTaxon > 0)
                    {
                        if (values.Count >= quantiles * MinCountInQuantile)
                        {
                            statistics.ProcessATaxon(activeTaxon, values.ToArray());
                        }
                        values.Clear();
                        activeTaxon = (int)row["taxon"];
                    }
                }
                values.Add((double)row["value"]);
            }
            // get the last taxon processed
            if (values.Count >= quantiles * MinCountInQuantile)
            {
                statistics.ProcessATaxon(activeTaxon, values.ToArray());
            }

            DataInterfaces.UpdateStatistics(statistics.StatsDatatable, labTestId);
            return(statistics.StatsDatatable.Rows.Count > 5);
        }
Example #10
0
        public Ubiome(FileInfo ubiomeFile)
        {
            var filestream = new System.IO.FileStream(ubiomeFile.FullName,
                                                      System.IO.FileMode.Open,
                                                      System.IO.FileAccess.Read);
            var file = new System.IO.StreamReader(filestream, System.Text.Encoding.UTF8, true, 128);
            var json = JsonConvert.DeserializeObject <UbiomeHeaders>(file.ReadToEnd());

            _dataTable = DataInterfaces.GetTaxonDataTable();
            foreach (var count in json.UbiomeBacteriacounts)
            {
                var row = _dataTable.NewRow();
                row["taxon"] = count.Taxon;
                row["taxonBaseOneMillion"] = (double)count.CountNorm;
                row["count"]      = count.Count;
                row["count_norm"] = count.CountNorm;
                _dataTable.Rows.Add(row);
            }
            SampleId = json.SequencingRevision.ToString();
            DateTime sampleDate = DateTime.UtcNow;

            DateTime.TryParse(json.SamplingTime, out sampleDate);
            SampleDateTime = sampleDate;
        }
Example #11
0
 public int SaveToDatabase(string ownerEmail)
 {
     return(DataInterfaces.Savedata(ownerEmail, LabName, LabTestName, SampleId, SampleDateTime, _dataTable));
 }
Example #12
0
        public XenoGene(FileInfo file)
        {
            _dataTable     = DataInterfaces.GetTaxNameRankDataTable();
            SampleDateTime = DateTime.UtcNow;
            char[] lineSep           = { '\r', '\n' };
            char[] sep               = { ' ' };
            var    txt               = ReadPdfFile(file.FullName);
            var    lines             = txt.Split(lineSep, StringSplitOptions.RemoveEmptyEntries);
            string appliesToNextLine = "";
            int    lineNo            = 0;
            double amount            = 0.0;

            foreach (var line in lines)
            {
                var    skip = false;
                string rank = "";
                string name = "";
                if (line.IndexOf("ORDEN", StringComparison.OrdinalIgnoreCase) == 0)
                {
                    skip = true;
                }
                if (line.IndexOf("INFO", StringComparison.OrdinalIgnoreCase) == 0)
                {
                    skip = true;
                }
                if (line.IndexOf("REPORT", StringComparison.OrdinalIgnoreCase) == 0)
                {
                    skip = true;
                }
                if (line.IndexOf("Xeno", StringComparison.OrdinalIgnoreCase) == 0)
                {
                    skip = true;
                }

                if (line.IndexOf("Inscrita", StringComparison.OrdinalIgnoreCase) == 0)
                {
                    skip = true;
                }
                if (line.IndexOf("Pág", StringComparison.OrdinalIgnoreCase) == 0)
                {
                    skip = true;
                }
                if (!skip)
                {
                    var firstSpace = line.IndexOf(" ");
                    var firstComma = line.IndexOf(",");
                    var lineNoTest = firstSpace < 0 ? "na" : line.Substring(0, firstSpace);
                    if (int.TryParse(lineNoTest, out lineNo))
                    {
                        //If missing no number
                        if (firstComma < 0)
                        {
                            name = line;
                        }
                        else
                        {
                            var parts    = line.Split(sep, StringSplitOptions.RemoveEmptyEntries);
                            var lastItem = parts[parts.Length - 1];
                            if (lastItem.Contains(",")) //european number
                            {
                                lastItem = lastItem.Replace(",", ".");
                                if (double.TryParse(lastItem, out amount))
                                {
                                    amount = amount * 10000.0; //permission
                                    switch (parts[2])
                                    {
                                    case "G": rank = "genus"; break;

                                    case "G1": rank = "genus"; break;

                                    case "G2": rank = "genus"; break;

                                    case "C": rank = "class"; break;

                                    case "C1": rank = "class"; break;

                                    case "C2": rank = "class"; break;

                                    case "F": rank = "family"; break;

                                    case "S": rank = "species"; break;

                                    case "S1": rank = "strain"; break;

                                    case "S2": rank = "strain"; break;

                                    case "S3": rank = "strain"; break;

                                    case "O": rank = "Order"; break;

                                    case "F1": rank = "no rank"; break;

                                    case "F2": rank = "no rank"; break;

                                    case "F3": rank = "no rank"; break;

                                    case "O1": rank = "no rank"; break;

                                    case "O2": rank = "no rank"; break;

                                    case "O3": rank = "no rank"; break;

                                    case "P1": rank = "no rank"; break;

                                    case "D1": rank = "skip"; break;

                                    case "D2": rank = "skip"; break;

                                    case "D3": rank = "skip"; break;

                                    case "U": rank = "skip"; break;

                                    case "R": rank = "skip"; break;

                                    case "R1": rank = "skip"; break;

                                    case "P": rank = "phylum"; break;

                                    default:
                                        rank = "skip";
                                        Console.WriteLine($"Unknown {parts[2]}");
                                        break;
                                    }
                                    if (parts.Length > 4)
                                    {
                                        var sb = new StringBuilder(parts[3]);
                                        for (var p = 4; p < parts.Length - 1; p++)
                                        {
                                            sb.Append($" {parts[p]}");
                                        }
                                        name = sb.ToString();
                                    }

                                    if (!rank.Equals("skip", StringComparison.OrdinalIgnoreCase) && amount > 0.0 && !string.IsNullOrWhiteSpace(name))
                                    {
                                        Console.WriteLine(name);
                                        var row = _dataTable.NewRow();
                                        row["tax_rank"]       = rank;
                                        row["tax_name"]       = name;
                                        row["BaseOneMillion"] = amount;
                                        _dataTable.Rows.Add(row);
                                    }
                                }
                            }
                        }
                    }
                    else
                    {
                        appliesToNextLine = line;
                    }
                }
            }
            SampleId = file.Name;
        }