{
  "filename": "ubiB_hydropathy.png",
  "iteration": 2,
  "description": "Identify UbiB motifs, catalytic residues, and hydrophobic/TM segments",
  "timestamp": "2026-07-19 01:29:33",
  "code": "\nimport numpy as np, matplotlib\nmatplotlib.use('Agg'); import matplotlib.pyplot as plt\nseq=\"MKLLAVRRLFRIQRVVIRYRLDDLLFDQPLLPWWLASLRLLMPWRWLPRKPTELSRGARLRLALQDLGPIFIKFGQLLSTRRDLLPPDIADELMLLQDRVPPFDPTQAVALIEEQLGAKVGEVFSRFDVEPLASASVAQVHAARLKTGEEVVVKVVRPGLKPVIAQDLAWLFLIAKAAERASADARRLHPVEIVGDYEKTIYDELDLLREAANASQLRRNFEDSELMYVPQVYWDLCRPKVLVMERIYGVPVTDMATLADQRTDMKLLAERGVEVFFTQVFRDSFFHADMHPGNIFVSTVKPWSPQYIAIDCGIVGSLTAEDQDYLARNLFAFFKRDYRRVAQLHIDSGWVPANTKVNEFEAAIRTVCEPIFEKPLKDISFGQVLMRLFQTARRFNMEVQPQLVLLQKTLLNIEGLGRQLYPDLDLWSTAKPYLERWMRDRYSPKAVFGNLHSQVEQLPHLAGMTRDLLERLSQPHLHDPQLPERRRQGDRWALRLLGAGLLGGGAVLAAGAAETASLAAPAAWPAWLMLAAGLYLIVRQ\"\nprint(\"length\", len(seq))\n# locate key UbiB motifs\nimport re\nfor motif,name in [(\"K.GQ\",\"KxGQ UbiB signature\"),(\"VAQVH\",\"VAIK-analog region\"),(\"HADMHPGN\",\"atypical catalytic HxD...N loop\"),(\"D.G\",\"DFG-like\")]:\n    for m in re.finditer(motif,seq):\n        print(name, m.group(), m.start()+1,\"-\",m.end())\n# print residues at annotated sites\nfor pos in [154,289,132,133,134,135,136,137,138,139,140]:\n    print(\"res\",pos,seq[pos-1])\n# Kyte-Doolittle hydropathy\nkd={'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}\nw=19; vals=[np.mean([kd[a] for a in seq[i:i+w]]) for i in range(len(seq)-w+1)]\nx=np.arange(len(vals))+w//2+1\nplt.figure(figsize=(11,3))\nplt.plot(x,vals); plt.axhline(1.6,color='r',ls='--',label='TM threshold 1.6')\nplt.xlabel('residue'); plt.ylabel('KD hydropathy (w=19)'); plt.legend(); plt.title('UbiB A0A140FWS4 hydropathy')\nplt.tight_layout(); plt.savefig('ubiB_hydropathy.png',dpi=110)\n# report peaks above 1.6\npeaks=[(int(x[i]),round(vals[i],2)) for i in range(len(vals)) if vals[i]>1.6]\nprint(\"hydrophobic (>1.6) center positions:\", peaks[:40])\n"
}