Software review: producing two dimensional diagrams of membrane proteins

E. coli LamB, presented using TMRPres2D. Not that the cytoplasmic/extracellular labels are incorrect, and should say extracellular/periplasmic.

I recently needed to make a simple, two dimensional figure of a beta-barrel membrane protein. I went hunting for programs that might take a sequence and/or structure and produce a pretty looking diagram to save me constructing everything by hand. Here are two I found and tried.


Ioannis C. Spyropoulos, Theodore D. Liakopoulos, Pantelis G. Bagos and Stavros J. Hamodrakas TMRPres2D: high quality visual representation of transmembrane protein models Bioinformatics. 2004; 20: 3258-3260. (link)


  • Cross-platform (Java)
  • Simple interface, GUI (zero learning curve)
  • Lots of input options (defines transmembrane regions directly from SwissPTMRPres2D diagram of SECY_BUCAI. Labels \rot or PIR annotations online, takes input from several transmembrane region predictors)
  • Lots of output formats and options (Postscript, gif, jpg, png, svg, bmp)
  • Various colouring options (hydrophobicity, charge, “printer friendly”)
  • Makes reasonable looking diagrams of helical transmembrane proteins


  • Doesn’t handle beta-barrel membrane proteins gracefully (strand drawing is overlapped, messy).
  • The membrane is assumed to be a eukaryotic plasma membrane, with labels “cytoplasmic/extracellular” (which should be, for instance, “extracellular/periplasm” for a bacterial outer membrane protein). This is easily changed on the diagram with external editing.


Beitz, E. (2000), TeXtopo: shaded membrane protein topology plots in LaTeX2e. Bioinformatics 16: 1050-1051. (link). See the original publication or Professor Eric Beitz’s site for a better example than my image.


  • Beautiful, clean, publication quality diagrams, courtesy of LaTeX
  • Multiple input options (Swissprot format, PHD, HMMTOP, user defined)
  • Multiple sequence annotation options including colouring by various physiochemical properties (hydrophobicity, charge), sequence conservation or user defined schemes.
  • Will depict membrane embedded half-loops and lipid anchors.
  • Versatile output (Postscript, pdf, dvi, basically anything that LaTex can be rendered as)
  • Also can generate attractive looking helical wheel plots
  • Did I mention the output is clean and looks great … ?
  • Update (from the comments): Great web frontend “Protter” makes the TeXtopo engine more accessible for those that don’t want to mess with LaTeX


  • Steep learning curve for the uninitiated, despite extensive documentation (ie LaTeX code, no GUI) (see if you’d like an easier interface).
  • No support for beta-barrel membrane proteins

If I ever need to make a 2D diagram of a helical membrane protein for a publication, TeXtopo would be my first choice. For quickly getting an overview of some transmembrane prediction results or a protein with defined tranmembrane regions in Uniprot, TMRPres2D is the quickest and easiest method.

In the end, since neither program would do a decent job at cleanly depicting the strands of a beta-barrel in a simple 2D plot, I ended up coding my own hackish solution (svg_barrel.tar.gz or using Python and a tweaked version of This allowed me to generate some SVG graphics to use as a starting point, and then hand edit the result in Inkscape to align strands to loosely match the real hydrogen bonding patterns. I also added some simple beizer curves for the loops, since neat placement of loop residues was the tricky part that I decided I didn’t have time to tackle.

Here’s the end result, after hand editing:
SVG barrel diagram

And here is the 3D version, as a point of reference:

generated using PyMol (raytraced)

The 2D vector diagram could do with some work to aid in a more accurate representation (unfortunately ‘flat’ views of a 3D barrel always have to make some compromises), but it does the job. The goal was to keep it simple … simple it is. One day I may extend this code to actually use known structure coordinates to automatically align the strands (saving tedious manual alignment), and write some code that properly lays out the loops.

Anyone know any other programs of similar functionality I’ve missed ?

11 thoughts on “Software review: producing two dimensional diagrams of membrane proteins

  1. I am beginner in this area and have been used TMRPres2D. ALthough, it was easy to use, it generated an incorrect protein structure by reversing the orientation. Then I attempted to try textopo, which worked much better but I was not able to get the half loop function. I was just wondering if you could provide some help in how to draw half loops.

  2. Sorry for the slow reply Ashish – you happened to catch me when I was away on holiday with limited internet access. I’m not sure I can be much help, since I really only did a quick review of the capabilities of these programs before rolling my own solution to do what I wanted to do.

    From the TeXtopo docs, it looks like any membrane region (as defined in your annotation file or via \MRs{} ) less than 14 residues long is automatically drawn as a ‘half-loop’. I couldn’t find any documented setting to change this minimum cutoff, but you may be able to find it in the TeXtopo source. I wouldn’t be shy about emailing Prof. Beitz and asking him – you may have uncovered a missing feature that probably should be there (the ability to explicitly flag regions as half-loops).

  3. I need to draw a figure for one of the membrane protein that I identified similar to Fig 3b from the paper “TonB-dependent receptors—structural perspectives- Biochimica et Biophysica Acta 1565 (2002) 318– 332”. Can you please guide me on what software to use or have the authors done it manually. I am a Microbiologist and have no idea about these applications.

  4. Hi Subha: I suspect the authors probably did most of the work manually. Although this post is ~4 years old, I haven’t heard of any new tool appearing to make this easier since I wrote it.

    The little Windows program in the post above ( may help you get started – just download it, unzip it, and run double click on svg_barrel_gui.exe and it should run.

    You can put your protein sequence for the barrel domain into the box. You need to put square brackets around the strands (there’s an example sequence in to help you get the idea). If there is no actual 3D structure of your protein, use PSI-PRED predicted secondary structure as a guide, or if it is similar enough to FhuA / FepA to make a reasonable pairwise alignment, use the PDB secondary structure for equivalent aligned residues, (eg from

    Once you’ve written the SVG output, load it up in Inkscape to clean it up and edit it as required.

    The bottom line is, you are probably going to have to just bite the bullet and spend a few tedious hours making this figure. Hopefully my little program above can at least save you building each residue in the strands manually.

  5. Hi Andrew,
    thank you for this very nice collection of schematic transmembrane protein visualization tools!

    I just wanted to add our recently published visualization tool Protter ( to your list:
    It is basically a web-interface for TeXtopo, so you can create the plots without writing a single line of code. On top of TeXtopo, Protter adds interactivity, integrates automatic fetching of transmembrane topology and numerous annotation sources, reads in proteomic experiment result files, and offers various export options.

    A manuscript on Protter has been published in Bioinformatics, 2013:

  6. Thanks Ulrich – great tool. I think Protter will make the nice graphics of TeXtopo much more accessible to the average molecular biologist. I’ve added some links in the body text in case people don’t read the comments 🙂

  7. Hi Andrew,
    I would like to draw a 2D diagram of an alpha-helical membrane protein, which TM-helices extend quite far in to the cytoplasm (some helices are ca. 50 aa long). When I tried doing the drawing with the protter-program I got an error message, which said that the helices can only be 36 aa long. Do you know any program that could be used for this kind of task ?

  8. Hi Juho – it’s been a long while since I used any of this software, but I expect you might be able to work around that cutoff by running TeXtopo locally and changing the cutoff in the source. It might be worth emailing the protter guys about, you never now they might add a feature for you that allows it.

  9. Dear Juho,
    thanks for your interest in Protter!
    You can easily highlight you 50aa helix using another color or different symbols in Protter: just add a new “style” and define the “region”.

    But, unfortunately, Protter (and also underlying TexTopo) is not able to visualize secondary structures via a different layout. So there is currently no way of extending the trans-membrane-domain layout outside the membrane…

    However, if you are interested in one (or a couple) of visualizations, you might want to try manually post-processing your visualizations to get it the way you want:
    – you could split your 50aa helix in two parts,
    – the first TMD will go from outside to inside,
    – then you add a spacer sequence in between (e.g. 25 alanines) and define it as a TMD going from inside to outside,
    – then the second part of your 50aa helix comes back inside as another TMD
    – when you have this in Protter, export it to PDF or SVG format and open for edit in Inkscape or Illustrator:
    – here you can delete the spacer alanines and move the second TMD (and the remaining cytoplasmic tail) right beneath the first TMD!

    I am aware that this not very convenient and involves some manual work, but this is the only way that i can think of to get the visual layout you described.

    Alternatively, you could also – as suggested by Andrew – dive into the source code of TexTopo, which will be definitely non-trivial…


  10. Hi! Thank you for this tool! Can you explain to me how I use it? I ran python but i get a weird image, not like the one you have put up here…

    What am i doing wrong?

    Thank you!

  11. Hi! Thank you very much for this tool !

    could you please tell me how to run it? If i just ran the python script, I get a weird image, not like the one you are showing…

    thank you in advance!

Leave a Reply

Your email address will not be published. Required fields are marked *