示例#1
0
文件: Motif.cs 项目: EmineTopcu/PeSA
        /// <summary>
        /// returns the key AA based on the key position
        /// if WildTYpePeptide is set, it returns the aa of wildtype corresponding to that position
        /// Otherwise it brings the most frequenet amino acid in the positive columns or frequencies
        /// </summary>
        /// <param name="keyPosition"></param>
        /// 0-indexed
        /// <returns></returns>
        public char GetKeyChar(int keyPosition)
        {
            char keyAA = ' ';

            if (keyPosition >= 0)
            {
                if (string.IsNullOrEmpty(WildTypePeptide))
                {
                    if (PositiveColumns != null && keyPosition < PositiveColumns.Count())//OPAL - wieght based motif with no wildtypepeptide
                    {
                        keyAA = PositiveColumns[keyPosition].
                                OrderByDescending(kv => kv.Value).Select(kv => kv.Key).FirstOrDefault();
                    }
                    else if (Frequencies != null && keyPosition < Frequencies.Count())//frequency based peptide array, peptide list
                    {
                        keyAA = Frequencies[keyPosition].OrderByDescending(kv => kv.Value).Select(kv => kv.Key).FirstOrDefault();
                    }
                }
                else if (keyPosition < WildTypePeptide.Length)
                {
                    keyAA = WildTypePeptide[keyPosition];
                }
            }
            return(keyAA);
        }
示例#2
0
文件: Motif.cs 项目: EmineTopcu/PeSA
 public Bitmap GetFrequencyMotif(int widthImage, int heightImage)
 {
     if (Frequencies == null || Frequencies.Count() == 0)
     {
         return(null);
     }
     return(Render(Frequencies, widthImage, heightImage, defColor: null));
 }
示例#3
0
 public void test_create_frequency_object_from_text()
 {
     var text = TextExamples.emma();
       var freq = new Frequencies<string>();
       foreach (var token in Regex.Split(text, @"(\W+)"))
       {
     freq.Add(token);
       }
       Assert.AreEqual(freq.Count(), 2227);
       Assert.AreEqual(freq.Get("and"), 47.0);
       Assert.AreEqual(freq.Terms().Count(), 479);
 }
示例#4
0
        /// <summary>
        /// Plays the note using the current <see cref="IPlayer"/> for <see cref="Duration"/>ms
        /// </summary>
        public void PlayNote()
        {
            if (DesiredOctave > Frequencies.Count() - 1)
            {
                var error = new ArgumentException($"{DesiredOctave} is too high of an Octave to play {Key}", nameof(DesiredOctave));
                Error?.Invoke(this, error);
            }
            else
            {
                try
                {
                    string[] desiredChord = null;
                    switch (ChordType)
                    {
                    case ChordType.Note:
                        desiredChord = new string[] { Key };
                        break;

                    case ChordType.Power:
                        desiredChord = PowerChord;
                        break;

                    case ChordType.MinorThird:
                        desiredChord = MinorChord3;
                        break;

                    case ChordType.MajorThird:
                        desiredChord = MajorChord3;
                        break;

                    case ChordType.MinorSeventh:
                        desiredChord = MinorChord7;
                        break;

                    case ChordType.MajorSeventh:
                        desiredChord = MajorChord7;
                        break;
                    }

                    PlayingNote?.Invoke(this, new EventArgs());
                    var musicNotes  = desiredChord.Select(sn => MusicNote.Create(sn));
                    var frequencies = musicNotes.Select(mn => new FrequencyDuration(mn.Key, mn.DesiredOctave, mn.Frequencies[DesiredOctave], Duration));
                    NotePlayer?.Play(frequencies, Instrument);
                }
                catch (Exception ex)
                {
                    Error?.Invoke(this, ex);
                }
            }
        }
示例#5
0
 private static void frequencies_of_ngrams_in_emma_sample()
 {
     var text = TextExamples.emma();
       var freq = new Frequencies<string>();
       foreach (var token in Regex.Split(text, @"(\W+)").Where((x) => x != ", " && TextTools.not_whitespace.IsMatch(x)).NGram(3))
       {
     freq.Add(token.Aggregate((a, b) => a + " " + b));
       }
       foreach (var term in freq.Generate().OrderBy(p => p.Value).Reverse().Take(10))
       {
     Console.WriteLine(String.Format(@"{0}: {1}", term.Key, term.Value));
       }
       Console.WriteLine(freq.Count());
       Console.WriteLine(freq.Terms().Count());
 }