[Biopython] python advice needed

Kevin Rue kevin.rue at ucdconnect.ie
Tue Apr 15 15:40:44 EDT 2014


Thanks, much appreciated !

Best of luck,
Kevin


On 15 April 2014 20:19, Csaba Kiss <csaba.kiss at lanl.gov> wrote:

>  Thanks for the advice Kevin. If this was a forum, they should make your
> post a sticky :). I use pycharm and really like it. However, using it
> efficiently is also challenging.
>
> Csaba
>
> On 4/15/2014 10:27 AM, Kevin Rue wrote:
>
> Hi Csaba,
>
>  Well done! I witness everyday in my research group that the transition
> from fundamental biology to bioinformatics is not a straightforward
> process. Congratulations on your first successful experience.
>
>  To give some context to my answer, let me tell you that I am a 3rd year
> PhD student trained in bioinformatics for the past 6 years (since my
> Master's Degree). Python is the first programming language I was taught
> during my Master's Degree (a tiny amount of Matlab in practicals of math
> before that), and I was taught the object-oriented programming aspect
> through classes of the Java programming language.
>
>  I am glad that you managed to teach yourself how to program in Python
> through online resources. However, I think that going to actual classes can
> ease the learning curve a lot, particularly at the beginning, and for new
> topics such as object-oriented programming. The interactive Q&A with the
> demonstrator, and the questions of other classmates can help rapidly come
> across some common mistakes and tricks. For instance, a post-doc in my lab
> is learning Python just like you, and I have seen him rack his head for
> hours until I came along and pointed him in the right direction (avoid
> giving a student an answer: "give someone food and he'll eat for the day,
> teach them how to cook and they'll eat for the rest of their life").
>
>  Meanwhile, it is always useful to have a book around, I heard a lot of
> good about the O'Reilly books for that matter. They have Python books for
> beginners, intermediate and high-performance programming (
> http://shop.oreilly.com/category/browse-subjects/programming/python.do).
>
>
>
>  Now, if you allow me a few personal pieces of advice about programming
> (valid for Python and most languages):
>
>    - "Always write pseudo-code first"
>       - Pseudo-code is "an informal high-level<http://en.wikipedia.org/wiki/High-level_programming_language> description
>       of the operating principle of a computer program or other
>       algorithm" (Thanks Wikipedia, you just saved me 10 minutes to find my wo
>       rds)
>       - In other words, before you even approach you "file.py" script,
>       turn off the screen of your computer, take a piece of paper, and write down
>       what your script is supposed to do, what input it will accept, what outputs
>       it will generate. First in one sentence of plain English. Then break the
>       sentence in subtasks. Then continue breaking each of these subtasks into
>       smaller ones until you recognise small tasks that you feel confident to
>       code in a reasonable number of lines.
>       - The pseudo-code is extremely valuable for two reasons:
>          - Avoid losing focus of what the script was originally intended
>          to do. (once coding, it is quite easy to lose sight of the greater scheme)
>          - It will help document your script, if you write a wiki or
>          simply to comment you code (if you share it with someone else, they won't
>          need to read the entire code to understand its purpose)
>        - "Draw your objects/classes"
>       - Essentially, an object/class has a number of attributes
>       (=variables) and methods (=functions). For each I typically draw a box
>       entitled with the name of the class. Then in the box, I list the names of
>       the attributes and the names of the methods. The names of the attributes
>       and methods should clearly represent what they are meant to contain
>       (attributes) or do (methods).
>          - I still apply a rule that one of my earliest programming
>          teacher taught us: "functions are meant to do stuff, therefore their name
>          should always start with a verb of action"
>        - "Google is your friend"
>       - That's a tricky one, but every time you know what you want to do
>       but you don't know how on earth you can do it: Google your problem. You may
>       have to browse a while, or try different search words, but in my experience
>       "Any problem you find to write working and efficient code, someone else
>       likely had the same problem before you". If you can clearly explain your
>       problem, StackOverflow and other such websites may have the answer.
>    - Use a code versioning tool
>       - All the changes you have done for the past week have made your
>       script worse and you don't have a copy of last week's script? Version
>       control tools such as git/GitHub and svn will help you keep track of what
>       your code looked like along the way. This way, you can edit a script that
>       is working to try and enhance it without the fear of messing it up. If it
>       goes sour, you can just go back to the working script without having to
>       keep a separate backup.
>    - Use a friendly (but still powerful) development environement
>       - IDE (Integrated development environement) are software which are
>       meant to make programming easier. A (silly?) example is a feature I cannot
>       work without: auto-completion. Tired of typing the same long variable name
>       over and over again? Once you have defined "variable=5" in your script, a
>       decent IDE will allow you to type only "var" and opens you a friendly
>       pop-up window suggesting you all existing variables and methods starting
>       with "var". Select the one you need with the arrow keys and hit TAB: you
>       don't have to type the rest of the variable. An amusing side-effect of this
>       is that your variable names will grow longer (and therefore be more
>       explicit about what they contain). IDE come with many more features
>       including code checking, spell checking, ...
>       - For Python I am very happy with PyCharm
>
>
>
>  This email ended up to be much longer than I intended it, but I hope you
> will find it useful !
> The learning curve to Python progamming can be rough. Learning additional
> tricks like version control, IDE, and object-oriented programming can make
> it even steeper, but the end result is a very rewarding skillset that can
> be helpful in many circumstances and appeal to many research group leaders
> too!
>
>  Best of luck in your learning of Python !
>
>  Kevin
>
>
>
>
> On 15 April 2014 15:58, Csaba Kiss <csaba.kiss at lanl.gov> wrote:
>
>> Hi!
>> I need some advice how to get better in python. I have written a software
>> package to analyze antibody deep sequencing data. This was my first
>> experience with python and I am not a programmer. The end result works,
>> however, if a professional coder looks at the scripts, it is obvious that
>> it was written by an amateur. I am planning to re-write the code into a
>> better format that is extendable and more user and coder friendly. At the
>> moment the script only relies on biopython to get the sequences and quality
>> values out of sff and fastq files, the rest is custom written. I would like
>> to rely more on biopython and also perhaps extend biopython with new
>> features.
>> The problem I am having is object oriented python and classes. I
>> understand the concept of both, but it's completely different to actually
>> use it. I would like to ask help from scientist who are in a similar
>> situation, as myself. I am a molecular biologist with interest in coding,
>> but little background. Do you have any good tutorials books about python
>> classes and OOP? For example, when I learned python I found the Google
>> python class, extremely valuable. I practically looked at the videos and
>> solved the problems and that sent me on my way to python:
>> https://developers.google.com/edu/python/?csw=1
>>
>> Any help would be appreciated:
>> Csaba
>>
>> --
>> Best Regards:
>> Csaba Kiss PhD, MSc, BSc
>> TA-43, HRL-1, MS888
>> Los Alamos National Laboratory
>> Work: 1-505-667-9898
>> Cell: 1-505-920-5774
>>
>> _______________________________________________
>> Biopython mailing list  -  Biopython at lists.open-bio.org
>> http://lists.open-bio.org/mailman/listinfo/biopython
>>
>
>
>
>  --
> Kévin RUE-ALBRECHT
> Wellcome Trust Computational Infection Biology PhD Programme
> University College Dublin
> Ireland
> http://fr.linkedin.com/pub/k%C3%A9vin-rue/28/a45/149/en
>
>
> --
> Best Regards:
> Csaba Kiss PhD, MSc, BSc
> TA-43, HRL-1, MS888
> Los Alamos National Laboratory
> Work: 1-505-667-9898
> Cell: 1-505-920-5774
>
>


-- 
Kévin RUE-ALBRECHT
Wellcome Trust Computational Infection Biology PhD Programme
University College Dublin
Ireland
http://fr.linkedin.com/pub/k%C3%A9vin-rue/28/a45/149/en



More information about the Biopython mailing list