

""" Protein secondary structure and associated tools and data.

Constants:
    - secstruc_alphabet     
        -- Secondary structure alphabet: 'HGIEBbTSC _-L?X'
        Contains a complete set of secondary structure codes generated by both
        STRIDE and DSSP
    - secstruc_ehl_alphabet 
        -- Standard 3 state secondary structure alphabet: EHLX
        E : Extended strand
        H : Helix
        L : Loop
        X : Unknown
        
There are two common ways of reducing the full secondary structure alphabet to 
the simpler three letter EHL alphabet. The EHL reduction converts 3/10 and pi
helixes to H (helix) and beta-bridges to strands (E), whereas the FA reduction 
converts all non-canonical helixes and strands to L (loop). The FA reduction is
more predictable.
    - fa_reduce_secstruc_to_ehl
    - reduce_secstruc_to_ehl
    
    
Usage :

>>> from corebio.secstruc import *
>>> record = dssp.DsspRecord( open('test_corebio/data/1crn.dssp') )
>>> record.secondary()
' EE SSHHHHHHHHHHHTTT  HHHHHHHHS EE SSS   GGG  '
>>> fa_reduce_secstruc_to_ehl(record.secondary())
'LEELLLHHHHHHHHHHHLLLLLHHHHHHHHLLEELLLLLLLLLLLL' 

""" 
from __future__ import absolute_import

__all__ = ['dssp', 'stride','secstruc_alphabet','secstruc_ehl_alphabet', 
    'fa_reduce_secstruc_to_ehl', 'ehl_reduce_secstruc_to_ehl']

from ..seq import Alphabet, Seq
from ..transform import Transform

# ------------------- SECONDARY STRUCTURE ALPHABETS -------------------
secstruc_alphabet = Alphabet("HGIEBbTSC _-L?X")
secstruc_ehl_alphabet = Alphabet("EHLX")

fa_reduce_secstruc_to_ehl = \
    Transform(  Seq("HGIEBbTSC _-L?X", secstruc_alphabet),
                  Seq("HLLELLLLLLLLLXX", secstruc_ehl_alphabet) )

ehl_reduce_secstruc_to_ehl = \
    Transform( Seq("HGIEBbTSC _-L?X", secstruc_alphabet),
                 Seq("HHHEEELLLLLLLXX", secstruc_ehl_alphabet) )
                 
                 
                 
