Welcome to the New Seqanswers!

Welcome to the new Seqanswers! We'd love your feedback, please post any you have to this topic: New Seqanswers Feedback.
See more
See less

Perl or Python

  • Filter
  • Time
  • Show
Clear All
new posts

  • Perl or Python

    I'm a molecular biologist that has gotten sucked into the world of next-generation sequencing. I'm mostly interested epigenetics related stuff like ChIP-seq, RNA-seq, RRBS-seq, 4C-seq, etc. It seems learning some perl or python could save me some time and increase my ability to answer the questions I want to answer.

    Would you recommend I learn Perl or Python? Does one language have advantages over the other? Is one easier then the other to learn?

  • #2
    If you follow this great Unix and Perl tutorial, your Perl skills should be at a good level to start with. Since I don't know of any similar script for learning Python, I'd just recommend learning Perl...

    But I'd say that for RNAseq, you should definitly spend just as much time on learning R as you spend on learning Perl or Python.


    • #3
      Both are adequate and relatively easy to understand. You'll find "modules" addressing nextgen problems in both. The downsides are that they are interpreted languages and tend to struggle with the staggering volume of data in nextgen datasets ... when programs are implemented strictly in that language and not calling external modules, often written in a "lower" level language. You'll find fans (and fanboys) of both so don't be surprised if a lurid prose battle erupts below.

      If I had to pick, I'd go with Python, strictly based on the comp-sci grad students I've talked with think it's "cool" and Perl stodgy ... something that hackers like me tinkered with back in the stone age: the 1990s!!! A bad reason, I know.

      Personally I wish something like Affy Power Tools (which became the toolset for old school array data) would emerge for next gen and I could use any language I wanted to play with the output, like R, or Java, or C, or awk and sed and ...

      That day is coming, we got part of it now: samtools.


      • #4
        I went through the tutorial UNIX and Perl tutorial for Biologists, which took a lot less time and was easier then I had thought. It really opened my eyes to the laborious work arounds I have implemented to address lack of programming knowledge. Before I spent more time and effort I thought I'd try to make a more informed decision on where to focus my efforts. Of course I could just go back to watching Jersey Shore before I go to sleep but that is twice as boring as the Perl tutorial.

        I am aware of the fanboy issues involved but I assume there are some real differences as well.

        As for R and Bioconductor, it's been kind of an off and on mostly unsuccessful project of mine. I still haven't found a good lesson plan for R. I find the vignettes from Bioconductor to be very ambiguous. But point well taken. I'll get back on R. Thanks.


        • #5
          What is the state of R/bioconductor/nextgen ?

          I was just thinking yesterday, "I bet those R guys have gotten around to doing something about nextgen". As many many of you know, google has become almost useless over the last 3 years, and I didn't find much. ETHANol's comments are pretty good: useless vignettes. Is there a good link to nextgen and R somewhere?


          • #6
            You can probably do most of it with R. I personally prefer python to perl. I think it's easier to learn too.


            • #7
              Hi Ethanol,

              I would say Python. Easier to learn, more readable & most of all object oriented (though you can do some kind of OO with perl).

              DAGOBAH -- DAY
              With Yoda strapped to his back, Luke climbs up one of
              the many thick vines that grow in the swamp until he
              reaches the Dagobah statistics lab. Panting heavily, he
              continues his exercises -- grepping, installing new
              packages, logging in as root, and writing replacements for
              two-year-old shell scripts in Python.

              YODA: Code! Yes. A programmer's strength flows from code
              maintainability. But beware of Perl. Terse syntax... more
              than one way to do it... default variables. The dark side
              of code maintainability are they. Easily they flow, quick
              to join you when code you write. If once you start down the
              dark path, forever will it dominate your destiny, consume
              you it will.

              LUKE: Is Perl better than Python?

              YODA: No... no... no. Quicker, easier, more seductive.

              LUKE: But how will I know why Python is better than Perl?

              YODA: You will know. When your code you try to read six months
              from now.


              • #8
                I'm a Perl fan, but they are both excellent languages, and which you choose is largely a matter of taste. There's a core philosophical difference, as expressed in the Perl slogan 'there's more than one way to do it' (i.e., the language often allows you to choose between multiple methods of achieving the same thing). This is seen by Perl hackers as a major advantage (the language adapts to you), but Pythonistas tend to view things differently (perhaps freedom is dangerous, if it allows you to make bad choices). But a good, disciplined programmer is going to write clear, maintainable code in either language.

                You could make a pragmatic decision based on what your colleagues are using, or on the amount (and quality) of available code for your particular applications. Or you could try some tutorials and see which you prefer. I'll leave it to the Python guys to point you towards the best places to learn that language. For Perl there are quite a few places to avoid - old tutorials that teach bad habits that date back to the Perl 4 days, and will have you writing the sort of ugly code that some people imagine is standard Perl. Unfortunately, these tend to be some of the top Google hits when people are looking for tutorials! Instead, you might take a look at this:


                and get the (up to date) 6th edition of this classic book:


                and drop in on this community:

                Last edited by RDW; 11-04-2011, 01:10 PM. Reason: On 2nd thoughts, let's keep the links completely Modern!


                • #9
                  I vote PERL as it is great for simple parsing tasks. Also it is incredibly simple to learn. Python is more structured and more readable but personally if I am not hacking together a quick script in PERL I usually jump straight to C/C++.


                  • #10
                    Had to chime in, even though it is too late now. For beginners, Python is a better option to start off. Che out a couple of free python books available online


                    • #11
                      Thanks everyone. Special thanks for the links to the tutorials. Most of the stuff that comes up with Google is garbage. I kind of got going with perl just because of a nice tutorial. I think the bottom line is take a look at both and see what I fall into better. But python sounds a little more organized. All I really plan on doing is pretty trivial stuff so in the end it probably doesn't matter much. But it's still nice to here some opinions.

                      If anyone knows a good R tutorial oriented towards biologists (or even better next gen sequencing), I'd like to know. Or really anything good. Something to help make sense of the cryptic Bioconductor packages.


                      • #12
                        The Bioconductor docs tend to assume a fair bit of R knowledge, so a general tutorial/reference is probably what you need. The official Introduction to R is quite good, but pretty terse:


                        For a much more comprehensive book, take a look at:


                        I have and like this (but note that reviewers have spotted some typos, presumably to be fixed in the 2nd edition scheduled for next April).

                        Here's one I can't vouch for yet, but looks like it will be my next purchase:


                        Incidentally, some of the O'Reilly Perl, Python and R books (including 'R in a nutshell', the almost up to date 5th edition of 'Learning Perl', and the excellent 'Perl Cookbook', though not the 'R Cookbook') are available as very cheap iPhone apps, basically a proprietary reader packaged with an .epub of the text. You can buy these apps through iTunes even if you don't have an iPhone or iPad, then liberate the books as standard epubs that can be read anywhere just by unzipping the package and re-zipping the .epub content alone. This 'hack' is officially sanctioned by the publisher:



                        • #13
                          Originally posted by Richard Finney View Post
                          I was just thinking yesterday, "I bet those R guys have gotten around to doing something about nextgen". As many many of you know, google has become almost useless over the last 3 years, and I didn't find much. ETHANol's comments are pretty good: useless vignettes. Is there a good link to nextgen and R somewhere?
                          I don't know whether to laugh or cry

                          Jeremy Leipzig
                          Bioinformatics Programmer
                          My blog


                          • #14
                            "I don't know whether to laugh or cry"

                            Yeah, I get that feeling whenever I type in the example of an R vignette. I can't count the number of times I've had to get the source and type in printfs to figure 'em out. Gets tedious after a while.


                            • #15
                              Though I am just learning python and have many years experience with perl, what I like about perl is its flexibility. Sure, certain things in python are easy if a function exists to do exactly what you want but considerably more difficult if not. Perl focuses more on the tools to concisely create your own functionality tailored to your specific needs.