Postgraduate Researcher in Metabolomics

Bioinformatics | Immunology | Python | Web Dev

cx_Freeze and PySide on Mac

I’d had success using py2app for building Mac binaries for distribution but wanted to give cx_Freeze a go since it’s cross platform - allowing builds for Windows, Linux, and more. Unfortunately, attempting to build using cx_Freeze was resulting in errors:

libpyside-python2.7.1.1.dylib: No such file or directory

If found a tip suggesting you can do a touch libpyside-python2.7.1.1.dylib in you’re applications folder to get rid of this error by creating a dummy file. But then you just end up with this instead:

copying Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/               PyQt4/Qt.so -> build/exe.macosx-10.6-intel-2.7/PyQt4.Qt.so
copying /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/PyQt4/QtCore.so -> build/exe.macosx-10.6-intel-2.7/PyQt4.QtCore.so
copying QtCore.framework/Versions/4/QtCore -> build/exe.macosx-10.6-intel-2.7/QtCore error: QtCore.framework/Versions/4/QtCore: No such file or directory

It’s looking for the file in the wrong place: QtCore should be prefixed with the same path as PyQt4 before it. There are various version of PySide available - but whether you try to pip install or git clone https://github.com/PySide/pyside-setup and then python setup.py install you’ll find that you end up in much the same place. In most cases however the installation simply fails.

Homebrew

So try a different tack: Homebrew. Homebrew is a package manager for Mac, that has a large number of successfully buildable software packaged specifically for the Mac. I’ve successfully used it to install a number of things, but steered clear of it for Python things that could be pip installed. However, there seemed to be little alternative - and actually I think brewed Python has it’s advantages (being more up to date being one, being guaranteed to work with other brewed packages the other).

At this point my default Python install was the Mac default (Darwin, llvm-compat) version, installed under /Library/Python/2.7/ so first that needed to change.

Python

brew install python

The above will take quite a long time (particularly the Python bit) but you should now have a successfully brewed Python on which to base your apps. If you’ve had a different Python (e.g. system python) installed you may need to update your paths to ensure that the brewed one is being used - Homebrew actually gives you the instructions to correctly do this: but just add /usr/local/lib/python2.7/site-packages:/usr/local/share/python to your PATH variable in .bash_profile e.g.

export PATH=/usr/local/lib/python2.7/site-packages:/usr/local/share/python:$PATH

Pyside

An important fact about brewed Python is that it will continue to look in your system site-packages folder, and do so in preference to your brewed site-packages. If you have attempted to install Pyside (or anything else) before you may wish to remove them to stop conflicts.

Next install PySide via brew (the pip install does not work).

brew install pyside

The install cx_Freeze via pip (it’s not in brew, and the pip works fine).

pip install cx_Freeze

Finally, check PySide are cx_Freeze are set up correctly by starting a Python interactive shell and entering the following (you should get the same output):

>>> import PySide
>>> import cx_Freeze
>>> PySide.__version__
'1.1.2'
>>> cx_Freeze.version
'4.3.1'

You’re now free to build your apps.

Tagged

MetaPath: Metabolic pathway visualisation and analysis [Released]

MetaPath, a metabolic pathway visualisation and analysis tool I’ve developed as part of my PhD, has been released today via PyPi and github. A Mac .app bundle is also available.

Screenshot

Download Mac OS X Mountain Lion .appGithubPython .egg or .gz.

MetaPath requires installation of Graphviz for pathway drawing.

Who’s it for?

MetaPath is developed as an ongoing part of my PhD to build analysis software for metabolic pathways that is user-friendly, intuitive, informative and quick. However, it is equally suited for educational purposes, particularly metabolic pathway exploration.

It is based on the MetaCyc database. If you use that, you might want to use this.

What does it do?

MetaPath has two key use-cases:

Metabolic pathway exploration: Browse through the metabolic pathway database, with automated clean rendering of pathways. Add and remove metabolic pathways, show intra-pathway linkages, and map metabolic routes through the system. Browse the in-built database, following links to online resources for further information.

Metabolic data visualisation: Load experimental data gathered by mass-spectroscopy (MS) or nuclear magnetic resonance (NMR) spectroscopy and visualise metabolic changes overlaid on a a map of the sytem. Visualise gene-expression or protein quantity data alongside to explore relationships between enzyme regulation and metabolic processes. Use the built-in “Pathway Mining” tools to select the most up, down, or overall regulated pathways in the given system to identify the key mechanisms at work.

How much does it cost?

Nothing. It’s released open-source under the the GPLv3 license and is therefore free to use for whatever purposes you wish. You can clone the repository, download Python .egg or .gz or download a built Mac app. Builds for other platforms will follow shortly.

MetaPath is built on the MetaCyc pathway database itself part of the BioCyc family. The supplied database is generated via the MetaCyc API and stored locally. Licenses for the entire MetaCyc database are also available free of charge for academic and government use.

What else?

Contributions from users and developers at other institutions are most welcome. Fork the repo on github. If you have issues, bugs or feature requires please report them and I’ll do what I can. Finally, if you have any questions drop a note in the comments below.

Tagged

Pelicans on Webfaction

As mentioned in the previous post, I recently migrated this site over to the very clever Pelican. Setting it up was relatively straightforward using a combination of the official docs, this post and linked github repo from Dominic Rodger. That said, there were a few things that I stumbled at and non-obvious decisions that I’ve documented below.

Setting up

Before starting you need to install the packages. Thankfully everything you need is available via the python packaging service PIP. Unfortunately PIP isn’t installed by default on Webfaction so you’ll need to get that set up as per the instructions from Webfaction. So SSH into your account and do the following:

PIP

  1. Make sure the destination directory exists. Enter mkdir -p $HOME/lib/pythonX.Y, where X.Y is the Python version, and press Enter.
  2. Install pip. Enter easy_install-X.Y pip, where X.Y is the version of Python you wish to use, and press Enter.

In my case X.Y was 2.7

Pelican & dependencies

I then manually installed these dependencies, I’m not sure if all are required (or already present on Webfaction) - give it a go and let me know in the comments.

pip install feedgenerator   # to generate the Atom feeds
pip install jinja2          # for templating support
pip install pygments        # for syntax highlighting
pip install docutils        # for supporting reStructuredText as an input format
pip install pytz            # for timezone definitions
pip install blinker         # an object-to-object and broadcast signaling system
pip install unidecode       # for ASCII transliterations of Unicode text

If you’re not using Python 2.7, you will also need to pip install argparse.

In the Pelican setup it lists the following two as optional, but you’ll need the first to use markdown flavoured markup. The second makes your text output prettier, I installed it.

pip install markdown        # for supporting Markdown as an input format
pip install typogrify       # for typographical enhancements

Now with all that out the way, we can install pelican. As with the above, it’s a simple case of entering at the command line:

pip install pelican

Webfaction

First things first, we need to create a Webfaction webapp to hold our site. In fact, we need 2: one for the source code and settings, one for the output. Only the second of these is actually served publically - and Webfaction allows for this by making it possible to have applications with no association website. You do this through the Webfaction panel.

If you want to, you can put the generator code in your home folder instead but I think that is a bit confusing.

You can also decide here how you want to name the two apps. Initially I had golifescience holding the source, and golifescience_public holding the generated output. However, it dawned on me that if I wanted more than one Pelican site (quite possible) I was going to end up with multiple dud apps scattered around. To prevent this I created two apps, one pelican that will hold any Pelican site settings repos in a subfolder, and golifescience which is the public served version of this site.

The first, pelican, was created as ‘Static only (no .htaccess)’, the second golifescience as ‘Static/CGI/PHP-5.4’. This latter decision only really has an impact if you need to use URL rewriting, or other .htaccess directives further down the line. I did, so I did. If you like this can also be ‘Static only (no .htaccess)’ and it’ll be served by Webfaction’s potentially-faster nginx server.

Remember to associate the public one with an active domain under ‘websites’. Make sure it’s working (if you’ve just set it up DNS could hold you up here).

Back to black

Back in the SSH session you can now cd ~/webapps and see the two new created folders pelican and yoursitenamehere. Now change into your pelican folder with

cd pelican              # change into your pelican folder
mkdir yoursitenamehere  # create a directory to hold your site config
cd yoursitenamehere     # change into your site's folder

We can now use the Pelican command to initiate the setup:

pelican-quickstart

Answer the questions and Pelican will create your initial folder. The important things to remember are that your output folder, relative to the current location is ../../yoursitenamehere.

Github

Following in Dominic’s footsteps I decided to use github for my content hosting. However, Pelican has a handy tool to generate your setup, so you’ll need to initiate the repo on the Webfaction side and re-home it onto github. Bear with me.

The first step is to log into your Github account and create the new repo, calling it whatever you like. Do not add a README.md as we need the repo empty to do the next thing - if you mess it up, just delete and recreate. Github is fine with that. Once created make note of your repo’s read & write git url (SSH).

If you haven’t set up github with your SSH keys you’ll need to do that now. Generate a key on your Webfaction host using ssh-keygen. At the SSH prompt enter less ~/.ssh/id_rsa.pub to see the generated public key and copy-paste it into your Github SSH settings. Hit q to exit less.

Back in the shell, initiaise the github repo and then re-home it to your github repo.

git init
git add .
git commit -a -m "Initial commit"
git remote add origin git@github.com:<github-username>/<github-repo-name>.git
git push -u origin master

Sorted. The repo for your site is setup, and the repo now things Github is it’s origin, so it will pull down from it to get updates. This means you can now clone that repo yourself to another machine and push your changes up via github.

Getting going

To all intents and purposes you are now finished and ready to make a beautiful website. But there are a few final things to consider.

Folders

Firstly, folder structure. Things are ‘expected’ to be laid out as follows by the system, but it’s not immediately clear - meaning it can get a bit confusing why certain content is not showing up.

/content
    /images
    /pages
    /extra
    /<category-1>
    /<category-2>
/theme

The folder images is automatically copied through to appear at /static/images on your live site. Similarly pages is a special folder that anything contained within will be created as a static page, will not appear in feeds and may appear on link lists in certain forms. The URL structure for articles and pages is different (see later). Finally, extra is an optional folder, but extremely useful for copying through completely static content to the a particular destination. For example, on this site I’m using the following in my pelicanconf.py to copy through a static robots.txt and .htaccess:

FILES_TO_COPY = ( ('extra/robots.txt', 'robots.txt'),
                  ('extra/.htaccess', '.htaccess') )

URLs

Pretty-urls are a nice thing to have. Unfortunately, by default Pelican gives you a lot of .html everywhere. The official docs suggest solving this by setting your URL/SAVE_AS directives to put files as index.html under folders for the slug, so for example posts/your-slug-here/index.html. This works, as you can now put the URL as posts/your-slug-here/ and hit the file. Pretty URLs no redirects or .htaccess.

However, it doesn’t work if you want to use custom themed error pages generated by Pelican (you can of course manually create them and copy them in the FILES_TO_COPY above, but you will need to maintain them in line with the theme by hand). To do that you either need to access that all pages will have URLs like /about.html or use .htaccess. And if you’re going to use .htacess redirects you may as well make it handle the pretty URLs too.

So to start with add the following to your pelicanconf.py file.

ARTICLE_URL = 'posts/{slug}'
ARTICLE_SAVE_AS = 'posts/{slug}.html'
PAGE_URL = '{slug}' 
PAGE_SAVE_AS = '{slug}.html'
AUTHOR_URL = 'author/{slug}/'
AUTHOR_SAVE_AS = 'author/{slug}.html'
CATEGORY_URL = 'category/{slug}'
CATEGORY_SAVE_AS = 'category/{slug}.html'
TAG_URL = 'tag/{slug}'
TAG_SAVE_AS = 'tag/{slug}.html'

This creates a set of URL formats where articles are linked to at posts/your-slug-here (note, no trailing slash, all the cool kids do it) and saved as the same name but with .html extension. Now save the config and create a new file names .htaccess in your content/extra folder - this will hold your .htaccess config for the live site. Add the following:

Options +FollowSymLinks
RewriteEngine On

# Remove trailing slashes.
# e.g. example.com/foo/ will redirect to example.com/foo
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)/$ /$1 [R=permanent,QSA]

# Redirect to HTML if it exists.
# e.g. example.com/foo will display the contents of example.com/foo.html
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^(.+)$ $1.html [L,QSA]

ErrorDocument 404 /404.html
ErrorDocument 403 /403.html

What it does is explained in the comments for each directive. The first chunk removes trailing slashes. The second chunk checks what is requested is not an actual file (e.g. static file), not a directory, and that <filename>.html exists, before rewriting the request to return that. The final two are for our error files.

Save the file and you’re good to go.

Miscellaneous peliconf.py

Here are some additional extras for peliconf.py you might want to try out. Since I installed it I also turned on Typogrify by adding the following:

TYPOGRIFY = True

Because of the new feed variables in 3.0 some old themes won’t work. Add this to fix:

FEED_DOMAIN = SITEURL
FEED_ATOM = 'feeds/atom.xml'

Express yourself (hey, hey)

It’s time to write someting (finally). We’ll create a test post and our two error document pages. So, first, simply create a new text file and enter the following:

Date: 2013-04-07 09:00
Author: Your Name
Email: your.email@your.email.provider
Title: A test post
Slug: a-test-post
Tags: test,post

Hello!

Save it in the content folder with the name a-test-post.md. You can save it under a sub-folder (create it) to categorise the post if you like. Then create another empty text file and add the following:

Title: 404
Slug: 404
Status: hidden

Not found
=========

Nothing to see here, move along.

Save it under the content/pages folder with the name 404.md. Edit a similar file for 403 Forbidden errors and save as 403.md.

Pelicans are go

Let’s commit and push this to github incase we lose all our hard work. At the command line, in your pelican content source folder pelican/yoursitenamehere enter the following:

git add .
git commit -a -m "Initial commit"
git push

Now lets generate a site. In the same folder enter the following to create the content:

make html

You can also use:

make publish

The only difference is the latter also uses the config settings in publishconf.py including the quite useful RELATIVE_URLS = False directive (uncomment it first).

If you now access your site from the web, you should see your post in all it’s glorious creativitiy. If it hasn’t worked, drop a note in the comments and I’ll work it out with you.

Automatic for the (lazy) people

I’m lazy, so I don’t really like doing the whole commit-push-pull-make thing. Thankfully it’s relatively easy to automate the whole thing with a short shell script. Still on your SSH session to webfaction enter:

nano ~/auto_pelican_publish.sh

This starts a simple editor to create a shell script. Simply copy and paste the following into the file, editing the paths as appropriate:

1
2
3
4
5
#!/usr/bin/env bash

cd <path-to-your-pelican-content-folder> # e.g. ~/pelican/yoursitenamehere
git pull
make publish

Save by pressing Ctrl-X and then Y. That’s it. Back at the command line type:

chmod +x ~/auto_pelican_publish.sh  # to make the file executable

Next to add this to cron. Back at the command line enter:

crontab -e

Add the following to the top of the file, replacing your username:

PATH=/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/opt/dell/srvadmin/bin:/home/<webfaction-username>/bin
*/15 * * * * ~/auto_publish_pelican.sh

Again Ctrl-X and Y to exit and save. This will run the auto-publish script every 15 minutes, pulling from your remote git repository and then publishing the files it finds. All you need to do is make your commits on your local machine, push them to github, and within 15 minutes they’ll be on your site. You can adjust the timer by changing the 15 to another number, e.g. 30 means every half an hour.

Wrapping up

Pelican is a really neat bit of software, that gets you away from all the faffing of dynamic web stuff to just concentrating on the important thing - writing. Hopefully this guide makes setting yourself up on Webfaction a little easier. If you hit any stumbling blocks in spite of this let me know in the comments! Happy pelicaning - whatever that involves.

Tagged

Now with 100% more Pelican

Regulars among you will have noticed that the site is different, very different.

The Game of Life Science site has a long and convoluted history. Back in 2009 while an undergraduate I had the bright idea to create an online education site to bring together online materials and a neat method for testing progress. That got reasonably far, through numerous re-writes and re-organisations (github here) before petering out under the weight of content creation, community building and final year exams/dissertation.

Moving on to a masters/PhD in the life sciences I saw an opportunity to modernise lab protocols, streamline working processes and promote open-sharing of methods. So I built another site, methodmint (later research.abl.es, then do.abl.es …I seem to have a fetish for buying domain names). Like smrtr before it that petered out under the weight of creating the protocols and building the community - notice a pattern. In hindsight, the approach was also fundamentally wrong: people need ‘tools’ not ‘communities’ for this, something that can slot into an existing workflow and streamline it. There was also the slight issue that in noticing that the back-end of this could power multiple sites, it ended up running a recipe, drinks, computing and life-coaching site - all not particularly successfully.

A few months back I resurrected the scientific part of the site, merged in the computing (‘bioinformatics-ish’) and started building a database of open source bioinformatics software, tracking publications, and so on. But it slowly dawned on me that it wasn’t addressing a real need anywhere, there already exist plenty of software databases such as ohloh and freecode to name two. Tracking publications was potentially useful (ish) but was simply an automated step away from a PubMed search and RSS feed.

It wasn’t a complete loss however. The above represents 4 years of programming experience in Python (via Django) which indirectly led to me now being able to knock together decent research applications.

So, where does that leave this site? I realised that 99% (made that up) of traffic that ends up here is after particular things: methods, guides, protocols and code. In other words, original content. So that’s what will follow. I’ll be using this blog to post all of the above, predominantly leaning on bioinformatics topics, code and general usefulness. All the original content will stay in place, with links continuing to work, for the forseeable future (thanks to a 249 line .htaccess file). All the code for previous iterations of this site is available on github BSD licensed and free to tear to pieces.

The new site is built on a rather neat bit of code called Pelican, which allows rather fancy looking sites to be knocked together from templates are markdown formatted text files. One awesome thing about this is that you can in fact still contribute should you wish, by simply forking the repo add a appropriately formattted file, and submitted a merge request.

So, there you have it. The new Game of Life Science, same as the old Game of Life Science, except completely different. I’ll keep you posted.

Tagged

Speed up MATLAB on MacOS X

On MacOS X 10.5 there is considerable slow-down in the MATLAB editor and other GUI elements. The issue is related to a change in the default Mac Java 2D rendering engine from Quartz2D (10.4) and Sun2D (10.5). This newer rendering engine improves performance for figure drawing, but other GUI operations are slower.

The temporary fix is to instruct MATLAB to use the old rendering engine (Quartz2D). This will speed up scrolling and most GUI operations, at the cost of reduced figure drawing speed.

method/1539/Screen Shot 2013-03-24 at 12.20.16.png

Open a terminal and browse to to your Matlab app bundle, eg.

cd /Applications/MATLAB_R2011a_Student.app

Your MATLAB folder will likely be different to this. A quick way to find it is to use the tab key. At the command-line enter cd /Applications/MATLAB then hit <tab> and the name should autocomplete.

If you’re on 2008a or later, you need to browse down to the maci folder.

cd bin/maci

or for 64 bit

cd bin/maci64

Again, typing cd bin/maci<tab> should get you there.

At the command line type nano java.opts to create a new empty file and open a command-line text editor. You can copy and paste into this window, so simply copy the text below and paste it onto a new line in the file.

-Dapple.awt.graphics.UseQuartz=true

To save hit Ctrl-X(exit) then press Y to save and Return to accept the filename

You can also optionally add -Dapple.laf.useScreenMenuBar=false to turn off the Mac top-of-screen menu bar. This appears to also slightly increase speed.

Restart MATLAB and you should see a speed improvement.

As this fix may reduce drawing speed of figures, you may want to switch off the workaround while doing a lot of figure drawing. You can do so by exiting MATLAB, renaming the java.opts file e.g. to java.opts.off with mv java.opts java.opts.off and restarting MATLAB. To re-enable simply quit, rename the file back to java.opts with mv java.opts.off java.opts and restart.

This method is based, with permission, on an original protocol available here.

Tagged

Fixing/pelleting chromatin for immunofluorescence

Fixing and pelleting chromatin/nuclei from extracts onto coverslips for immunofluorescence.

Most protocols call for -20 Methanol treatment of the coverslip post sedimentation. This is generally used to stick the sedimented object to the coverslip and prevent it from floating away during processing and is also thought to help antigenicity by exposing epitopes. The use of polylysine coated coverslips eliminates the first problem and as to the effect of methanol on antigenicity I don’t have an opinion. Methanol sometimes drastically affects (negatively) the morphology of chromosomes and, therefore, I have stopped using it.

This protocol is optimized for mitotic chromatin but works for nuclei as well. The final structure is affected slightly by increasing magnesium concentration or adding polyamines to the fixation buffer. The buffer we use works reasonably well and therefore I haven’t changed it much aside from occasionally using 4 mM Magnesium rather than 2 mM.

Some epitopes may be sensitive to formaldehyde and, therefore, lack of any signal may require more fiddling with the fixation conditions. Methanol only fixations generally show poor morphology. Frog extracts have huge pools of biotin and it is generally a good idea to avoid avidin-biotin detection systems. I highly recommend labeled donkey secondary antibodies from Jackson Immunoresearch for immunofluorescence.

Requirements

2X XBE2 (10 mM HEPES, pH7.7 (@ 10 mM), 100 mM KCl, 0.1 mM CaCl2, 2 mM MgCl2, 5 mM EGTA, 50 mM sucrose). 16 % formaldehyde (Methanol-free from Ted Pella; used for two weeks after opening a sealed vial) OR paraformaldehyde (freshly prepared) : will be used at 1% final. Poly-lysine coated coverslips. Spin down tubes (or equivalent method to pellet onto coverslips; our tubes are modified 15 ml Corex tubes). Extract fix : 1ug/ml Hoechst in 1X MMR, 50% glycerol, 10% formaldehyde (from 37% stock sold by Fisher) OR 4.5% Ted Pella MeOH-free formaldehyde.

Method

Squash 1 ul of extract with 3 ul of Extract fix prior to beginning fixation to compare the morphology post fixation.

To 10 ul of extract with chromatin/nuclei in extract gently add 200 ul of 1% MeOH-free formaldehyde (or 1% paraformaldehyde) in XBE4. Immediately use a cutoff pipet tip to gently mix the fix with the extract by pipeting up and down 5 times. (If this is not done promptly one often gets aggregation).

The 1% formaldehyde in XBE2 should be made up just before use (~5’-10’). Titration of formaldehyde 1% - 4% doesn’t show much difference in morphology; however, higher formaldehyde concentrations generally reduce antigenicity. If extracts contain membranes then 0.5% Triton addition to the fix reduces particulate debris which tends to bind antibodies.

Incubate at RT for 12’ - 15’.

During incubation setup spindown tubes. Each tube contains a polylysine coated coverslip and is loaded with a cold 5 ml cushion of 30% glycerol (v/v) in XBE2 and stored on ice.

After incubation in formaldehyde, gently layer the fixed sample onto the cushion using a cutoff pipet tip.

Spin in a swinging bucket rotor (I use a Sorvall HB-4 or Beckman JS13.1) at 10,000 rpm for 10’.

Aspirate half the cushion and then rinse the interface with a few mls of XBE2 before aspirating the rest.

Remove the coverslip and after rinsing with TBS Tx/PBS Tx, block and process for immunofluorescence. I use 1 ug/ml Hoechst to stain the DNA just before mounting.

Compare the fixed samples to nuclei squashed in Extract fix before fixation to determine if the fixation worked as desired.

This method is based, with permission, on an original protocol available here.

Tagged

Purification Of Anti Peptide Antibody

Purification Of Anti Peptide Antibody

Do not pool the low pH and GuHCl eluates as they may have significantly different properties. We have found that the GuHCl may have higher affinities, but also may contain a higher fraction of partially denatured antibody that could contribute to staining background. The proportion in each pool varies with the peptide immunogen.

The quality of the anti-peptide serum seems to increase with multiple boosts - the first bleed may be feeble.

Method

Pour column in TBS (=0.15M NaCl, 20mM TrisCl pH 7.4). We use a 5 ml column for 25 mls serum. Wash extensively in TBS after prewashing as indicated in the protocol for coupling peptide to the resin.

Thaw serum- dilute 1:1 with TBS and filter through a 0.2 um filter

Load the serum over the column, taking at least 20 minute total.

Run the breakthrough over the column five times. Alternatively you can use a parastaltic pump and recirculate the serum ON or just batch bind the serum ON.

Wash with 5 col vols TBS.

Wash with 10 col vols 0.5 M NaCl, 20mM TrisCl pH 7.4, 0.2% Triton- X-100.

Wash 5 col vols TBS

Elute with 0.15 M NaCl, 0.2 M Glycine-HCl pH 2.0. Collect 1 ml fraction, with each tube containing 0.1ml of 2 M TrisCl pH 8.5

Wash with TBS until pH is reequillibrated.

Elute with 6 M GuanidineHCl in TBS, collecting 1ml fractions.

Wash with TBS + 0.1% NaN3, and store at 4 deg C.

To determine where to pool fractions, spot 1 ul of each fraction onto nitrocellulose paper and stain with ponceau S. Pool all fractions that show pink color.

Dialyze ON into TBS or your favorite buffer.

If necessary the antibody can be concentrated by sweating the dialysis bags, or by spin-concentrating.

Bring the azide concentration up to 0.1% and store at 4 deg C for up to three months. For longer storage freeze in aliquots and store at -80 degC or add glycerol to 50% and store at -20 deg C.

This method is based, with permission, on an original protocol available here.

Tagged

Microtubule Spindowns from Extracts

MAP pelleting protocol.

The key variable in MT spindown experiments is ATP. Under high ATP conditions,conventional MAPs are selectively co-sedimented with microtubules. In theabsence of ATP (or in presence of AMPPNP which induces rigor binding of motorsto MTs), both motors and MAPs will bind to MTs and pellet with themicrotubules. For MAP and motor analysis, I often supplement the extract with exogenous taxol-stabilized MTs to ensure that binding sites are not limitingand I am not seeing competition effects. For a unknown protein, it is best totry a variety of conditions. Below is a protocol for MAP pelleting under high ATP conditions. I have listed the modifications for MAP/motor protocolafterwards.

Method

Prespin extract in TLA100.3 at 70K for 20’ at 4 deg.C. Transfer supe to tube on ice.

Extracts must have a source of GTP. For Xenopus egg extracts, we simply add an energy regeneration mix to extracts and the extract maintains physiologicalGTP levels. For dilute tissue culture extracts, it is best to supplement theextract with 0.5 mM MgGTP. This can be done before or after the prespin.

Add 2 mM MgATP to extracts, warm to RT and add taxol to 5 uM. Mix well andincubate for 2’-3’ before adding an additional 15 uM taxol (final is 20 uMtaxol). Incubate for 20’-30’ at RT - 37 deg.C.

We use Xenopus extracts forwhich physiological temperature is RT; for tissue culture cells, tubulin willpolymerize better at higher temperatures. 30 - 33 deg.C is a good compromiserange to balance polymerization and proteolysis. Extracts must be supplementedwith a peptide protease inhibitor cocktail just before warming up to preventexcessive proteolysis.

Layer the polymerized mixture onto a 1M sucrose cushion in BRB80 containing 0.5 mM ATP, 10 uM taxol and protease inhibitors and pellet in a TLS55 at 40K for 20’ at 22 deg.C.

You can also use a fixed angle rotor such as a TLA100.3 or TLA100.4. I like to pellet MTs at 100-150,000 g for 20 - 30’ in TLA100 rotors over 30-40% glycerol/sucrose cushions. For larger ultra rotors, increase the speed and/or time to reach an equivalent clearing factor.

Save supe for gel/blot, aspirate cushion while washing 2-3x with BRB80 and remove as much of the cushion as possible (MTs form a clear, gelatinous pellet).

Boil pellet in sample buffer and analyze.

This method is based, with permission, on an original protocol available here.

Tagged

Testing Rabbit Bleeds By ELISA

You can test whether or not you have gotten an immune response to the peptide and how strong that immune response is by doing ELISAs against peptide conjugated to BSA. By conjugating to BSA, you will eliminate any signal for antibodies generated to KLH during immunization.

Requirements

1 ml of 2 mg/ml BSA in 0.1 M NaHCO3. 1 ml of 0.2% glutaraldehyde in 0.1 M NaHCO3. 0.5 ml peptide (1 mg/ml in DMSO). Peptide can be added as a solid if soluble.

Method

Mix ingredients adding glutaraldehyde last. Peptide and BSA turn a little yellow even before adding glutaraldehyde.

Incubate 90 minutes at 37 deg C.

Add 0.1 volumes of 0.1 M NaBH4 in 0.1 M NaHCO3. There will be some bubbling. Add same amount of NaBH4 after 15’.

Do a quick microfuge spin if there are too many bubbles.

Coat 10 ug/ml antigen (peptide conjugated to BSA) diluted in TBS (50 ul/well) ON at 4 deg C.

Remove antigen and rinse wells 2Xs with TBST.

Block 2 hr with 200 ul of 5% NFDM in TBST.

Remove blocking reagent and rinse wells 2Xs with TBST.

Incubate in primary antibody diluted in Blocking Buffer for 2 hr at RT. I do tripling dilutions beginning at 1/10 (50 ul/well).

Remove primary antibody and rinse wells 4Xs with TBST.

Incubate in secondary antibody (1/5000 Goat anti-rabbit conjugated to AP) diluted in Blocking Buffer for 1 hr at RT (50 ul/well).

Remove secondary antibody and rinse wells 4Xs with TBST.

Rinse wells 2Xs with 50 mM HCO3; 0.5 mM MgCl2, pH 10.

Develop in 1 mg/ml p-Nitrophenyl phosphate in 50 mM HCO3; 0.5 mM MgCl2, pH 10 (50 ul/well).

Read A410 in ELISA reader.

This method is based, with permission, on an original protocol available here.

Tagged

Crude Depletion Conditions for XKCM1

Crude Depletion Conditions for XKCM1. The following is for depleting a protein present at ~ 10-20 ug/ml in the extract with high affinity polyclonal antibodies, using anti-XKCM1 as an example. (Arshad Desai 3/17/95)

The main problem with immunodepletion of crude CSF extracts is that they activate during or soon after immunodepletion. Empirically, the following modifications have allowed us to succesfully immunodeplete and characterize three different proteins: a) During extract prep, after washing out cysteine with XB, wash eggs 2-3x with CSF-XB (no PIs) before washing with CSF-XB + PIs and then process as usual. b) Crush the eggs at 10K, full brake in SW55 at 16 deg.C. Even 12.5K doesn’t work - you can’t get decent spindles after immunodepletion ! c) Use BioRad AffiPrep beads - these beads are really heavy and easily pellet; (agarose beads will not pellet very well in crude).

However, we have never been able to cycle a depleted crude - all assays were performed in straight CSF. Attempts to cycle have always failed so we gave up on cycling.

Method

Put 25 ul of bead slurry into two 0.5 ml tubes labeled IgG and XKCM1.

Wash beads 3X with 0.5 ml TBST each wash.

Add Rb IgG (4 ug) or anti-XKCM1 Gly (4 ug) and bring volume to 400 ul total.

Bind antibody to beads at 4 deg.C for 1 hr on rotator. Make sure beads are rolling around.

Pellet in ufuge in coldroom and wash 1X TBST, 3X CSFXB + PIs.

Add 150 - 200 ul of crude extract to each tube, resuspend beads in extract gently with a cutoff tip and then immediately place on rotator. Avoid tapping or vigorous agitation.

Rotate for 1 hr at 4 deg.C ensuring that beads are mixing well.

Pellet and transfer supe to a different tube. Save a small supe aliquot for western blots and use supe for assays

Processing beads for gel:

  1. Wash beads 2x with CSFXB +PIs.
  2. Wash beads 2x with TBST
  3. Wash beads 1x with TBS
  4. Add 50 ul SB w/ DTT.
  5. Also add 3 ul of each supe in 60 ul of SB
  6. Boil for 5’, pellet out the beads and transfer supe and freeze gel samples at -20 deg.C.

Assay depletions by blots; also run rest of pellet on coomassie gel to estimate cleanliness of IP.

This method is based, with permission, on an original protocol available here.

Tagged