Esempio n. 1
0
 void OutputStrands(int resultNumber, SequenceDesignContext context, PrettyPrintContext pp, List<Strand> strands, long iteration)
     {
     List<string> prints = strands.ConvertAll<string>(s => pp.Cloned().PrettyPrint(BuiltIns.orient(s, Strand.Direction.FiveToThree)));
     //
     pp.NewLine();
     string strStrandsCaption   = context.Designer==null 
         ? $"#{resultNumber}: Strands:"
         : $"#{resultNumber}: Strands: score={context.ScaleScoreFormatted(context.Scoring.designScoreCur.Score)} iter={iteration:N0}";
     string strStrandsUnderline = new string('-', strStrandsCaption.Length);
     pp.AppendLine(strStrandsCaption);
     pp.AppendLine(strStrandsUnderline);
     pp.Indent();
     //
     AutoWidthTable formatter = new AutoWidthTable();
     List<string> formats = new List<string>();
     formatter.AddColumn(strands, s => s.DisplayName);                   formats.Add("{0}");
     formatter.AddColumn(strands, s => s.Length);                      formats.Add(" len={0}");
     if (context.Designer !=null)
         {
         formatter.AddColumn(strands, s => context.ScaleScoreFormatted(s.DesignScore)); formats.Add(" score={0}");
         formatter.AddColumn(strands, s => true 
             ? String.Format("{1}{0:F1}", (s.MeltInfo as IMeltInfo).TempCelsiusCur, (s.MeltInfo.hasGoal ? ":" : "="))
             : "=n/a"); 
         formats.Add(" Tm{0}");
         }
     formatter.AddColumn(prints, p => p);                                formats.Add(" {0}");
     // formatter.AddColumn(strands, s => s.ChunckedNucleotidesWithDecorations);   formats.Add(" {0}");
     formatter.FormatTo(pp, formats.ToArray());
     //
     if (context.Designer != null)
         {
         pp.NewLine();
         formatter = new AutoWidthTable();
         formats = new List<string>();
         formatter.AddColumn(strands, s => $"{s.DisplayName}.seed="); formats.Add("{0}");
         formatter.AddColumn(strands, s => $"\"{s.ChunckedNucleotidesWithDecorations}\";"); formats.Add("{0}");
         formatter.FormatTo(pp, formats.ToArray());
         }
     //
     pp.Outdent();
     }        
Esempio n. 2
0
 void OutputDomains(SequenceDesignContext context, PrettyPrintContext pp, Model m)
     {
     List<Domain> domains = new List<Domain>();
     domains.AddRange(m.AllDomains().Distinct<Domain>(new ChemicalEqualitor<Domain>()).Where<Domain>(d => (d.Length > 0)));
     domains.Sort((x,y) => x.FullDisplayName.CompareTo(y.FullDisplayName));
     //
     pp.NewLine();
     string strDomainsCaption   = context.Designer==null ? "Domains" : "Domains (nucleotides as in #1 below)";
     string strDoaminsUnderline = new string('-', strDomainsCaption.Length);
     pp.AppendLine(strDomainsCaption);
     pp.AppendLine(strDoaminsUnderline);
     pp.Indent();
     //
     AutoWidthTable formatter = new AutoWidthTable();
     List<string> formats = new List<string>();
     formatter.AddColumn(domains, d => d.FullDisplayName);       formats.Add("{0}");
     formatter.AddColumn(domains, d => d.Id);                    formats.Add(" id={0}");
     formatter.AddColumn(domains, d => d.Length);                formats.Add(" len={0}");
     if (context.Designer != null)
         {
         formatter.AddColumn(domains, d => 
             {
             double tm = ThermodynamicsData.ComputeThermodynamics(context.Designer.ExperimentalConfiguration, d.Nucleotides, 0).MeltTempCelsius;
             return tm > 0 ? $"{tm:F1}" : "n/a";
             });
         formats.Add(" Tm={0}");
         }
     formatter.AddColumn(domains, d => d.ChunkedNucleotides);    formats.Add(" {0}");
     formatter.FormatTo(pp, formats.ToArray());
     //
     pp.Outdent();
     }