anchor.diff:          | ch -> NoAAChar ch
   
       ///Set of the 20 standard amino acids
  -    let AminoAcidSetStandard =
  -        set [
  -            AminoAcid.Ala
  -            AminoAcid.Cys
  +    [<Obsolete("use aminoAcidSetStandard instead, or aminoAcidSetProteinogenic for all 22 AAs")>]
  +    let AminoAcidSetStandard = set [
  +        AminoAcid.Ala
  +        AminoAcid.Cys
  +        AminoAcid.Asp
  +        AminoAcid.Glu
  +        AminoAcid.Phe
  +        AminoAcid.Gly
  +        AminoAcid.His
  +        AminoAcid.Ile
  +        AminoAcid.Lys
  +        AminoAcid.Leu
  +        AminoAcid.Met
  +        AminoAcid.Asn
  +        AminoAcid.Pyl
  +        AminoAcid.Pro
  +        AminoAcid.Gln
  +        AminoAcid.Arg
  +        AminoAcid.Ser
  +        AminoAcid.Thr
  +        AminoAcid.Sel
  +        AminoAcid.Sec
  +        AminoAcid.Val
  +        AminoAcid.Trp
  +        AminoAcid.Tyr 
  +    ]  
  +
  +    ///Set of the 20 standard amino acids of the genetic code
  +    let aminoAcidSetStandard = set [
  +        AminoAcid.Ala
  +        AminoAcid.Cys
  +        AminoAcid.Asp
  +        AminoAcid.Glu
  +        AminoAcid.Phe
  +        AminoAcid.Gly
  +        AminoAcid.His
  +        AminoAcid.Ile
  +        AminoAcid.Lys
  +        AminoAcid.Leu
  +        AminoAcid.Met
  +        AminoAcid.Asn
  +        AminoAcid.Pro
  +        AminoAcid.Gln
  +        AminoAcid.Arg
  +        AminoAcid.Ser
  +        AminoAcid.Thr
  +        AminoAcid.Val
  +        AminoAcid.Trp
  +        AminoAcid.Tyr 
  +    ]
  +
  +    ///Set of all 22 proteinogenic amino acids (20 standard + Selenocysteine + Pyrrolysine)
  +    let aminoAcidSetProteinogenic = set [
  +        AminoAcid.Ala
  +        AminoAcid.Cys
  +        AminoAcid.Asp
  +        AminoAcid.Glu
  +        AminoAcid.Phe
  +        AminoAcid.Gly
  +        AminoAcid.His
  +        AminoAcid.Ile
  +        AminoAcid.Lys
  +        AminoAcid.Leu
  +        AminoAcid.Met
  +        AminoAcid.Asn
  +        AminoAcid.Pro
  +        AminoAcid.Gln
  +        AminoAcid.Arg
  +        AminoAcid.Ser
  +        AminoAcid.Thr
  +        AminoAcid.Val
  +        AminoAcid.Trp
  +        AminoAcid.Tyr 
  +        AminoAcid.Sel 
  +        AminoAcid.Sec
  +        AminoAcid.Pyl
  +    ]
  +
  +    ///Set of all 21 proteinogenic amino acids in eucaryotes (20 standard + Selenocysteine)
  +    let aminoAcidSetProteinogenicEucaryotes = set [
  +        AminoAcid.Ala
  +        AminoAcid.Cys
  +        AminoAcid.Asp
  +        AminoAcid.Glu
  +        AminoAcid.Phe
  +        AminoAcid.Gly
  +        AminoAcid.His
  +        AminoAcid.Ile
  +        AminoAcid.Lys
  +        AminoAcid.Leu
  +        AminoAcid.Met
  +        AminoAcid.Asn
  +        AminoAcid.Pro
  +        AminoAcid.Gln
  +        AminoAcid.Arg
  +        AminoAcid.Ser
  +        AminoAcid.Thr
  +        AminoAcid.Val
  +        AminoAcid.Trp
  +        AminoAcid.Tyr 
  +        AminoAcid.Sel 
  +        AminoAcid.Sec
  +    ]
  +    
  +    [<Obsolete("use aminoAcidSetAmbiguity instead")>]
  +    ///Set of all ambiguous codes
  +    let AminoAcidSetAmbiguity = set [
  +        AminoAcid.Xaa
  +        AminoAcid.Xle
  +        AminoAcid.Glx
  +        AminoAcid.Asx 
  +    ]      
  +    
  +    ///Set of all ambiguous codes
  +    let aminoAcidSetAmbiguity = set [
  +        AminoAcid.Xaa
  +        AminoAcid.Xle
  +        AminoAcid.Glx
  +        AminoAcid.Asx 
  +    ]  
  +    
  +    [<Obsolete("use aminoAcidSetGapTer instead")>]
  +    ///Set containing the Gap and the Terminator AminoAcid
  +    let AminoAcidSetGapTer = set [
  +        AminoAcid.Gap
  +        AminoAcid.Ter 
  +    ]    
  +    
  +    ///Set containing the Gap and the Terminator AminoAcid
  +    let aminoAcidSetGapTer = set [
  +        AminoAcid.Gap
  +        AminoAcid.Ter 
  +    ]
  +
  +    [<Obsolete("use aminoAcidSetPosCharged instead")>]
  +    ///Set of all AminoAcids with basic (positively charged) sidechain
  +    let AminoAcidSetPosCharged = set [
  +        AminoAcid.Arg
  +        AminoAcid.Lys
  +        AminoAcid.His 
  +    ]    
  +    
  +    ///Set of all AminoAcids with basic (positively charged) sidechain
  +    let aminoAcidSetPosCharged = set [
  +        AminoAcid.Arg
  +        AminoAcid.Lys
  +        AminoAcid.His 
  +    ]
  +
  +    [<Obsolete("use aminoAcidSetNegCharged instead. Warning: this set also contains Cysteine and Tyrosine, which are not generally considered as neg charged under phisiological (pH 7.4) conditions. aminoAcidSetNegCharged will not contain them.")>]
  +    ///Set of all AminoAcids with acidic sidechain (+ Cys/Tyr)
  +    let AminoAcidSetNegCharged = set [
  +        AminoAcid.Asp
  +        AminoAcid.Glu
  +        AminoAcid.Cys
  +        AminoAcid.Tyr 
  +    ]    
  +    
  +    ///Set of all AminoAcids with acidic sidechain
  +    let aminoAcidSetNegCharged = set [
               AminoAcid.Asp
               AminoAcid.Glu
  -            AminoAcid.Phe
  -            AminoAcid.Gly
  -            AminoAcid.His
  -            AminoAcid.Ile
  -            AminoAcid.Lys
  -            AminoAcid.Leu
  -            AminoAcid.Met
  -            AminoAcid.Asn
  -            AminoAcid.Pyl
  -            AminoAcid.Pro
  -            AminoAcid.Gln
  -            AminoAcid.Arg
  -            AminoAcid.Ser
  -            AminoAcid.Thr
  -            AminoAcid.Sel
  -            AminoAcid.Sec
  -            AminoAcid.Val
  -            AminoAcid.Trp
  -            AminoAcid.Tyr ]  
  -    
  -    ///Set of all ambiguous codes
  -    let AminoAcidSetAmbiguity =
  -        set [
  -            AminoAcid.Xaa
  -            AminoAcid.Xle
  -            AminoAcid.Glx
  -            AminoAcid.Asx ]  
  -    
  -    ///Set containing the Gap and the Terminator AminoAcid
  -    let AminoAcidSetGapTer =
  -        set [
  -            AminoAcid.Gap
  -            AminoAcid.Ter ]
  -
  -    ///Set of all AminoAcids with basic sidechain
  -    let AminoAcidSetPosCharged =
  -            set [
  -                AminoAcid.Arg
  -                AminoAcid.Lys
  -                AminoAcid.His ]
  -    
  -    ///Set of all AminoAcids with acidic sidechain
  -    let AminoAcidSetNegCharged =
  -            set [
  -                AminoAcid.Asp
  -                AminoAcid.Glu
  -                AminoAcid.Cys
  -                AminoAcid.Tyr ]
  -
  +    ]
  +
  +    [<Obsolete("use aminoAcidSetPolarUncharged instead. Warning: this set also contains Trp, His, Tyr, and Cys, which aminoAcidSetPolarUncharged will not")>]
       ///Set of all AminoAcids with polar sidechain
  -    let AminoAcidSetPolar =
  -            set [
  -                AminoAcid.Gln
  -                AminoAcid.Asn
  -                AminoAcid.His
  -                AminoAcid.Ser
  -                AminoAcid.Thr
  -                AminoAcid.Tyr
  -                AminoAcid.Cys
  -                AminoAcid.Trp ]
  -
  +    let AminoAcidSetPolar = set [
  +        AminoAcid.Gln
  +        AminoAcid.Asn
  +        AminoAcid.His
  +        AminoAcid.Ser
  +        AminoAcid.Thr
  +        AminoAcid.Tyr
  +        AminoAcid.Cys
  +        AminoAcid.Trp 
  +    ]    
  +                
  +    ///Set of all AminoAcids with uncharged polar sidechain
  +    let aminoAcidSetPolarUncharged = set [
  +        AminoAcid.Gln
  +        AminoAcid.Asn
  +        AminoAcid.Ser
  +        AminoAcid.Thr
  +    ]
  +
  +    [<Obsolete("use aminoAcidSetHydrophobic instead. Warning: aminoAcidSetHydrophobic will not contain Pro/Gly, but additionally Trp/Tyr")>]
       ///Set of all AminoAcids with hydrophobic sidechain
  -    let AminoAcidSetHydrophobic =
  -            set [
  -                AminoAcid.Ala
  -                AminoAcid.Ile
  -                AminoAcid.Leu
  -                AminoAcid.Met
  -                AminoAcid.Phe
  -                AminoAcid.Val
  -                AminoAcid.Pro
  -                AminoAcid.Gly ]
  -
  +    let AminoAcidSetHydrophobic = set [
  +        AminoAcid.Ala
  +        AminoAcid.Ile
  +        AminoAcid.Leu
  +        AminoAcid.Met
  +        AminoAcid.Phe
  +        AminoAcid.Val
  +        AminoAcid.Gly 
  +        AminoAcid.Pro
  +    ]    
  +    
  +    ///Set of all AminoAcids with hydrophobic sidechain
  +    let aminoAcidSetHydrophobic = set [
  +        AminoAcid.Ala
  +        AminoAcid.Ile
  +        AminoAcid.Leu
  +        AminoAcid.Met
  +        AminoAcid.Phe
  +        AminoAcid.Trp
  +        AminoAcid.Tyr
  +        AminoAcid.Val
  +    ]
  +
  +    let aminoAcidSetSpecialCases = set [
  +        AminoAcid.Cys
  +        AminoAcid.Sel
  +        AminoAcid.Sec
  +        AminoAcid.Gly
  +        AminoAcid.Pro
  +    ]
    
       /// Returns the name of AminoAcid
       let name (aa:AminoAcid) =
  
positive.code:     [<StructuralEquality;StructuralComparison>]
      type AminoAcid =
          /// 'A' - Ala - Alanine
          | Ala        
          /// 'C' - Cys - Cysteine
          | Cys
          /// 'D' - Asp - Aspartic Acid
          | Asp
          /// 'E' - Glu - Glutamic Acid
          | Glu 
          /// 'F' - Phe - Phenylalanine
          | Phe
          /// 'G' - Gly - Glycine
          | Gly
          /// 'H' - His - Histidine
          | His
          /// 'I' - Ile - Isoleucine
          | Ile
          /// 'K' - Lys - Lysine
          | Lys
          /// 'L' - Leu - Leucine
          | Leu
          /// 'M' - Met - Methionine
          | Met
          /// 'N' - Asn - Asparagine
          | Asn
          /// 'O' - Pyl - Pyrrolysine
          | Pyl
          /// 'P' - Pro - Proline
          | Pro        
          /// 'Q' - Gln - Glutamine
          | Gln
          /// 'R' - Arg - Arginine
          | Arg
          /// 'S' - Ser - *Serine
          | Ser        
          /// 'T' - Thr - Threonine
          | Thr
          /// 'U' - Sel - Selenocysteine
          ///
          /// Warning: 'Sel' is not the official UPAC abbreviation. 
          /// This case will be removed in favor of 'Sec' in the next major release
          | [<Obsolete("This case has a typo and will be removed in the next major release. use AminoAcid.Sec instead.")>] Sel 
          /// 'U' - Sec - Selenocysteine
          | Sec
          /// 'V' - Val - Valine
          | Val
          /// 'W' - Trp - Tryptophan
          | Trp
          /// 'Y' - Tyr - Tyrosine
          | Tyr
  
          /// 'X' - Xaa - Unspecified 
  
negative.code:     let isNegCharged (aa:AminoAcid) =
          AminoAcidSetNegCharged.Contains aa 
  
      [<Obsolete("use isPolarUncharged instead")>]
      /// Returns true, if the AminoAcid has a polar side chain
      let isPolar (aa:AminoAcid) = 
          AminoAcidSetPolar.Contains aa    
          
      /// Returns true, if the AminoAcid has a polar, uncharged side chain
      let isPolarUncharged (aa:AminoAcid) = 
          aminoAcidSetPolarUncharged.Contains aa
  
      /// Returns true, if the AminoAcid has a hydrophobic side chain
      let isHydrophobic (aa:AminoAcid) = 
  