I am using Biopython to examine protein sequences including the Kyte and Doolittle hydrophobicity. However, for short sequences, this returns an empty value; the value is not allowed if the window does not have 20 values.

from Bio.SeqUtils.ProtParam import ProteinAnalysis

kyte = {'A': 1.8, 'R': -4.5, 'N': -3.5, 'D': -3.5, 'C': 2.5, 'Q': -3.5, 'E': -3.5, 'G': -0.4, 'H': -3.2, 'I': 4.5,
        'L': 3.8, 'K': -3.9, 'M': 1.9, 'F': 2.8, 'P': -1.6, 'S': -0.8, 'T': -0.7, 'W': -0.9, 'Y': -1.3, 'V': 4.2}

full_sequence_analysis = ProteinAnalysis("CYGTGAVYLLGLGIGGFS")
kyte_window = full_sequence_analysis.protein_scale(kyte, window_length, edge)

Is there are a built in Biopython option in this for "allow half windows/short windows" for incomplete windows? There is nothing I can see to suggest so in the docs.

  • $\begingroup$ @Chris_Rands This would fix the error. However, it would change the absolute values. Ideally, I would like to keep the window length at ±10 residues (up to 20 residues) if possible. $\endgroup$ – James Apr 5 '19 at 15:35
  • 1
    $\begingroup$ Have you tried odd values for window_length? web.expasy.org/protscale allows 3 5 7 ... 21 $\endgroup$ – nicolallias Apr 8 '19 at 12:58
  • $\begingroup$ @nicolallias The issue would still remain. Even if I had 3 residue window length when I sample the final residue in the sequence, there are only 2 residues available for the window (the final residue, and the preceding residue), so no value is generated because 3 residues are needed for the windowed value. $\endgroup$ – James Apr 9 '19 at 9:37

You can choose between a window_size of 20 for sequences longer than 20 AAs, and the length of the sequence for those shorter::

window_length = min(len(seq), 20)

full_sequence_analysis = ProteinAnalysis(seq)
kyte_window = full_sequence_analysis.protein_scale(kyte, window_length, edge)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.