PhD Completion Seminar

Algorithms for the Study of RNA and Protein Structure Alex Stivala University of Melbourne, CSSE Supervisors: Prof. Peter Stuckey, Dr Tony Wirth

August 27, 2010

1 / 70

Overview



RNA structural alignment



Parallelism 1: Parallel dynamic programming



Protein substructure searching



Parallelism 2: Faster protein substructure searching



Protein structure cartoons

2 / 70

RNA structural alignment

3 / 70

Introduction: Dynamic Programming



Optimization problems where optimum can be computed efficiently from optimal solutions to subproblems (Bellman 1957)



Bottom-up



Top-down and memoization

4 / 70

Introduction: RNA secondary structure



RNA has a secondary structure determined by basepairing interactions within the RNA molecule.



This can be predicted from sequence by a D.P. algorithm such as that implemented in RNAfold in the Vienna RNA package (Zuker & Stiegler (1981); Hofacker et al. (1994)).



Rather than one single “best” structure, a base pairing probability matrix (McCaskill (1990)) can be computed, showing probabilities of bases pairing with each other.

5 / 70

Example RNA secondary structure (1) AP000063 GCGGGGGUGCCCGA GCCUGGCCA A A GGGGUCGGGCUCA GGA CCCGA UGGCGUA GGCCUGCGUGGGUUCA A A UCCCA CCCCCCGCA GCGGGGGUGCCCGA GCCUGGCCA A A GGGGUCGGGCUCA GGA CCCGA UGGCGUA GGCCUGCGUGGGUUCA A A UCCCA CCCCCCGCA

GCGGGGGUGCCCGA GCCUGGCCA A A GGGGUCGGGCUCA GGA CCCGA UGGCGUA GGCCUGCGUGGGUUCA A A UCCCA CCCCCCGCA

A GC CG GC GC GC GC GC C UA CG CCC C U C A A AG A CG C UC GCUC G G A A G U A CC UCGG G U A G GG A C G GG C G C U GC G G U A C U G C G G C G G UA

GCGGGGGUGCCCGA GCCUGGCCA A A GGGGUCGGGCUCA GGA CCCGA UGGCGUA GGCCUGCGUGGGUUCA A A UCCCA CCCCCCGCA

Figure:

Secondary structure (left) and base pairing probability matrix diagram (right) of a tRNA from Aeropyrum pernix, an aeoribic hyper-thermophillic Archaea species.

6 / 70

RNA structural alignment

D.P. from Hofacker et al. (2004):  S(i + 1, j, k, l ) + γ,    S(i , j, k + 1, l ) + γ, S(i , j, k, l ) = max S(i + 1, j, k + 1, l ) + σ(Ai , Bk ),    maxh≤j,q≤l S M (i , h, k, q) + S(h + 1, j, q + 1, l ) B S M (i , j, k, l ) = S(i +1, j −1, k+1, l −1)+ΨA ij +Ψkl +τ (Ai , Aj , Bk , Bl )

7 / 70

Parallel dynamic programming

8 / 70

Previous work on parallelizing D.P.



Used the bottom-up approach



Analyze data dependencies and compute independent cells in parallel



So only works on problems where it is feasible to apply bottom-up, i.e. compute every single subproblem



And requires careful analysis of data dependencies in each particular D.P. for parallelization

9 / 70

Overview of our approach

Parallelize any D.P. on a multicore processor with shared memory. ◮

Each thread computes the entire problem.



The results are shared via a lock-free hash table in shared memory.



Randomization of subproblem ordering causes divergence of thread computations.

10 / 70

General form of a D.P.

f (¯ x ) = if b(¯ x ) then g (¯ x) else F (f (¯ x1 ), . . . , f (¯ xn )) where ◮

b(¯ x ) holds for the base cases



g (¯ x ) is the result for base cases,



F is a function combining the optimal answers to a number of sub-problems x¯1 , . . . , x¯n .

11 / 70

Computing the D.P.: serial version

f(¯ x) v ← lookup(¯ x) if v = 6 KEY NOT FOUND return v if b(¯ x ) then v ← g (¯ x) else for i ∈ 1..n v [i ] ← f(¯ xi ) v ← F (v [1], . . . , v [n]) insert(¯ x ,v ) return v

12 / 70

Computing the D.P.: parallel version

f(¯ x) v ← par lookup(¯ x) if v = 6 KEY NOT FOUND return v if b(¯ x ) then v ← g (¯ x) else for i ∈ 1..n in random order v [i ] ← f(¯ xi ) v ← F (v [1], . . . , v [n]) par insert(¯ x ,v ) return v

13 / 70

The D.P.s we use to demonstrate our method



knapsack



shortest paths



RNA structural alignment (we are familiar with this already)



open stacks (skipping this here)

For the D.P. experiments, we used the open addressing hash table.

14 / 70

Application to knapsack

 0 if i = 0    k(i − 1, w ) if w < wi k(i , w ) = max{k(i − 1, w ), otherwise    k(i − 1, w − wi ) + pi }

There are two possible orderings of the two subproblems in last case. Each thread chooses one of the two, with equal probability.

15 / 70

Shortest paths

Floyd-Warshall algorithm: s(i , j, k) is the length of the shortest path from node i to node j using only 1, . . . , k as intermediate nodes.  0, if i = j    dij , if k = 0 s(i , j, k) = min{s(i , j, k − 1), otherwise    s(i , k, k − 1) + s(k, j, k − 1)} where dij is the weight (distance) of the directed edge from i . The randomization chooses, with equal probability, between the 3! = 6 orderings of the subproblems.

16 / 70

RNA structural alignment (revisited)

D.P. from Hofacker et al. (2004):  S(i + 1, j, k, l ) + γ,    S(i , j, k + 1, l ) + γ, S(i , j, k, l ) = max S(i + 1, j, k + 1, l ) + σ(Ai , Bk ),    maxh≤j,q≤l S M (i , h, k, q) + S(h + 1, j, q + 1, l ) B S M (i , j, k, l ) = S(i +1, j −1, k+1, l −1)+ΨA ij +Ψkl +τ (Ai , Aj , Bk , Bl )

To randomize, we take a random permutation of the list of all subproblems in the S(·) and S M (·) computation.

17 / 70

12

UltraSPARC T1 results (1)

6 4 2 0

speedup

8

10

knapsack knapsack (no rand) shortest paths shortest paths (no rand) RNA struct. alignment RNA struct. alignment (no rand) open stacks (tiebreak) open stacks (full) open stacks (no rand)

0

5

10

15

20

25

30

threads

18 / 70

UltraSPARC T1 results (2)

problem knapsack shortest paths RNA struct. alignment open stacks (tiebreak) open stacks (full)

speedup 8.97 9.88 9.17 6.96 10.83

threads 31 32 31 27 32

19 / 70

Conclusions (parallel dynamic programming)



We demonstrated a 10x speedup (for 32 threads) on the open stacks D.P.



Applicable to any dynamic program



Including very large ones where bottom-up impractical



Can also be applied to smaller problems using array not hash table



No need to analyze data dependencies etc. for vectorization



Only need to consider how to randomize subproblem ordering: generally trivial but “more random” is better

20 / 70

Protein substructure searching (the short version — no equations)

21 / 70

Introduction



We want to search for occurrence of substructures in a database of structures.



This is important to understand protein structure and function.



Structural matching is a computationally challenging problem.

22 / 70

Protein structure in 3 easy steps (1): Primary

>1UBI:A|PDBID|CHAIN|SEQUENCE MQIFVKTLTGKTITLEVEPSDTIENVKAKIQDKEGIPPDQQRL IFAGKQLEDGRTLSDYNIQKESTLHLVLRLRGG

23 / 70

Protein structure in 3 easy steps (2): Secondary

24 / 70

Protein structure in 3 easy steps (3): Tertiary

25 / 70

Existing methods

◮ ◮

There are lots; I’m not going to go into details here. Basically two classes: 1. Residue or atom level structural alignment; 2. SSE matching



Class 1 methods are slow as they work at a detailed level so have large amounts of data;



Class 2 methods are slow as they tend to require solving computationally hard problems (but on much smaller amounts of data than class 1).



Lots of heuristic methods to get faster approximations.

26 / 70

TableauSearch



Konagurthu, Stuckey, Lesk (2008) Bioinformatics 24(5):645–651.



This work is an extension of the work cited above.

27 / 70

Tableau encoding

0° −45°

45°

P L

E R

90°

−90°

S

O −135°

D T

135° 180°

28 / 70

β-grasp query structure and tableau 3

7

4 N

2 1

6 8

5

C

(b)

(a)

e

0.000

OT e

2.654

0.000

−1.173

2.147

1.000

0.389 −2.757

1.352

2.040 −1.438

2.079 −1.651

0.000

1.556 −1.108 −1.647

2.985

−1.258

1.693 −1.808 −1.851 −0.590

2.102 −1.231

(c)

LE RT xa PD OS RD xg

3.000

RT LE RT LS e LE RD LE LS OT e

0.000

1.309 −0.370 −2.913

3.000

0.959

2.264

2.566 −0.721

RT LS LS RD PE OS xg 0.000

PE RT LE RD OT PE RT e

(d)

29 / 70

Maximally-similar subtableaux



Finding a substructure within a structure is to find maximally-similar subtableaux in the two tableaux.



This problem can be formulated as a quadratic integer program (QIP).



This problem is equivalent to the quadratic assignment problem and thus NP-hard.

30 / 70

TableauSearch ◮

TableauSearch is a method of approximating the optimum matching score.



It uses dynamic programming (DP) in an alignment-like approach.



It is extremely fast; e.g. searching 75632 ASTRAL domains in 66s (Konagurthu et al. (2008)).



But it is only an approximation to the score, and can miss matches.



More importantly, it is a global alignment, giving high scores to similar structures - we cannot use it to search for a substructure in a larger structure.



It also depends on SSE ordering (sequence) being maintained



IR Tableau (Zhang et al. 2010) is an even faster method. 31 / 70

MNAligner



Li et al. 2007 “Alignment of molecular networks by integer quadratic programming” Bioinformatics 23(13):1631-1639



The formulation of this problem as a QIP in this paper is strikingly similar to the tableau matching QIP.



But the authors note that the constraints are totally unimodular.



This means that the QIP can be relaxed to a QP which will have an integer solution(under certain conditions)

32 / 70

QP tableau search



So by relaxing the QIP to a QP as in MNAligner, we can much more efficiently solve it. This is essentially what our QP tableau search method does.



We also need to relax some of the constraints and penalize their violation in the objective function instead.



I am leaving out the details of the formulation and solution by interior point method for this short talk.

33 / 70

Evaluation



We ran queries on the ASTRAL SCOP 1.73 95% sequence identity non-redundant subset (15273 domains).



For assessing whole structure matches, we used a randomly chosen set of 200 query structures.



For substructure matches, we must make some more manual comparisons with other methods. We will just show an example here.



Similarly for non-linear matches.

34 / 70

0.6 0.4 0.2

QP tableau search (norm2) VAST SHEBA TableauSearch (norm2) TOPS

0.0

True positive rate

0.8

1.0

ROC curves in 200 query set in ASTRAL SCOP 95% subset

0.0

0.2

0.4

0.6

0.8

1.0

False positive rate 35 / 70

Serpin B/C sheet substructure (left) found in 1MTP (right)

36 / 70

Conclusions (QP Tableau Search) ◮



Relaxing the QIP tableau matching algorithm to real QP and solving by interior point method is a sensitive and efficient method to locate occurrences of a query substructure in a structure database. Although slower than the DP TableauSearch or IR Tableau, this technique is much faster than solving the QIP or ILP directly with CPLEX and (in common with the latter methods): ◮ ◮





can handle substructure queries; can remove the ordering constraint to find non-sequential alignments; can return the SSE matches, not just a score.

If only we could do it even faster...

37 / 70

Faster protein substructure searching

38 / 70

To try to maximize the same objective function as before, but much faster, we will: ◮

use simulated annealing



create a parallel implementation on a graphics processing unit (GPU)

39 / 70

State of the system

Pairwise comparison of structure A with NA SSEs and structure B with NB SSEs, represented by tableaux TA and TB The state of the matching is vector v , where vi = j, 1 ≤ i ≤ NA , 0 ≤ j ≤ NB means that the i th SSE in structure A is matched with the jth SSE in structure B, or with no SSE if vi = 0.

40 / 70

Initial state

Each SSE in structure A is matched with the first SSE of the same type (helix, strand) in structure B, with probability pm .

41 / 70

Move to neighbor state



An SSE i is chosen uniformly at random in structure A and its mapping changed to a random SSE j of the same type in structure B, (optionally) without violating the non-crossing constraint.



If there is no such j, then set vi = 0 i.e. that SSE is no longer matched.

42 / 70

Simulated annealing schedule



a move is accepted if objective function is better, or if ′ (v ) ) > p where p is a random number in [0, 1] exp( g (v )−g T



T ← αT for the next iteration



repeat until iteration limit (100 iterations) reached

Slightly different from “vanilla” simulated annealing: ◮

The best state ever found is remembered, not necessarily the final state.



The whole schedule is run M times, we call each a restart.



The answer is the best objective value (and its state) ever found in any of the restarts.

43 / 70

Graphics Programming Units ◮

Originally for graphics rendering, now “GPGPU” (general purpose GPU) also used for other parallel algorithms.



NVIDIA proprietary CUDA: extensions to C for GPGPU programming



OpenCL is a standard for doing the same thing



Data-parallelism: basically SIMD - very many threads running the same code simultaneously on different data locations.



“co-processing” — host CPU has to send data to GPU and then get results back from GPU.



Need to use a large number (thousands) of threads to get good results

44 / 70

GPU Memory hierarchy



Large, high latency global memory



Small (e.g. 16 KB) fast shared memory



Small fast constant (readonly) memory



Thread local memory: this “local” memory is slow like global!



No cache: the programmer manages memory hierarchy.

45 / 70

CUDA programming model Grid Block 0

Block 1

Block 2

Block 3

Block 4

Block 5

Key: Shared memory

Thread

46 / 70

Parallelization using CUDA (1) ◮

The query data is stored in the constant memory, all threads can read it quickly



The whole database of structures is stored in the large (slow) global memory Two levels of parallelism:









Each block of threads does a single pairwise comparison of the query to a structure in the database. Each thread in the block runs the simulated annealing schedule, so we do the restarts in parallel.

Each block of threads first parallel copies the database structure it is going to use into its shared memory for fast access.

47 / 70

Parallelization using CUDA (2) ◮

The only synchronization necessary is: ◮



a barrier after loading structures into shared memory, so all threads in a block can safely use it a barrier at the end of the restart to do the MAX reduction operation to find the best value of objective function over all threads in the block.



If the number of restarts is larger than the number of threads in a block, threads in a block will have to run more restarts until done.



If the number of database structures is larger than the number of blocks in the grid, the blocks will have to load and process more db structures until they are done.

48 / 70

Parallelization using CUDA (3)



Structures too large for the shared or constant memory can still be handled, by leaving them in the global memory, but this is slower.



The tableau representation is compact — means we don’t have a problem with overhead communicating data to GPU (and individual structures are usually small enough for fast shared/constant memory).

49 / 70

NVIDIA hardware used in experiments

Tesla C1060 4 GB global memory, 30 multiprocessors, 240 cores, 1.30 GHz. GTX 285 1 GB global memory, 30 multiprocessors, 240 cores, 1.48 GHz. We used 128 threads/block and 128 blocks/grid (16384 threads total) for all experiments.

50 / 70

Results for ASTRAL 95% 200 query set

Method SHEBA SA Tableau Search SA Tableau Search SA Tableau Search DaliLite SA Tableau Search SA Tableau Search SA Tableau Search QP Tableau Search LOCK2 TableauSearch TOPS VAST IR Tableau YAKUSA

Platform CPU CPU GTX 285 Tesla C1060 CPU CPU GTX 285 Tesla C1060 CPU CPU CPU CPU CPU CPU CPU

Restarts 4096 4096 4096 128 128 128 -

Elapsed time 25 h 22 m 142 h 42 m 4 h 11 m 5 h 40 m 620 h 03 m 4 h 18 m 0 h 08 m 0 h 11 m 157 h 51 m 208 h 09 m 1 h 11 m 1 h 11 m 14 h 26 m 0 h 01 m 4 h 14 m

AUC 0.931 0.930 0.930 0.930 0.929 0.921 0.920 0.920 0.914 0.912 0.858 0.855 0.855 0.854 0.827

standard error 0.004 0.004 0.004 0.004 0.004 0.004 0.004 0.004 0.004 0.004 0.005 0.005 0.005 0.005 0.005

95% C. I. lower upper 0.924 0.938 0.923 0.937 0.923 0.937 0.923 0.937 0.922 0.936 0.913 0.929 0.912 0.927 0.912 0.927 0.906 0.922 0.904 0.920 0.848 0.867 0.845 0.864 0.846 0.865 0.844 0.864 0.816 0.837

51 / 70

0.930

AUC versus elapsed time on CPU and GPUs

4096

1024 512

8192

8192

2048 2048

256 256 512

0.924

AUC

0.926

0.928

1024

4096

0.920

0.922

256

GTX 285 Tesla C1060 CPU (AMD Opteron)

128 128 128 0

200

400

600

800

elapsed time (minutes)

52 / 70

β-grasp motif query

53 / 70

Motif query results

Query d1ubia d1ubia d1ubia d1ubia β-grasp β-grasp β-grasp β-grasp serpin B/C serpin B/C serpin B/C serpin B/C

sheet sheet sheet sheet

Method SA SA QP TOPS SA QP SA TOPS SA SA QP TOPS

Platform GTX 285 CPU CPU CPU CPU CPU GTX 285 CPU GTX 285 CPU CPU CPU

Restarts 128 128 128 128 128 128 -

Elapsed time 00 m 03 s 01 m 17 s 05 m 11 s 00 m 10 s 01 m 11 s 02 m 01 s 00 m 03 s 00 m 09 s 00 m 03 s 01 m 19 s 08 m 16 s 00 m 24 s

AUC 0.918 0.912 0.902 0.894 0.939 0.938 0.934 0.847 0.993 0.991 0.986 0.491

standard error 0.011 0.011 0.012 0.012 0.010 0.010 0.010 0.014 0.013 0.015 0.019 0.054

95% C. I. lower upper 0.896 0.940 0.890 0.935 0.879 0.926 0.870 0.918 0.920 0.958 0.918 0.957 0.914 0.954 0.819 0.875 0.968 1.019 0.962 1.021 0.949 1.023 0.385 0.597

54 / 70

Conclusions (SA Tableau Search)



Comparable in speed and accuracy with widely used methods



Up to 34× speedup on GPU over CPU



Making it one of the fastest available methods



The first use of a GPU for protein structure search



If only there were a graphical interface for building motif queries...

55 / 70

Protein structure cartoons

56 / 70

Cartoons



hand-drawn



HERA / ProMotif (Hutchinson and Thornton 1990, 1996)



TOPS (Flores et al. 1994, Westhead et al. 1999)



hand-drawn with TopDraw (Bond, 2003)



PDBSum topology cartoons (Laskowski et al. 2006), based on HERA.

57 / 70

Example - 1HH1

Holliday junction resolvase, PDB id 1HH1, Bond et al. 2001, image generated with PyMol

58 / 70

HERA / ProMotif (Hutchinson and Thornton 1996) C N 140 D 9S

139 L

10 A

138 T

11 V

137 R

12 E

136 S

13 R

135 I

14 N

134 K

15 I

133 A

16 V

132 E

17 S

131 V

18 R

105 L 104 K

50 V

47 K

103 E

51 I

46 L

52 I

45 A

86 S

122 122

130 L

19 L

24

129 R

20 R

23

128 V

21 D

127 L

22 K

126 D 125 E

25 A 26 V

124 L 123 D

24 64

102 F

87 L

44 I

27 V

101 P

88 F

54 I

43 I

28 R

60 K

66 I

115 A

100 I

89 L

55 E

42 D

29 A

59 R

67 Y

114 V

99 F

85

53 L

90 G

56 M

98 K

91 V

57 K

97 L

92 K

96 V

93 K

61 D

65 K

68 V

116

106 R

113 Y

107 R

112 N

108 T

111

69 R 95

70 R 71 E 72 Q 73 A 74 E 75 G 76 I 77 I 78 E 79 F 80 A

85

81 R 82 K 83 S 84 G

1HH1

59 / 70

PDBSum

C

N

140 9

22 103 105

50

47

123

25

86 102 42

29

61 59

68

57 96

106 108

65 115 112

93 69

84

60 / 70

N1 C2

Figure: TOPS vs manually drawn with TopDraw 61 / 70

8

C

C

9

5

B

4

7 6 3 1

2

A

N

Figure: Pro-origami vs manually drawn with TopDraw

62 / 70

The essence of our approach



Generate specifications of cartoon elements (SSEs)



Generate connections and relationships between the cartoon elements as constraints



Give this information to the constraint-based diagram editor Dunnart (Wybrow et al. 2006; Dwyer et al. 2009)



Dunnart will lay out the diagram consistent with the constraints and can be used interactively to edit it, maintaining the constraints.

63 / 70

Plu-MACPF, PDB id 2QP2 (Rosado et al. 2007)

64 / 70

Comparison of TOPS, PDBSum and Pro-origami for Plu-MACPF

65 / 70

Using Pro-origami to make structural motif query

66 / 70

Conclusions ◮

We found that bounding for the RNA structural alignment d.p. was not successful



But we demonstrated a 9× speedup (32 threads) by parallelizing that d.p.,



as a specific example of a completely general method for parallelizing any d.p., without regard to its specific properties.



We developed two new algorithms for tableau-based protein structure/motif search,



and a parallel implementation of one on a GPU — the first use of a GPU for the protein structure search problem, and one of the fastest available methods.



We developed a system for automatically generating protein structure cartoons by means of constraint-based diagrams,



and its use as a substructure query building interface to our protein substructure search algorithms. 67 / 70

Acknowledgments



Prof. Peter Stuckey



Dr Tony Wirth



Dr Linda Stern



A/Prof. Maria Garcia de la Banda



Prof. Manuel Hermenegildo



Dr Michael Wybrow



Prof. James Whisstock



Dr Arun Konagurthu



VPAC



Tech. services.

68 / 70

Publications ◮

A. Stivala, A. Wirth, P.J. Stuckey, “Tableau-based protein substructure search using quadratic programming”, BMC Bioinformatics (2009), 10:153



A. Stivala, P.J. Stuckey, M. Garcia de la Banda, M. Hermenegildo, A. Wirth, “Lock-free parallel dynamic programming”, J. Parallel Distrib. Comput. (2010), 70:839-848



A. Stivala, P.J. Stuckey, A. Wirth, “Fast and accurate protein substructure searching with simulated annealing and GPUs”, submitted to BMC Bioinformatics (under review)



A. Stivala, M.J. Wybrow, A. Wirth, J.C. Whisstock, P.J. Stuckey, “Automatic generation of protein structure cartoons with Pro-origami”, submitted to Bioinformatics (under review)

69 / 70

Source code, data sets, web server, etc.



QP Tableau Search: http://www.csse.unimelb.edu.au/~astivala/qpprotein



SA Tableau Search: http://www.csse.unimelb.edu.au/~astivala/satabsearch



Pro-origami server: http://munk.csse.unimelb.edu.au/pro-origami

70 / 70

Algorithms for the Study of RNA and Protein Structure

Aug 27, 2010 - More importantly, it is a global alignment, giving high scores to similar structures - we ... structure B, (optionally) without violating the non-crossing constraint. ... global memory. ▻ Two levels of parallelism: ▻ Each block of threads does a single pairwise comparison of the query to a structure in the database.

3MB Sizes 0 Downloads 115 Views

Recommend Documents

The Multidimensional Knapsack Problem: Structure and Algorithms
Institute of Computer Graphics and Algorithms .... expectation with increasing problem size for uniformly distributed profits and weights. .... In our implementation we use CPLEX as branch-and-cut system and initially partition ..... and Ce can in pr

fundamentals of protein structure and function pdf
fundamentals of protein structure and function pdf. fundamentals of protein structure and function pdf. Open. Extract. Open with. Sign In. Main menu. Displaying ...

PIA – Protein Inference Algorithms Tutorial - GitHub
Sep 23, 2016 - install the "KNIME Analytics Platform + all free extensions", which comes with ... is used to pass spectrum data to PIA, which can later be used to ...

Protein Structure and Function: From Sequence to ...
Fax: +44 (0) 1235 465555. E-mail: ... For information on the online version of the text, please contact: Customer ... In the U.K., call free on 0800 389 8136. Fax: ...

RNATOPS-W: a web server for RNA structure searches of genomes
Feb 15, 2009 - automatic selection of a hidden Markov model (HMM) filter and also a friendly ... For Permissions, please email: [email protected] ... with (sequentially) conserved RNA profiles, HMM filters generated.

RNATOPS-W: a web server for RNA structure searches of genomes
Feb 15, 2009 - 1Department of Computer Science, 2Department of Plant Biology and 3Institute of Bioinformatics, University of ... Associate Editor: Ivo Hofacker.

comparative study of the micro-structure of quenched ...
Treatment 2006; 48: 405 - 411. 8. Callister Jr WD ... The best earning is that coming from a man's work with his hands and every (lawful) business transaction.

The Study of Neural Network Adaptive Variable Structure ... - CiteSeerX
The global Internet, wireless communication systems, ad-hoc networks or ... from the free flow to the high congestion state indicated in terms of number of packet ...

Read PDF Swift Data Structure and Algorithms
languages, but also provides backward support for Objective-C and Apple s legacy ... developers to start creating applications for OS X and iOS using Swift.

HW3 Protein Structure 2013-2014.pdf
Sign in. Loading… Whoops! There was a problem loading more pages. Retrying... Whoops! There was a problem previewing this document. Retrying.

Fast protein tertiary structure retrieval based on ... - Semantic Scholar
Feb 11, 2008 - Lee Sael,1 Bin Li,1 David La,2 Yi Fang,3 Karthik Ramani,3 Raif Rustamov,4 and Daisuke ...... Pearson WR, Lipman DJ. Improved tools for ...

Fast protein tertiary structure retrieval based on ... - Semantic Scholar
Feb 11, 2008 - SAL is powerful in finding overall fold similarity of proteins that is missed by CE or COSEC. This feature of SAL is especially useful for finding ...

Read PDF Introduction to Protein Structure
Statistical Techniques Statistical Mechanics Top VIdeos Warning Invalid argument supplied for foreach in srv users serverpilot apps jujaitaly public index php on ...