Thursday, October 15, 2009

Welcome JCCC Autism spectrum conference!

Virtual World Resources related to Autism

This is a selected list for the JCCC workshop on Second Life and Autism being presented by Marziah Masala and me October 16. You can get an SL notecard with these links and relevant SL land marks by visiting my JCCC home at
You need to have Second Life installed.

Once there touch the rotating box with the brightly colored autism ribbon.

Virtual World Resources including virtual world resources for young children

Second Life

Virtual world with over 90% user-created content. Must be 18 to create an account. Basic accounts are free, but "Linden dollars" can optionally be spent and earned in-world. Some users have created in-world businesses that earn enough to support them in "first life," but most view their in-world business as a hobby.

Suggested places to visit: Virtual Ability Island, Autism Society of America, Autism Liberation Front

Second Life Teen Grid

Teens 13-17. This is exactly like Second Life's main grid, except that membership is restricted to teenagers and educators who pass background checks. Teens also have restrictions on how many Lindens they can purchase per month and stricter rules on conduct. Basic accounts are free, but paid accounts are required for land ownership. Parents can also request an activity summary for teens. Teens can "graduate" their avatar and possessions to the main grid when they turn 18.

free download

Alice is a programming language designed for kids to make programs that can be uploaded to the Web and shared with others. The 3D virtual world programming environment was designed by Carnegie Mellon and teaches object oriented programming principles that apply to more advanced programming languages like C++ or C#. There are also lesson plans available for teachers.

Although it's designed for kids, they should have strong reading and computer skills.

Project Wonderland

Sun Micrososystems Java environment for virtual worlds. Mainly aimed at higher ed/corporate environments but
see for video about iSocial at the University of Missouri. iSocial is designed to help autism spectrum youth develop social competencies and uses Sun's Wonderland software.

Open Sim

Open Sim is an environment similar to Second Life, but open source. It can be run on a single server instead of connected to a large grid. Building content in Open Sim is nearly identical to doing it in Second Life.

Young Children:

Secret Builders
Secret Builders is a virtual world for 5-14 year olds emphasizing education and creativity. Children interact with virtual versions of famous historical figures and characters and can create and publish their own writing, art, and videos.

Club Penguin
Free membership, but some activities require a paid membership

Virtual world for kids from Disney where each avatar is a penguin. Attempts to offer personally identifying information like addresses/phone numbers are filtered out by the system. Parents can choose between allowing free dialog or allowing only limited, scripted communication.

Along the same lines, Disney offers:
Pixie Hollow
Pirates of the Caribbean (10+ for simulated violence and drinking)
Toon Town

And Mattel offers Barbie Girls


Membership requires a purchase of a plush Webkinz doll per pet per year ~ $10-15

This is a virtual world where members care for pets that resemble their stuffed toy. They can earn points by playing games and then spend those points on items relating to their pets, such as food, clothing, furniture, etc. The pets have monitors corresponding to their health and wellbeing of the virtual pet.

Articles and videos related to Autism activities in Virtual Worlds.

Naughty Auties from cnn

Link to video and article about Amanda Baggs.

Autism community forges virtual haven

Virtual Worlds Turn Therapeutic for Autistic Disorders

Milton Broome Autism and Aspergers in Second Life

Internet resources for special neds educators

Seond Life virtual world: A heaven for autistic people?

Autistic Acceptance, The College Campus and Technology:Growth of Neurodiversity in Society and Academia

Monitor on Pyschology, Can Second Life Therapy help with Autism?

A Second LIfe for E-Health Prospects for Use of 3-D WOrlds in Clinical Pyschology

A Virtual Environment for Teaching Social Skills

iSocial 3D Virtual Learning: Helping youth with Autism Spectrum Disorders develop social competence

iSocial Video

Thursday, July 30, 2009

Welcome SidLit!

Science Simulations for students in Second Life at SidLit July 31, 2009.

Welcome from Simone Gateaux and her carbon based side kick Paul Decelles!

Install the Second Life viewer first and create your avatar.

SLURL to Sidlit Notecard with landmarks:

When you arrive, touch on the box which will offer you a note card with landmarks to the sites discussed in my presentation. Accept the note card into your inventory.

Other links-not SLURLS:

Some scripting resources:

Scratch for Second Life:

Autoscript: A web based script generator:

Other virtual World Systems:

Virtual Worlds: Best Practices in Education 2009:

Blog Entry about Wonderland:

Sun's Wonderland Site:

Video about iSocial at U of Missouri in Columbia MO:

OpenSim Links:
Blog entry about OpenSim and Intel's Science Island:
OpenSim main site:

Exit Reality
Blog Entry about Exit Reality:

Exit Reality Site:

Tuesday, July 21, 2009

Mitosis I Wigglies

Animated and wiggly duplicated chromosomes (Reddish wormie things*) scripted to separate and behave as they do during anaphase. The green structures are the paired centrioles, the pink box when touched tells the sister chromatids...those are the wigglies... to separate into unduplicated chromosomes.

*notice the precise biological terminology in this post.

Lots of stuff: Part 1

Been busy teaching in first life this summer but also with Second Life as well. In about 2 weeks I in my first life presence as Paul Decelles will be giving a presentation on doing simulations in Second Life to the SIDLIT conference in Kansas City. My topic is Scientific Simulations in Virtual Worlds and I will cover some of the stuff I did on my sabbatical, lots of which is on this blog, and also discuss alternative virtual world systems for doing simulations.

Also, I am part of a group of Second Lifers working over at Nature Magazine's Second Life site at Elucian Omega associated with their Second Nature site. The idea is to have people share lab space to work on their own projects and by sharing space and working in close proximity hopefully the collaboration engendered will lead to greater productivity.

The group includes a bunch of really talented people including Max Chatnoir, whose Genome Island Site I have visited numerous times. Another really talented person doing some exciting work on visualizing proteins is Hiro Sheridan who does lots of really cook stuff on visualizing protein structure. We each have our own project areas, my project is to build a mitosis and meiosis simulation, something I have wanted to do, but it is a bit more complex than the other things I have done and so its only now do I have the background in scripting to attempt this.

Since we have people at different levels of Second Life experience, we are having some basic workshops to get us started. For instance the first week was basic building, given by Hiro. I don't know about the other participants, but I thought it is really valuable to see how another person explains Second Life.

In Second Life there are often several ways to ummm build a cat. So it is easy to get stuck in one way of doing things. For instance, when I duplicate an object I always do it from the pie menu and had forgotten about the little shift and drag trick, which is actually a lot easier. Another example: our first homework assignment is to build a chair and while I have done some building had not built my on chairs-just quickly slapping things together not not being too concerned with the llSitTarget function.

So this morning, I spent some time building a chair and using llSitTarget...and of course it needed a table, and a nice rug. The result is shown here. Now I can replace those lumpy cushions in my lab space!

Thursday, June 4, 2009

Particle fun

In building my protein synthesis model, I really don't want to use more prims than needed. At the same time I want to display the results in a more interesting way than than as a string. So I have been playing with a particle system.

Here's the result. The script is modified from a snippit of script that generates a particle banner by Debbie Trilling, part of her Random AV profile script.

I tweaked those settings to give two functions that collectively take a text string and converts it into a string of particles. One could use this to display text messages, but here I am using it to display the one letter amino codes of a proteins primary structure. The colors represent the type of amino acid (non polar, acidic, polar non ionizing etc). Of course you have to put a texture for each symbol.

The two functions I developed to represent the protein's primary structure as a string of particles

particleletter(string texture, float distance, float size)

particlemessage(string message, float distance, float size, float speed)

This system unfortunately does not work reliably in that the individual particles are not always produced so the display will have gaps in it. This is a big problem with long polypeptides such as this one here which is the primary structure of an opsin protein.

Another limitation is that the particles only last for a minute or so.

For the student version I will use a small polypeptide with 10-12 residues, that way the DNA template and RNA will require only 30 or so DNA bases. That is a lot more practical.

Friday, May 29, 2009

What's going on at the lab?

My protein synthesis functions, got me thinking about developing an animated model of protein synthesis that actually does transcription and translation and so I have been trying to figure out a good way to do this. The figure shows a animated prototype for an operon that I have been working on. The model loosely mimics the behavior of the repressor protein and inducer of the lac operon as well as the RNA polymerase.

In the picture the repressor protein (red) is sitting on the operator and the RNA polymerase(purple) cannot attach to the promoter to begin transcription of the operon's coding region (teal). The inducer is the green ball. The can see how the system behaves by touching say the inducer which will then bind to the repressor protein, preventing it from blocking the RNA polymerase.

This view shows the repressor protein not on the operator allowing the RNA polymerase to begin transcription. As the polymerase moves down the coding region the transcript (yellow) grows.

When the RNA polymerase reaches the terminator part of the operon the polymerase detaches, the RNA detaches and the small ribosomal subunit (brown) attaches to the start of the start of the transcript.

Obviously there are some simplifications here. For instance in prokaryotes translation can begin while transcription is still on going and I don't bother with the details of how RNA polymerase works.

The goal is to let the students input a short DNA sequence, animate transcription and show the mRNA in local chat (or perhaps as hovering text above the mRNA) and optionally send it as an e-mail. Then as translation proceeds actually have the tRNA's bring in the amino acids and make a short polypeptide. In this scheme the mRNA is a single prim but carries the codons as data inside. But the development of the polypeptide via translation is explicitly animated in terms of what happens at the ribosome, each amino acid shown as a separate object.

In the foreground are some crude tRNA's (orange rectangles) some of which have amino acids represented by balls attached to them. This is going to be a fairly elaborate scripting effort with some neat tricks involved so stay tuned...

My sabbatical is officially over and have already given my sabbatical report. I will be teaching summer school-just two intro biology lecture sections. Also at the end of July I will be speaking on Science simulations in Second Life at SidLit and giving also giving several local talks about Second Life in general.

Thursday, May 14, 2009

Protein synthesis functions

The chromosome module mentioned previously is part of my JCCC evolution build on the agents of evolution. Mutations are any sort of heritable change in the DNA, that is changes in the DNA passed on to future generations of cells. Chromosomal mutations are large scale rearrangements, involving many nucleotide bases. But a discussion of mutations has to include point mutations-changes on the level of a single nucleotide base.

Discussing these means dealing with protein synthesis first. So the last couple of days I have been scripting core functions to do the basic steps in protein synthesis , namely transcription and translation. Max Chatnoir over at Genome Island has a nice little collaborative game related to protein synthesis, ( but since my focus is on evolution at JCCC, I've decided to build my module around a series of functions that start with a strand of DNA, transcribe that DNA to get a messenger RNA and then translate that DNA.

Doing this involves a series of string manipulations and here are some functions I've written specifically to manipulate DNA and RNA represented as a sequence of letters:

string stringclean(string toclean, string allowed);

This function takes a string toclean and strips out blanks and any characters that are not allowed after converting upper case letters to lower case. Permissible characters are in the string allowed. For instance DNA nucleotide bases are represented as a,t,g or c so the the string allowed is "atgc". Were the string toclean representing RNA then allowed would be "augc". Just to be safe the function trims any leading and trailing spaces. The reason for this function is to try to catch elementary mistakes and strip out extra characters from genetic information copied and pasted from GenBank or FASTA formatted data.

string compdna(string dna);

This function takes a DNA strand and outputs the complementary strand. This is useful because data bases often give a so called sense strand which is like the RNA only with "t" shown instead of "u". For illustrating transcription you need to start with the complement of the the sense strand as happens in the cell. Hence the need for a function to generate the correct DNA strand.

string transcription(string dna);

This function takes what ever DNA strand is given it and mechanically does transcription. It doesn't recognize any sort of promoter region such as a -35 or Pribnow box. If you don't know what those are..well don't worry.

string transcodon(string codon);

Takes an mRNA codon and uses the standard genetic code table to translate the codon into the corresponding amino acid using the standard genetic code, used by most eukaryotes. This function is needed for the translation function:

string translation(string mrna);

This function takes the mRNA string and using the function transcodon, translates the mRNA into the polypeptide that would be produced in the cell at the ribosome. The function does not recognize the Shine-Dalgarno sequence and mRNA's start for simplicity with the start codon, 'aug'. The function terminates the polypeptide when it recognizes a stop codon. Polypeptides are represented by the now standard one letter abbreviations commonly used in protein data bases. Thus it will allow the student to compare the effects of frame shift mutations caused by insertions or deletions to substitutions on the resulting polypeptide.

These functions work for small genes with on the order of 250 nucleotide bases. One frustrating thing is the limited ability of SL to write data to files and for now the easiest way fo the user to save the output, is to e-mail it to themselves.That will be built into the module as an option. Otherwise users would have to cut and paste from the chat window.

Users will have the option of using data they obtain from another source by configuring a note card with the raw data copied from say NCBI, or using a small gene data set preloaded onto a note card.

Three other core functions are being developed:

string makesubstitution(string dna) makes a random base substitution in an original DNA strand.

string makeinsertion(string dna) makes a random insertion while
string makedeletion(string dna) makes a random deletion.

But these will be easy to make. The activities are being designed around a pencil and paper exercise I use in my classes currently, only now the students will be able to use more realistic data and quickly investigate at a number of different mutations.

Monday, May 11, 2009

Sabbatical Presentation

Last Thursday I gave my Sabbatical report on my Second Life activities this semester. It is only about 20 minutes long so it is really difficult to say and show everything one might want to show. The video was just posted today so if you want to see my take on what to say about Second Life in less than 20 minutes have a look at:

Wednesday, May 6, 2009

JCCC Chromosome module

Chromosome Build at JCCC site. This is part of the evolution unit being installed at the JCCC site. It currently includes the human chimp ideograms courtesy of ENSI. You can see two of my real simple viewers, the one on the left with some narrative and the one on the right with the human chimp chromosome ideograms.

On the side directly behind me are some red and blue chromosome, that illustrate reciprical and non reciprical translocations. The four cylinders with the colored horizontal stripes illustrate basic chromosomal rearrangements. Because of their importance, I want to have a separate activity for duplications and the evolution of gene families if I can keep it simple.

On the right hand side of the picture a some of my human chromosomes that link into the Ensemble web site.

The chromosome build is at

This is open access but the rest of the JCCC sim is currently not.

Saturday, May 2, 2009

Mitosis in the Morning...

As part of my evolution build I wanted to have an activity related to chromosomal rearrangements. We know these are important in evolution, some of the clearest examples are in our own evolutionary history. So I developed a series of human chromosomes similar to those over at Genome Island.

These consist of representations of human chromosomes, textured with the standard banding patterns (ideograms) that geneticists use. When the user clicks on the chromosome, menu dialogue allows the user to look at the similarities between the human chromosome and the chromosomes of selected mammals: mouse, chimp, and the macaque. This is done using a data base portal called Ensembl. This displays regions of synteny, which in the bioinformatics context refers to regions of chromosome that have the same arrangement of genes in both species. Here is a quick example for human chromosome 1 showing the regions of synteny in chimp chromosomes to human chromosome 1.

It's probably hard to see what's going on here. But the big white structure in the center represents huna chromsome 1, and the chimp chromsomes with regions of synteny for human chromosome 1 are shown to the left and right. Human chromosome one has synteny with most of chimp chromosome 1 with just a little region of synteny with chimp chromosome 2A and chimp chromosome 10.

Speaking of chromosomes, Max Chatnoir was wishing for a build related to mitosis and meiosis so to help me think about this, I spent the last couple of days building mitosis at my carmine site. None of this is scripted and it still isn't clear what the best strategy for this is.

Here is a quick look at my mitosis builds. These are quite large and I will probably scale them down a bit. They are relatively simple but do take up a fair amount of real estate-not prims but literally really real estate.

This shows prophase, prometaphase, metaphase, anaphase and telophase. You can see me in the bottom of the picture. Each of the "cells" is 10m in diameter.

I don't normally build this big, but it seemed easier to do this big. The mitosis build is currently at:

Here is a close up of metaphase when the chromosomes (shown in red and blue) are lined up in the middle of the cell.

My thinking is rather than animate mitosis, having this build (maybe on a smaller scale) and then an activity center where students can play with chromsome models like they do in lab. I think it is possible to script the chromosomes to sense a proper arrangement. That would provide a nice collaborative activity.

Speaking of collaborative activities, I also tweaked my predator natural selection module and installed it on my college land site. The module is packaged appropriately with a velociraptor texture so hopefully student predators will get in to the spirit of things.

Here's the module installed at I am also building an activity center just above Predator which students will do first to study natural selection under less challenging conditions.

Monday, April 27, 2009

A Little Break

Last week we went to Big Cedar in the Ozarks for a little break. No computer work at all. OK I did sneak a quick look at e-mail but that is it. I did take lots of pictures and will get them posted on my flickr stream this week. Since I just had my macro lens took lots of flower pictures. Here are a few shots:

Xylocopa virginica male

This is a male carpenter bee, Xylocopa virginica. This is a macro uncropped so you can see maybe just how close he was to my lens!

Dogwood blooms

We timed this vacation to coincide with the Dogwood bloom. Maybe we were a week late for the best viewing but the trees were still quite nice!

Ornamental Cabbage

Most people might think I took this shot for the bee. Actually, no. I had never seen ornamental cabbage when it bolts, or at least had never paid attention to it. But the yellow blossoms against the purple stems are quite striking making me reassess my dislike of ornamental cabbage.

Today I had meetings at school and spent sometime designing a chromosome activity. More on that later this week.

Tuesday, April 21, 2009

Evolution IV

Now that I have my drift and selection modules in hand, the next goal is to working on activities that can be fit around them. I know this is a bit backwards on the surface, but what I want to focus on in my evolution module is mainly the agents of evolution. These are basically:

  • Mutation
  • Genetic Drift
  • Non random mating (of which there are several types!)
  • Migration
  • Selection
To house the activities related to these agents, I have deviated from my photosynthesis and genetics design and come up with a series of open activity arenas. Each one will have a sensor driven script for tracking visitors, an simple activity rezzer of my own design, built into one of the corner posts. Rather than use my Carmine land, I am building the agents of evolution site at my College's island. The design challenge is to work with in a 281 prim limit.

The natural selection and drift modules use temporary prims so only the rezzers for these count. My 5 activity arenas and office take up a grand total of 67 prims so that leaves me a budget of 220 prims. Now I can stretch that, since activities will not be rezzed all at the same time since each arena but each activity has a "budget" of 40 prims. Ah but each activity arena can hold multiple activities in waiting so the "budget" isn't so draconian after all. 220/5 activity arenas.

Oh and my goal is to have this done by May 7th. At least now I can focus on design more rather than the arcanity of the LSL's llfrand function and other such issues. Plus I will have two radically different design approaches to compare, the module in a box approach of my photosynthesis and gentics builds versus my more open arena centered approach.

Evolution lends
itself to the more open approach, and this summer I will install photosynthesis and the Cami genetics modules in Carmine using the arena centered approach. That way I can have the same material side by side with different design features to begin to assess what works best with students.

Saturday, April 18, 2009

Evolution III: the Predator version...

My natural selection module works pretty well but one concern was how to make it a bit more interesting. One obviously way to do that would be to make Cami's that move so that they are harder to spot and catch.

So since I really don't know a whole lot about making things move in Second Life, the first thing I did was develop a cami that will roam around randomly but stay in my land.

The strategy I developed builds on a function I had previously scripted for random movement of a prim:
vector newcoodinates(vector pos ,float pathlength, integer start)

integer icount;
float deltax;
float deltay;
vector temp;
float ground;
temp = llGetPos();
if (start = TRUE)
deltax = llFrand(pathlength)-pathlength/2;
deltay = llFrand(pathlength)-pathlength/2;
temp.x = temp.x + deltax;
temp.y = temp.y + deltay;
ground = llGround(<0.0,0.0,0.1>);

temp.z = ground;
if (llGetLandOwnerAt(temp) == llGetOwnerKey(llGetKey()))

return temp;
else {

return pos;

return temp;

The idea is to take the prim's current position and update it with a "random" number between zero and some maximum path length. That's what this statement does in the one dimension:

deltax = llFrand(pathlength)-pathlength/2;

Since I want the cami's to hug the ground for the vertical dimension I use LSL's llGround function:

ground = llGround(<0.0,0.0,0.1>); the result is the vertical dimension.

One thing that flummoxed me for awhile was how to keep the cami in bounds. My original idea was to have the cami detect when it was on someone else's land and have it turn around and leave. But that turned out to be more difficult to script in a totally fool proof manner to this trigonometrically challenged scriptor. Besides, it seemed much better and nicer, to stop the cami from even entering someone's land in the first place:

So that's what this piece of code does:

if (llGetLandOwnerAt(temp) == llGetOwnerKey(llGetKey()))

return temp;
else {

return pos;

The rest of the basic movement script is deceptively simple:



do {

newpos = newcoodinates(llGetPos() ,2,start);


while (start==TRUE);


The rotation functions are sort of trial and error on my part but the cami's end up with an interesting waddling motion, so I am pleased with that even if it wasn't quite what I wanted at first.

Deceptively simple because I also needed toggle that stops the cami's so I can catch them and for determining the cami genotypes and phenotypes. Fortunately my previous cami scripts are easily modified to to work with my cami movement script.

The result is Natural Selection the Predator version right now at:

Just touch the light blue prim and 50 maddingly difficult to catch cami's will start swarming around:

The idea is to put yourself
in the role of a predator selecting against one of the phenotypes. The phenotypes use my cami genetics scripts and it is possible to select against one of the phenotypes and eliminate the genes for that phenotype, but its harder than it looks.

This version will allow you to keep selecting until the the cami's derez at which point you must touch the blue prim again to rez the next generation of cami's using the ones you didn't get as the parent population. I may change this feature.

The main script in the cube again handles all the book keeping and generates a report tracking the allele frquencies when you touch it to rez the next generation.

By the way, when you touch one of the camis in your role as predators they explode red blood thanks to a little particle will be sound effects.

So even if you don't know squat about population genetics or evolution, at least you get to blow up stuff. I guess there is a bit of adolescent even in the most prim and proper of us.

Oh if you visit, watch out for cami sharks.

This week I will be designing some suggested activities related to evolution using my cami system and also taking a few days for a trip to the Ozarks for springtime dogwood viewing, I hope.

Tuesday, April 14, 2009

Evolution II 101 Dalmations?

Well no, how about 30 Caminalcules after selection favoring a recessive allele for 8 generations. The natural selection module beta is finished and works very well. The basic strategy is to have the user or users act as visual predators removing camis from the population. The module might for instance be on a certain background where some cami phenotypes are real obvious while others are not.

The "predators" remove cami's by touching them, and the population is up dated. After a set period of time say 1 minute the remaining cami's are used to make a new population, which the module generates when it is touched and the cycle is repeated until only one genotype remains or until the users give up.

At the start of each generation the module generates a report in chat on the screen showing the allele frequencies for both of the cami loci.

If Cami's are never "eaten" the result is genetic drift. So this module really combines genetic drift and natural selection. It does not use or even compute selection coefficients, but one could add that to a report.

Monday, April 13, 2009

A Scripting Interlude

While revisiting my genetic drift module and starting my natural selection module, I decided to fix a potentially annoying problem. Since Caminalcules rez as physical objects sometimes they behave really flaky and end up in other regions. Right now they are set to die on their own after a set time but that would be a scant comfort to another land owner who has one of these things appear on her land.

With the help of the good folks in the College of Scripting Music Science group here's the basic strategy...

default {
// check if the touching person is over the script owner's land

if (llOverMyLand(llGetKey())) {
llSay(0, "the prim is on my land.");
} else {
llSay(0, "the prim is NOT on my land.");

Not real hard and experienced scripters probably know about llOverMyLand, but it solves one of life's little mysteries. I can of course shorten this to a single if statement if I just want the critter to die, but I might want different sorts of behavior depending where the critter is, hmmmmm.

By the way, since I have several parcels, I was interested to find that llOverMyLand doesn't care what parcel the object is in just whether or not you own the parcel.

Saturday, April 11, 2009

Soror Nishi's at it again...

At Soror Nishi's new build

I am a big fan of Soror Nishi's phantasmagorical plants and was thrilled to see that she has lots of new stuff on her site. Some of her things are pretty prim intensive and much of my stuff is the same way. So prims are precious. But I do believe in supporting artists I like to the degree that I can so did find a couple things that were low prim.

Here is one of my two buys sited in my land.

Tree fern

Camilab is in the background.

You can visit Soror at

Definitely worth it.

Also today, actually yesterday now I spent some time in the Costa Rica sims poking around. These are definitely worth a visit as they are very detailed.

Here is a view from the Palo Verde sim:

Palo verde

By the way the Costa Rica builds are so nice that for the first time I have been tempted to buy into a private region...but its quite a bit more expensive than my mainland region.

I recommend Cocos Island which you can visit here:

Here are a couple of pictures:

Coco Island

This bridge is quite famous in RL.

Coco Island

An example of the wonderful plant texturing on Cocos Island.

A certain cell membrane...

My biology viewers might recognise what this SL model is supposed to be.

Membrane of a certain cell

This is a preliminary prototype for a neuron membrane showing stylised transport proteins (purple). The round guys with the lids are gated sodium proteins the lidless tubes are gated potassium channel proteins. The "lids" on the sodium gates will be scripted to pop open to let Na+ ions through while the bottoms of the K+ channels will flip open and closed.

The oval shaped guy on the right is part of a Na+/K+ pump.

All these proteins are embedded in a stylised plasma membrane (red fatty acid residues connected to white polar heads with phosphorus for the phospholipids).

This project is actually part of a planned metabolism build which uses the neuron to illustrate how cells use active and passive transport for complex processes. So it's not meant as a full action potential simulation though my scripting strategy will take that possibility into account.

Sunday, April 5, 2009

Fret no more!

When at the Best Practices conference several presenters beefed about having to face the slide viewers in use to advance their slides.

Well, heated discussions of the merits of slide presentations in SL aside, I modified my simple viewer discussed in my last post to take care of this problem. So fret no more SL conference presenters because now there is Simone's absurdly simple minimalist podium slide viewer/podium! (AKA Silly viewer)

It consists of a big viewer for the audience and a small viewer that the present er can use to control the slides while facing the audience! All you do is transfer your slide textures from you inventory to the inventory of both the big and small viwers and you are good to go.

I haven't tested it on big sets of slides so I don't know how Erich Bremer'sbuffering system will work with big sets. But it took about 5 minutes last night to whip this together (with a last minute change tonight). By the way I did not start out to make this viewer but it was a proof of concept to myself of another project, namely to update my clunky image map type viewer used in my photosynthesis build. More later.

The picture shows my male AV, Simeon Gateaux who has his own land next to mine and he tests permissions etc.

So if you think my silly little viewer might be of use to you (you can resize and move both prims), you can IM me, Simone Gateaux, in SL or stop by my garden spot (SLurl) in Carmine and grab a copy to try and a note card. It's free but both feedback and donations toward my private tier are accepted.

All you have to do (and this is changed from my desription in SLED BTW, is rez the viewer and insert your slides in the right order (careful here SL will put them in alpha order) into the "podium", resize the main viewer, position the podium and you are ready. Do not mess with the blacked out parts of the prims. They hide the buffered textures.

Friday, April 3, 2009

The Cami Lab is up!

The Caminalcules
(camis for short) have been safely installed in a Mendelian Genetics lab module called the Cami Lab. I use my note card configurable camis to illustrate dominance relations, monohybrid crosses, and dihybrid crosses. The evolution module will be directly underneath.

I have had to readjust my land and merge several parcels to give me some prim breathing room. Feel free to come and visit Cami Lab currently at:

As part of this, I rescripted my simple viewer to use Erich Bremer's double buffering script which makes loading much faster. My essentially new viewer uses LSL's way cool llDetectedTouchST function. This function detects where on a prim's surface you are touching and returns that as the x and y terms of a vector.

You can then access, these to do things like change a slide or teleport. What is really cool is that the coordinates are normalized to the size of the prim so they are presented as a float between 0.0 and 1.0, so if you stretch, say a viewer, the detected function still works properly.

Wednesday, April 1, 2009

Evolution I: Simulating genetic drift with Caminalcules

So far I been working with my caminalcules in terms of genetics. But of course-and maybe someone ought to tell creationists about this-evolution and genetics are logically connected and evolution follows from genetics. So naturally I want to use my system to simulate the basic mechanisms of evolution.

Yesterday and today I programed a prototype Evolver (pink square) that simulates genetic drift. Genetic drift is an agent of evolution where a population's genetic make up changes due to sampling error. Drift is particularly important for small populations, such as caminalcule populations which given the prim limits in SL can never be very big.

Genetic drift is actually easier to simulate than natural selection, so it makes a good starting point for scripting and probably also for students to play with.

To look at populations of caminalcules I treat the population as a list containing the genotypes of all the individuals in the population. I use the same phenotype routines developed for genetics crosses and simply can access the approriate caminalcule through the list index.

Next I had to write a series of population functions:

string randommating(list the_pop) chooses two individuals from the population at random to mate and produces one offspring.

initialise(integer popsize) produces an initial random population and stores it in a list called start_pop_list and returns that list after rezzing an offspring:

Here's a snippet form this function:

start_pop_list = start_pop_list + genotype;
pass2offspring = (integer)genotype;
llRezObject("bigpup",llGetPos()+<2.0-llfrand(4),2.0-llfrand(4),0>,<0,0,0>,<0,pi/4,0,0>, pass2offspring);
while (++icount
return start_pop_list;

Most of the other routines are functions made before for the Caminalcule genetics module. So there is nothing new here. The simulation is direct in that I do not calculate allele frequencies and sample from that.

Doing random mating is pretty easy and here is the new function that handles that:

string randommating(list the_pop)
integer index;
string organism1;
string organism2;
string thezygote;
string gamete1;
string gamete2;
integer pop_size = llGetListLength(the_pop);
index = irandom(0, pop_size-1);
organism1 = llList2String(the_pop,index);
gamete1 = make_a_gamete(organism1);
index = irandom(0, pop_size-1);
organism2 = llList2String(the_pop,index);
gamete2 = make_a_gamete(organism2);

//----pick 2 organisms at random to mate from the_pop, self mating allowed----
//list the_pop must have been checked!

return make_zygote_string("4",gamete1, gamete2);
//4 because we assume independence here

Well so what happens with genetic drift? I want to write routines to quantitatively track what happens, but for many situations running the drift script for for a number of trials ought to get the idea across so here are some pictures from two sets of runs.

My first run started with a population that looked like this:

Four generations later...

Notice the pink and green phenotypes are becoming more common. The the genes related to the white caminalcules have apparently been eliminated. Since the genes related to the white photype are recessive the student might think (as did some geneticicts in the early 20th century) that the recessive allele ought to dissappear over time any way.

By the 11th generation all you have are these caminalcules:

Actually the picture shows the population after 14 generations since I wanted to make sure the other types were eliminated. This nicely shows that the effect of genetic drift is to reduce genetic variation in a population.

Now consider a trial starting with this population:

Not very different than the starting population from the previous run. But look what happens now! This is at generation 10. Note the large number of white caminalcules. Remember white is recessive.

And by generation 15:

Only the white caminacules are left and it looks like only one type of spotting! This illustrates two points. First of all as I noted earler, recessive alleles are not eliminated just because they are recessive, but evolution is strongly contingent. Just because you get one result one time, the chance elements in evolution such as genetic drift may cause completely different out comes the following time. This can lead students and teachers into all sorts of interesting avenues of thinking about how evolution works!

If you want to see how this works, look for me in world.

Hopefully later this week I will have worked through natural selection.

Monday, March 30, 2009

Virtual World Best Practices Conference

Wow its over and I am still mentally going through everything that I saw at this conference. But needless to say seeing all the wonderful things being done in Second Life and other Virtual World systems is exciting. There was just no way to be everywhere at once and the best I can do here is present a few comments and pictures. The presenters are putting up outlines of their talks and slides at the best practices Wiki here.

Rather than try to recap everything,
a few general impressions. First the conference was extremely well run with surprisingly few crashes, considering the number of avatars present at any given time.

While the conference was mainly held and dealt with Second Life, one track did look at other virtual world systems. For example here is Nicole Yankelovich presenting on Sun Microsystems wonderland project, which I have blogged about earlier.

In the same vein there were virtual tours of Beyond Space and Time's Forbidden City, a tour I went on. It is visually stunning and photo realistic and I high recommend it as a great resource for anyone interested in Chinese culture.

It's not to use the latest 3D world buzz word interoperable with Second life and from my perspective it is not a virtual word in the same sense as Second Life. Everything is controlled and you can't build and somehow to me that lack of spontaneity makes the experience less immersive than Second Life; there is no sense of being embedded in a larger world.

I did not get to see this, but people interested in accessibility issues ought to check out Max the guide dog designed to help persons with limited vision cope with Second Life which after all is highly visible. Along the same vein, Nichole Yankelovitch mentioned what looks like an interesting Autism site located physically not too far from me at at University of Missouri. This particular project is called iSocial. This system uses Wonderland so it is not accessible through Second Life.

The talks I was at involved the main presenter using voice rather than chat with background text banter among the avatar's in the audience, and I found myself listening to the presentation, taking pictures and dealing with several chats at the same time. Now that may seem rude but remember several things in SL, the avatar can do all these things while looking perfectly still to the speaker. Secondly the chat generally became entrained to the speaker's topic.

In some cases the presenter was clearly comfortable with this, in other cases the moderator would monitor the chat and relay questions to the presenter. The one thing that did mar a few presentations was sound quality. One otherwise good presentation was very difficult to listen to because the sound was too distorted and I think presenters using voice need to pay close attention to the quality of their equipment and how they use it.

Here is maybe an extreme case of my screen while at a presentation. Those who have seen my computer screens in RL or for that matter my cluttered RL office desk will probably chuckle at this.

Most of the talks
were formatted pretty much as standard Avatar sitting and listening to the main presenter while watching power point type slides. I think this was a good strategy since there were lots of new Second Life participants and getting the hang of SL camera controls can take a little time. The most interesting alternative was a walk about presentation by Dona Cady (RL) and Don Margulis (RL) where the slides were on separate panels and the avatars had to teleport to the presentation site high up in the sky. Since the slides were on large panels there was no fussing with camera or slide viewer controls. So again sometimes simple things work best.

This presentation
also did a nice job relating virtual worlds to the sorts of paradigms common in oriental cultures. The slides by the way are wonderful and I hope the presenters get them up on the conference Wiki for others to see.

The talks tended to be theoretical or taxonomic in nature rather than quantitative but they all raised lots of neat questions. For example Shailey Minocha and colleagues from Open University gave a fascinating talk on realism versus fantasy in Second Life and how that might relate to the design of learning spaces.

What they found suggests that spaces for social interaction tend to be filled with familiar stuff couches and tables, "vending machines" etc, while less realistic and more metaphorical spaces can be effective for discussions. For example a discussion about test tube babies had a series of test tubes for the avatars to sit in during the discussion.

Other talks dealt with applying pedagogical models to virtual worlds or dealt with the importance play as part of the learning experience. I particularly enjoyed Max Chatnoir's talk where she emphasized this in terms of science in Second Life.

The themes of her talk were some what echoed in a really interesting study by on the effectiveness of collaboration by Jason Breland and colleagues in the use of virtual world systems by architecture students.

Also these two talks were among the most quantitative; Max had some wonderful data on visitors to Genome Island and what they do, much of it very fine grained as she builds sensors into many of her objects. So she can infer for instance, what tasks she has assigned her students are the most challenging in terms of the amount of time they spend on the task or with the object.

Breland's study was almost an analysis of variance type study that attempted to control for experience in determining the effectiveness of collaboration. I think an expert on ANOVA could help Breland and company with their design but they have an interesting approach to getting at some good answers to important questions.

The conference was really intense and even when I got away, for instance to go back to my SL lab to do some scripting, I found myself talking to conferees. And I drank copious quantities of coffee. So to the left is my mug.

But there was plenty of play as well...that's part of learning right? There were lots of fun avatars among the participants and presenters.

Pathfinder Linden from Linden Labs was a constant presence.

Here I am in a Kimono, I either wore this or a two piece pants suit.

Lori Vonn Luster

Here is one of the presenters, Jonathon Richter, during his talk. Those Salamander people really are dedicated. Imagine the effort keeping that skin moist!

Continuing the herpetological theme, this dragon kept asking for cookies.

Of course as any good conference there was a big party at the end. So to close things out we all went to a club for dancing. Now this was pretty new experience for me since I am not a particularly social critter in real life but it turned out to be lots of fun in spite of a fair amount of lag due to lots of avatars in a small space. Plus I had to dig a bit to find an outfit that was a bit more suited for the event. Fortunately I had just the thing.

Here is a general party shot. As people danced there was lots of local chat and it was more fun than I thought it would be. What was interesting is the parallel with real life in that more women danced than men. In real life I am very self conscious about my dancing...but not here and I didn't even work up a sweat.

Of course a party called for switching out the coffee for a glass of...

OK just one.