예제 #1
0
        private static void LoadIndividu(string pIndividu)
        {
            Console.WriteLine("Informations sur l'individu :" + pIndividu);
            log4net.GlobalContext.Properties["iName"] = pIndividu;
            cIndividu individu = new cIndividu(pIndividu);

            foreach (cSequence item in individu.Sequences)
            {
                var groupBy = item.Reads.GroupBy(i => i.QNAME);
            }

            Console.WriteLine("Enregistrement terminé ! (" + individu.Sequences.Count + " sequences)");
        }
예제 #2
0
        private static void EnregistreFichier(string fileName, string option)
        {
            bool isAppend = false;

            LogMe("Fichier d'entrée : " + fileName);

            switch (option)
            {
            case "--append":
                isAppend = true;
                break;

            default:
                break;
            }

            //Start Chrono
            Stopwatch stopWatch = new Stopwatch();

            stopWatch.Start();

            LogMe("Traitement du fichier : " + fileName);

            cIndividu individu = new cIndividu();

            individu.LoadFromFile(fileName);

            LogMe("Enregistrement dans la base de données...");

            try
            {
                individu.Save(isAppend);
            }
            catch (Exception ex)
            {
                Log.Error("Erreur d'enregistrement de l'individu");
                Log.Error(ex);

                LogMe("Erreur d'enregistrement de l'individu");
                LogMe($"{ex.Message}");

                individu.MoveError(fileName);
            }

            stopWatch.Stop();

            // Get the elapsed time as a TimeSpan value.
            TimeSpan ts = stopWatch.Elapsed;

            // Format and display the TimeSpan value.
            string elapsedTime = String.Format("{0:00}:{1:00}:{2:00}.{3:00}",
                                               ts.Hours, ts.Minutes, ts.Seconds,
                                               ts.Milliseconds / 10);

            Process proc = Process.GetCurrentProcess();

            LogMe("RunTime " + elapsedTime);

            LogMe("L'individu '" + individu.Libelle + "' a été enregistré.");
            LogMe("Il contient " + individu.Sequences.Count + " séquences.");
            LogMe($"EXECTIME;{individu.Libelle};{elapsedTime};{individu.FileLinesCount}");
            LogMe($"MEM-PROC;{proc.PrivateMemorySize64.ToString()};{proc.TotalProcessorTime.TotalSeconds.ToString()}");

            proc.Dispose();
        }
예제 #3
0
        private void genereFile(string individu)
        {
            cIndividu     oIndividu      = new cIndividu(individu);
            List <string> output         = new List <string>();
            string        idChar         = ConfigurationManager.AppSettings["CharIdentificationLigne"];
            int           unknownAmorces = 0;

            LogMe($"Individu chargé");

            foreach (cSequence item in oIndividu.Sequences)
            {
                var reads = item.Reads.GroupBy(i => i.QNAME);
                foreach (var read in reads)
                {
                    if (read.Count() != 2)
                    {
                        LogMe($"WARNING : Il y a plus de deux reads");
                        LogMe($"QNAME : {read.Key}");
                        LogMe($"Sequence : {item.RNAME}");
                    }
                    else
                    {
                        try
                        {
                            foreach (cSequenceRead sequenceRead in read)
                            {
                                cAmorceInfo amorceInfo = new cAmorceInfo
                                {
                                    RNAME = item.RNAME,
                                    FLAG  = sequenceRead.FLAG,
                                    POS   = sequenceRead.POS
                                };

                                sequenceRead.SEQ = amorceInfo.truncateSequence(sequenceRead);
                            }

                            var retour = cSequenceRead.ContigeSequence(read.ToList());
                            var fRead  = read.FirstOrDefault();
                            if (fRead != null)
                            {
                                fRead.GestionAmorces(item.RNAME);
                                output.Add(idChar + read.Key + "|" + fRead.Amorce.NAME);
                                output.Add(retour);
                                output.Add(string.Empty);
                            }
                        }
                        catch (ApplicationException ex)
                        {
                            unknownAmorces++;
                        }
                        catch (Exception ex)
                        {
                            LogMe(ex.Message);
                        }
                    }
                }
            }

            LogMe($"{unknownAmorces} amorces inconnue(s)");

            writeFile(individu, output.ToArray());
        }