@genspectrum/dashboard-components 0.10.3 → 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/custom-elements.json +384 -56
- package/dist/assets/mutationOverTimeWorker-BjjkMGzd.js.map +1 -0
- package/dist/components.d.ts +250 -31
- package/dist/components.js +1220 -198
- package/dist/components.js.map +1 -1
- package/dist/{dateRangeOption-DjtcAEWq.js → dateRangeOption-Bh2p78z0.js} +11 -5
- package/dist/dateRangeOption-Bh2p78z0.js.map +1 -0
- package/dist/style.css +5 -1
- package/dist/util.d.ts +626 -16
- package/dist/util.js +1 -1
- package/package.json +13 -7
- package/src/preact/aggregatedData/aggregate.stories.tsx +2 -2
- package/src/preact/aggregatedData/aggregate.tsx +11 -8
- package/src/preact/dateRangeSelector/date-range-selector.stories.tsx +4 -12
- package/src/preact/dateRangeSelector/date-range-selector.tsx +4 -4
- package/src/preact/lineageFilter/lineage-filter.stories.tsx +1 -1
- package/src/preact/locationFilter/location-filter.stories.tsx +1 -1
- package/src/preact/map/__mockData__/aggregatedGermany.json +83 -0
- package/src/preact/map/__mockData__/aggregatedWorld.json +259 -0
- package/src/preact/map/__mockData__/germanyMap.json +9083 -0
- package/src/preact/map/__mockData__/howToGenerateWorldMap.md +9 -0
- package/src/preact/map/__mockData__/worldAtlas.json +497127 -0
- package/src/preact/map/leafletStyleModifications.css +3 -0
- package/src/preact/map/sequences-by-location-map.tsx +202 -0
- package/src/preact/map/sequences-by-location-table.tsx +18 -0
- package/src/preact/map/sequences-by-location.stories.tsx +144 -0
- package/src/preact/map/sequences-by-location.tsx +151 -0
- package/src/preact/map/useGeoJsonMap.tsx +62 -0
- package/src/preact/mutationComparison/mutation-comparison.tsx +5 -7
- package/src/preact/mutationFilter/mutation-filter.tsx +4 -13
- package/src/preact/mutations/mutations.tsx +4 -4
- package/src/preact/mutationsOverTime/mutations-over-time.stories.tsx +1 -1
- package/src/preact/mutationsOverTime/mutations-over-time.tsx +4 -4
- package/src/preact/numberSequencesOverTime/number-sequences-over-time.stories.tsx +5 -14
- package/src/preact/numberSequencesOverTime/number-sequences-over-time.tsx +4 -4
- package/src/preact/prevalenceOverTime/prevalence-over-time.stories.tsx +15 -26
- package/src/preact/prevalenceOverTime/prevalence-over-time.tsx +8 -8
- package/src/preact/relativeGrowthAdvantage/relative-growth-advantage.stories.tsx +4 -15
- package/src/preact/relativeGrowthAdvantage/relative-growth-advantage.tsx +11 -7
- package/src/preact/shared/stories/expectErrorMessage.ts +21 -0
- package/src/preact/textInput/text-input.stories.tsx +1 -1
- package/src/preact/useQuery.ts +9 -1
- package/src/query/queryNumberOfSequencesOverTime.spec.ts +4 -4
- package/src/query/queryNumberOfSequencesOverTime.ts +1 -4
- package/src/query/queryPrevalenceOverTime.ts +1 -4
- package/src/styles/tailwind.css +1 -1
- package/src/types.ts +12 -4
- package/src/utilEntrypoint.ts +16 -4
- package/src/utils/utils.ts +0 -29
- package/src/web-components/app.ts +1 -1
- package/src/web-components/input/gs-date-range-selector.stories.ts +4 -4
- package/src/web-components/input/gs-date-range-selector.tsx +5 -5
- package/src/web-components/input/gs-lineage-filter.tsx +1 -1
- package/src/web-components/input/gs-location-filter.tsx +1 -1
- package/src/web-components/input/gs-mutation-filter.tsx +5 -8
- package/src/web-components/input/gs-text-input.tsx +1 -1
- package/src/web-components/visualization/gs-aggregate.stories.ts +3 -3
- package/src/web-components/visualization/gs-aggregate.tsx +10 -6
- package/src/web-components/visualization/gs-mutation-comparison.tsx +7 -2
- package/src/web-components/visualization/gs-mutations-over-time.tsx +7 -2
- package/src/web-components/visualization/gs-mutations.tsx +7 -2
- package/src/web-components/visualization/gs-number-sequences-over-time.stories.ts +5 -5
- package/src/web-components/visualization/gs-number-sequences-over-time.tsx +13 -15
- package/src/web-components/visualization/gs-prevalence-over-time.stories.ts +8 -8
- package/src/web-components/visualization/gs-prevalence-over-time.tsx +17 -14
- package/src/web-components/visualization/gs-relative-growth-advantage.stories.ts +4 -5
- package/src/web-components/visualization/gs-relative-growth-advantage.tsx +17 -15
- package/src/web-components/visualization/gs-sequences-by-location.stories.ts +234 -0
- package/src/web-components/visualization/gs-sequences-by-location.tsx +258 -0
- package/src/web-components/visualization/gs-statistics.tsx +12 -3
- package/src/web-components/visualization/index.ts +1 -0
- package/standalone-bundle/assets/mutationOverTimeWorker-DoUBht2e.js.map +1 -0
- package/standalone-bundle/dashboard-components.js +16208 -9408
- package/standalone-bundle/dashboard-components.js.map +1 -1
- package/standalone-bundle/style.css +1 -1
- package/dist/assets/mutationOverTimeWorker-CNg_ztNp.js.map +0 -1
- package/dist/dateRangeOption-DjtcAEWq.js.map +0 -1
- package/src/preact/shared/stories/expectInvalidAttributesErrorMessage.ts +0 -13
- package/src/utils/utils.spec.ts +0 -16
- package/standalone-bundle/assets/mutationOverTimeWorker-cIyshfj_.js.map +0 -1
package/dist/util.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@genspectrum/dashboard-components",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.11.0",
|
|
4
4
|
"description": "GenSpectrum web components for building dashboards",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "AGPL-3.0-only",
|
|
@@ -28,14 +28,14 @@
|
|
|
28
28
|
},
|
|
29
29
|
"exports": {
|
|
30
30
|
"./components": {
|
|
31
|
+
"types": "./dist/components.d.ts",
|
|
31
32
|
"import": "./dist/components.js",
|
|
32
|
-
"require": "./dist/components.js"
|
|
33
|
-
"types": "./dist/components.d.ts"
|
|
33
|
+
"require": "./dist/components.js"
|
|
34
34
|
},
|
|
35
35
|
"./util": {
|
|
36
|
+
"types": "./dist/util.d.ts",
|
|
36
37
|
"import": "./dist/util.js",
|
|
37
|
-
"require": "./dist/util.js"
|
|
38
|
-
"types": "./dist/util.d.ts"
|
|
38
|
+
"require": "./dist/util.js"
|
|
39
39
|
},
|
|
40
40
|
"./custom-elements.json": "./custom-elements.json",
|
|
41
41
|
"./package.json": "./package.json",
|
|
@@ -83,14 +83,16 @@
|
|
|
83
83
|
"@lit/context": "^1.1.1",
|
|
84
84
|
"@lit/reactive-element": "^2.0.4",
|
|
85
85
|
"@lit/task": "^1.0.0",
|
|
86
|
-
"chart.js": "^4.4.
|
|
86
|
+
"chart.js": "^4.4.6",
|
|
87
87
|
"chartjs-chart-error-bars": "^4.4.0",
|
|
88
88
|
"chartjs-chart-venn": "^4.3.0",
|
|
89
89
|
"dayjs": "^1.11.10",
|
|
90
90
|
"flatpickr": "^4.6.13",
|
|
91
91
|
"gridjs": "^6.2.0",
|
|
92
|
+
"leaflet": "^1.9.4",
|
|
92
93
|
"lit": "^3.1.3",
|
|
93
94
|
"preact": "^10.20.1",
|
|
95
|
+
"topojson-client": "^3.1.0",
|
|
94
96
|
"zod": "^3.23.0"
|
|
95
97
|
},
|
|
96
98
|
"devDependencies": {
|
|
@@ -112,7 +114,11 @@
|
|
|
112
114
|
"@storybook/web-components": "^8.0.9",
|
|
113
115
|
"@storybook/web-components-vite": "^8.0.9",
|
|
114
116
|
"@tailwindcss/container-queries": "^0.1.1",
|
|
117
|
+
"@types/geojson": "^7946.0.15",
|
|
118
|
+
"@types/leaflet": "^1.9.15",
|
|
115
119
|
"@types/node": "^22.0.0",
|
|
120
|
+
"@types/topojson-client": "^3.1.5",
|
|
121
|
+
"@types/topojson-specification": "^1.0.5",
|
|
116
122
|
"@typescript-eslint/eslint-plugin": "^8.2.0",
|
|
117
123
|
"@typescript-eslint/parser": "^8.2.0",
|
|
118
124
|
"autoprefixer": "^10.4.19",
|
|
@@ -133,7 +139,7 @@
|
|
|
133
139
|
"storybook-addon-fetch-mock": "^2.0.0",
|
|
134
140
|
"tailwindcss": "^3.4.3",
|
|
135
141
|
"typescript": "~5.7.2",
|
|
136
|
-
"vite": "^
|
|
142
|
+
"vite": "^6.0.3",
|
|
137
143
|
"vite-plugin-dts": "^4.0.3",
|
|
138
144
|
"vitest": "^2.0.1"
|
|
139
145
|
}
|
|
@@ -5,7 +5,7 @@ import aggregatedData from './__mockData__/aggregated.json';
|
|
|
5
5
|
import { Aggregate, type AggregateProps } from './aggregate';
|
|
6
6
|
import { AGGREGATED_ENDPOINT, LAPIS_URL } from '../../constants';
|
|
7
7
|
import { LapisUrlContext } from '../LapisUrlContext';
|
|
8
|
-
import { expectInvalidAttributesErrorMessage } from '../shared/stories/
|
|
8
|
+
import { expectInvalidAttributesErrorMessage } from '../shared/stories/expectErrorMessage';
|
|
9
9
|
|
|
10
10
|
const meta: Meta<AggregateProps> = {
|
|
11
11
|
title: 'Visualization/Aggregate',
|
|
@@ -51,7 +51,7 @@ export const Default: StoryObj<AggregateProps> = {
|
|
|
51
51
|
args: {
|
|
52
52
|
fields: ['division', 'host'],
|
|
53
53
|
views: ['table'],
|
|
54
|
-
|
|
54
|
+
lapisFilter: {
|
|
55
55
|
country: 'USA',
|
|
56
56
|
},
|
|
57
57
|
width: '100%',
|
|
@@ -16,13 +16,13 @@ import { ResizeContainer } from '../components/resize-container';
|
|
|
16
16
|
import Tabs from '../components/tabs';
|
|
17
17
|
import { useQuery } from '../useQuery';
|
|
18
18
|
|
|
19
|
-
const
|
|
20
|
-
export type
|
|
19
|
+
const aggregateViewSchema = z.literal(views.table);
|
|
20
|
+
export type AggregateView = z.infer<typeof aggregateViewSchema>;
|
|
21
21
|
|
|
22
22
|
const aggregatePropsSchema = z.object({
|
|
23
|
-
|
|
23
|
+
lapisFilter: lapisFilterSchema,
|
|
24
24
|
fields: z.array(z.string().min(1)),
|
|
25
|
-
views: z.array(
|
|
25
|
+
views: z.array(aggregateViewSchema),
|
|
26
26
|
initialSortField: z.string(),
|
|
27
27
|
initialSortDirection: z.union([z.literal('ascending'), z.literal('descending')]),
|
|
28
28
|
pageSize: z.union([z.boolean(), z.number()]),
|
|
@@ -45,12 +45,15 @@ export const Aggregate: FunctionComponent<AggregateProps> = (componentProps) =>
|
|
|
45
45
|
};
|
|
46
46
|
|
|
47
47
|
export const AggregateInner: FunctionComponent<AggregateProps> = (componentProps) => {
|
|
48
|
-
const { fields,
|
|
48
|
+
const { fields, lapisFilter, initialSortField, initialSortDirection } = componentProps;
|
|
49
49
|
const lapis = useContext(LapisUrlContext);
|
|
50
50
|
|
|
51
51
|
const { data, error, isLoading } = useQuery(async () => {
|
|
52
|
-
return queryAggregateData(
|
|
53
|
-
|
|
52
|
+
return queryAggregateData(lapisFilter, fields, lapis, {
|
|
53
|
+
field: initialSortField,
|
|
54
|
+
direction: initialSortDirection,
|
|
55
|
+
});
|
|
56
|
+
}, [lapisFilter, fields, lapis]);
|
|
54
57
|
|
|
55
58
|
if (isLoading) {
|
|
56
59
|
return <LoadingDisplay />;
|
|
@@ -73,7 +76,7 @@ type AggregatedDataTabsProps = {
|
|
|
73
76
|
};
|
|
74
77
|
|
|
75
78
|
const AggregatedDataTabs: FunctionComponent<AggregatedDataTabsProps> = ({ data, originalComponentProps }) => {
|
|
76
|
-
const getTab = (view:
|
|
79
|
+
const getTab = (view: AggregateView) => {
|
|
77
80
|
switch (view) {
|
|
78
81
|
case 'table':
|
|
79
82
|
return {
|
|
@@ -8,7 +8,7 @@ import { previewHandles } from '../../../.storybook/preview';
|
|
|
8
8
|
import { LAPIS_URL } from '../../constants';
|
|
9
9
|
import { LapisUrlContext } from '../LapisUrlContext';
|
|
10
10
|
import { dateRangeOptionPresets } from './dateRangeOption';
|
|
11
|
-
import { expectInvalidAttributesErrorMessage } from '../shared/stories/
|
|
11
|
+
import { expectInvalidAttributesErrorMessage } from '../shared/stories/expectErrorMessage';
|
|
12
12
|
|
|
13
13
|
const earliestDate = '1970-01-01';
|
|
14
14
|
|
|
@@ -54,7 +54,7 @@ const meta: Meta<DateRangeSelectorProps> = {
|
|
|
54
54
|
dateRangeOptions: [dateRangeOptionPresets.lastMonth, dateRangeOptionPresets.allTimes, customDateRange],
|
|
55
55
|
earliestDate,
|
|
56
56
|
initialValue: dateRangeOptionPresets.lastMonth.label,
|
|
57
|
-
|
|
57
|
+
lapisDateField: 'aDateColumn',
|
|
58
58
|
width: '100%',
|
|
59
59
|
initialDateFrom: undefined,
|
|
60
60
|
initialDateTo: undefined,
|
|
@@ -66,15 +66,7 @@ export default meta;
|
|
|
66
66
|
export const Primary: StoryObj<DateRangeSelectorProps> = {
|
|
67
67
|
render: (args) => (
|
|
68
68
|
<LapisUrlContext.Provider value={LAPIS_URL}>
|
|
69
|
-
<DateRangeSelector
|
|
70
|
-
dateRangeOptions={args.dateRangeOptions}
|
|
71
|
-
earliestDate={args.earliestDate}
|
|
72
|
-
initialValue={args.initialValue}
|
|
73
|
-
initialDateFrom={args.initialDateFrom}
|
|
74
|
-
initialDateTo={args.initialDateTo}
|
|
75
|
-
width={args.width}
|
|
76
|
-
dateColumn={args.dateColumn}
|
|
77
|
-
/>
|
|
69
|
+
<DateRangeSelector {...args} />
|
|
78
70
|
</LapisUrlContext.Provider>
|
|
79
71
|
),
|
|
80
72
|
};
|
|
@@ -226,7 +218,7 @@ export const WithNoDateColumn: StoryObj<DateRangeSelectorProps> = {
|
|
|
226
218
|
...Primary,
|
|
227
219
|
args: {
|
|
228
220
|
...Primary.args,
|
|
229
|
-
|
|
221
|
+
lapisDateField: '',
|
|
230
222
|
},
|
|
231
223
|
play: async ({ canvasElement, step }) => {
|
|
232
224
|
step('expect error message', async () => {
|
|
@@ -19,7 +19,7 @@ const dateRangeSelectorInnerPropsSchema = z.object({
|
|
|
19
19
|
initialValue: z.string().optional(),
|
|
20
20
|
initialDateFrom: z.string().date().optional(),
|
|
21
21
|
initialDateTo: z.string().date().optional(),
|
|
22
|
-
|
|
22
|
+
lapisDateField: z.string().min(1),
|
|
23
23
|
});
|
|
24
24
|
|
|
25
25
|
const dateRangeSelectorPropsSchema = dateRangeSelectorInnerPropsSchema.extend({
|
|
@@ -46,7 +46,7 @@ export const DateRangeSelectorInner = ({
|
|
|
46
46
|
dateRangeOptions,
|
|
47
47
|
earliestDate = '1900-01-01',
|
|
48
48
|
initialValue,
|
|
49
|
-
|
|
49
|
+
lapisDateField,
|
|
50
50
|
initialDateFrom,
|
|
51
51
|
initialDateTo,
|
|
52
52
|
}: DateRangeSelectorInnerProps) => {
|
|
@@ -171,8 +171,8 @@ export const DateRangeSelectorInner = ({
|
|
|
171
171
|
const dateTo = dateToPicker?.selectedDates[0];
|
|
172
172
|
|
|
173
173
|
const detail = {
|
|
174
|
-
...(dateFrom !== undefined && { [`${
|
|
175
|
-
...(dateTo !== undefined && { [`${
|
|
174
|
+
...(dateFrom !== undefined && { [`${lapisDateField}From`]: toYYYYMMDD(dateFrom) }),
|
|
175
|
+
...(dateTo !== undefined && { [`${lapisDateField}To`]: toYYYYMMDD(dateTo) }),
|
|
176
176
|
};
|
|
177
177
|
|
|
178
178
|
divRef.current?.dispatchEvent(
|
|
@@ -5,7 +5,7 @@ import { previewHandles } from '../../../.storybook/preview';
|
|
|
5
5
|
import { AGGREGATED_ENDPOINT, LAPIS_URL } from '../../constants';
|
|
6
6
|
import aggregatedData from '../../preact/lineageFilter/__mockData__/aggregated.json';
|
|
7
7
|
import { LapisUrlContext } from '../LapisUrlContext';
|
|
8
|
-
import { expectInvalidAttributesErrorMessage } from '../shared/stories/
|
|
8
|
+
import { expectInvalidAttributesErrorMessage } from '../shared/stories/expectErrorMessage';
|
|
9
9
|
|
|
10
10
|
const meta: Meta = {
|
|
11
11
|
title: 'Input/LineageFilter',
|
|
@@ -5,7 +5,7 @@ import { LocationFilter, type LocationFilterProps } from './location-filter';
|
|
|
5
5
|
import { previewHandles } from '../../../.storybook/preview';
|
|
6
6
|
import { AGGREGATED_ENDPOINT, LAPIS_URL } from '../../constants';
|
|
7
7
|
import { LapisUrlContext } from '../LapisUrlContext';
|
|
8
|
-
import { expectInvalidAttributesErrorMessage } from '../shared/stories/
|
|
8
|
+
import { expectInvalidAttributesErrorMessage } from '../shared/stories/expectErrorMessage';
|
|
9
9
|
|
|
10
10
|
const meta: Meta<LocationFilterProps> = {
|
|
11
11
|
title: 'Input/LocationFilter',
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
{
|
|
2
|
+
"data": [
|
|
3
|
+
{
|
|
4
|
+
"count": 1748,
|
|
5
|
+
"division": "Mecklenburg-Vorpommern"
|
|
6
|
+
},
|
|
7
|
+
{
|
|
8
|
+
"count": 10343,
|
|
9
|
+
"division": "Rheinland-Pfalz"
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
"count": 25459,
|
|
13
|
+
"division": "Saxony"
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"count": 6198,
|
|
17
|
+
"division": "Niedersachsen"
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"count": 3846,
|
|
21
|
+
"division": "Berlin"
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
"count": 7,
|
|
25
|
+
"division": "Germany"
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"count": 3778,
|
|
29
|
+
"division": "Brandenburg"
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"count": 1672,
|
|
33
|
+
"division": "Bremen"
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"count": 4969,
|
|
37
|
+
"division": "Hesse"
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"count": 3238,
|
|
41
|
+
"division": "Thuringia"
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"count": 4747,
|
|
45
|
+
"division": "Saxony-Anhalt"
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"count": 109800,
|
|
49
|
+
"division": null
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
"count": 4911,
|
|
53
|
+
"division": "Saarland"
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
"count": 50650,
|
|
57
|
+
"division": "Baden-Wuerttemberg"
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
"count": 50102,
|
|
61
|
+
"division": "North Rhine Westphalia"
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
"count": 9832,
|
|
65
|
+
"division": "Schleswig-Holstein"
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
"count": 28546,
|
|
69
|
+
"division": "Bavaria"
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
"count": 9633,
|
|
73
|
+
"division": "Hamburg"
|
|
74
|
+
}
|
|
75
|
+
],
|
|
76
|
+
"info": {
|
|
77
|
+
"dataVersion": "1733676577",
|
|
78
|
+
"requestId": "7517dbd2-10ed-4a5a-8b2b-a6e08de55982",
|
|
79
|
+
"requestInfo": "sars_cov-2_nextstrain_open on lapis.cov-spectrum.org at 2024-12-09T16:14:08.190102574",
|
|
80
|
+
"reportTo": "Please report to https://github.com/GenSpectrum/LAPIS/issues in case you encounter any unexpected issues. Please include the request ID and the requestInfo in your report.",
|
|
81
|
+
"lapisVersion": "0.3.10"
|
|
82
|
+
}
|
|
83
|
+
}
|
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
{
|
|
2
|
+
"data": [
|
|
3
|
+
{
|
|
4
|
+
"count": 3,
|
|
5
|
+
"country": "Turkey"
|
|
6
|
+
},
|
|
7
|
+
{
|
|
8
|
+
"count": 966167,
|
|
9
|
+
"country": "United Kingdom"
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
"count": 1,
|
|
13
|
+
"country": "Netherlands"
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"count": 138004,
|
|
17
|
+
"country": "Denmark"
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"count": 2611,
|
|
21
|
+
"country": "Brazil"
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
"count": 4,
|
|
25
|
+
"country": "Côte d'Ivoire"
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"count": 4,
|
|
29
|
+
"country": "Finland"
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"count": 204,
|
|
33
|
+
"country": "Djibouti"
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"count": 138,
|
|
37
|
+
"country": "China"
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"count": 5904,
|
|
41
|
+
"country": "Iceland"
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"count": 8,
|
|
45
|
+
"country": "Ireland"
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"count": 180,
|
|
49
|
+
"country": "Malaysia"
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
"count": 855,
|
|
53
|
+
"country": "Kenya"
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
"count": 868,
|
|
57
|
+
"country": "South Africa"
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
"count": 329479,
|
|
61
|
+
"country": "Germany"
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
"count": 5,
|
|
65
|
+
"country": "Spain"
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
"count": 664,
|
|
69
|
+
"country": "Liechtenstein"
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
"count": 2,
|
|
73
|
+
"country": "Chile"
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
"count": 2,
|
|
77
|
+
"country": "Mali"
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
"count": 31,
|
|
81
|
+
"country": "South Korea"
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
"count": 13540,
|
|
85
|
+
"country": "Slovakia"
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
"count": 1,
|
|
89
|
+
"country": "Norway"
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
"count": 4949,
|
|
93
|
+
"country": "New Zealand"
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
"count": 354,
|
|
97
|
+
"country": "Laos"
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
"count": 5,
|
|
101
|
+
"country": "Saudi Arabia"
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
"count": 566,
|
|
105
|
+
"country": "Vietnam"
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
"count": 37,
|
|
109
|
+
"country": "Australia"
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
"count": 25,
|
|
113
|
+
"country": "Cameroon"
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
"count": 54,
|
|
117
|
+
"country": "Gambia"
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
"count": 1310,
|
|
121
|
+
"country": "Argentina"
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
"count": 548918,
|
|
125
|
+
"country": "USA"
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
"count": 4562,
|
|
129
|
+
"country": "Mexico"
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
"count": 28636,
|
|
133
|
+
"country": "Switzerland"
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
"count": 9,
|
|
137
|
+
"country": "Palau"
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
"count": 6,
|
|
141
|
+
"country": "Taiwan"
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
"count": 181,
|
|
145
|
+
"country": "Iraq"
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
"count": 7547,
|
|
149
|
+
"country": "France"
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
"count": 4536,
|
|
153
|
+
"country": "Japan"
|
|
154
|
+
},
|
|
155
|
+
{
|
|
156
|
+
"count": 1640,
|
|
157
|
+
"country": "Thailand"
|
|
158
|
+
},
|
|
159
|
+
{
|
|
160
|
+
"count": 59,
|
|
161
|
+
"country": "Colombia"
|
|
162
|
+
},
|
|
163
|
+
{
|
|
164
|
+
"count": 243,
|
|
165
|
+
"country": "India"
|
|
166
|
+
},
|
|
167
|
+
{
|
|
168
|
+
"count": 132,
|
|
169
|
+
"country": "Italy"
|
|
170
|
+
},
|
|
171
|
+
{
|
|
172
|
+
"count": 92,
|
|
173
|
+
"country": "Mongolia"
|
|
174
|
+
},
|
|
175
|
+
{
|
|
176
|
+
"count": 2,
|
|
177
|
+
"country": "Libya"
|
|
178
|
+
},
|
|
179
|
+
{
|
|
180
|
+
"count": 216,
|
|
181
|
+
"country": "Peru"
|
|
182
|
+
},
|
|
183
|
+
{
|
|
184
|
+
"count": 4,
|
|
185
|
+
"country": "Singapore"
|
|
186
|
+
},
|
|
187
|
+
{
|
|
188
|
+
"count": 25,
|
|
189
|
+
"country": "Myanmar"
|
|
190
|
+
},
|
|
191
|
+
{
|
|
192
|
+
"count": 395,
|
|
193
|
+
"country": "Bangladesh"
|
|
194
|
+
},
|
|
195
|
+
{
|
|
196
|
+
"count": 37,
|
|
197
|
+
"country": "Malawi"
|
|
198
|
+
},
|
|
199
|
+
{
|
|
200
|
+
"count": 3669,
|
|
201
|
+
"country": "Bahrain"
|
|
202
|
+
},
|
|
203
|
+
{
|
|
204
|
+
"count": 171,
|
|
205
|
+
"country": "Haiti"
|
|
206
|
+
},
|
|
207
|
+
{
|
|
208
|
+
"count": 40,
|
|
209
|
+
"country": "Palestine"
|
|
210
|
+
},
|
|
211
|
+
{
|
|
212
|
+
"count": 499,
|
|
213
|
+
"country": "Hong Kong"
|
|
214
|
+
},
|
|
215
|
+
{
|
|
216
|
+
"count": 19,
|
|
217
|
+
"country": "Austria"
|
|
218
|
+
},
|
|
219
|
+
{
|
|
220
|
+
"count": 9,
|
|
221
|
+
"country": "Jamaica"
|
|
222
|
+
},
|
|
223
|
+
{
|
|
224
|
+
"count": 83,
|
|
225
|
+
"country": "Russia"
|
|
226
|
+
},
|
|
227
|
+
{
|
|
228
|
+
"count": 197,
|
|
229
|
+
"country": "Seychelles"
|
|
230
|
+
},
|
|
231
|
+
{
|
|
232
|
+
"count": 20,
|
|
233
|
+
"country": "Nigeria"
|
|
234
|
+
},
|
|
235
|
+
{
|
|
236
|
+
"count": 6,
|
|
237
|
+
"country": "Canada"
|
|
238
|
+
},
|
|
239
|
+
{
|
|
240
|
+
"count": 208,
|
|
241
|
+
"country": "Kazakhstan"
|
|
242
|
+
},
|
|
243
|
+
{
|
|
244
|
+
"count": 34,
|
|
245
|
+
"country": "Benin"
|
|
246
|
+
},
|
|
247
|
+
{
|
|
248
|
+
"count": 113,
|
|
249
|
+
"country": "Pakistan"
|
|
250
|
+
}
|
|
251
|
+
],
|
|
252
|
+
"info": {
|
|
253
|
+
"dataVersion": "1733676577",
|
|
254
|
+
"requestId": "91268a09-b192-42da-b7c6-bcfc72bba982",
|
|
255
|
+
"requestInfo": "sars_cov-2_nextstrain_open on lapis.cov-spectrum.org at 2024-12-09T15:45:35.460317204",
|
|
256
|
+
"reportTo": "Please report to https://github.com/GenSpectrum/LAPIS/issues in case you encounter any unexpected issues. Please include the request ID and the requestInfo in your report.",
|
|
257
|
+
"lapisVersion": "0.3.10"
|
|
258
|
+
}
|
|
259
|
+
}
|