810Installing Circos on OS 10.6

Circos, the Perl-package for visualizing data and information in a circular layout is an immensely popular application in the bio-informatics/bio-visualization community. And rightly so, as it able to produce visually stunning and appealing graphics.

Because its the native environment is bio-informaticians, the software is written in Perl. For those without Perl experience, it can be slightly frustrating to set it up on OSX (as it was for me). Here are the steps I needed to do to get it running, hope that this might reduce the trouble and let others get to work on their visualization more quickly.

The whole installation process is also detailed on the Installation page.

1 Getting Circos Download the software, tutorials, tools and courses

2 Testing the modules Go the the circosX-XX/bin folder and run: ./test.modules This gives you a list of the installed Perl modules, and - more importantly - the ones still missing.

3 Install the missing modules Switch to the super user with 'su'. For each missing modules say: cpan -i Modulename::Subname

cpan -i Config::General
cpan -i Graphics::ColorObject
cpan -i Math::VecStat
etc, etc

All worked swimmingly, except GD was making a bit of trouble.

4 Installing GD The graphics library GD has to be present on your system. If it's not, install it. (I am with homebrew, therefore installing GD is done like that: brew install gd)

Still after installing GD, installing the Perl module would not work. But after applying a little force, it went fine:

cpan -i -f GD

5 Adding circos to your path Adding the circos 'bin' directory to your path lets you call the circos program directly without specifying the whole path. That's a good thing.

PATH="/path/to/circos-0.55/bin:${PATH}"
export PATH

After that, everything should work and your Circos adventure can begin...

800Enabling root in OS X 10.7 (or 10.6)

sudo passwd root

After which you are prompted with a

Changing password for root.
New password:

Why the need for root? Surely, it's a dangerous weapon and things can go awry easily, so only use it as a last resort. (I used it for hiding the couchdb account folder from the GUI.)

703Blocking hosts in /etc/hosts

How to block access to websites on your personal computer. The /etc/hosts file maintains a records of redirects, it you want to block access to a particular site, redirect to your local machine, or whichever site you find appropriate. Not that most website forward host-to-block.net to www.host-to-block.net, so make sure to block the www site as well.

Open the file in your favourite text editor, make sure you have the permissions to open it.

sudo nano /etc/hosts

Add the following line to the file.

127.0.0.1       host-to-block.net
127.0.0.1       www.host-to-block.net

Flush the cache to make the changes immediate.

sudo dscacheutil -flushcache

Again. The crucial bit is to also block the www-site. That seems to be missing from a lot of descriptions/tutorials out there in the wild.

289Simulating Keyboard & Mouse Events. And Key-Modifier Events

Creating and Posting a Keyboard Event:

CGEventRef sDown, sUp;
sDown = CGEventCreateKeyboardEvent (
            NULL,
            (CGKeyCode)1,
            true
);
CGEventSetFlags(sDown, kCGEventFlagMaskShift);  

// setting flags with special function. 
// Setting it via CGCreateKeyboardEvent
// would work only for the first time it's run

CGEventPost(kCGHIDEventTap, sDown);

sUp = CGEventCreateKeyboardEvent (
            NULL,
            (CGKeyCode)1,
            false
);
CGEventPost(kCGHIDEventTap, sUp);

CFRelease(sDown);
CFRelease(sUp);

That leaves the door open for applying the same to mouse events:

CGEventRef mouseEvent;
mouseEvent = CGEventCreateMouseEvent (
            NULL,
            kCGEventMouseMoved,
            CGPointMake(100, 100),
            kCGMouseButtonLeft
);
CGEventPost(kCGHIDEventTap, mouseEvent );

Magical. Isn't it.

Of course, in pre-10.6 days it would have looked like that:

CGPostKeyboardEvent (0,5,true);
CGPostKeyboardEvent (0,5,false);