/// <summary> /// Cloning method. /// </summary> /// <returns> /// Phantom value clone. /// </returns> public new IBaseObject Clone() { var clone = new ValuePhantom(); foreach (IBaseObject element in Elements) { clone.Add(element); } return clone; }
/// <summary> /// Adds phantom value by merging. /// All not duplicated elements from second phantom value are added to this phantom value. /// </summary> /// <param name="phantomValue"> /// Phantom value to add. /// </param> public void Add(ValuePhantom phantomValue) { if (phantomValue != null) { for (int i = 0; i < phantomValue.Cardinality; i++) { if (!Contains(phantomValue[i])) { Add(phantomValue[i]); } } } }
/// <summary> /// Translates amino acid sequences into phantom sequences. /// </summary> /// <param name="inputChain"> /// Amino acid sequence. /// </param> /// <returns> /// Phantom sequence of <see cref="BaseChain"/> type. /// Elements are <see cref="ValuePhantom"/>. /// </returns> public static BaseChain Decode(BaseChain inputChain) { var resultChain = new BaseChain(inputChain.GetLength()); for (int i = 0; i < inputChain.GetLength(); i++) { string aminoAcid = inputChain[i].ToString(); var element = new ValuePhantom(); switch (aminoAcid) { case "F": element.Add(new ValueString("TTT")); element.Add(new ValueString("TTC")); break; case "L": element.Add(new ValueString("TTA")); element.Add(new ValueString("TTG")); element.Add(new ValueString("CTT")); element.Add(new ValueString("CTC")); element.Add(new ValueString("CTA")); element.Add(new ValueString("CTG")); break; case "S": element.Add(new ValueString("TCT")); element.Add(new ValueString("TCC")); element.Add(new ValueString("TCA")); element.Add(new ValueString("TCG")); element.Add(new ValueString("AGT")); element.Add(new ValueString("AGC")); break; case "Y": element.Add(new ValueString("TAT")); element.Add(new ValueString("TAC")); break; case "X": element.Add(new ValueString("TAA")); element.Add(new ValueString("TAG")); element.Add(new ValueString("TGA")); break; case "C": element.Add(new ValueString("TGT")); element.Add(new ValueString("TGC")); break; case "W": element.Add(new ValueString("TGG")); break; case "P": element.Add(new ValueString("CCT")); element.Add(new ValueString("CCC")); element.Add(new ValueString("CCA")); element.Add(new ValueString("CCG")); break; case "H": element.Add(new ValueString("CAT")); element.Add(new ValueString("CAC")); break; case "Q": element.Add(new ValueString("CAA")); element.Add(new ValueString("CAG")); break; case "R": element.Add(new ValueString("CGT")); element.Add(new ValueString("CGC")); element.Add(new ValueString("CGA")); element.Add(new ValueString("CGG")); element.Add(new ValueString("AGA")); element.Add(new ValueString("AGG")); break; case "I": element.Add(new ValueString("ATT")); element.Add(new ValueString("ATC")); element.Add(new ValueString("ATA")); break; case "M": element.Add(new ValueString("ATG")); break; case "T": element.Add(new ValueString("ACT")); element.Add(new ValueString("ACC")); element.Add(new ValueString("ACA")); element.Add(new ValueString("ACG")); break; case "N": element.Add(new ValueString("AAT")); element.Add(new ValueString("AAC")); break; case "K": element.Add(new ValueString("AAA")); element.Add(new ValueString("AAG")); break; case "V": element.Add(new ValueString("GTT")); element.Add(new ValueString("GTC")); element.Add(new ValueString("GTA")); element.Add(new ValueString("GTG")); break; case "A": element.Add(new ValueString("GCT")); element.Add(new ValueString("GCC")); element.Add(new ValueString("GCA")); element.Add(new ValueString("GCG")); break; case "D": element.Add(new ValueString("GAT")); element.Add(new ValueString("GAC")); break; case "E": element.Add(new ValueString("GAA")); element.Add(new ValueString("GAG")); break; case "G": element.Add(new ValueString("GGT")); element.Add(new ValueString("GGC")); element.Add(new ValueString("GGA")); element.Add(new ValueString("GGG")); break; default: throw new ArgumentException("Unknown amino acid"); } resultChain[i] = element; } return resultChain; }
/// <summary> /// The equals as phantom. /// </summary> /// <param name="phantomValue"> /// The phantom value. /// </param> /// <returns> /// The <see cref="bool"/>. /// </returns> private bool EqualsAsPhantom(ValuePhantom phantomValue) { return base.Equals(phantomValue); }