By break is over, on to the next talk, and we've been really fortunate to have a really
nice spread of topics covered, so now we move on to, well, polytopes, or metabolic flux,
due to side, and my place to introduce Zalion. Is it copoulos? OK. Thanks a lot. So, today, I would
like to introduce Dingo, which is a Python package for a sampling on a metabolic networks.
OK. So, I will start with some intro, probably most of you know it, but it's a good
background introduction. So, probably you know that in our cells, they're having a thousand
of reactions in every cell. So, here we are interested in the input and the output of those
reactions, what we call them metabolites. And of course, you can model all these reactions and
the metabolites that take place on these reactions as a net cork. OK. So, those net corks, we are
interested in the flow rate, the rate of a reaction, the rate that happens inside one reaction,
that we call it flow. OK. So, if you see the reactions are the rows, and then this VI are the
fluxes, all the flows. OK. So, you can also imagine all this set of flows, that we can create
a flow vector. OK. So, this can be modelled as a bolt-up, and this bolt-up is a feasible set,
and the feasible set contains all the fluxes that balance is the net cork. So, I'm
skipping the linear algebra here, but you can model it as a linear system, actual linear inequalities,
where all the feasible solutions of this inequalities are the fluxes that balances my net cork.
So, I want to study all this space. OK. Of course, net corks in real life are like this. So,
this is a recon one, the human metabolic network. As far as I know, there are also two more
larger versions, like recon two or three that are even larger. OK. And all this net cork will
become for us a convex molecule. So, if we're, OK, imagine that box, this is a convex
volt-up in a three-day space, but here you have as many dimensions as our reaction. So,
can be thousands of dimensions. OK. And this volt-up is so the red one represents the balance.
So, the steady states. OK. Now, if we want to do some optimization, like the optimal steady states,
with respect to, for example, some biomass objective function, then we have to do some optimization,
which is simple linear optimization. This is the method that called FBA. So, in the
polytop, this means that you would like to find the blue thing, which is a facet, like let's say if
you have a box, it's one facet of the box. This is optimal according to the biomass. So,
there, all the fluxes are optimal with respect to this object. OK. So, this is one, let's say,
biased way of studying this, because FBA will give you one vertex of this blue facet that corresponds
to the optimal state. The other way is the unbiased. So, we can do some link on this facet,
and take all the possible, let's say, this will cover all the possible stages that are optimal.
So, this is the last figure. So, imagine that you do some, in this case, uniform sampling on this facet,
and then it's point of the sampling represent some optimal flux. OK. In order to do it,
we, we build a package called Dingo. It's a Python, it's written Python. It has several sampling
and rounding algorithms, which are based on a C++ library called Valeste. So, the library that
we also maintain, and everything that it needs performance is on C++. So, Python contains
the bindings, and also some extra functions, like loading models from different standards,
loading utilities, and do some statistics like computing copulus or joint distribution,
and things like that. OK. So, yes, this also published in by format some vansis. If you want to see
the paper, and we are a small team working on this problem. So, let's, so we case,
how you can use Dingo to start these fluxes. So, in the first line, you, you just import
metabolic numbers, and the sampler from the from Dingo, and then you create a model,
or the second line, this is a simple model from the, they call it. So, this is quite small. If
you run it and your computer, this will be really fast. Then you can do, we do FBA. This is the,
let's say, the bias method. This will give us one value, one flux value, that it's optimal.
And then we try to, to sample. So, we create a sampler, like Paul, to a sampler given the model,
and the, the, the, the Chevy, the computer is not Chevy, part is the line that,
computer state states, like sampler generates state states. So, there, ESS is a statistical thing that,
uh, somehow tells you that we want 3,000 samples that are somehow statistical and biased.
So, and we want to, to have 3,000 points that are uniform. Let's say, on this,
fast it, on some high dimensional space. Okay, and then we plot the histogram. So, in the, in the
histogram, you can see the blue line is FBA, the information that FBA gives you. And the histogram
is all the samples. The, the flux is a fusion, we compute from the samples. And this is,
uh, from one reaction in the network, and this is from another reaction. So, even from this,
you can understand that FBA can give you a different information. Okay, um, okay, you can do it for,
all the reactions, and you can do it for different networks. Okay, now, the other thing that you can
do is that, uh, you can also start the, uh, how reactions, um, the, the connection between the
dependencies between the reactions. And in order to do it, we, we use copulas, which is, um, when you,
you start it's own, uh, uh, Martin at distributions. So, here, I select two different reactions from
my network, uh, account and, uh, PPC, and I compute, uh, the copula again with, uh, sampling. So,
and then I have this graph. So, this means that when the one, the reaction, the, the flux in one,
a reaction goes up, the other also goes up. That could be, uh, also different. So, this is a way
to study, um, uh, the dependence, uh, the, and bias dependence between, uh, two different, uh, reactions.
On my network. Okay, and then one thing that you could also do, uh, is, okay, this is maybe a
high shot, uh, that you can, you can use this to do some targeting. Uh, what we did is that we, we took
a paper from rents at all, that, uh, they generate a host virus network. They're going to study,
um, the actions that are related to COVID in order to create a drug. Uh, so here you have two objective
functions. They model it having two objective functions, the human biomass and the virus grows.
And then they compute the FBA. So, what we did is, we said, okay, instead of FBA, let's say compute,
let's say, let's do some sampling. Okay, um, what they show in FBA, that, uh, all,
most of the reactions have the same FBA, but one reaction have a different FBA. So what we do with
sampling is that, uh, we look at the flux rate, uh, the distribution, uh, of the host biomass
and the virus growth rate. So one is human with COVID and the other is human without COVID. And we
look at the, if the flux does not change, means that this reaction probably, uh, does not have to
do with COVID or it's not a target that we want to study. But if we have something like this to
different flux, then this means that this reaction is doing something in my organism. So the question
here, uh, that we could raise is that, uh, is it possible that sampling can give you more information
than FBA? It seems that uncertainty gives you, but can we use it for targeting? Okay, uh, so this
is my last slide. I would like to, uh, give some notes about what is the current and future work.
We have some Google summer, of course, the projects. Uh, two of them, uh, the last year is
one, uh, sampling from the boundary. So now we sample inside from the, the, the, but it seems that
it's interesting for some applications, uh, that you should sample from the boundary. So we had
one student that, uh, implemented the boundary sampling, which is more, let's say, difficult to,
do that. We don't have a lot of values or sample from the boundary. Let's say that it's not
convex as a problem. Uh, and then there is another student that was doing, uh, statistical analysis.
So if you remember the copula, this is, you can imagine that every cell of this, uh, matrix is
one copula. But instead of loading the copula, we just have a patient correlation and we, we'll
be the, uh, we just draw the value here. So this is somehow the connections between all the,
all the reactions, uh, in a network. Uh, yes, and this is, yes, this is in, uh, in the pockets.
You can use it. Um, yeah. So that's it. Uh, the repository, it's on GitHub. Uh, we have a call
up a notebook that you can run all of these and, uh, take and there will also have a, uh, paper, uh,
pockets. Uh, that's all. Thanks a lot. And we, and Olga, would you like to start
coming to set up? Uh, questions. So this was probably the first tool that we had with more
questions. So I tried to remove them. It's very hard. I mean, just that this is, um, either
sort of static solution versus numerical simulation to get a, uh, more of a more broad space
solutions. Um, so what sort of compute would work better for the, the copula, uh, computation?
So if you're doing all dimensions or reactions against all reactions, uh, possible, is there a parallel,
is there fully parallelized? So it depends on the network. So for RECON 3D, uh, which is the most
advanced model, uh, even sampling, one sampling means that you, you get, uh, one copula,
used to take, uh, okay, maybe days. So for the whole matrix, I don't know. Yeah. Um,
but, uh, okay, okay, okay, okay. But, uh, yes, probably you can, probably you can, because, um,
if you have the sample, then you can do the, you can have the matrix. Yes. So the sample gives you,
let's say that in the sample, you have a point that it's 1,000 dimensional,
every coordinate corresponds to a reaction. So if you have the sample, you have everything.
So let's say, yeah, in a day, it's not bad. All right. Thank you very much. Thanks.