Analyzing the spread of SARS-CoV-2 variants in Florida​
​by Daniel Lichtblau

Quick intro

I want to follow up on the recent analysis of variant SARS-Cov_ 2 strains in California with similar analysis of the situation in Florida. Actual counts of the B.1.1.7 infections in Florida exceed those counts in California. My (limited) understanding is that these counts are based more on genetic marker tests than on full sequencing. Moreover I do not know the level of reliability of these numbers. Again, I will limit this to actual sequences, in this case obtained from the GISAID site.
The variants of interest here are B.1.1.7, that originated in England, UK, and the pair of closely related B.1.429 and B.1.427 variants that originated in southern California. Both are claimed to be notably more infectious than prior variants of this virus (here I exclude the other variants of concern such as B.1.351 from South Africa and P.1 from Brazil). First I will show an update from the California plots in my previous post. The two salient changes are addition of B.1.427 genomes and a more recent set of data from California collected specimens. Then we will have a look at the corresponding data from Florida. All code not shown is tqaken directly from the original post to this thread.

Loading and processing the B.1.427 and recent California genome sequences

First I load GISAID California B.1.427 sequences collected between January 1 and January 20. I use this relatively early stop date because we will want to compare to newer sequences and we need to avoid overlaps in our data sets.
In[]:=
filenameCAB1427="GISAID_CA_JAN01_JAN20_B_1_427.fasta";​​gisCAB1427Seqs=Map[dropTrailingA,Import[FileNameJoin[{$HomeDirectory,"Downloads",filenameCAB1427}],"FASTA"]];​​gisCAB1427IDStrings=Select[ss=StringSplit[Import[FileNameJoin[{$HomeDirectory,"Downloads",filenameCAB1427}],"Text"],"\n"],StringMatchQ[#,">hCoV"~~___]&];​​Map[Length,{gisCAB1427Seqs,gisCAB1427IDStrings}]
Out[]=
{373,373}
These B.1.427 sequences will all be colored red.
In[]:=
colorsCAB1427=ConstantArray[Red,Length[gisCAB1427Seqs]];
In[]:=
gisCAB1427fcgrs=Map[ResourceFunction["FCGRImage"],gisCAB1427Seqs];​​gisCAB1427ftts=Map[Flatten[FourierDCT[#-Mean[Flatten[#]],4][[1;;30,1;;30]]]&,Map[ImageData,gisCAB1427fcgrs]];
The section of California genomes we will analyze were collected on or after February 1 and placed in the GISAID database by March 1 (more correctly, by early March 2, GMT).
In[]:=
filenameCA="GISAID_CA_FEB01Plus.fasta";​​gisCAFEB01PlusSeqs=Map[dropTrailingA,Import[FileNameJoin[{$HomeDirectory,"Downloads",filenameCA}],"FASTA"]];​​gisCAFEB01PlusIDStrings=Select[ss=StringSplit[Import[FileNameJoin[{$HomeDirectory,"Downloads",filenameCA}],"Text"],"\n"],StringMatchQ[#,">hCoV"~~___]&];​​Map[Length,{gisCAFEB01PlusSeqs,gisCAFEB01PlusIDStrings}]
Out[]=
{379,379}
These we color-code by collection date, reddish-brown earliest and green most recently.
In[]:=
{gisCAFEB01PlusNames0,gisCAFEB01PlusAscensions,gisCAFEB01PlusDates0}=Transpose[StringSplit[gisCAFEB01PlusIDStrings,"|"]];​​gisCAFEB01PlusDates=ToExpression[Map[StringSplit[#,"-"]&,gisCAFEB01PlusDates0]];​​{gisCAFEB01PlusCountries,gisCAFEB01PlusNames,gisCAFEB01PlusYears}=Transpose@Map[StringSplit[#,"/"]&,gisCAFEB01PlusNames0][[All,2;;]];​​ngisCAFEB01PlusDates=Map[(#[[1]]-2020)*365+(#[[2]])*30.4+#[[3]]-425&,gisCAFEB01PlusDates];​​ndatesCAFEB01=.6*Rescale[ngisCAFEB01PlusDates]+.02;​​colorbydateCAFEB01=Thread[Style[gisCAFEB01PlusDates,Map[Darker[Hue[#]]&,ndatesCAFEB01]]];
In[]:=
skip=54;​​pl=PointLegend[Map[Darker[Hue[#]]&,Sort[ndatesCAFEB01][[1;;-1;;skip]]],Map[StringReplace[ToString[#],{"{""(","}"")"}]&,Rest@colorbydateCAFEB01[[Ordering[ndatesCAFEB01]]][[1;;-1;;skip]][[All,1,2;;]]],LegendLabel"color/(month/day)"]
Out[]=
color/(month/day)
(2, 1)
(2, 2)
(2, 4)
(2, 7)
(2, 8)
(2, 9)
(2, 19)
In[]:=
gisCAFEB01Plusfcgrs=Map[ResourceFunction["FCGRImage"],gisCAFEB01PlusSeqs];​​gisCAFEB01Plusftts=Map[Flatten[FourierDCT[#-Mean[Flatten[#]],4][[1;;30,1;;30]]]&,Map[ImageData,gisCAFEB01Plusfcgrs]];

Multidimensional Scaling 3D plot for California and variants

We merge the vectors from above with those computed the last time. To remove clutter I only use every other sequence from the variants of interest.
In[]:=
start=1;​​skip=2;​​smallervecsCAFEB01Plus=FTTsToVectors[Join[gisCAFEB01Plusftts,gisUSAB117ftts[[start;;-1;;skip]],gisCAB1429ftts[[start;;-1;;skip]],gisCAB1427ftts[[start;;-1;;skip]]],40];​​colorsCAPlus=Join[colorbydateCAFEB01[[All,2]],colorsUSAB117[[start;;-1;;skip]],colorsCAB1429[[start;;-1;;skip]],colorsCAB1427[[start;;-1;;skip]]];
In[]:=
styledMDSCAFEB01Plus3=Apply[Style,​​Thread[{ResourceFunction["MultidimensionalScaling"][smallervecsCAFEB01Plus,3],colorsCAPlus}],{1}];
In[]:=
ListPointPlot3D[styledMDSCAFEB01Plus3,PlotRangeAll,PlotLegendspl]
Out[]=
color/(month/day)
(2, 1)
(2, 2)
(2, 4)
(2, 7)
(2, 8)
(2, 9)
(2, 19)
What we see is that very few new California SARS-CoV-2 genome sequences cluster with the B.1.1.7 variant. More than half appear to cluster among the B.1.427 and B.1.429 genomes. This latter is in accord with recent reports from California studies. Perhaps baffling is the lack of B.1.1.7 presence, given how much more contagious it has proven to be in many parts of Europe. A possibility is that it fares relatively poorer than the B.1.427/B.1.429 variants in an environment where perhaps 30% of the population has antibodies from previous exposure, and another 15-20% has received at least one dose of vaccine.

Load and preprocess recent Florida genome sequences

We repeat the processing, this time for recent GISAID sequences from Florida.
In[]:=
filenameFL="GISAID_FL_FEB01Plus.fasta";​​gisFLFEB01PlusSeqs=Map[dropTrailingA,Import[FileNameJoin[{$HomeDirectory,"Downloads",filenameFL}],"FASTA"]];​​gisFLFEB01PlusIDStrings=Select[ss=StringSplit[Import[FileNameJoin[{$HomeDirectory,"Downloads",filenameFL}],"Text"],"\n"],StringMatchQ[#,">hCoV"~~___]&];​​Map[Length,{gisFLFEB01PlusSeqs,gisFLFEB01PlusIDStrings}]
Out[]=
{375,375}
In[]:=
{gisFLFEB01PlusNames0,gisFLFEB01PlusAscensions,gisFLFEB01PlusDates0}=Transpose[StringSplit[gisFLFEB01PlusIDStrings,"|"]];​​gisFLFEB01PlusDates=ToExpression[Map[StringSplit[#,"-"]&,gisFLFEB01PlusDates0]];​​{gisFLFEB01PlusCountries,gisFLFEB01PlusNames,gisFLFEB01PlusYears}=Transpose@Map[StringSplit[#,"/"]&,gisFLFEB01PlusNames0][[All,2;;]];​​ngisFLFEB01PlusDates=Map[(#[[1]]-2020)*365+(#[[2]])*30.4+#[[3]]-425&,gisFLFEB01PlusDates];​​ndatesFLFEB01=.5*Rescale[ngisFLFEB01PlusDates]+.02;​​colorbydateFLFEB01=Thread[Style[gisFLFEB01PlusDates,Map[Darker[Hue[#]]&,ndatesFLFEB01]]];
In[]:=
FactorInteger@374
Out[]=
{{2,1},{11,1},{17,1}}
In[]:=
skip=34;​​pl=PointLegend[Map[Darker[Hue[#]]&,Sort[ndatesFLFEB01][[1;;-1;;skip]]],Map[StringReplace[ToString[#],{"{""(","}"")"}]&,colorbydateFLFEB01[[Ordering[ndatesFLFEB01]]][[1;;-1;;skip]][[All,1,2;;]]][[2;;-1;;2]],LegendLabel"color/(month/day)"]
Out[]=
color/(month/day)
(2, 2)
(2, 4)
(2, 7)
(2, 8)
(2, 10)
(2, 18)
In[]:=
gisFLFEB01Plusfcgrs=Map[ResourceFunction["FCGRImage"],gisFLFEB01PlusSeqs];​​gisFLFEB01Plusftts=Map[Flatten[FourierDCT[#-Mean[Flatten[#]],4][[1;;30,1;;30]]]&,Map[ImageData,gisFLFEB01Plusfcgrs]];

Multidimensional Scaling 3D plot for recent Florida genomes and the variants

As with the California sequences, we remove every other sequence from the sets of variants to reduce point clutter.
In[]:=
start=1;​​skip=2;​​smallervecsFLFEB01Plus=FTTsToVectors[Join[gisFLFEB01Plusftts,gisUSAB117ftts[[start;;-1;;skip]],gisCAB1429ftts[[start;;-1;;skip]],gisCAB1427ftts[[start;;-1;;skip]]],40];​​colorsFLPlus=Join[colorbydateFLFEB01[[All,2]],colorsUSAB117[[start;;-1;;skip]],colorsCAB1429[[start;;-1;;skip]],colorsCAB1427[[start;;-1;;skip]]];
In[]:=
styledMDSFLFEB01Plus3=Apply[Style,​​Thread[{ResourceFunction["MultidimensionalScaling"][smallervecsFLFEB01Plus,3],colorsFLPlus}],{1}];
This time we see a far smaller cohort of Florida genomes amidst the B.1.427/B.1.429 variants. It is still notably larger, however, than the grouping from Florida amid the B.1.1.7 sequences. Perhaps more telling (and perhaps of concern) is that it appears to include a relatively larger cohort of more recently collected sequences.

A phylogenetic tree

In order to aid readability we decimate each variant set by a factor of four. The recent Florida SARS-CoV-2 genome sequences will be indicated by their date of collection, while the B.1.1.7, B.1.427 and B.1.429 variants will again be indicated by gray, red and blue markers respectively.
By my estimate, around 14% of the recent Florida sequences fall within the B.1.427/B.1.429 variants, and a far smaller fraction (though larger than in California) are with the B.1.1.7 sequences. A conclusion is that, at this time, the California variant(s) are far more numerous in Florida than is the B.1.1.7 variant, and that it remains a relatively small portion of the total cases. It should be noted, however, that the most recently collected sequence in this set is from nearly two weeks ago, and so current counts might be quite different. Also this is based on the set of sequences submitted to GISAID, and this is not necessarily representative of the entire state of Florida.

Gauging proximity from dimension-reduced vectors

Another way to corroborate the information from the phylogenetic tree and MDS point plot is to find nearest neighbors, using the dimension-40 vectors from the step prior to creating the 3D MDS plot. We gauge proximity of each FLorida sequence both to the B.1.427/B.1.429 variants and to the B.1.1.7 variant.
Based on the ranges above I opted to use a threshold distance of 0.6. Any sequence within this distance of a variant would be counted as possibly itself being from that variant.
These numbers are within reasonable agreement to the counts of Florida genomes located among these variants in the phylogenetic tree.

Supplementary data

GISAID sequence acknowledgements

Click to open the laboratory attributions from GISAID