Profile


Name
bandsome
ID
43861
Shared with
Public
Parent
None
Children
Created on
August 12, 2012 at 02:00 AM UTC
Updated on
August 12, 2012 at 02:00 AM UTC
Description

interactively place bands between specific atoms in protein

Best for


Code


function Main() -- bandsome: interactively place bands between specific atoms in protein -- by jeff101 8/11/12 -- last updated around 10pm 8/11/12 -- below sets default values rtot=structure.GetCount() bnum=band.GetCount() osdate=os.date() oldscore=math.floor(current.GetScore()*1000)/1000 -- seems Foldit always rounds down at .001 position print('bandsome begins at '..osdate..' on\n puzzle '..puzzle.GetName()..'\n with puzzle ID '..puzzle.GetPuzzleID()..', '..rtot..' residues, '..bnum..' bands,\n and score '..oldscore..'.') rnum1=36 rnum2=72 if rnum1>rtot then rnum1=1 end -- if rnum1 if rnum2>rtot then rnum2=rtot end anum1=0 -- 0 is always the alpha-carbon anum2=0 blen=2 bstr=10 keeplast=0 bnum=0 qflag=0 -- below gets input values while qflag==0 do atot1=structure.GetAtomCount(rnum1) atot2=structure.GetAtomCount(rnum2) local ask=dialog.CreateDialog('bandsome') ask.Input1=dialog.AddSlider("rnum1: ",rnum1,1,rtot,0) ask.Label1=dialog.AddLabel(" \nrnum1: index of residue 1.\n ") ask.Input2=dialog.AddSlider("rnum2: ",rnum2,1,rtot,0) ask.Label2=dialog.AddLabel(" \nrnum2: index of residue 2.\n ") ask.Input3=dialog.AddSlider("anum1: ",anum1,0,atot1,0) ask.Label3=dialog.AddLabel(" \nanum1: atom number on residue 1.\n ") ask.Input4=dialog.AddSlider("anum2: ",anum2,0,atot2,0) ask.Label4=dialog.AddLabel(" \nanum2: atom number on residue 2.\n ") ask.Input5=dialog.AddSlider("blen: ",blen,0,10,1) ask.Label5=dialog.AddLabel(" \nblen: desired band length.\n ") ask.Input6=dialog.AddSlider("bstr: ",bstr,0,10,1) ask.Label6=dialog.AddLabel(" \nbstr: band strength.\n ") ask.Input7=dialog.AddSlider("keeplast: ",keeplast,-1,2,0) ask.Label7a=dialog.AddLabel(" ") ask.Label7b=dialog.AddLabel("keeplast: -1 remove all previous bands,\n0 replace previous band, 1 keep previous band,\n2 quit now without adding a new band.") ask.Label7c=dialog.AddLabel(" ") ask.OK = dialog.AddButton("OK", 1) dialog.Show(ask) rnum1=ask.Input1.value+0 rnum2=ask.Input2.value+0 anum1=ask.Input3.value+0 anum2=ask.Input4.value+0 blen=ask.Input5.value+0 bstr=ask.Input6.value+0 keeplast=ask.Input7.value+0 if keeplast== -1 then bnum=band.GetCount() print('Deleting all '..bnum..' previous bands.') band.DeleteAll() elseif keeplast==0 then bnum=band.GetCount() if bnum>0 then print('Deleting band '..bnum..' so end with '..(bnum-1)..' bands.') band.Delete(bnum) end -- if bnum elseif keeplast==2 then qflag=1 -- this will quit end -- if keeplast if keeplast~=2 then bnum=band.AddBetweenSegments(rnum1,rnum2,anum1,anum2) if bnum>0 then band.SetGoalLength(bnum,blen) -- 3.5 is default band length band.SetStrength(bnum,bstr) -- 10 is max, 1 is default dist=round(band.GetLength(bnum)*100)/100 -- round length to nearest 0.01 aa1=structure.GetAminoAcid(rnum1) aa2=structure.GetAminoAcid(rnum2) ss1=structure.GetSecondaryStructure(rnum1) ss2=structure.GetSecondaryStructure(rnum2) print('Adding band '..bnum..' between atom '..anum1..' on '..aa1..rnum1..' ('..ss1..')\n and atom '..anum2..' on '..aa2..rnum2..' ('..ss2..') with strength '..bstr..',\n goal length '..blen..', and present length '..dist..'.') else bnum=band.GetCount() print('Failed to add new band. Still have '..bnum..' bands.') end -- if bnum end -- if keeplast end -- while qflag bnum=band.GetCount() osdate=os.date() print('Ending with '..bnum..' bands for '..rtot..' residues.') print('All done at '..osdate..'.') end -- Main() -- below rounds val to nearest integer and returns it in res function round(val) local res=math.floor(val) if val-res>=0.5 then res=res+1 end -- if val return res end -- round() Main()

Comments


jeff101 Lv 1

To form a disulfide bond between residues 10 and 20, make the following 3 bands:

One with length 2 between atom 6 on residue 10 and atom 6 on residue 20.
One with length 3 between atom 5 on residue 10 and atom 6 on residue 20.
One with length 3 between atom 6 on residue 10 and atom 5 on residue 20.

I often use strength 5 for all 3 bands.

jeff101 Lv 1

To make a B-sheet between residues 25-27 and 60-62,
use bands of length 2.8 and strength 5 between
atoms 1 (N=nitrogen=blue in CPK) and 4 (O=oxygen=red in CPK).
View as Stick and Color by CPK help.

There are many different ways to connect the B-sheet.
In general, one would expect more hydrogen bonds to give a more stable structure.

Below are some examples:

(A) Anti-parallel B-sheet with 4 hydrogen bonds:

25 26 27
||    ||
62 61 60

Here use 4 bands:

One between atom 1 on residue 25 and atom 4 on residue 62.
One between atom 4 on residue 25 and atom 1 on residue 62.
One between atom 1 on residue 27 and atom 4 on residue 60.
One between atom 4 on residue 27 and atom 1 on residue 60.

(B) Anti-parallel B-sheet with 2 hydrogen bonds:

25 26 27
   ||
62 61 60

Here use 2 bands:

One between atom 1 on residue 26 and atom 4 on residue 61.
One between atom 4 on residue 26 and atom 1 on residue 61.

(C) Parallel B-sheet with 3 hydrogen bonds:

25 26 27        25O-60N
  \  /  \       27N-60O
   60 61 62     27O-62N

Here use 3 bands:

One between atom 4 (oxygen) on residue 25 and atom 1 (nitrogen) on residue 60.
One between atom 1 (nitrogen) on residue 27 and atom 4 (oxygen) on residue 60.
One between atom 4 (oxygen) on residue 27 and atom 1 (nitrogen) on residue 62.

(D) Parallel B-sheet with 3 hydrogen bonds:

   25 26 27     25N-60O
  /  \  /       25O-62N
60 61 62        27N-62O

Here use 3 bands:

One between atom 1 (nitrogen) on residue 25 and atom 4 (oxygen) on residue 60.
One between atom 4 (oxygen) on residue 25 and atom 1 (nitrogen) on residue 62.
One between atom 1 (nitrogen) on residue 27 and atom 4 (oxygen) on residue 62.

(E) Other parallel B-sheet patterns with 2 hydrogen bonds:

25 26 27        26N-60O
  /  \          26O-62N
60 61 62

One between atom 1 (nitrogen) on residue 26 and atom 4 (oxygen) on residue 60.
One between atom 4 (oxygen) on residue 26 and atom 1 (nitrogen) on residue 62.

25 26 27        25O-61N
  \  /          27N-61O
60 61 62

One between atom 4 (oxygen) on residue 25 and atom 1 (nitrogen) on residue 61.
One between atom 1 (nitrogen) on residue 27 and atom 4 (oxygen) on residue 61.

(F) Other anti-parallel B-sheet patterns with 2 hydrogen bonds:

25 26 27
      ||         
      62 61 60

25 26 27
      ||         
   62 61 60

25 26 27
   ||            
   62 61 60

   25 26 27
   ||            
62 61 60

   25 26 27
      ||         
62 61 60

      25 26 27
      ||         
62 61 60

jeff101 Lv 1

For      N cysteines (N cys) where N is a non-negative integer (N=0,1,2,3,4,5,etc.):
For  any N, there are T1=(N^2-N)/2 ways 
            to form 1            disulfide (1 s-s) bond.
For even N, there are TM=(N-1)x(N-3)x(N-5)x...x1 ways 
            to form M=floor(N/2) disulfide (M s-s) bonds.
For  odd N, there are TM=(N)x(N-2)x(N-4)x...x1 ways 
            to form M=floor(N/2) disulfide (M s-s) bonds.

 0 cys: T1=  (0-0)/2 =  0/2= 0 with 1 s-s, TM=              1=     1 with 0 s-s.
 1 cys: T1=  (1-1)/2 =  0/2= 0 with 1 s-s, TM=              1=     1 with 0 s-s.
 2 cys: T1=  (4-2)/2 =  2/2= 1 with 1 s-s, TM=              1=     1 with 1 s-s.
 3 cys: T1=  (9-3)/2 =  6/2= 3 with 1 s-s, TM=            3x1=     3 with 1 s-s.
 4 cys: T1= (16-4)/2 = 12/2= 6 with 1 s-s, TM=            3x1=     3 with 2 s-s.
 5 cys: T1= (25-5)/2 = 20/2=10 with 1 s-s, TM=          5x3x1=    15 with 2 s-s.
 6 cys: T1= (36-6)/2 = 30/2=15 with 1 s-s, TM=          5x3x1=    15 with 3 s-s.
 7 cys: T1= (49-7)/2 = 42/2=21 with 1 s-s, TM=        7x5x3x1=   105 with 3 s-s.
 8 cys: T1= (64-8)/2 = 56/2=28 with 1 s-s, TM=        7x5x3x1=   105 with 4 s-s.
 9 cys: T1= (81-9)/2 = 72/2=36 with 1 s-s, TM=      9x7x5x3x1=   945 with 4 s-s.
10 cys: T1=(100-10)/2= 90/2=45 with 1 s-s, TM=      9x7x5x3x1=   945 with 5 s-s.
11 cys: T1=(121-11)/2=110/2=55 with 1 s-s, TM=   11x9x7x5x3x1= 10395 with 5 s-s.
12 cys: T1=(144-12)/2=132/2=66 with 1 s-s, TM=   11x9x7x5x3x1= 10395 with 6 s-s.
13 cys: T1=(169-13)/2=156/2=78 with 1 s-s, TM=13x11x9x7x5x3x1=135135 with 6 s-s.

0 cys: T1=(0-0)/2=0/2=0 with 1 s-s,    TM=1 with 0 s-s:
0 ways

1 cys: T1=(1-1)/2=0/2=0 with 1 s-s,    TM=1 with 0 s-s:
0 ways

2 cys: T1=(4-2)/2=2/2=1 with 1 s-s,    TM=1 with 1 s-s:
1-2

3 cys: T1=(9-3)/2=6/2=3 with 1 s-s,    TM=3x1=3 with 1 s-s:
1-2 no 3
1-3 no 2
2-3 no 1

4 cys: T1=(16-4)/2=12/2=6 with 1 s-s,  TM=3x1=3 with 2 s-s:
1-2
1-3
1-4
2-3
2-4
3-4
1-2 3-4
1-3 2-4
1-4 2-3

5 cys: T1=(25-5)/2=20/2=10 with 1 s-s, TM=5x3x1=15 with 2 s-s:
1-2
1-3
1-4
1-5
2-3
2-4
2-5
3-4
3-5
4-5
2-3 4-5 no 1
2-4 3-5 no 1
2-5 3-4 no 1
1-3 4-5 no 2
1-4 3-5 no 2
1-5 3-4 no 2
1-2 4-5 no 3
1-4 2-5 no 3
1-5 2-4 no 3 
1-2 3-5 no 4
1-3 2-5 no 4
1-5 2-3 no 4
1-2 3-4 no 5
1-3 2-4 no 5
1-4 2-3 no 5

6 cys: T1=(36-6)/2=30/2=15 with 1 s-s, TM=5x3x1=15 with 3 s-s:
1-2
1-3
1-4
1-5
1-6
2-3
2-4
2-5
2-6
3-4
3-5
3-6
4-5
4-6
5-6
1-2 3-4 5-6
1-2 3-5 4-6
1-2 3-6 4-5
1-3 2-4 5-6
1-3 2-5 4-6
1-3 2-6 4-5
1-4 2-3 5-6
1-4 2-5 3-6
1-4 2-6 3-5
1-5 2-3 4-6
1-5 2-4 3-6
1-5 2-6 3-4
1-6 2-3 4-5
1-6 2-4 3-5
1-6 2-5 3-4

Bruno Kestemont Lv 1

Very interesting, even if difficult to understand. A good chalenge for us to learn a little bit more on Foldit Science. The chalenge now is making it into practice, implementing this in common scripts. Oops, this is quite a chalenge !

jeff101 Lv 1

At http://fold.it/portal/node/2000967#comment-30844 bkoep said the following:

The blood and spinal fluid are oxidizing environments, so we don't need to worry about the disulfide bonds being reduced. Any reduced cysteine pairs would quickly oxidize.

Meanwhile, https://en.wikipedia.org/wiki/Disulfide_bond#Occurrence_in_proteins says:

Disulfide bonds play an important role in the folding and stability of some proteins, usually proteins secreted to the extracellular medium. Since most cellular compartments are reducing environments, in general, disulfide bonds are unstable in the cytosol, with some exceptions as noted below, unless a sulfhydryl oxidase is present.

In eukaryotic cells, in general, stable disulfide bonds are formed in the lumen of the RER (rough endoplasmic reticulum) and the mitochondrial intermembrane space but not in the cytosol. This is due to the more oxidizing environment of the aforementioned compartments and more reducing environment of the cytosol (see glutathione). Thus disulfide bonds are mostly found in secretory proteins, lysosomal proteins, and the exoplasmic domains of membrane proteins.

Over 90% of the dry weight of hair comprises proteins called keratins, which have a high disulfide content, from the amino acid cysteine. The robustness conferred in part by disulfide linkages is illustrated by the recovery of virtually intact hair from ancient Egyptian tombs. Feathers have similar keratins and are extremely resistant to protein digestive enzymes. Different parts of the hair and feather have different cysteine levels, leading to harder or softer material.

jeff101 Lv 1

More formulas for the number of possible disulfide bonds can be found at: