Migrating towards tumors

But we are not yet done. We need to add a mechanism of directional migration to our cell, so that it will follow some chemotactic signal gradient that leads to the tumor site. There are again several possibilities, like following VEGF, since it is secreted by most hypoxic tumors. However, for simplicity, I have selected the SDF1 ('stromal cell-derived factor 1') cytokine, which is also the cue that recruits tumor-associated macrophages .

Cell migration is an extremely complex feature that would be a huge hurdle if designers had to recreate it again and again for their engineered cells. So we expect that cell motility and migration is provided by the chassis, having an open interface for the gradient sensor module.

The way to create an open interface in Qath is to write incomplete features. These are like normal features, that is, collection of connected modules, but with one or more modules are missing, compared to the featurespec.

These modulestubs are declared with the user module keyword combination, emphasizing that the module is provided by the user, not by the chassis. For example, the simplified spec for the cell-migration feature in the chassis would look like this:

featurespec qc.spec.Migration-on-signal-gradient { user module sensor: qc.spec.GPCR-signaling; }

And the actual feature is declared with the incomplete keyword:

incomplete feature qc.lib.directional-migration implements qc.spec.Migration-on-signal-gradient { ... # lots of modules, but leaving the 'sensor' stub unmapped }

So we have to design only a single module that would go into the sensor 'slot', completing the directional migration feature.

We can see from the featurespec above that this 'sensor' module should fulfill the GPCR-signaling spec, obviously being the G-protein-coupled receptor module. This spec looks like this:

modulespec qc.spec.GPCR-signaling { external signal X; protein GPRC; ## G-protein coupled receptor protein G-alpha; protein G-beta; protein G-gamma; }

... not surprisingly declaring the 4 variable component of the G-protein signaling pathway. We just have to map these to the components of the SDF-1 sensor:

module qc.lib.examples.SDF-1-sensor implements qc.spec.GPCR-signaling { external signal CXCL12 : X; ## SDF-1a, Stromal cell-derived factor-1 keep CXCR4 as GPCR; keep GNAI1 as G-alpha; keep GNB1 as G-beta; keep GNG2 as G-gamma; }

Note the slightly different syntax for mapping the genes in the implementation to the proteins in the spec: we use the keep A as B; form. The as keyword may be used only in with the 'keep' and 'add' keywords.

Finally, we need to declare a feature that completes the incomplete migrational feature in the chassis:

feature qc.examples.directional-migration-on-SDF-1 completes qc.lib.directional-migration { module sensor = qc.lib.examples.SDF-1-sensor; }

Please continue with the last section on putting all these together into a functional genome.