/// <summary> /// Cut the last nucleotide of. /// </summary> /// <param name="minLen">Minimum primer length.</param> /// <returns>Last nucleotide or 255 if oligo too short to pop.</returns> public byte Pop(int minLen) { if (IsPopAllowed(minLen)) { byte item = this.GeneSpecific[0]; this.GeneSpecific = this.GeneSpecific.GetSubSequence(0, this.GeneSpecific.Count - 1); this.Sequence = new Sequence(Alphabets.DNA, Overlapping.ToString() + GeneSpecific.ToString()); this.PrimerTemperature = GetSimpleMeltingTemperature(GeneSpecific); return(item); } else { return(255); } }
/// <summary> /// Cut the first nucleotide off. /// </summary> /// <param name="minLen">Minimum overlap length.</param> /// <returns>First nucleotide or 255 if oligo too short to dequeue.</returns> public byte Dequeue(int minLen) { if (IsDequeAllowed(minLen)) { byte item = this.Overlapping[this.Overlapping.Count - 1]; this.Overlapping = this.Overlapping.GetSubSequence(1, this.Overlapping.Count - 1); this.Sequence = new Sequence(Alphabets.DNA, Overlapping.ToString() + GeneSpecific.ToString()); this.Temperature = GetSimpleMeltingTemperature(Overlapping); return(item); } else { return(255); } }