Live CEOing Ep 783: Design Review of BioMolecule and BioMoleculePlot3D

Stephen Wolfram reviews design for biomolecule functions in Wolfram Language. The team discusses how to handle 3D structure provenance (experimental vs predicted), reference chains and residues, represent ligands and inter-chain bonds, and whether to use a separate assembly construct for composed biomolecules with geometric transformations.
Chapters
All right. Hello, everyone. We are here to look at the design of biomolecule functionality for the upcoming version of Wolfram Language. So where should we start? The biomolecule function. I thought we already had a. Biomolecule is different from biosequence. Indeed. So, for example, if I say here, biomolecule. This is all irrelevant? Actually, Well, if I say biomolecule. Of. I don't know. I wish that this didn't. Could somebody please report this bug? That this is not aligned? I've reported this 75 times. Do you see that bug? Do you see the bug? Anybody see the bug?
The equals and the H are not aligned.
That is correct. That's the bug.
Okay, I'll get it recorded.
Okay. It's at this magnification, right? That's the failure. Why did that not work? Why did that not work?
I. I don't know. Off the top of my head right now. I do know that biomolecule doesn't currently work with anything in the.
No, no, no, no, no, no, no. Why did that turn pink?
It didn't have a Wolfen language. Parse would seem right.
Why not? It should be a protein, Right? What. What went wrong with this?
So it probably parses to some entity type, that is.
No, no, no. You saw what it parsed to. It says protein here. So why isn't that working?
Without alpha loaded? I can't debug that at the moment. I can file a bug.
It's a bug. Who's noting those down?
I noted that one.
I'm also noting it down. Sorry, I took a second. Please, please do respond. Okay, give me another protein. Tell me. Protein. Any protein.
1 mbn.
Yeah.
1 m. One biomolecule. 1 mbn is a myoglobin.
1 mpn.
Oh, that's a PD. That's a string. So myoglobin is another protein that you can.
If you want a protein name, try.
I'm going to do. I'm going to do.
It doesn't work yet.
The entities. What doesn't work. I mean, protein doesn't work in an entity.
Biomolecule of entities doesn't work yet.
I see. Okay, so what does work. By type? This. So one. Some random thing, you know? I don't know. My, my. You know, if I type something like this, I have no idea whether that's a thing, but. Okay, that's not very useful. Wasn't there a proper message there?
Because it's still. I mean. So we're at the prototyping stage and Then we fill in all the messages once we're sure about the. The proper behavior.
Yeah, I'm copying that from. What did that do? So do I have to say biosequence here? No.
So, yes, so if that is intended to be a biosequence.
Yeah. Okay. To copy from the right hand side there. So biomolecule plot is new. Yes, indeed. Okay, but this is something. So how did it do that? How did it figure out how to. How to place this?
So there. It definitely did call a ESM fold with that protein sequence, that peptide sequence.
Okay, so here, for example, if I just say, how do I get the. The protein sequence out of this? I mean, the peptide sequence out of this.
Wait a minute.
Say it again.
I'm looking it up.
Yeah, it doesn't matter. Okay, so you're so in this thing here, that's just a sequence, right? So if I call biomolecule, if I want to get. If I call this. Oh, didn't work.
Right. So that probably that will work eventually. Like, biomolecule plot 3D will automatically create biomolecules, like, just like molecule plot 3D does.
Okay, so that did some automatic folding. Is that true, or did it somehow look this up? I mean, does it. Is that just a peptide sequence or does it have more information?
That is just a peptide sequence. So when you call the folding service, it's noticeably faster when you've called it before. So I do believe it does lookups before attempting to fold from.
Fine, whatever's the case. But this is of unknown correctness, right? This thing here?
Yes.
Okay, so fine. So biomolecule plot 3D is. Okay, so that's a PDB structure. Beautiful. So is this something that again, had to be folded on the fly?
No. So that's actually comes from a crystal structure.
Wait a minute. Wait a minute. I don't understand. Do we store. So this is going to an external identifier, right? For pdp. But we have. We know certain structures. Is that correct? Certain things. We've. We. We know the structure already. We didn't have to. We didn't have to turn it into a peptide sequence to try to fold it, correct?
Yes.
Right.
Like in the pdb.
Okay, look, look. The issue is there is presumably a distinction between this case here and this is an actual known biomolecule for which we have the. For which we know the structure. Correct? Which we have. So I think we should indicate that here. You see what I'm saying?
Yes. So indicate that, like the source.
No, no, we should indicate that we know the structure. Right. That we're not having to fold on the fly.
How about true false property? Say if structure is computed or not.
Right, right. 3D structure, colon or something. I don't know what. What we want to say. I mean, what we want to. I mean, maybe there's some intermediate cases where we know something about it, but we don't know everything about it. I don't know. Am I making sense?
Maybe we could say experimental or model. The folded ones would be a model. Experimental would be something from crystal structure. And there are multiple crystal structure ones.
Structure, colon, Experimental. Structure, colon. None. Means we don't yet know the structure. Did you see what I'm saying?
So experimental or predicted or.
Yeah, predicted is nice. I mean, go ahead. What are you gonna say?
Can we have another word in structure?
Yes. I didn't like the word. Structure. Confirmation.
3D embedding.
Shape.
What's wrong with structure, Michael?
It's a little vague, actually.
Yeah, I think. It doesn't imply to me the 3Dness. The 3D. The sequence itself is, for me, a structure.
I like confirmation myself, but if it's too long. I understand.
I don't think the length is that important. I think confirmation is a little weird because confirmation suggests something dynamic, whereas this is technically tertiary structure. Yeah, that's what it is, technically. Right.
Yeah. Secondary century.
Well, no, but it's the tertiary.
No, tertiary is not right.
Why not?
Primary is. Is the residue sequence. Secondary is whether you've got folds or sheets. Tertiary is the overall fold. It's not specific coordinates.
I see. Okay, fine. I didn't know that. Sorry about that. Okay, well, I just think we need some indication.
We'll think of a better name.
We could call it coordinates. Colon. Experimental. You know, whatever. Yeah, I mean, what is the option that gives you. What is the property that gives you the actual coordinates? If I want to know where the peptides are, whatever that means. Central mass of the peptide. I don't know what exactly, but where they are. How do I get that? From this. Right.
So. So properties Access is not set up at the moment, but the. What you would do is you would ask it for its residue coordinates if you wanted them grouped.
Oh, yeah. So coordinates is. Is really a thing. Yeah. So maybe we want to say coordinates here.
Yeah, I like that.
Yeah.
Okay. All right. So now, what happened to our way of representing crystals talking? I mean, I know it's not biomolecules, but I'm just asking.
Like. Like inorganic crystals or. Yes. So we're currently Trying to work on a. At the same time, we were doing biomolecule and crystal structure, but we kind of put biomolecule forward for 14 1.
Okay, well, the users are mostly living organisms and this is about life, so I suppose that makes sense.
Right? Biomolecule value, the usage. There is something I want to nail down. How exactly to get properties and get properties for specific parts of the biomolecule. The syntax. The syntax I propose that is kind of weird.
Has a. Yeah, I don't like it. I mean, I think that stuff should go with the biomolecule, not so molecule value. If I say something like. I don't know, I can say something like. Right, okay. Just. I'm just reminding myself how this works now. Is there any qualifier that you can give to this? Like for example, if I say if, can I give a quantity a. No, not an entity instance or anything here. I can't wrap that around the left hand side, can I?
No, we do have chemical instance, but it. It has its own property access or not molecule value. What you can do in molecule value is you can ask for the atomic mass of the third atom, which is similar to what we need to do with biomolecules.
Okay, so what. How do you do that with molecule value?
So the same. So you would wrap the property in a list and then put the. Yeah, so that. That's the syntax. I believe it is different than the syntax that graph with annotations uses, where the list and the items are wrapped around the graph instead of the property.
Yeah, it seems. This seems wrong to me.
I mean, it's not very. It's not super intuitive for the users.
It. It seems to me much better to be able to do something like some kind of syntax here where that's a modifier or something. But let's look at the corresponding thing for graph.
Okay, so be annotation value, Right?
Yeah. Yes, but how. I hate annotation value, by the way. But now how does that work?
So you might have list, G comma 3, end list and then vertex weight.
Yeah. Well, that's the vertex name, right? What? That's wrong.
It's less than helpful.
That's just wrong. Can we report that, please.
See should it be missing?
Managing here?
Yeah.
So who's the. I am Eli. Okay, so I'm not sure what it should do, but this is clearly not right. Yeah, I think it can't be missing.
Because the label might be missing if you visualize something.
Yeah, I know, but this is clearly wrong. I don't know what it should do, but that's clearly wrong. Okay, so in this case, we're having. This is the modifier. Now, how do you reference particular elements of the molecule? We have a mechanism for doing that. Right. It's part of the way that molecule is constructed. Right. If I say, if I, if I do what. What happens if I do normal of this? How can I see what this molecule actually is? That's not useful.
I mean, this one is not good because it isn't a molecule.
Yeah, it's a. So. Yeah. Okay, that works.
Okay, so we've got numbers for the atoms, right? Yeah. How would I extract the first atom here?
So you could do atom list of that mall and then believe if you wanted just the first one, you do do comma, one.
But how would I do that? How would I represent. How would I extract that atom? How would I reference that atom?
Honestly, I don't know what this question means.
Well, that's what we need to do up here, where we're talking about referencing a piece of this biomolecule. Right. What you want to do over here is you want to reference a piece of the biomolecule.
Right.
Or a span of c. Of pieces.
Okay, right. But I mean, so fundamentally what you want is something like in the case of molecule value. I think it's just wrong that it's property comma, item here. I think it should be molecule comma, comma, you know, subpart, and then that property of that.
Essentially sub value type of operation.
So I don't, I don't disagree that, that, that those two things.
Oh, but look, look, the problem is that you've used this syntax here, right? So the only way one could do this is by saying something like, you know, arrow one, meaning the first atom, blah, blah, blah. So I'm saying. No, I'm sorry, I didn't mean the inside there. I meant outside. Right. That will be molecule value of this. That makes sense. And the second argument would be something like molar mass or what? Yeah, yeah, yeah. The second argument would be what? Coordinates or whatever, right? Yeah. And this refers to a subpart of the molecule. Now when you're doing those subparts, when you say items, what kinds of things can item be?
Just a. Let's see, a list of atom indices, one atom index, a list of bonds, or a list of. Or just one bond.
Okay. So that would be things like, you know, list bond 23 or something. And then maybe a naked atom 4 or something like this. That makes sense. I don't Know what it means to say, molar mass of the bond?
Right. No, we would fail on that. I mean, because. Well, molar mass isn't a property that we apply to parts so far. I mean, it's mainly just for.
So it just says missing, not applicable. Right. Is that right? That's what it should do. Yes.
Yes.
Yeah, I think that's right.
I personally find this rule syntax to not be. It doesn't jump out of me as obvious what that means, but I mean, so with a biomolecule. I mean, so with molecule value, the. The ship has sailed. Right.
Like the syntaxes. I don't think it has. This is a compatible change. We should go on supporting this. But this would be a compatible change and I don't see a problem in adding it. Am I making sense, Guys? Yeah. Okay, so let's look at the biomolecule case. Do you see a problem with adding this?
I don't see a problem, but I think taking part of a larger structure is something very common and we might want to own. Head for it.
Yeah, like. Like the analog of entity. Instance.
Type of part wrapper. Like that. That doesn't evaluate symbolic part.
Yeah. Okay. Maybe it's subpart.
And we overload. Indexed to act as the symbolic part. I'm sorry, what could we overload indexed to act as a symbolic part?
I don't.
That's what I think.
It's a good idea. Indexed will be completely confusing for. Yeah, I hate it anyway. But. But okay, let's imagine it was subpart. That would be nice to indicate that it's something of a. Of a material object, so to speak, rather than, you know, you could. You could in principle have a subpart of a matrix. I suppose.
I think the important one would be that subpart doesn't evaluate. It's basically keeps the embedding where it came from.
Yeah, exactly.
Right. I mean, if we had such a thing, that would be fantastic for biomolecule value because the part. It's a very nested type of structure. You have these larger things called chains which have residues, which have atoms. And you might want to put spans.
Of any of those chain residue atom. Yeah. And even if it's. If it's. If it's some kind of thing that assembles itself, one of the. What the heck are those called? Like a capsid of so or something where there are multiple proteins that. I don't know. That counts as a biomolecule, does it? Maybe it doesn't.
Molecule assembly. One of the Windows that are open.
Assembly we supposed to represent.
Okay, I see. That's your little. So what does this mean? So the.
The. The biomolecule, as you. As you first instantiate, it has two chains, one of which is an actual peptide chain, one of which is a zinc atom. And then what we're doing with the bma, we're taking the. The first chain and applying. Keeping it as is with the identity transformation and then doing a two fold rotation and combining them together. And ignore the summary box in percent two there. It's just. It was a placeholder.
Okay, but I don't understand at all that subtext. This is saying an A, that's a residue. Presumably that a residue.
Or it's a. No, it's a chain.
How do you know? I don't understand what this means.
So, in general, with these assemblies, they can have multiple groups of chains, each with multiple transformations applied to it. Some of them. Some of the bioassemblies that we find are quite complicated.
But I don't understand the syntax at all. This syntax here, this BM here. Right, yeah. Is. Okay, That's a biomolecule with apparently two chains. So presumably if I say molecule plot 3D.
You definitely have to put the bottom.
Put what? You have to put the.
Bio.
Bio.
Bio.
Oops, sorry.
It isn't exactly clear. Like, if a person calls molecule plot 3D on a biomolecule, should we automatically convert said object to a model? I think so, because it can be a. Okay.
You know, because it's complicated, because it has to have.
It can be an expensive operation, like figuring out all the bombs. Who has hydrogens and everything.
Well, I think if you put up a progress monitor, that's okay, because they'll know it's doing the wrong thing if they. If they didn't intend that, you understand? So, I mean, you put up a progress monitor that says converting to atomic representation or something. Yep. And then stop button. And if we wanted to be really nice in the progress monitor, we'd put something like use biomolecule plots 3D to do it at. As a, you know, whatever you. A summary. Biomolecule summary. Does that make sense? Yes. Okay, so, okay, so this is a biomolecule. Now what the heck does this mean? Right, so.
So we take start with that original biomolecule and we can have multiple. Multiple sections of the assembly. And in this case there's only one. So we probably, for this example, don't need an ex. It probably has an extra pair of lists that we wouldn't need.
There's two copies of the molecule here. True or not true.
Right?
Yeah. Okay, so by this assembly. I don't understand. I mean, surely you can have assemblies of non identical biomolecules. Yes, yes.
The assembly is for the. Using the information that is in that particular biomolecule. It's not combining multiple biomolecules. So it is. The geometric transformation is one that is taken from the crystallographic data that came with the.
So let me just understand. In a biomolecule assembly, it's like a polymer of identical elements. Is that true? It's not a biomolecule assembly isn't, you know, like. I don't know, something like, isn't insulin a penta. Whatever it is, thing that reassembles itself?
It was technically two chains bound to. Two different chains bound to covalently bound together. So it could be treated as just one unit. But you can have polymeric versions of insulin, which is what usually happens in the stuff you inject. Hexameric.
Usually some proteins.
Some proteins come as dimers or trimers or hexamers. They could be homo or hetero. The biomolecule would have all the pieces in assembly would be some assemblage of those pieces. Either all of them or some of them or one of them.
Okay, so wait a minute. So when. When it's a heteropolymer, when it's a homo heterodymer. Well, heterotime, a trimer, whatever it is.
Yeah.
That means. So the way you're representing that is the biomolecule. So I'm very confused here. Okay, a biomolecule, as I understood it, is a chain of some kind, a chain of residues, true or not true, It's a collection of chains.
I'm sorry, it can be a collection of chains? Usually, yeah.
How is that represented? Is it a list of chains or what?
Yes.
Okay, so it's a list of disjoint chains. So if we render it. The biomolecule plot 3D. How does it render multiple chains.
In different colors?
Yeah, let's take a look.
Yeah, so I pasted one there in chat. One IZB is a good one. It has.
I want to just make a list and make multiple chains as just a list, right? So if I say biomolecule, how can I make multiple chains? So if I say biomolecule. And then I say biosequence. I don't know my biosequences. Qaaa.
So we don't have any Support for. For this.
Well, but I don't understand what you were saying then. Is this conceptually what you're talking about or not?
Yeah, conceptually. I mean. So. Yeah. So you would. We would give them names if you didn't give them names. A goes to this. B goes to this.
No, no, we don't. We shouldn't need to do that. We've got positions in this. Look, if this was an association, we give them names. It's a list. We give them, you know. But. But I don't understand. Is this what you're saying, is that you have these essentially biomolecule bundles that contain multiple chains. Is that correct? Yes.
Yeah. The PDP file would usually contain multiple chains. If the protein itself has multiple chains.
Okay, fine. And often those chains have names. Is that correct?
In the five. Yes. Which it inhabits.
So, I mean, the obvious way for us to do that would be something like this. Yes.
The trouble here, we would need to come up with some method for arranging those things in space absolutely. Relative to each other. And we don't have any.
Right, there's. Without knowing. Without presumably having a bioassembly that defines their relative spatial positions. We know nothing from this. Is that correct?
Yeah. We don't even have internal core, you know, coordinates for the individual pieces either.
Right.
Why not?
You have to fold them or, you know.
Okay, okay. In the particular example I've given. But if those were two sort of properly known experimental, you know, proteins, then.
We would know that we would have coordinates for them. Yes. And they could be. They may or may not be in a reasonable geometric relationship to each other.
Fine, Fine. In other words, those coordinates might both be centered at the origin. And, you know, those two molecules would then be both centered at the origin. And that's kind of silly and not renderable with Biomolecule Plot 3D. Okay, so that's. First issue is that those things are, you know, their coordinates relative to each other are not properly defined here. Now, you have bioassembly, if I'm not mistaken. Right. Is that correct?
Yes. And the assembly comes from. The assembly comes from a single structure determination where all the pieces have specific coordinates that are physically in a good physical relationship to each other.
Okay, but what's the difference between biomolecule assembly and this biomolecule and association inside it? The.
The one with the association is as. Has very little information.
Well, but why not give it more information? I mean, if we. If we had the relative coordinates of the. The things in that first biosequence the second biosequence. If we had all that information, wouldn't we have what we need? Wouldn't we have everything then? Oh, absolutely. Okay, so why do we need biomolecule assembly so experimentally? In pdb, the biomolecule assembly is the.
Unit that has some biological functionality that is assumed to have or known to have.
But the biomolecule itself can contain units.
Which is called the asymmetric unit, that might not have a biological function in itself.
I mean, tagging things with biological functions seems like it's a different level of wrapping. I don't understand why go ahead with.
These biological assemblies, you can have repeating units that you can have a large number of them. So we can take the biomolecule assembly, like with the biomolecule assembly head, and kind of flatten it out to make a biomolecule out of it. But that's oftentimes going to be not as efficient as it could be. So what's great about having a biomolecule assembly, let's say, you know, the. The biomolecule itself, the asymmetric unit in it is repeated 140 times to. To generate this big globular sphere.
I understand. So it's a symbolic representation of that 140 repeats, as opposed to it being explicitly given in the biomolecule.
Yeah, and we can plot it much more efficiently using geometric transformation there.
Okay. All right. Okay, so let me just unpack that for a second. What we. What we're really saying there. Okay, so what you're saying is in the biomolecule there are two. Two issues. One is, how do you name each sub piece, by the way? Another thing, for subpart we also have sub piece, which I have to say does sound more physical, don't you? Don't you think?
I think I like sub piece more than sub, but myself.
Michael, what do you think? I mean, sub piece suggests it's a thing. Subpart is more abstract.
But frequently we will refer to things that are abstract because they don't exist on their own.
Like what?
Like a part of a graph or a part of a matrix.
Well, that's a different thing. We're not going to use this function for that. Oh, we would use it also for this.
So I guess with the word sub piece, I wonder what's the. The difference between that and just peace?
Well, I don't like using peace because I think it's too obscure. With part, I mean, there's always moiety. But no one likes you. Your Audio is really terrible. It's very hard to hear you. Jason. S, I assume. I'm sorry, Is this better? Yes, I was just saying that moiety would be another one here, but even the chemists don't have wide usage of that. What is the word?
Moiety?
Sorry, I guess I was pronouncing it wrong. Well, the fact. I don't even know how to say it, it's not a good sign for the word. Don't ask me to spell that term.
But. Yeah, but it's obscure.
It's totally obscure. We can't possibly.
Yes.
Any case. Okay. So, all right, so the thing you've got, you want to have something which is essentially a symbolic specifier of. So you're happy to have something where, if you want to have 10 copies of the A chain, you would be saying, biomolecule assembly. And essentially what you're saying is it is. It has. This is a bit obscure. My God. Because you've got only one supply of parts, your initial biomolecule here. You see what I'm saying? Yes. I guess that itself could be a biomolecule assembly there. This is your biomolecule here, which might be something like this. It has to be something like that. And then you might say, here, you know, Something like this. And then that would be, oh, 20 copies. But I don't know where to put those 20 copies.
Well, so what I would say is you would put just the letter a and then 20 different transformation functions.
But that's different from what Stephen just did.
No, no. If you want 20 copies of the letter of the A, you put the letter A and then tell me where to put it.
No, I understand. Which is which? You're saying you always have to say where to put it.
Yes. Yeah.
Okay. So I don't understand this notation. Then I don't understand this. What the heck does this mean?
Take. Take A, and then apply this.
I see, I see, I see. So, but how come this ends up with two different things here?
Yeah.
Two copies of A.
So there are two identities.
But why are there two transformations? Why aren't they both being applied? How do you know those are two separate transformations?
They're in a list or what do you.
Yeah.
Otherwise you would be composing. Is that the idea?
Yes. You should compose them if you want to apply them in sequence.
Okay. All right. Okay. I think this is a crazy notation, but. But, but. Okay, so what you're saying is what you really want, but what you can't have here is that this is really. Let's say it's both transformations. Okay, so you want those things and you presumably want AT star. Is that right?
Yes. So there's now a single transformation to be applied.
Yeah, I get it. Okay, so at star, that's the geometry. Now, in principle, I don't even know where that. Okay, but that transformation is being applied to a subpart of that biomolecule. What a mess. What a mess. I mean, look, if you're going to want the subpart of the biomolecule, why don't you just extract it right there? See what I'm saying? Given a biomolecule, how do you get the A subpart, for example? Okay, first point is, there seems nothing wrong with labeling. How do we do that in a molecule? We can label. How do we label atoms in a molecule?
We just refer to them by their indices.
No, but isn't there a way of giving it a symbolic label? Didn't we invent that?
I believe we did. I've used it.
Yeah.
So how does it work in Molecule Plot and molecule plot 3D can display them.
All right, so how does that work? Well, I mean, how do. How do you label an atom?
Like in a. In a molecule plot? You use the atom labels option, right?
Yeah, but we can also put it in the molecule structure, can't we, Jason?
You cannot.
Yeah, I don't remember. You could customize the labeling.
I mean, let's see. You can give a display name to a. To an atom.
Yes, that's what I've done.
That's what I've done.
Do you do that outside in the. In the molecule plot, or do you do that in the molecule itself?
So in the molecule itself, it would be atom of, you know, C or R. And then display name goes to.
I see. Like this?
R2.
Yeah. Right. Okay. So that's then a wrapper. Okay, so we're wrapping. Okay. That's merely the display name, not A. I mean, I understand that you don't normally label. Whereas in a protein, you'll say the A chain or the B Q chain or whatever it is. Right. That's a common thing to do in a molecule. You don't usually refer to, do you?
In some classes of molecules who do, steroids have the standard numbering. There are other classes of molecules that have standard numberings of the atoms.
But that's numberings. Well, we do refer to functional groups like a carboxylic acid or a carbonyl group, but we don't have to talk about.
You know, I feel that's Conceptually different from labeling separate chains.
Yeah, right. I mean, you don't call it the Q ring or whatever. You might call it ring three or something.
Well, actually in steroids there are A, B, C and D rings in the structure.
Okay, but I mean that if you're going to go from the biomolecule to the small molecule example, that that's what you're going to do is start labeling rings or labeling functioning functional groups or things like that. We don't have a mechanism for labeling rings in the molecule.
No, we don't.
No. It's admittedly niche.
What's that?
The labeling specific parts is admittedly niche. Like the steroid example. Bob just said it's only used for steroids.
Yeah, certain classes of compounds would have that.
Right.
Okay, but so in principle, when you give this list of atoms here. No, I mean, it's really toast because the ring is a whole complicated assembly of bonds and so on, right? Yes, yes, but it seems hard to do.
Yes. And atoms could be shared across rings as well.
Okay, let me just understand. One difference between biomolecules is that whereas in molecules, you describe them in terms of bonds, you do not describe bonds and biomolecules. True statement.
Let's see. So we do. There are some non backbone interactions, some bonds that are in the files, but they're not super important at the moment. Structure will tell you about.
You mean disulfides, Jason?
Disulfide bond. Metal, carbon complex.
Bonds, complex.
Sometimes they'll even list hydrogen bonds, but we don't have a method for displaying those at the moment. So we're not exposing.
Well, you might want to compute with those. So, I mean, there is a notion of bonds then between. I mean, didn't we have that in the case of bio sequences where we've got those weird things about how things. How things line up with each other.
Yes. In biosequence, for example, pe, you can indicate disulfide bonds between peptides or hydrogen bonds between nucleic acids.
Yeah.
Okay, but what about a bond that goes from the A chain to the B chain? Is that a thing or is that not a thing?
It. Disulfide bands can usually do that, but as Jason said, we don't have a way to represent those.
No, I understand that, but we need to think about how we should represent it. So we do have a way within biosequence to represent those bonds between two elements of the same biosequence, correct?
Yes. Yes.
Okay, so. But we don't have a way. If we've. If We've broken it up out into the A chain and the B chain. Let me remind myself, what is the mechanism that we have to represent those. Those sort of weak hybrid strand. What does that mean?
Hybrid strand implies, like you, for example, you have a bio sequence that is partly DNA and partly rna.
Okay. All right. So look, what you've got there is a biosequence with multiple sub biosequences and bonds that reference both of those things.
Yes.
Okay. So I'm not understanding why, when you have these multiple chains, why that isn't all part of one bio sequence with an association as its first argument, naming the chains.
I mean, in the case of biosequence, you can have a BUN within a single chain or a band linking to different.
No, I understand that. I got it. I got it. But I'm asking why do we need to have biomolecule? What is the difference between biomolecule and biosequence?
Coordinates.
And specific atoms.
Yes.
Okay. All right. Okay. But this chain array, you know, the. The description of who's in what chain could be. Okay, so here's my suggestion. Not knowing much. Okay. Bio sequence takes as a first argument, an association, which can have labels like A and B and so on. Okay. It takes as a second argument, bond specifications, which can either be within a given chain or between chains. And presumably those bond specifications can, when they address. And we've already got a mechanism for addressing elements of one chain or another, it could address those chains by their names, by their association keys. Does that make sense?
Yeah. Where we currently don't do that, but we probably should.
Yeah. Right. Okay. But that's because we don't support associations. The first argument of biosequence.
Yeah. Currently we don't.
Right. Okay. So let's assume we did that. Okay. Now we have a biomolecule wrapper. Which is taking one or more biosequences as its first argument and biomolecule assembly, its only function is to have this kind of symbolic, sort of operate, cookie cutter thing that is making multiple, you know, laying down multiple instances of a given biomolecule. Correct.
Sounds about right.
Yeah. Because of the transforms.
Yes.
Right. Is it right to say that bioassembly then acts as a propagator in 3D space? Information to propagate in 3D space. Yes, but. But now I don't really understand the difference then, between biomolecule and biomolecule assembly, other than. I mean, by. If we put. What else is biomolecule doing for us other than allowing us to package multiple chains. You're saying that biomolecule, does it contain coordinate information directly in it? Yes, yes, yes.
And all the. All the symmetry operations of the crystal structure, if the structure. If the coordinates came from a structure.
Determination like that, but biosequence does not have coordinates in it. Is that a true statement?
Not at all. Not at all.
Okay. All right. So bio sequence is essentially the logical chaining of the thing, which could include your friendly disulfide bonds, which are again, essentially a graph theoretic type of thing.
Yeah.
Okay.
Bio. Biomolecules also can contain prosthetic groups or ligands. You know, an inhibitor that's in the active site, which is just, you know, an organic. It's a molecule thing, and biosequence doesn't have any concept of doing that.
Okay, so. So in other words, in a biomolecule. Okay, let me ask another question. These bonds. Okay. Claim biomolecule can have bond information, right?
Yes.
Sorry. I'm sorry. Sorry, I said that wrong. Biosequence has bond information. Biosequence is a logical layout of these things with bonds.
Yes.
Okay. Now, when you put a random iron atom in, or zinc atom, or whatever it is into the biomolecule, does that have bond information with the other elements of the biomolecule or not?
Sometimes, yes. Sometimes you can know about the, like, metal complex bonds between that iron or that zinc atom and various atoms, like, you know, chain residue atom. Like an address.
Okay. Okay, so what you're telling me is. What you're telling me is this, that what we have here is biosequence has just a plain sequence, whatever it is, and then it might have a list of bond information. Yes, Correct.
It might. Yes.
Okay. Okay. So biosequence can also have multiple sequences here, right? True.
That's right.
Okay. Meanwhile, biomolecule. Has bio sequences here and also potentially atoms. Is that correct?
In the general sense? Yeah.
Yeah.
It could be whole molecules, ligands. That's what we call ligands.
Yeah. Ligands are prosthetic groups.
So that's a thing which has its own name as a molecule. Is that right? Correct.
Yes, correct. So hemoglobin.
What's an example? Just so I know, my.
My little hemoglobin is the typical example. You have a protein chain in hemoglobin, and then you have the heme. The heme ligand bound to the protein with its own iron linked to it.
Okay. But the heme ligand is its own freestanding molecule. True or not true?
It's bonded to the protein.
No, but. Okay, but that's what.
Covale.
Bonded.
I believe so there's. There's, I think, two messages bound to the four corners of the. And then the heme is bonded to the iron atom.
Yeah, but things like NADPH that are, you know, associated with an enzyme and you can co. Crystallize them together. The NADPH sits in a very specific site. So it can accept or donate electrons. Yes, appropriately for whatever the enzyme is doing.
Right, right.
That's a molecule by itself. It's not covalently bound.
Yeah, so there are different cases. So you have. You can have a ligand that's covalently bonded to the proteins, or you can have something freestanding altogether.
Yeah, okay, fine. So the way I would think about this is in biomolecule here, it has a second argument, which is bond information. Right. Which could then address. Just like in biosequence, in this case here, there's a way of saying in this bond that it refers to element one. You know, biosequence, one position such and such. Correct. Sure.
We could accept that. I don't know how much use that input form will get at all.
Which input.
We could take it. The one where you're giving actual bonds to a biomolecule, I assume. 99 told me that there are such things.
I mean, I. I'm sure building for the future. I don't know whether that's, you know, maybe there isn't much of that right now.
Usually that bonding information would come from a PDB file you import. So the PDB file would already say that it has a nice sulfide band, which you just press.
Fine. Do we have a name? I mean, in bond. We have the notion of a hydrogen bond. Right. So we have like in. In. If I say bond here, doesn't it have an indication of what type of bond it is? Yes, a type there.
Yes, it does.
Right.
And we support those.
Which one is a hydrogen bond?
Look at the. Look at the biosequence doc page. We give the specific bonds.
Okay, but. But it should be on the bond page as well.
Ah, okay.
I suppose so. But if you try and put one of those in a molecule, it's going to argue.
Well, then just say in the. Look, just say on that page. Right.
Oh, there. That's it. That's for the protein disulfide and lactam. They're just. The hydrogen bonds are.
So you want to put. Okay. I mean, this is somewhat complicated, but clearly, you know, we need to figure. Okay, there we go. Multi hydrogen for example.
Yes, that's it.
Right. So that should be on the bond page. And, you know, it should say. It should have a section that says bonds appropriate for biomolecules are possible values of type. Why does that say type rather than that italic? It's a bug. Yeah.
Okay.
And why doesn't this list biomolecule? This is. This is not right. This needs to have information about how these get used in biomolecules. Maybe in biosequence.
Yeah.
Okay.
And biomolecules.
I can add that part later.
Fine, fine, fine, fine. Okay, but. So what I'm suggesting is that that also is supported in biomolecule here, right? For this.
Sure.
But we don't have any examples where you would.
I know, I understand that.
I'm saying when I implement, I like to have examples of how they're going to be used.
But I thought you told me that in PDB files there are examples like this heme thing. How is it bound, the heme thing, which you cannot represent as a biosequence. You can only represent it as a biomolecule. Right? With its. With its little cage for the. For the iron and things like that. Right? It.
It's a chain unto itself. It's chain F or chain G or something like that in. In the list of chains. That's how they do it. That's the convention in the PDB format.
Okay, fine. So. So then this. The way that would work is in. This would be chain A. Is this chain. I don't know what that thing is. Not a biomolecule. Is that true or is it a biomolecule? The. The iron thing, how does that work?
The iron. Separate thing.
But it's a molecule, right? It's specified as a molecule, if you like.
I don't know. We're making all of this up. Like, I had. We have no, like, human import input form for biomolecules so far. Like, it hadn't even.
Oh, okay, fine. Well, then I'm making that up. Yes. Yeah, but.
So it could, like. Like when we could theory, allow someone to enter it in like that.
Yeah, yeah. Right. So. So. But what I'm saying is. Because that's how we'd represent it. Right? So this is a bio. Bio sequence. So the. This is saying in this case, you have multiple chains, but they're pure peptide chains. Or. Or DNA or RNA or whatever. Whatever type of sequence it is. Right. In this case, you can have mixed kinds of objects.
Yeah.
Perhaps building for the future. You can specify bonds between those objects. Right, yes.
Sounds sensible.
Right?
Between parts of the object, not between the objects themselves.
Exactly, between parts of the object. But we already have a way of deep linking into objects in the bond specification that's used in biosequence. Yep.
Yeah.
Right. Okay, so now you've got the next level, biomolecule assembly. Now my next question is, are there bonds between the parts of an assembly?
No.
There are, aren't there? There must be, otherwise the thing will fall apart.
I mean, usually the attraction is just the intermolecular forces. Yeah. They're connected by then. Vanderwald's forces, usually.
So Vanderbilt forces are off the books in terms of bomb.
Yes. We don't indicate those.
Okay, fair enough. Okay. Okay. So that means then, that in biomolecule assembly, what we're giving is a list of biomolecules or something. It could just be one biomolecule together with your geometric transformations.
Yes.
Okay, so let's try to understand what this is like. So.
So I'm not sure how. How the transformations would indicate who is who.
I know, right? We haven't figured that out yet.
This doesn't cover any of the use cases that we have for it. This is.
I'm sorry. Why not?
Okay, so normally, like, you would have a collection of chains, and then you have multiple lists of, like, chain list goes to transformation list, chain list goes to transformation list, chain list, go.
And you can have multiple. Okay, but let me just. Let me see whether I understand roughly what this is doing. Okay. It reminds me a little bit of graphics complex maybe, because what it's doing. That's maybe not a good analogy. What's a good analogy that involves transforms, where you are. Where you are independently giving a list of transforms and the object to be transformed.
Geometric transformation is pretty much the newest, I think.
Yeah, I think so, too.
Or what's that again?
What about in synthetic geometry? Is there anything there? No, I don't think so. No.
No. Transform the region would be another good analogy.
Transform what?
Transform the region. You have a region and then multiple transformations.
Okay, let's look at that one. What's it called? Transformed region.
Yes.
Now, can you have multiple. Notice the use of indexed here. How is that working? What does that mean? Oh, that. That's its coordinates.
Coordinates you mentioned earlier.
Okay, so transformed region takes a single transformation. Right?
Okay, so it's still a single reach.
Yeah, I understand. What's a case where we get multiple things?
So in geometric transformation, you could supply multiple transformations and see the object in Multiple spots.
Can you.
Oh, yeah. The last. The last syntax.
I see. So geometric transformation. Okay, so that's a single object transformed in multiple ways. But you've told me that for the molecule case, there might be. Oh, I want to do this to the A chain, that. To the B chain, and so on, correct? Yes. And the fact that those things are packaged in a single biomolecule and. Seems weird to me. I mean, if it's an assembly, I would expect I could assemble one of this kind of molecule. One of that kind of molecule. Do you see what I'm saying? Right, right.
And we could build for that case in the future. We just have. I just don't.
Yeah, okay. We don't have that case yet. Okay, fine. Okay. So now the question is, in these transforms, we are having to deep link, so to speak, deep sample the. Now, what are we sampling here? What. What kind of a thing can independently be transformed? Is it only a whole biomolecule? I think it should be only a whole biomolecule. I think by the time you can independently transform the A chain and the B chain. It doesn't make any sense because biomolecule is where you're giving the coordinates. And what you're doing is you're taking the rigid. The biomolecule and rigidly transforming it in some way.
Or parts of the.
What's that?
Or parts of the bio.
I don't think parts will work, but that's. That.
But that's what protein chemists do. They want to look at a particular chain or two chains and their specific interactions in space without the other chains.
Okay, so look, look. You're talking about two operations here. One operation is extracting from the biomolecule just one of its chains or a few of its chains, okay. Is subcasing the biomolecule. And then you're talking about rigidly transforming. Rigidly geometrically transforming the position of the biomolecule.
And that's what bioassembly basically does.
It does together. I understand that, but I don't think that's the right thing to do. I think you should do the following. I think you should first sub case the biomolecule to extract the piece you want and then take that thing and rigidly transform it. I think that makes more sense because. Because what you want is that the bioassembly. See, I. I think. Okay, here's roughly what I'm thinking. Here's roughly what I'm thinking.
So, question. You want a separate function for representing the pieces?
Hold on, hold on, hold on, hold on. This is what I'm suggesting. I'm suggesting that that's the form of a biomolecule assembly that you either. Or maybe it's BM arrow trans. I don't know. But. But you either have a bm, which is a pure biomolecule with its natural coordinates. Okay. With its coordinates as given in the biomolecule, where the origin. Wherever the origin is. Am I making sense? Makes sense, actually. I don't really understand why it isn't the following thing. I don't understand why it isn't simply geometric transformation of biomolecule, comma, transform. Why isn't it just that? I mean, that won't evaluate, will it? No, it's beautiful. No, it's not. Yes.
I don't. I. I don't know.
I'm sorry. What's not beautiful about it? It seems. So, first, like, why do you have.
To extract out the parts? Why would you be doing this to an entire biomolecule? I can't figure that out. Why am I.
Let's see.
If I wanted.
Think about. Think about it. Look, look, look, look. If you don't do it to the whole thing you've been given. Okay, the biomolecule has told you the relative spatial positions of the A chain and the B chain. Right? Okay. Now what you want to do is. You want to take the. Specifically the A chain and make transformations on it.
Okay, well, can. Am I muted? No. Okay, so specifically what I want to do is take chains A, A, B, E, G and H and apply three specific transformations to it, also combining those with chain C, D, F, I and J with three different transformations, and those all together represent the biomolecule assembly.
Okay, I understand. So what you want here.
Yeah.
What you want here is really to take this sub cased in some way with chains, you know, A, C and E or whatever. Okay? That's what you want. You want to transform those. And then here you want to take sub chain G or something. Right? That's what you're asking for, Correct? Right?
Yeah.
Okay, so the part of this that we don't yet know how to do is that subcasing.
Okay.
Right. Otherwise, this is very clean to be able to say geometric transformation and just put that around, you know, put that around the symbolic specification of the biomolecule or. Or the chain, which is part of the biomolecule. That seems like exactly the right thing.
So then we need this. So the whole thing hinges on having a symbolic part?
No, not Necessarily. Let's think about it for a second.
Okay, So I actually have to get off of here. I have to take the kids to the dentist. But you guys might continue.
I also. I'm two meetings behind here. I'm trying to actually get this done. But the. You should go. But I can stay for a few more minutes. Okay, so let's just go through this again. All right? The issue is, you want to reference. You have a biomolecule. It is specified with subparts to it, correct?
Yep.
Yeah.
Okay. And what you want to do, for whatever reason, you didn't want to take that biomolecule and create another biomolecule, which is just chains A, C and E. Because that's one thing you could do is have some way of creating another biomolecule that is just those parts.
Right.
Does that make sense or does that not make sense to me? It makes some sense because it is.
It's a very reasonable thing to do.
Okay.
You might be interested in just particular chains of. Multiple chains of things.
Okay, fine. Fine. So if we have a thing that says, I don't know, let's say biomolecule, I'm making up a bad name biomolecule part. Okay. And it might be with a sub value as well.
Well, actually, we had. We had discussions already. We discussed it many times already. All assembly could go in both directions. It could make bigger things, but maybe you can also just reuse assembly for particle.
I don't see that working.
Or should it be function altogether?
If the second argument would just be the thing A would. What other meaning could it have?
I don't like that. I. No, no, because, Michael, look, look, look, look. What if there are seven copies of A in the. In the first list here? What. What would that then mean? I think it's a very different concept. The assembly is a different concept from the pot. Personally, I think that there should be a sub value way of extracting those parts. But let's assume that this is just something like this, and all that this does is to return another biomolecule. It's just a convenience function for extracting, let's say, the. A chain. See what I'm saying? Yeah, sure. Again, it returns a biomolecule. Is that a reasonable thing to call that disembodied collection of chains? Is there any problem in calling that a biomolecule? No.
I'm going to claim it's a biomolecule in itself.
Okay, fine. So I'm going to claim that the definition of a Biomolecule is something which is a rigid assembly of biosequences and whatever else. It's something which has a rigid. You know, it operates as a rigid object in space. Correct?
I would think for now, yes. But this is something that later, I think we have to give up point that they are rigid.
Well, okay, okay. If not rigid, approximately rigid. That they can have a geometric transformation applied to them. Yes, A single geometric transformation. You pick them up and turn them upside down. Type thing.
Yeah.
Now they may wobble around. That's a different issue. But the concept is you can do an operation and transformation on them as a whole. So then what I would suggest is, given that, that then all that happens here is that biomolecule assembly is either a. Okay. There's no difference without the geometric transformations. Okay. Okay. So here's what I suggest. This. This. Okay, so this now is just a biomolecule because it's been subparted, sub cased somewhere else. Right. That that's the full form and that there is an el cheapo form, if you so desire. That is BM arrow trans, for example. You see what I'm saying? Which is equivalent to geometric transformation of BM comma, trans and trend can be.
A list of threads.
I think so, yes. Trans can be whatever it can be in. In geometric transformation. Like this. Oh, multiple copies. That. That happens there. Okay, so. So that's the way you would get multiple copies if you want to. Like that. Right. Or you could list them out separately as separate geometric transformations. You have a choice. Right, so. So this could be there. You've got trans 1, trans 2, et cetera. Yep.
So that would cover the case where I want to transform, change A and B in one way and change C and B in a different way, differently from the first one.
Yeah, you can do it that way. And.
And in the biomolecule part, the resulting biomolecule, it preserves the original names of the chains.
I think so. I don't see why not. It's just literally doing.
And in the biomolecule assembly, it renames state to A1, A2, F1, F2.
Okay, hold on, hold on, hold on. How does that work? I mean, this is exactly the same problem that we've just been facing for the join across functionality that we've just been looking at. Well, we've got this concept of a prefixed key, because there are essentially, you've got two colliding keys. Right. It's the exact same problem. We could probably use the same solution. We've got two A chains now. You see what I'm saying? Yeah, but they're differently contextualized, so I suspect we could actually use prefixed key for that or something very much like it. Because you got. What do you do when two A chains collide?
Basically, my understanding from what Jason said is that in pdb, in the moment you build the assembly, they get renamed to a one, a two strings.
Okay, fine, but that's just one of 75 different hacks you could use. I mean, happens in databases, etc. Etc. Etc. When you join and so on. It's, it's. It's a contextualization, right? It's that you have to give. And how that contextualization works, I think, is. Is. I mean, I think what we should be able to do here is, in fact. And we could do it directly analogous to the way we're planning to do it with things like join across is. So maybe I'm going to recant on that notation, okay, and say maybe the alternative is that this is a context arrow. This. That says how to rename the things. See what I'm saying? I mean, the other thing that we, you know, we could also do is a key collision function that we have in a bunch of functions.
So maybe biomolecule assembly could have a collision function.
Yeah, collision function that. Because they are going to be, you know, they're going to be associations, typically. I mean, the case where it's lists, I don't know, that's a weird case. So maybe that's the right way to do it. And the key collision function has a variety of things it can do. Let's see. Key collision function. I think it takes the two keys and it returns. I'm not quite sure how this best works, but.
Wouldn'T it not be best to give the new key names in the moment you make the transformations?
Well, fine. That's what this context thing is. The context thing is saying prefix those keys with the context when you create this. See what I'm saying?
That's a pure function. What is context?
I'm not sure I understand. Well, we have a precedent for this in this join across business, because it's the way of saying, if you've got two tabular objects that you're joining together and one of them has a. They both have a. A key population, but one of them is the country information, the other is the city information. Okay? Then there's a way of saying contextualize that to make it a prefixed key country, comma, population, prefixed key, city, comma, population. I see. Right.
And the context for the biomolecule is. Is tied to the transformation that's making the copies.
Exactly, yes, yes. So you're naming those things as you transform it. You name that. It's the copy one, copy two, whatever. That would be my suggestion. I mean, there's some details here, but I think this is basically right. And so we don't know exactly how we're going to name those things, but we'll have to worry about that later. And we might want some default naming, and then we can override that default naming by actually wanting to specify the, you know, particular names for those elements of the assembly. But otherwise, I really like the fact that we can just use geometric transformation on its own, because it just stays symbolic. And I think that should be supported for molecule as well. See what I'm saying? In other words, if you want to make a picture. What's that? I would say this seem to me this seems like you've laid out a spec for both polymers and crystal structures for building chunks in three directions. I think so, yes. I think so.
That would work for polymers too, I can see.
Yes. Right. So, I mean. Right. This is a fine way to do crystal structures, I think, as well. So, I mean. And it should be the case that if you want to make a picture of, you know, why not have it be the case that if you want to make a little picture of, you know, a dancing collection of water molecules, for example, you can do that by just saying a list with geometric transformation on each of the water molecules, and then be able to say molecule plot 3D of that.
What would be the head in this case?
That case would be molecule plot 3D of list Geometric transformation. Okay. Yeah. Of a water molecule. Another water molecule, you know, but this.
This I find a little bit unsatisfying because I don't want just a picture of it. I want the sink itself.
Oh, I know. For which we need something called molecular assembly.
Yeah, agreed.
Yeah, yeah. Molecule. We could get coordinates out of it.
And compute all kinds of stuff.
Now, why would necessary. Why is it not molecule assembly? Oh, I would say molecule assembly would be the starting. In my mind, it's the starting point for a MD calculation. You know, your molecule surrounded by a box of water. Yes, I agree, but I don't understand why we need a separate biomolecule assembly. Because I think it's going to have the same stuff in it as molecule assembly. It's going to have basically a representation of molecules together with transformation yeah, but if you put a bio sequence in there, you don't have coordinates, whereas the molecules always have coordinates. We say you can't put a bio. I guess they do. You have to. You, you. Because there's no way to do that. This has to be. So that would be a molecule there. I think that would work. I don't see why that doesn't work. And we could call it molecular assembly. Yeah.
To differentiate them. Just a molecule.
Seems to me that's the right thing to do. So we then have biosequence, biomolecule and molecular assembly, where molecular assembly could be either, you know, of ordinary molecules or biomolecules, because it doesn't really matter. Once you have the biomolecule wrapper there. The thing's a rigid. Pseudo Rigid object. Rigid with respect to being. Make geometric transformations on it.
When you put it that way. The molecular assembly thing also shows a way to insert other ligands. Other ligands into the whole thing.
Yes, yes. So it makes it more sense than calling a biomolecule would. Because those things aren't really bio.
Yeah.
All right. We have a few comments on our live stream and then we probably should wrap very soon. Krista says how about making artificial membrane channels for select molecules? Ion channels could be the starting point. I cannot interpret that.
That's a little too far from what we're doing right now.
Yeah.
Okay.
In. In the molecular assembly, if there isn't a geometric transformation wrapper around it, it would just be assumed to be the identity.
Exactly.
Yeah.
Because it has coordinates. I mean, you know.
Yeah.
Much of the time that would be totally stupid because you'd have three molecules that all have the same origin, so to speak, and it would be a mess.
No, no, not really. That would be Jason Sonnenberg's molecular dynamics example. Because it's. Those molecules are not related by a geometric transformation. They're all independent, but they're in the same.
I understand, I understand. But, but so, but what you. What you would want to do, if you want water molecules that are arranged in a particular configuration, you would say geometric transformation of the water molecules to positions. You know, 001-003.
You're making a piece of ice.
Yes. For example. Right. And so then the crystal lattice. I mean, presumably one will be able. Let's just see how this works. If we say lattice data of. Can we say face centered, cubic, for example. Okay. So then what we would do is. We would take. That would be a translation, for example. Right. By those vectors.
Is that what those are basis vectors, actually.
Yes. So I think that's what it is, isn't it? I mean, those are. Well, who knows whether that. That's. You have to. There may be some simpler notation that could be used here, but I think the idea of putting bonds. A second argument to molecular assembly would be bond influence formation.
Ah, yes, yes.
Just like. Which is then consistent with biomolecule and biosequence.
Yeah.
And. And molecule, for that matter.
Right.
All right. You have.
In molecule, the bonds are holding the atoms together. And the atoms are. In the first part.
Right, Exactly. So the same. Same deal. All right. We got a good design here. Well done, everybody. And I am late. I'm now three meetings late, so. But we got a good design. This is really nice, in my view. Can somebody pick up this file for me or should I send it to somebody?
Send it to me.
I distribute it. Okay. Anything else, guys? This is great, actually. I really like this. It's really nice.
Thank you, Stephen.
Thank you. Thanks, Steven.
Okay.
See you soon. Okay.
More from Guy

Cheryl Strauss Einhorn | The Human Edge: Smarter Decisions in the Age of AI | Talks at Google

Rachel Glennerster | Innovation and the Center for Global Development | Talks at Google

Rebecca Winthrop | Rethinking the Purpose of Education in the Age of AI | Talks at Google

Dr. Robert Wachter | A Giant Leap: How AI Is Transforming Healthcare... | Talks at Google






