*Use Labels on right panel for complete listing of blog tags

Friday, November 20, 2009

Adobe Flash™/ ActionScript 3.0 [BAWO Project- Stage 0]


(Use Mouse to move Hand,drag Seed to Hole with Red Circle) © Fumba 2009

Bawo is a traditional african game that is as complex as chess or checkers. I decided to develop a realistic FLASH™ version of this game for my computer science independent research topic. At first I was planning to tweak an already existing Java version of the game from sourceForge but I later decided to work on this project from scratch.
Anyways, I realized that FLASH (.swf) are programmed in a program called ActionScript 3 (as3). Stage ZERO of my project was therefore to teach myself some of the basics of this object-oriented language (which isnt that different from Java). I ended up creating a sketch version of the BAWO board with some seeds and holes on it.
Help needed
1. I have been trying to make the program recognise when a user drags a seed and drops it in hole (both seed and red hole are as3 movieclip symbols). I was not able to understand how the as3 methods hittest and getChildByName function. The application keeps giving the message "try again" because the hole does not recognise that the seed has been dropped in it.

2. I also dismally failed to change the cursor into the players hand. In this application, the seed keeps appears on top of the players hand. I had to adjust the hands alpha value (transparency) inorder to make it look more normal.

I will be more than happy to send the .fla file for the attached s application to anyone who is willing to help.
Fumbani Chibaka 2009 ~pumbafumba@aol.com

Thursday, November 12, 2009

Bawo Gaming [ an adventure in Java™ and Adobe Flash™ ]

Bawo is a board game popular in Malawi and most african countries. In Uganda, this game is dubbed Omweso. Walking the streets of Malawian outskirts, you would probably chance a group of people in bawo gameplay as much you would if you went down into an American kids' basement in hunt for a Nintendo Wii, Gameboy, XBox or a Playstation console.
Zanga Chimombo (who used to be my brothers work mate at Nico Technologies Ltd) successfully programmed a version of it in Java downloadable from bawo.sourceforge.net. I decided to start tweaking this SourceForge Bawo Project. I think that the Bawo version that Zanga developed is fantastic but I wish the interface and other features were improved to make the gameplay more enjoyable.

Among many things, I intend to:
1- Use Adobe Flash to come up with a more realistic bawo board
2- Animate the players hand movements
3- Add sound to the gameplay
4- Look into the possibility of creating a web-based multi-player version of the game.

I will be undertaking this project with help from my genius brother and computer science professors (Gettysburg College CS Department) . With the increasing use of technology in Malawi and other African countries, I think it is high time we started utilizing the tech-space to share our traditional games to the world.

Fumbani Chibaka ©2009

Tuesday, August 25, 2009

Papers & Presentations

The end of the beginning....
Fumbani Chibaka1, Summer Intern 2009, Research Center for Genetic Medicine, Children’s National Medical Center, Washington DC 20010, USA.
1Junior Student, BSc Biochemistry and Molecular Biology, BA Computer Science, Gettysburg College, 300 N Washington St, PA 17325, USA

Diagnosis of Unknown Muscular Dystrophy Forms: m-RNA Expression Profiling and Gene Sequencing
© 25 August 2009



Abstract
A high dimensional data clustering approach was used to investigate for gene mutations that were hypothesized to contribute to the formation of unknown forms of muscular dystrophy. This study presents comparative expression analysis of 56,000 gene probes represented on the Affymetrix HG-133 Plus 2.0 set. Individual expression profiles were generated for biopsies from a list of 12 known disease groups. mRNA profiling of muscle biopsies of 11 disease groups showed that 3 of the unknown dystrophy forms shared closely related patterns with those of CAPN3 gene. It was believed that a mutation in CAPN3 contributes to the formation of this disease form. 16 patients were studied through sequencing of the gene, but at this time, no single nucleotide polymorphism (SNP) has been observed. Detection of the SNP may facilitate in the process of understanding the pathogenesis of this form of dystrophy.

Keywords
Expression oligonucleotide microarrays, Data Clustering, Muscular Dystrophy

Thursday, August 20, 2009

DNA Sequencing II (ABI Prism 310 Genetic Analyzer)

The last kick of a dying horse. At the moment, I’m racing against time to collect nucleotide sequence data for my internship project. This data will make possible further research in the detection of a mutation (most probably a SNP) that leads to some unknown type of muscular dystrophy that was discovered at the Children’s Hospital Research Institute in DC.
I’m kinda finding it a bit frustrating because the process of preparing extracted patient DNA for data collection has step reactions that take hours of wait time in-between them. [I’m actually blogging now because I have to wait for 90 minutes for a PCR run to complete.]

After the Micro-array Scanner encounter, my next fascination is the Applied Biosystems (ABI) Prism 310 Sequencing machine which I am using to sequence the DNA from biopsies with the unknown type of muscular dystrophy.
[See related post- DNA Sequencing I ]
This state-of-art machine replaces the traditional gel electrophoresis with capillary electrophoresis. Equipped with high performance computer technology, the device is capable of reading and storing the data and result with low percentage errors.

Polymerase Chain Reaction (PCR)
The key to DNA sequencing is the PCR. The DNA that is extracted from patient muscle tissue has to be amplified – making it available in large amounts. Dystrophin, the gene that I am investigating in my project, is actually one of the longest (if not the longest) gene in the human genome. I am therefore using primers (both forward and reverse) to amplify only exons of interest in the DNA. 30 Primers were designed for this gene. Up to date, I have only sequenced exons using only 3 primers.
After running the PCR on the Thermocycler, the amplified DNA segments are run through a gel electrophoresis reaction. Using a ladder key, a specific band is expected at a position that corresponds to the primer that was used. The specific number of base pairs is known since we designed the primers in the lab.
In this case, I used a primer that was designed to amplify an exon sequence of about 200 bp. Electrophoresis of the PCR product produced the following result [<-].

This result show that the PCR amplification of the particular exon was a success since the band is corresponds to the 200-300 bp bands in the ladder. I was instructed to commence to the next steps only after the confirming that the used primer worked. You just gotta love PCR and Gels!

ABI prism 310 Genetic Analyzer
The DNA undergoes a couple of protocols in order to prepare it for the sequencer. The steps include the Exonuclease, Sequencing, Ethanol/Sodium Acetate Precipitation and the Denaturation reactions.



The Analyser has a laser which causes the applied dye on the four nucleotides (A-T-C-G) to illuminate different colors of the visible light spectrum. The colors are then recorded and sent to the computer for further analysis.

Sequencher® 4.9 is then used to align the output sequences (both reverse and forward) with their corresponding exon and primer sequences to make contigs.
This software has a chromatogram feature that allows for analysis of the quality of the output nucleotide sequences and detection of errors in the contig sequences. (see Real patient data below).















Click images to view them in larger version
Sadly, this is probably the last technique that I will be learning from the CRI laboratories for this summer. LG (Life‘s Good).

Monday, August 17, 2009

Calculating RNA Expression Fold Change Values (Another MATLAB® application)

After a hectic weekend, it was a little bit relieving to get into the Geek-mode on a monday morning [instead of going into the in-vitro mode]. At least, programming is less frustrating than wet lab tasks which always have strange terms in the protocols. [Wet labs have actually coerced me to become best friends with Wikipedia!]
Anyways, today I ended up writing another simple function in Matlab®. This function calculates the fold change values from mRNA expression data collected from the Microarray scanner. Fold change values show if there is a significant difference between the diseased [dystrophy] muscle and the normal muscle. Together with the t-test, this statistical calculation is used to filter genes of interest from the massive collection of genes investigated using the microarray probes.

Fold change values are calculated by dividing the diseased group values by the control (normal muscle) values. If the result is less than one, its reciprocal is listed. (e.g. 0.5 or a drop of 50% from the normal expression value is reported as 2 fold down or -2 fold change).

For my project, a change will be considered significant if it is >1.7 fold up (or down). Running this function on my data eliminates ~55,000 insignificant genes and filters out ~1,000 genes of interest. Further analysis on the data will include establishing of related networks within the selected using an online based Java® deploy called IPA (Integrated Pathway Analysis) .

% Fumba Chibaka (CNMC Internship- Muscular Dystrophy DIAGNOSIS)
% August 17th, 2009
% foldChange (EXPRESSION RATIO)
% This function Calculates the fold change expression
%parameters: filteredValues(Matrix with mean Expression values/ disease group
% approx dimension (60,000 rows X 100 cols)
% : class_name (Cell array xontaining disease names)

function fold_change = foldChange(class_name, filteredVals)
r= size(filteredVals);

% number of rows in meanValues matrix
rows= r(1,1);
% num of cols in meanValues matrix
cols= r(1,2);
fold= zeros(rows-1,cols-1); % Preallocation output matrix
%Find control group Column index
for i=1: cols-1
____if ( strcmp(class_name(i),'CTRL')== 1)pos= i;
_______%temp save CTRL values in Ctrlbuffer matrix
_______Ctrlbuffer= filteredVals(:,pos:pos);
_______%delete CTRL values from data matrix
_______filteredVals(:,pos:pos)=[];
_______class_name(i)=[];
____end;
end;

%Calculate Fold Values for disease groups
%x= measured y= control
for i=1:cols-1
____for j=1:rows
_______x= filteredVals(j,i);
_______y= Ctrlbuffer(j,1); % deleted ctrl sample
_______fold_change= x/y;
_______if (fold_change<1)
__________fold_change= -1/fold_change;
_______end;
_______fold(j,i)= fold_change;
____end;
end;

class_nameFOLD= class_name;
%Save variables in a new MAT file (foldChange.mat) for further analysis
save('foldChange.mat','fold','class_nameFOLD');