Tuesday, November 9, 2010 14:00 - 15:00
16 ETCS points = 16 weeks of work, 30 hours a week
Thursday, November 11, 2010 11:00 - 12:00
Get Linux on your PCs/notebooks, either dual boot or a virtual box. Tuesday, November 23, 2010 15:00 - 16:00 Tuesday, November 30, 2010 15:00 - 16:00 Tuesday, December 14, 2010 15:00 - 16:00 Tuesday, February 8, 2011 15:00 - 16:00 Next meeting: if you can foresee that you are finished within a week, sent me an email and we will find an appointment. But no earlier than April (I am away for almost all of March). Tuesday, April 5, 2011 15:00 - 16:00
Make a small website for the project with all the basic information: who, when, what. Here is a nice example, you can copy the structure if you like: http://stromboli.informatik.uni-freiburg.de/student-projects/zhongjie-cai/. Commit it to the SVN in a subfolder called www.
Tuesday, April 12, 2011 15:00 - 16:00
You can checkout your repository from our svn with svn checkout http://vulcano.informatik.uni-freiburg.de/svn/student-projects/tuti+zhilu, username is tuti+zhilu, password is tz10.
Add a new file to the SVN with svn add
Commit your changes to the SVN with svn commit
et the latest changes from the SVN with svn update
Get the history of all changes so far with svn log
If you need help with SVN, there is svn help and a lot of documentation and tutorial on the web.
Make sure the network / internet with your Linux. (For example, you should be able to call a browser within your Linux and connect to the Internet.)
Get some help with C++ and try to implement the computeStructure function (in NussinovAlgorithm.cpp) so that it really computes the structure and not just (0,0).
Also consider watching the first few lectures of the C++ course I gave last semester: http://vulcano.informatik.uni-freiburg.de/wiki/teaching/ProgrammierenCplusplusSS2010
Add documentation before each class and each method.
Use cpplint.py from now on, and make sure it passes without errors / warning before you commit code to the repository. Call with python cpplint.py
Here is the link to the Google C++ styleguide: http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml.
Write unit tests for every method (in your case: computeStructure, computeNussinoxMatrix, tracebackNussinovMatrix). Here is the gtest documentation: http://code.google.com/p/googletest/
The output of the matrix should not be in your computeStructure method, but in a separate method (say showNussinovMatrix), which you can call from your main function.
Add usage info of the kind Usage: ./NussinovAlgorithmMain
Continue fixing the errors which are there, and add the unit tests, as explained below + the other things from the list below.
For computer problems, you can always try the HiWi room (to the left of my office), for example: Jens Hoffmann, Axel Lehmann, Simon Skilevic, Ina Baumgarten, Robin Schirrmeister, ...
For problems of general understanding you can always send me an email or try to get me in my office (but I am usually very busy).
Write an implementation for the ZukerAlgorithm class. I put the (first version of the) .h file in the SVN, extend as appropriate.
Add unit tests for every method you write (not only for computeStructure, also for the method which does the incremental matrix computation + the method for the traceback).
s usual, find small examples, and do the computation on paper (with all the matrices). This you can use for your unit tests and to find errors.
I would suggest the following order: (1) do the paper examples + understand, (2) write the unit tests, (3) write the code.
Implement the third (McCaskill) algorithm from the RNA lecture. As usual with unit tests of all the methods. About the algorithm ask the people from the RNA lecture for help. For computer / C++ / SVN questions, you can ask the HiWis next door for help.
Also fix the lint errors in the code which is already there. (make lint should pass without errors)
Make up your mind between these two options: (A) stop after MsCaskill with a just so passing grade; (B) try and get a better grade by implementing something considerably more complex like Locarna (described in the paper I sent you), which was the original goal of the team project.
Remaining TODOS:
Write missing tests for McCaskill
The Main program should take as input an RNA sequence (as before) AND a structure, and then it should output the probability of that structure for that sequence computed using McCaskill. For example, ./McCaskillAlgorithmMain ACGU "(1,4),(2,3)". See slide 44 from the McCaskill slides (link above) for the formula. Note that you have to write a small parser to convert the second argument from a string to a std::vector
Next (maybe last) meeting