WEBVTT
Kind: captions
Language: en

00:00:00.720 --> 00:00:05.680
Cool. Thank you. So hopefully people see&nbsp;
my slides. So yeah I'm Niema Moshiri. I'm&nbsp;&nbsp;

00:00:05.680 --> 00:00:09.040
at UC San Diego. I'm in the Computer&nbsp;
Science and Engineering Department&nbsp;&nbsp;

00:00:09.040 --> 00:00:12.960
and I'll be talking about a recent&nbsp;
development that we've made called viral MSA.

00:00:14.880 --> 00:00:18.880
Basically a standard phylogenetics workflow-&nbsp;
if you've ever seen an evolutionary history of&nbsp;&nbsp;

00:00:18.880 --> 00:00:23.440
virus sequences, you kind of- you start with&nbsp;
these initial sequences at the beginning that&nbsp;&nbsp;

00:00:23.440 --> 00:00:28.160
don't necessarily line up very nicely. And&nbsp;
the first step is you do multiple sequence&nbsp;&nbsp;

00:00:28.160 --> 00:00:33.200
alignment to get them to line up. Lining&nbsp;
them up like this tells us stuff about,&nbsp;&nbsp;

00:00:33.200 --> 00:00:36.880
you know, what is the sequence homology, what&nbsp;
are the relationships between the sequences.&nbsp;

00:00:37.840 --> 00:00:41.040
Using this alignment, you&nbsp;
then estimate a phylogeny.&nbsp;&nbsp;

00:00:42.000 --> 00:00:44.960
And then you root the phylogeny to&nbsp;
determine what is the common ancestor.&nbsp;&nbsp;

00:00:45.520 --> 00:00:48.480
And then there's a bunch of other downstream&nbsp;
analyses that you might be interested in doing,&nbsp;&nbsp;

00:00:48.480 --> 00:00:54.160
you know, things like what are the&nbsp;
clusters of outbreaks that are happening&nbsp;&nbsp;

00:00:54.160 --> 00:01:01.280
you know what demographics do we think are more&nbsp;
at risk of getting infected by some disease? Yeah,&nbsp;&nbsp;

00:01:01.280 --> 00:01:06.240
a lot of stuff that you can do. So in general&nbsp;
my focus is on these two steps: the multiple&nbsp;&nbsp;

00:01:06.240 --> 00:01:10.000
sequence alignment and the phylogenetic inference&nbsp;
which are really the computational bottlenecks.&nbsp;&nbsp;

00:01:10.880 --> 00:01:14.880
And in this talk, I'll be focusing just on&nbsp;
this single step: multiple sequence alignment.

00:01:15.680 --> 00:01:20.880
So the multiple sequence alignment problem is&nbsp;
NP-Complete, which, TLDR, that means we don't&nbsp;&nbsp;

00:01:20.880 --> 00:01:27.280
have a polynomial time solution, and as a result,&nbsp;
many heuristics have been developed to approximate&nbsp;&nbsp;

00:01:27.280 --> 00:01:32.880
solutions. They're pretty accurate reasonably.&nbsp;
Some of the tools that people might be familiar&nbsp;&nbsp;

00:01:32.880 --> 00:01:37.360
with are MUSCLE, ClustalOmega, and MAFFT. These&nbsp;
are some of the common tools that implement them.&nbsp;&nbsp;

00:01:38.240 --> 00:01:42.480
However, even these heuristics generally&nbsp;
scale quadratically with respect to the number&nbsp;&nbsp;

00:01:42.480 --> 00:01:47.920
of sequences. So in the case of SARS-CoV-2,&nbsp;
we've had an exponential growth of sequencing&nbsp;&nbsp;

00:01:49.120 --> 00:01:54.640
happening where, I mean, this is a great thing for&nbsp;
us. We're getting more and more sequence data, but&nbsp;&nbsp;

00:01:54.640 --> 00:01:58.880
the downside is we have to analyze those sequence&nbsp;
data and our tools just don't scale properly.&nbsp;&nbsp;

00:02:00.240 --> 00:02:04.240
So right now- so this is actually outdated.&nbsp;
This was from I think a week or two ago. Now&nbsp;&nbsp;

00:02:04.240 --> 00:02:11.760
we're almost at 200,000 sequences. So the tools&nbsp;
just do not scale to enable real-time analysis.

00:02:14.080 --> 00:02:19.920
So, what if instead, we knew in advance so a&nbsp;
priori we knew that our sequences are going&nbsp;&nbsp;

00:02:19.920 --> 00:02:26.960
to be super similar and we already have some high&nbsp;
confidence representative reference genome against&nbsp;&nbsp;

00:02:26.960 --> 00:02:32.080
which we can compare them to? So here, I'm showing&nbsp;
the reference genome as a green line on the top&nbsp;&nbsp;

00:02:32.080 --> 00:02:36.240
and each of those other colored sequences below&nbsp;
it are the sequence that I want to align with&nbsp;&nbsp;

00:02:36.240 --> 00:02:41.040
each other. Instead of aligning them amongst&nbsp;
themselves, what I can do is just align the first&nbsp;&nbsp;

00:02:41.040 --> 00:02:45.600
sequence against the reference genome. Align the&nbsp;
second sequence against the reference genome. Keep&nbsp;&nbsp;

00:02:45.600 --> 00:02:49.840
aligning each of the sequences independently&nbsp;
directly against the reference genome.&nbsp;&nbsp;

00:02:50.720 --> 00:02:55.600
And then using the positions of the reference&nbsp;
genome as anchors, I can merge the individual&nbsp;&nbsp;

00:02:55.600 --> 00:03:00.400
pairwise alignments into one multiple&nbsp;
sequence line. So take the first column&nbsp;&nbsp;

00:03:00.400 --> 00:03:05.280
of my multiple sequence assignment see- in the&nbsp;
first sequence this is the position that matched,&nbsp;&nbsp;

00:03:05.280 --> 00:03:09.760
then this position matched in the second, and&nbsp;
the third, and then just collapse them together.&nbsp;&nbsp;

00:03:10.800 --> 00:03:13.840
I can do this for each position of the&nbsp;
reference genome and then now I have&nbsp;&nbsp;

00:03:13.840 --> 00:03:18.480
a multiple sequence line. And the nice thing&nbsp;
is that this parallelizes super nicely. Every&nbsp;&nbsp;

00:03:18.480 --> 00:03:22.560
single sequence can be aligned against the&nbsp;
reference independently and simultaneously,&nbsp;&nbsp;

00:03:23.440 --> 00:03:26.960
and it scales linearly with the number&nbsp;
of sequences rather than quadratically.

00:03:28.400 --> 00:03:32.800
But let me take a step back real quick&nbsp;
and think about this approach. My input&nbsp;&nbsp;

00:03:32.800 --> 00:03:38.000
is a reference genome and a bunch of sequences&nbsp;
that are very similar to that reference genome,&nbsp;&nbsp;

00:03:38.000 --> 00:03:44.640
and my output is an alignment of every sequence&nbsp;
against the reference genome. So if people are&nbsp;&nbsp;

00:03:44.640 --> 00:03:50.240
at all familiar with long read sequencing, this is&nbsp;
exactly the same computational problem as mapping&nbsp;&nbsp;

00:03:50.240 --> 00:03:57.200
long reads to a reference genome. So my question&nbsp;
was: can I leverage existing well-implemented&nbsp;&nbsp;

00:03:57.200 --> 00:04:02.160
read mapping tools to enable this type of scalable&nbsp;
reference guided multiple sequence alignment?

00:04:02.800 --> 00:04:08.800
So I developed a tool called ViralMSA which wraps&nbsp;
around existing read mappers in order to perform&nbsp;&nbsp;

00:04:08.800 --> 00:04:13.120
reference-guided multiple sequence alignment.&nbsp;
I wrap around a few of them, but there's one&nbsp;&nbsp;

00:04:13.120 --> 00:04:20.240
tool specifically, Minimap2, that's kind of the&nbsp;
gold standard right now for what I'm doing. So I&nbsp;&nbsp;

00:04:20.240 --> 00:04:25.360
only recommend using my tool with that specific&nbsp;
read mapper, but I wrap around a few of them to&nbsp;&nbsp;

00:04:25.360 --> 00:04:30.480
demonstrate that I can evolve this tool naturally&nbsp;
as read mapping technologies evolve as well.&nbsp;&nbsp;

00:04:31.840 --> 00:04:37.280
So basically, you simply provide viral MSA&nbsp;
reference genome and the sequences to align and&nbsp;&nbsp;

00:04:37.280 --> 00:04:41.040
then it'll handle indexing the reference genome&nbsp;
and doing any pre-processing it needs to do,&nbsp;&nbsp;

00:04:41.600 --> 00:04:46.480
and it'll call the read mapper and then merge&nbsp;
the results into a multiple sequence alignment.

00:04:46.480 --> 00:04:52.640
And here you can see a comparison of this approach&nbsp;
with existing best practice tools. So my tool is&nbsp;&nbsp;

00:04:52.640 --> 00:04:57.520
the blue line on the bottom and then the two&nbsp;
other lines are other tools and you see that, in&nbsp;&nbsp;

00:04:57.520 --> 00:05:03.040
general, it's multiple orders of magnitude faster&nbsp;
than what people are generally doing right now,&nbsp;&nbsp;

00:05:03.040 --> 00:05:07.680
and it scales very nicely. And the sequence&nbsp;
alignments that we get are very accurate.

00:05:08.720 --> 00:05:12.480
So in conclusion, this tool that I've&nbsp;
developed enables rapid multiple sequence&nbsp;&nbsp;

00:05:12.480 --> 00:05:15.840
alignment of viral genomes. It's&nbsp;
open source. You can get it online,&nbsp;&nbsp;

00:05:16.720 --> 00:05:19.680
and hopefully if you do any&nbsp;
viral analyses consider using it.

00:05:20.240 --> 00:05:22.880
So some acknowledgements:&nbsp;
Heng Li developed Minimap2,&nbsp;&nbsp;

00:05:22.880 --> 00:05:27.120
which is kind of the essence of the speed and&nbsp;
this work was supported by NSF and Google.&nbsp;&nbsp;

00:05:28.240 --> 00:05:32.560
And yeah, I'll leave questions for&nbsp;
the chat or later in the session.

