![]() |
Learn programming by solving key problems in bioinformatics You will simulate a neural membrane, align biological sequences, model chemotaxis and genetic drift, and find blood cells in an image. You will learn algorithms and techniques valuable for computational biology and scientific computing more generally. In the process you will become proficient in Java, including the many new features of Java 8. This practical book will help you find scientific software online and learn to release usable, high quality code. Based on a course at University of California Santa Cruz Extension, this book includes many projects and exercises, and full source code and sample data for all the programming examples.
"He explains the language and the concepts in a way that's easy to follow. ... What better way to learn Java than through interesting problems in biology and genetics."
|
1 | Computational biology |
1.1 | Biological applications of computers |
1.2 | How to use this book |
1.3 | Java and other languages |
1.3.1 | Elements of a program |
1.4 | The rest of the book |
2 | Your Java environment |
2.1 | The Java life cycle |
2.2 | NetBeans |
2.2.1 | Download NetBeans |
2.3 | Setting up |
2.3.1 | Where to put things |
2.3.2 | Configuring your ebook reader |
2.4 | Your first Java program |
2.4.1 | Create a new NetBeans project |
2.4.2 | The program source |
2.4.3 | Run the program |
2.5 | The context |
2.5.1 | From source to runnable program |
2.5.2 | Steps in development |
2.6 | Java versions |
2.7 | Other Java tools |
2.7.1 | Using command windows |
2.7.2 | The Java Development Kit |
2.7.3 | Other tools |
2.8 | Summary |
2.9 | Projects and exercises |
3 | Java basics |
3.1 | Chapter preview |
3.2 | Using the sample code |
3.3 | A program for numeric data |
3.3.1 | The program |
3.4 | Types |
3.4.1 | Numbers |
3.4.2 | Other primitive types |
3.5 | Operators |
3.6 | Variables |
3.7 | Comments |
3.8 | Declarations |
3.9 | Initialization |
3.9.1 | Assignment |
3.9.2 | Combining operations with assignment |
3.9.3 | Type conversion |
3.9.4 | Running and debugging the program |
3.9.5 | Programming style |
3.9.6 | Summary |
3.10 | Arrays and loops |
3.10.1 | The program |
3.10.2 | Multiple measurements in an array |
3.10.3 | For loops |
3.10.4 | Summary |
3.11 | Installing a library |
3.11.1 | License agreements |
3.11.2 | Installing the Apache commons math library |
3.11.3 | Looking at the documentation |
3.12 | Using classes from a library |
3.12.1 | Classes and objects |
3.12.2 | Pointing to the class |
3.12.3 | Creating a SummaryStatistics object |
3.12.4 | Using the SummaryStatistics object |
3.12.5 | Summary |
3.13 | Running your program |
3.13.1 | Running inside NetBeans |
3.13.2 | Running outside NetBeans |
3.14 | Projects and exercises |
4 | Simulating a gene |
Classes and objects |
4.1 | Chapter preview |
4.2 | Simulating a single gene |
4.2.1 | Advanced note |
4.3 | Running a program |
4.4 | Setting up a new program |
4.4.1 | File and directory structure |
4.5 | The main class |
4.5.1 | How to read program listings |
4.5.2 | The initialization section |
4.5.3 | Command line arguments |
4.5.4 | If statements |
4.5.5 | Parsing numbers |
4.5.6 | Exceptions |
4.5.7 | The control section |
4.6 | Writing a Java class: the Gene class |
4.6.1 | The framework |
4.6.2 | Variables |
4.6.3 | Access control |
4.6.4 | The constructor |
4.6.5 | this |
4.6.6 | Getters and setters |
4.6.7 | Methods |
4.6.8 | toString |
4.6.9 | The simulation |
4.7 | Building and running your program |
4.8 | Summary |
4.9 | Projects and exercises |
5 | Regulatory Networks |
Programs with several classes |
5.1 | Gene transcription networks |
5.1.1 | Negative autoregulation |
5.1.2 | Feed forward loop |
5.2 | Chapter preview |
5.3 | Simulating a feed forward loop |
5.3.1 | Main program |
5.3.2 | The SimEvent class |
5.3.3 | The Promoter class |
5.3.4 | The Gene class |
5.3.5 | Exercises |
5.4 | A flexible simulation program |
5.4.1 | ArrayList |
5.4.2 | Reading files |
5.4.3 | Exercises |
6 | A neural simulation |
Inheritance, or relations between classes |
6.1 | Chapter Preview |
6.1.1 | Programming topics |
6.1.2 | Biology topics |
6.2 | The Morris-Lecar neuron model |
6.2.1 | Ion conductance |
6.2.2 | Calcium conductance |
6.2.3 | The leakage current |
6.2.4 | Potassium conductance |
6.2.5 | Potential |
6.2.6 | Advanced note |
6.3 | Running the simulation |
6.4 | Using a hash table for the parameters |
6.4.1 | The HashMap class |
6.4.2 | Extending HashMap |
6.5 | The simulation |
6.5.1 | Overview |
6.5.2 | The Conductance class |
6.5.3 | The LeakConductance class |
6.5.4 | The CalciumConductance class |
6.5.5 | The PotassiumConductance class |
6.5.6 | Interfaces |
6.5.7 | Terminology and summary |
6.6 | Running the simulation |
6.6.1 | The rest of the code |
6.6.2 | Experimenting with the simulation |
6.7 | Fine points of inheritance |
6.7.1 | Exceptions in overridden methods |
6.7.2 | The difference between overloading and overriding |
6.7.3 | What about fields? |
6.8 | Releasing your software |
6.8.1 | Move your class |
6.8.2 | Add documentation with Javadoc |
6.8.3 | Packaging the release |
6.9 | Exercises |
6.10 | Type parameters |
6.10.1 | Classes for the units |
6.10.2 | Bounded type parameters |
6.10.3 | Extensions of parameterized types |
6.10.4 | Wild cards |
6.10.5 | Limitations |
7 | Biological sequences |
Biological software packages |
7.1 | Chapter Preview |
7.2 | Biological sequences |
7.2.1 | Raw sequence data |
7.2.2 | Gene transcription |
7.3 | Sequence file formats |
7.4 | BioJava |
7.4.1 | Installing BioJava |
7.5 | Sample programs |
7.5.1 | Global sequence alignment |
7.5.2 | Viewing protein structure |
8 | Using web services |
8.1 | Chapter preview |
8.2 | Biological data online |
8.2.1 | Viewing sequences in Ensembl |
8.2.2 | Viewing sequences from NCBI |
8.3 | Programmatic access to sequences |
8.3.1 | Courtesy when using common resources |
8.3.2 | Using URL objects |
8.3.3 | Acquiring sequence data |
8.4 | Accessing BioMart |
8.4.1 | The underlying HTTP |
8.4.2 | Searching Biomart manually |
8.4.3 | XML |
8.4.4 | Manipulating XML in Java |
8.4.5 | A program to find BioMart data |
9 | Probabilistic sequence algorithms |
Random numbers, and lambda expressions |
9.1 | Chapter preview |
9.1.1 | Programming topics |
9.1.2 | Bioinformatics topics |
9.2 | The typing monkey |
9.2.1 | The main program |
9.2.2 | Random numbers |
9.2.3 | The Typer class |
9.3 | Smarter monkeys |
9.3.1 | Trigram models |
9.3.2 | Program structure |
9.3.3 | Extending the random number generator |
9.3.4 | The unigram model |
9.3.5 | Object persistence |
9.3.6 | NGram models |
9.4 | Training the models |
9.4.1 | Data sets |
9.4.2 | Creating the models |
9.4.3 | The complete cycle |
9.5 | Lambda expressions |
9.5.1 | What are lambda expressions? |
9.5.2 | Functional interfaces |
9.5.3 | Functional programming |
9.5.4 | Types in lambda expressions |
9.5.5 | Local values in lambda expressions |
9.6 | Bulk data operations |
9.6.1 | Outline of a bulk data operation |
9.6.2 | Streams |
9.6.3 | Intermediate operations |
9.6.4 | Terminal operations |
9.6.5 | The complete ngram trainer |
9.7 | Identifying unknown data |
9.7.1 | Calculating the probability |
9.7.2 | Adding biological sequence data |
10 | Alignment algorithms |
Practical programming |
10.1 | Sequence alignments |
10.2 | Big O notation for algorithmic complexity |
10.2.1 | Exercise |
10.3 | Dynamic programming |
10.3.1 | Exercise |
10.4 | An alignment program |
10.4.1 | Setting up the program structure |
10.4.2 | The DPMatrix1 class |
10.4.3 | The dynamic programming nodes |
10.4.4 | Running the program |
10.5 | Optimizing memory and performance |
10.5.1 | Increase the heap size |
10.5.2 | Profile the application |
10.5.3 | Garbage collection |
10.5.4 | Improve the algorithm |
10.6 | Assertions |
10.6.1 | Adding assertions to alignment |
10.6.2 | Using assertions |
10.6.3 | Proper and improper uses |
10.7 | Unit testing |
10.7.1 | Test driven development |
10.7.2 | Setting up the framework |
10.7.3 | Testing alignment |
11 | Genetic drift |
Graphical User Interfaces |
11.1 | Chapter Preview |
11.1.1 | GUI toolkits |
11.2 | The finished program |
11.2.1 | Setting up the structure |
11.3 | Genetic drift |
11.4 | Enumerations |
11.4.1 | Defining an enumeration |
11.4.2 | Using an enumeration |
11.5 | The population model |
11.5.1 | Random breeding |
11.5.2 | Random survival |
11.6 | Developing the interface |
11.6.1 | GUI tools |
11.6.2 | The initial JFrame |
11.6.3 | Adding the controls |
11.6.4 | Summary |
11.7 | The JavaFX interface |
11.7.1 | Principal differences |
11.7.2 | Starting FX development |
11.8 | Exercises |
12 | Chemotaxis |
Threading |
12.1 | Chemotaxis |
12.1.1 | Running the simulation |
12.1.2 | How chemotaxis works |
12.2 | Threading |
12.2.1 | Disadvantages of threading |
12.2.2 | Advantages of threading |
12.3 | Genetic algorithms |
12.4 | A threaded simulation |
12.4.1 | Modeling one bacterium |
12.4.2 | A pond full of bacteria |
12.4.3 | The user interface |
12.5 | Simulating chemotaxis |
12.6 | Simulating survival |
12.6.1 | Stopping a thread |
12.6.2 | Does it work? |
12.7 | Synchronizing access |
12.7.1 | Synchronized methods |
12.7.2 | Deadlock |
12.7.3 | Synchronizing on objects |
12.8 | Letting chemotaxis evolve |
12.8.1 | The Genotype class |
12.8.2 | Additions to the Bacterium class |
12.9 | Other concurrency tools |
12.9.1 | Memory consistency |
12.9.2 | Atomic operations |
12.9.3 | Synchronized collections |
12.9.4 | Semaphores |
12.9.5 | Work queues |
12.9.6 | Futures |
12.9.7 | Executors |
12.9.8 | Completable futures |
13 | Scientific images |
Reflection |
13.1 | Chapter preview |
13.2 | Image processing |
13.2.1 | Image formats |
13.3 | ImageJ |
13.3.1 | Counting cells |
13.4 | Writing a plugin |
13.4.1 | The ImageJ plugin framework |
13.4.2 | Adding the plugin code |
13.5 | The jar explorer |
13.5.1 | The JarExplorer interface framework |
13.5.2 | Setting up the tree |
13.5.3 | Examining the classes |
13.5.4 | Invoking a method |
13.6 | Projects and Exercises |
14 | Projects |
14.1 | RNA folding |
14.2 | Phylogenetic trees |
14.3 | Multiple alignment |
14.4 | Access to NCBI data |
Privacy and contact information © Peter Garst 2014. Amazon and Kindle are trademarks of Amazon.com, Inc. or its affiliates. iBooks is a trademark of Apple Inc.