@jbrowse/plugin-variants 3.1.0 → 3.3.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/dist/MultiLinearVariantDisplay/components/VariantDisplayComponent.js +3 -3
- package/dist/MultiLinearVariantDisplay/index.js +1 -1
- package/dist/MultiLinearVariantDisplay/model.d.ts +58 -3
- package/dist/MultiLinearVariantDisplay/model.js +0 -1
- package/dist/MultiLinearVariantDisplay/renderSvg.js +2 -2
- package/dist/MultiLinearVariantMatrixDisplay/components/LinesConnectingMatrixToGenomicPosition.js +15 -5
- package/dist/MultiLinearVariantMatrixDisplay/components/VariantDisplayComponent.js +3 -3
- package/dist/MultiLinearVariantMatrixDisplay/index.js +1 -1
- package/dist/MultiLinearVariantMatrixDisplay/model.d.ts +59 -2
- package/dist/MultiLinearVariantMatrixDisplay/model.js +5 -1
- package/dist/MultiLinearVariantMatrixDisplay/renderSvg.js +2 -2
- package/dist/MultiLinearVariantMatrixRenderer/{LinearVariantMatrixRenderer.d.ts → MultiLinearVariantMatrixRenderer.d.ts} +7 -3
- package/dist/MultiLinearVariantMatrixRenderer/components/MultiLinearVariantMatrixRendering.d.ts +8 -0
- package/dist/MultiLinearVariantMatrixRenderer/components/MultiLinearVariantMatrixRendering.js +41 -0
- package/dist/MultiLinearVariantMatrixRenderer/index.js +4 -4
- package/dist/MultiLinearVariantMatrixRenderer/makeImageData.d.ts +2 -2
- package/dist/MultiLinearVariantMatrixRenderer/makeImageData.js +15 -8
- package/dist/MultiLinearVariantMatrixRenderer/types.d.ts +2 -4
- package/dist/MultiLinearVariantRenderer/MultiVariantRenderer.d.ts +30 -1
- package/dist/MultiLinearVariantRenderer/MultiVariantRenderer.js +11 -5
- package/dist/MultiLinearVariantRenderer/components/{MultiVariantRendering.d.ts → MultiLinearVariantRendering.d.ts} +10 -4
- package/dist/MultiLinearVariantRenderer/{MultiVariantRendering.js → components/MultiLinearVariantRendering.js} +25 -7
- package/dist/MultiLinearVariantRenderer/components/util.d.ts +1 -0
- package/dist/MultiLinearVariantRenderer/components/util.js +15 -0
- package/dist/MultiLinearVariantRenderer/index.js +2 -2
- package/dist/MultiLinearVariantRenderer/makeImageData.d.ts +9 -0
- package/dist/MultiLinearVariantRenderer/makeImageData.js +63 -23
- package/dist/MultiLinearVariantRenderer/types.d.ts +1 -0
- package/dist/SplitVcfTabixAdapter/configSchema.js +4 -2
- package/dist/VariantFeatureWidget/AltFormatter.d.ts +4 -0
- package/dist/VariantFeatureWidget/AltFormatter.js +13 -0
- package/dist/VariantFeatureWidget/Checkbox2.js +1 -8
- package/dist/VariantFeatureWidget/Formatter.d.ts +3 -0
- package/dist/VariantFeatureWidget/Formatter.js +23 -0
- package/dist/VariantFeatureWidget/{VariantConsequenceDataGridWrapper.js → VariantConsequence/VariantConsequenceDataGridWrapper.js} +3 -5
- package/dist/VariantFeatureWidget/VariantFeatureWidget.js +7 -2
- package/dist/VariantFeatureWidget/VariantSampleGrid/VariantGenotypeFrequencyTable.d.ts +4 -0
- package/dist/VariantFeatureWidget/VariantSampleGrid/VariantGenotypeFrequencyTable.js +80 -0
- package/dist/VariantFeatureWidget/VariantSampleGrid/VariantSampleGrid.d.ts +3 -9
- package/dist/VariantFeatureWidget/VariantSampleGrid/VariantSampleGrid.js +41 -20
- package/dist/VariantFeatureWidget/VariantSampleGrid/types.d.ts +21 -0
- package/dist/VariantFeatureWidget/VariantSampleGrid/types.js +2 -0
- package/dist/VariantFeatureWidget/VariantSampleGrid/util.d.ts +1 -0
- package/dist/VariantFeatureWidget/VariantSampleGrid/util.js +14 -0
- package/dist/VariantRPC/MultiVariantClusterGenotypeMatrix.d.ts +14 -0
- package/dist/VariantRPC/MultiVariantClusterGenotypeMatrix.js +30 -0
- package/dist/VariantRPC/MultiVariantGetGenotypeMatrix.d.ts +2 -13
- package/dist/VariantRPC/MultiVariantGetGenotypeMatrix.js +5 -57
- package/dist/VariantRPC/MultiVariantGetSimplifiedFeatures.d.ts +3 -10
- package/dist/VariantRPC/MultiVariantGetSimplifiedFeatures.js +15 -10
- package/dist/VariantRPC/getGenotypeMatrix.d.ts +6 -0
- package/dist/VariantRPC/getGenotypeMatrix.js +60 -0
- package/dist/VariantRPC/types.d.ts +36 -0
- package/dist/VariantRPC/types.js +2 -0
- package/dist/VcfAdapter/VcfAdapter.js +6 -3
- package/dist/VcfFeature/index.js +0 -1
- package/dist/VcfFeature/util.d.ts +2 -0
- package/dist/VcfFeature/util.js +125 -27
- package/dist/VcfTabixAdapter/VcfTabixAdapter.js +17 -7
- package/dist/getMultiVariantFeaturesAutorun.d.ts +2 -0
- package/dist/getMultiVariantFeaturesAutorun.js +9 -2
- package/dist/getMultiVariantSourcesAutorun.js +3 -2
- package/dist/index.js +2 -0
- package/dist/shared/MultiVariantBaseModel.d.ts +59 -3
- package/dist/shared/MultiVariantBaseModel.js +95 -37
- package/dist/shared/components/AddFiltersDialog.d.ts +9 -0
- package/dist/shared/components/AddFiltersDialog.js +61 -0
- package/dist/shared/components/MultiVariantBaseDisplayComponent.d.ts +5 -0
- package/dist/shared/components/MultiVariantBaseDisplayComponent.js +29 -0
- package/dist/shared/components/MultiVariantClusterDialog/ClusterDialog.d.ts +6 -0
- package/dist/shared/components/MultiVariantClusterDialog/ClusterDialog.js +29 -0
- package/dist/shared/components/MultiVariantClusterDialog/ClusterDialogAuto.d.ts +7 -0
- package/dist/shared/components/MultiVariantClusterDialog/ClusterDialogAuto.js +74 -0
- package/dist/shared/components/MultiVariantClusterDialog/ClusterDialogManual.d.ts +7 -0
- package/dist/shared/components/MultiVariantClusterDialog/ClusterDialogManual.js +145 -0
- package/dist/shared/components/MultiVariantClusterDialog/types.d.ts +10 -0
- package/dist/shared/components/MultiVariantClusterDialog/types.js +2 -0
- package/{esm/shared/components/ColorLegend.d.ts → dist/shared/components/MultiVariantColorLegend.d.ts} +2 -2
- package/dist/shared/components/{ColorLegend.js → MultiVariantColorLegend.js} +5 -3
- package/dist/shared/components/MultiVariantCrosshairs.d.ts +7 -0
- package/dist/shared/components/MultiVariantCrosshairs.js +40 -0
- package/dist/shared/components/MultiVariantLegendBar.d.ts +7 -0
- package/dist/shared/components/{LegendBar.js → MultiVariantLegendBar.js} +2 -2
- package/dist/shared/components/MultiVariantTooltip.d.ts +4 -0
- package/dist/shared/components/MultiVariantTooltip.js +3 -2
- package/dist/shared/components/RectBg.js +4 -2
- package/dist/shared/components/SetColorDialog.js +1 -1
- package/dist/shared/components/SourcesDataGrid.d.ts +2 -1
- package/dist/shared/components/SourcesDataGrid.js +2 -2
- package/dist/shared/components/SourcesGrid.js +1 -1
- package/dist/shared/components/SourcesGridHeader.d.ts +2 -1
- package/dist/shared/components/SourcesGridHeader.js +2 -2
- package/dist/shared/drawAlleleCount.d.ts +1 -1
- package/dist/shared/drawAlleleCount.js +29 -5
- package/dist/shared/drawPhased.d.ts +1 -1
- package/dist/shared/drawPhased.js +14 -10
- package/dist/shared/getSources.d.ts +15 -0
- package/dist/shared/getSources.js +34 -0
- package/dist/shared/minorAlleleFrequencyUtils.d.ts +6 -1
- package/dist/shared/minorAlleleFrequencyUtils.js +4 -5
- package/dist/shared/sourcesGridUtils.d.ts +3 -2
- package/esm/MultiLinearVariantDisplay/components/VariantDisplayComponent.js +2 -2
- package/esm/MultiLinearVariantDisplay/index.js +1 -1
- package/esm/MultiLinearVariantDisplay/model.d.ts +58 -3
- package/esm/MultiLinearVariantDisplay/model.js +0 -1
- package/esm/MultiLinearVariantDisplay/renderSvg.js +1 -1
- package/esm/MultiLinearVariantMatrixDisplay/components/LinesConnectingMatrixToGenomicPosition.js +15 -8
- package/esm/MultiLinearVariantMatrixDisplay/components/VariantDisplayComponent.js +2 -2
- package/esm/MultiLinearVariantMatrixDisplay/index.js +1 -1
- package/esm/MultiLinearVariantMatrixDisplay/model.d.ts +59 -2
- package/esm/MultiLinearVariantMatrixDisplay/model.js +5 -1
- package/esm/MultiLinearVariantMatrixDisplay/renderSvg.js +1 -1
- package/esm/MultiLinearVariantMatrixRenderer/{LinearVariantMatrixRenderer.d.ts → MultiLinearVariantMatrixRenderer.d.ts} +7 -3
- package/esm/MultiLinearVariantMatrixRenderer/components/MultiLinearVariantMatrixRendering.d.ts +8 -0
- package/esm/MultiLinearVariantMatrixRenderer/components/MultiLinearVariantMatrixRendering.js +39 -0
- package/esm/MultiLinearVariantMatrixRenderer/index.js +4 -4
- package/esm/MultiLinearVariantMatrixRenderer/makeImageData.d.ts +2 -2
- package/esm/MultiLinearVariantMatrixRenderer/makeImageData.js +16 -9
- package/esm/MultiLinearVariantMatrixRenderer/types.d.ts +2 -4
- package/esm/MultiLinearVariantRenderer/MultiVariantRenderer.d.ts +30 -1
- package/esm/MultiLinearVariantRenderer/MultiVariantRenderer.js +11 -5
- package/esm/MultiLinearVariantRenderer/components/{MultiVariantRendering.d.ts → MultiLinearVariantRendering.d.ts} +10 -4
- package/esm/MultiLinearVariantRenderer/components/{MultiVariantRendering.js → MultiLinearVariantRendering.js} +25 -7
- package/esm/MultiLinearVariantRenderer/components/util.d.ts +1 -0
- package/esm/MultiLinearVariantRenderer/components/util.js +12 -0
- package/esm/MultiLinearVariantRenderer/index.js +1 -1
- package/esm/MultiLinearVariantRenderer/makeImageData.d.ts +9 -0
- package/esm/MultiLinearVariantRenderer/makeImageData.js +64 -24
- package/esm/MultiLinearVariantRenderer/types.d.ts +1 -0
- package/esm/SplitVcfTabixAdapter/configSchema.js +4 -2
- package/esm/VariantFeatureWidget/AltFormatter.d.ts +4 -0
- package/esm/VariantFeatureWidget/AltFormatter.js +10 -0
- package/esm/VariantFeatureWidget/Checkbox2.js +2 -9
- package/esm/VariantFeatureWidget/Formatter.d.ts +3 -0
- package/esm/VariantFeatureWidget/Formatter.js +17 -0
- package/esm/VariantFeatureWidget/{VariantConsequenceDataGridWrapper.js → VariantConsequence/VariantConsequenceDataGridWrapper.js} +4 -6
- package/esm/VariantFeatureWidget/VariantFeatureWidget.js +7 -2
- package/esm/VariantFeatureWidget/VariantSampleGrid/VariantGenotypeFrequencyTable.d.ts +4 -0
- package/esm/VariantFeatureWidget/VariantSampleGrid/VariantGenotypeFrequencyTable.js +74 -0
- package/esm/VariantFeatureWidget/VariantSampleGrid/VariantSampleGrid.d.ts +3 -9
- package/esm/VariantFeatureWidget/VariantSampleGrid/VariantSampleGrid.js +43 -22
- package/esm/VariantFeatureWidget/VariantSampleGrid/types.d.ts +21 -0
- package/esm/VariantFeatureWidget/VariantSampleGrid/types.js +1 -0
- package/esm/VariantFeatureWidget/VariantSampleGrid/util.d.ts +1 -0
- package/esm/VariantFeatureWidget/VariantSampleGrid/util.js +11 -0
- package/esm/VariantRPC/MultiVariantClusterGenotypeMatrix.d.ts +14 -0
- package/esm/VariantRPC/MultiVariantClusterGenotypeMatrix.js +23 -0
- package/esm/VariantRPC/MultiVariantGetGenotypeMatrix.d.ts +2 -13
- package/esm/VariantRPC/MultiVariantGetGenotypeMatrix.js +5 -57
- package/esm/VariantRPC/MultiVariantGetSimplifiedFeatures.d.ts +3 -10
- package/esm/VariantRPC/MultiVariantGetSimplifiedFeatures.js +15 -10
- package/esm/VariantRPC/getGenotypeMatrix.d.ts +6 -0
- package/esm/VariantRPC/getGenotypeMatrix.js +57 -0
- package/esm/VariantRPC/types.d.ts +36 -0
- package/esm/VariantRPC/types.js +1 -0
- package/esm/VcfAdapter/VcfAdapter.js +7 -4
- package/esm/VcfFeature/index.js +0 -1
- package/esm/VcfFeature/util.d.ts +2 -0
- package/esm/VcfFeature/util.js +123 -27
- package/esm/VcfTabixAdapter/VcfTabixAdapter.js +18 -8
- package/esm/getMultiVariantFeaturesAutorun.d.ts +2 -0
- package/esm/getMultiVariantFeaturesAutorun.js +9 -2
- package/esm/getMultiVariantSourcesAutorun.js +3 -2
- package/esm/index.js +2 -0
- package/esm/shared/MultiVariantBaseModel.d.ts +59 -3
- package/esm/shared/MultiVariantBaseModel.js +97 -39
- package/esm/shared/components/AddFiltersDialog.d.ts +9 -0
- package/esm/shared/components/AddFiltersDialog.js +59 -0
- package/esm/shared/components/MultiVariantBaseDisplayComponent.d.ts +5 -0
- package/esm/shared/components/MultiVariantBaseDisplayComponent.js +24 -0
- package/esm/shared/components/MultiVariantClusterDialog/ClusterDialog.d.ts +6 -0
- package/esm/shared/components/MultiVariantClusterDialog/ClusterDialog.js +24 -0
- package/esm/shared/components/MultiVariantClusterDialog/ClusterDialogAuto.d.ts +7 -0
- package/esm/shared/components/MultiVariantClusterDialog/ClusterDialogAuto.js +72 -0
- package/esm/shared/components/MultiVariantClusterDialog/ClusterDialogManual.d.ts +7 -0
- package/esm/shared/components/MultiVariantClusterDialog/ClusterDialogManual.js +140 -0
- package/esm/shared/components/MultiVariantClusterDialog/types.d.ts +10 -0
- package/esm/shared/components/MultiVariantClusterDialog/types.js +1 -0
- package/{dist/shared/components/ColorLegend.d.ts → esm/shared/components/MultiVariantColorLegend.d.ts} +2 -2
- package/esm/shared/components/{ColorLegend.js → MultiVariantColorLegend.js} +6 -4
- package/esm/shared/components/MultiVariantCrosshairs.d.ts +7 -0
- package/esm/shared/components/MultiVariantCrosshairs.js +35 -0
- package/esm/shared/components/MultiVariantLegendBar.d.ts +7 -0
- package/esm/shared/components/{LegendBar.js → MultiVariantLegendBar.js} +1 -1
- package/esm/shared/components/MultiVariantTooltip.d.ts +4 -0
- package/esm/shared/components/MultiVariantTooltip.js +3 -2
- package/esm/shared/components/RectBg.js +4 -2
- package/esm/shared/components/SetColorDialog.js +1 -1
- package/esm/shared/components/SourcesDataGrid.d.ts +2 -1
- package/esm/shared/components/SourcesDataGrid.js +2 -2
- package/esm/shared/components/SourcesGrid.js +1 -1
- package/esm/shared/components/SourcesGridHeader.d.ts +2 -1
- package/esm/shared/components/SourcesGridHeader.js +2 -2
- package/esm/shared/drawAlleleCount.d.ts +1 -1
- package/esm/shared/drawAlleleCount.js +29 -5
- package/esm/shared/drawPhased.d.ts +1 -1
- package/esm/shared/drawPhased.js +14 -10
- package/esm/shared/getSources.d.ts +15 -0
- package/esm/shared/getSources.js +31 -0
- package/esm/shared/minorAlleleFrequencyUtils.d.ts +6 -1
- package/esm/shared/minorAlleleFrequencyUtils.js +5 -6
- package/esm/shared/sourcesGridUtils.d.ts +3 -2
- package/package.json +10 -9
- package/dist/MultiLinearVariantDisplay/components/Crosshair.d.ts +0 -7
- package/dist/MultiLinearVariantDisplay/components/Crosshair.js +0 -35
- package/dist/MultiLinearVariantMatrixDisplay/components/Crosshair.d.ts +0 -7
- package/dist/MultiLinearVariantMatrixDisplay/components/Crosshair.js +0 -28
- package/dist/MultiLinearVariantMatrixRenderer/components/LinearVariantMatrixRendering.d.ts +0 -7
- package/dist/MultiLinearVariantMatrixRenderer/components/LinearVariantMatrixRendering.js +0 -38
- package/dist/MultiLinearVariantRenderer/MultiVariantRendering.d.ts +0 -22
- package/dist/MultiLinearVariantRenderer/components/MultiVariantRendering.js +0 -52
- package/dist/VariantFeatureWidget/VariantConsequencePanel.d.ts +0 -5
- package/dist/VariantFeatureWidget/VariantConsequencePanel.js +0 -15
- package/dist/shared/components/ClusterDialog.d.ts +0 -11
- package/dist/shared/components/ClusterDialog.js +0 -113
- package/dist/shared/components/LegendBar.d.ts +0 -18
- package/esm/MultiLinearVariantDisplay/components/Crosshair.d.ts +0 -7
- package/esm/MultiLinearVariantDisplay/components/Crosshair.js +0 -30
- package/esm/MultiLinearVariantMatrixDisplay/components/Crosshair.d.ts +0 -7
- package/esm/MultiLinearVariantMatrixDisplay/components/Crosshair.js +0 -23
- package/esm/MultiLinearVariantMatrixRenderer/components/LinearVariantMatrixRendering.d.ts +0 -7
- package/esm/MultiLinearVariantMatrixRenderer/components/LinearVariantMatrixRendering.js +0 -36
- package/esm/MultiLinearVariantRenderer/MultiVariantRendering.d.ts +0 -22
- package/esm/MultiLinearVariantRenderer/MultiVariantRendering.js +0 -47
- package/esm/VariantFeatureWidget/VariantConsequencePanel.d.ts +0 -5
- package/esm/VariantFeatureWidget/VariantConsequencePanel.js +0 -9
- package/esm/shared/components/ClusterDialog.d.ts +0 -11
- package/esm/shared/components/ClusterDialog.js +0 -107
- package/esm/shared/components/LegendBar.d.ts +0 -18
- /package/dist/MultiLinearVariantMatrixRenderer/{LinearVariantMatrixRenderer.js → MultiLinearVariantMatrixRenderer.js} +0 -0
- /package/dist/VariantFeatureWidget/{VariantConsequenceDataGrid.d.ts → VariantConsequence/VariantConsequenceDataGrid.d.ts} +0 -0
- /package/dist/VariantFeatureWidget/{VariantConsequenceDataGrid.js → VariantConsequence/VariantConsequenceDataGrid.js} +0 -0
- /package/dist/VariantFeatureWidget/{VariantConsequenceDataGridWrapper.d.ts → VariantConsequence/VariantConsequenceDataGridWrapper.d.ts} +0 -0
- /package/esm/MultiLinearVariantMatrixRenderer/{LinearVariantMatrixRenderer.js → MultiLinearVariantMatrixRenderer.js} +0 -0
- /package/esm/VariantFeatureWidget/{VariantConsequenceDataGrid.d.ts → VariantConsequence/VariantConsequenceDataGrid.d.ts} +0 -0
- /package/esm/VariantFeatureWidget/{VariantConsequenceDataGrid.js → VariantConsequence/VariantConsequenceDataGrid.js} +0 -0
- /package/esm/VariantFeatureWidget/{VariantConsequenceDataGridWrapper.d.ts → VariantConsequence/VariantConsequenceDataGridWrapper.d.ts} +0 -0
|
@@ -1,17 +1,9 @@
|
|
|
1
1
|
import RpcMethodTypeWithFiltersAndRenameRegions from '@jbrowse/core/pluggableElementTypes/RpcMethodTypeWithFiltersAndRenameRegions';
|
|
2
|
+
import type { GetSimplifiedFeaturesArgs } from './types';
|
|
2
3
|
import type { SampleInfo } from '../shared/types';
|
|
3
|
-
import type { AnyConfigurationModel } from '@jbrowse/core/configuration';
|
|
4
|
-
import type { Region } from '@jbrowse/core/util';
|
|
5
4
|
export declare class MultiVariantGetSimplifiedFeatures extends RpcMethodTypeWithFiltersAndRenameRegions {
|
|
6
5
|
name: string;
|
|
7
|
-
execute(args: {
|
|
8
|
-
adapterConfig: AnyConfigurationModel;
|
|
9
|
-
stopToken?: string;
|
|
10
|
-
sessionId: string;
|
|
11
|
-
headers?: Record<string, string>;
|
|
12
|
-
regions: Region[];
|
|
13
|
-
bpPerPx: number;
|
|
14
|
-
}, rpcDriverClassName: string): Promise<{
|
|
6
|
+
execute(args: GetSimplifiedFeaturesArgs, rpcDriverClassName: string): Promise<{
|
|
15
7
|
hasPhased: boolean;
|
|
16
8
|
sampleInfo: Record<string, SampleInfo>;
|
|
17
9
|
features: {
|
|
@@ -20,6 +12,7 @@ export declare class MultiVariantGetSimplifiedFeatures extends RpcMethodTypeWith
|
|
|
20
12
|
start: number;
|
|
21
13
|
end: number;
|
|
22
14
|
refName: string;
|
|
15
|
+
name: any;
|
|
23
16
|
};
|
|
24
17
|
}[];
|
|
25
18
|
}>;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { getAdapter } from '@jbrowse/core/data_adapters/dataAdapterCache';
|
|
2
2
|
import RpcMethodTypeWithFiltersAndRenameRegions from '@jbrowse/core/pluggableElementTypes/RpcMethodTypeWithFiltersAndRenameRegions';
|
|
3
|
+
import { forEachWithStopTokenCheck } from '@jbrowse/core/util';
|
|
3
4
|
import { firstValueFrom, toArray } from 'rxjs';
|
|
4
5
|
import { getFeaturesThatPassMinorAlleleFrequencyFilter } from '../shared/minorAlleleFrequencyUtils';
|
|
5
6
|
export class MultiVariantGetSimplifiedFeatures extends RpcMethodTypeWithFiltersAndRenameRegions {
|
|
@@ -8,18 +9,21 @@ export class MultiVariantGetSimplifiedFeatures extends RpcMethodTypeWithFiltersA
|
|
|
8
9
|
this.name = 'MultiVariantGetSimplifiedFeatures';
|
|
9
10
|
}
|
|
10
11
|
async execute(args, rpcDriverClassName) {
|
|
11
|
-
var _a, _b;
|
|
12
|
-
const pm = this.pluginManager;
|
|
13
12
|
const deserializedArgs = await this.deserializeArguments(args, rpcDriverClassName);
|
|
14
|
-
const { minorAlleleFrequencyFilter, regions, adapterConfig, sessionId } = deserializedArgs;
|
|
15
|
-
const { dataAdapter } = await getAdapter(
|
|
16
|
-
const
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
13
|
+
const { lengthCutoffFilter, minorAlleleFrequencyFilter, regions, adapterConfig, stopToken, sessionId, } = deserializedArgs;
|
|
14
|
+
const { dataAdapter } = await getAdapter(this.pluginManager, sessionId, adapterConfig);
|
|
15
|
+
const features = getFeaturesThatPassMinorAlleleFrequencyFilter({
|
|
16
|
+
minorAlleleFrequencyFilter,
|
|
17
|
+
lengthCutoffFilter,
|
|
18
|
+
stopToken,
|
|
19
|
+
features: await firstValueFrom(dataAdapter
|
|
20
|
+
.getFeaturesInMultipleRegions(regions, deserializedArgs)
|
|
21
|
+
.pipe(toArray())),
|
|
22
|
+
});
|
|
20
23
|
const sampleInfo = {};
|
|
21
24
|
let hasPhased = false;
|
|
22
|
-
|
|
25
|
+
forEachWithStopTokenCheck(features, stopToken, ({ feature }) => {
|
|
26
|
+
var _a, _b;
|
|
23
27
|
const samp = feature.get('genotypes');
|
|
24
28
|
for (const [key, val] of Object.entries(samp)) {
|
|
25
29
|
const isPhased = val.includes('|');
|
|
@@ -29,7 +33,7 @@ export class MultiVariantGetSimplifiedFeatures extends RpcMethodTypeWithFiltersA
|
|
|
29
33
|
isPhased: ((_b = sampleInfo[key]) === null || _b === void 0 ? void 0 : _b.isPhased) || isPhased,
|
|
30
34
|
};
|
|
31
35
|
}
|
|
32
|
-
}
|
|
36
|
+
});
|
|
33
37
|
return {
|
|
34
38
|
hasPhased,
|
|
35
39
|
sampleInfo,
|
|
@@ -39,6 +43,7 @@ export class MultiVariantGetSimplifiedFeatures extends RpcMethodTypeWithFiltersA
|
|
|
39
43
|
start: feature.get('start'),
|
|
40
44
|
end: feature.get('end'),
|
|
41
45
|
refName: feature.get('refName'),
|
|
46
|
+
name: feature.get('name'),
|
|
42
47
|
},
|
|
43
48
|
})),
|
|
44
49
|
};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { GetGenotypeMatrixArgs } from './types';
|
|
2
|
+
import type PluginManager from '@jbrowse/core/PluginManager';
|
|
3
|
+
export declare function getGenotypeMatrix({ pluginManager, args, }: {
|
|
4
|
+
pluginManager: PluginManager;
|
|
5
|
+
args: GetGenotypeMatrixArgs;
|
|
6
|
+
}): Promise<Record<string, number[]>>;
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { getAdapter } from '@jbrowse/core/data_adapters/dataAdapterCache';
|
|
2
|
+
import { forEachWithStopTokenCheck } from '@jbrowse/core/util';
|
|
3
|
+
import { firstValueFrom, toArray } from 'rxjs';
|
|
4
|
+
import { getFeaturesThatPassMinorAlleleFrequencyFilter } from '../shared/minorAlleleFrequencyUtils';
|
|
5
|
+
export async function getGenotypeMatrix({ pluginManager, args, }) {
|
|
6
|
+
const { sources, minorAlleleFrequencyFilter, regions, adapterConfig, sessionId, lengthCutoffFilter, stopToken, } = args;
|
|
7
|
+
const adapter = await getAdapter(pluginManager, sessionId, adapterConfig);
|
|
8
|
+
const dataAdapter = adapter.dataAdapter;
|
|
9
|
+
const genotypeFactor = new Set();
|
|
10
|
+
const mafs = getFeaturesThatPassMinorAlleleFrequencyFilter({
|
|
11
|
+
minorAlleleFrequencyFilter,
|
|
12
|
+
lengthCutoffFilter,
|
|
13
|
+
stopToken,
|
|
14
|
+
features: await firstValueFrom(dataAdapter.getFeaturesInMultipleRegions(regions, args).pipe(toArray())),
|
|
15
|
+
});
|
|
16
|
+
for (const { alleleCounts } of mafs) {
|
|
17
|
+
for (const alt of alleleCounts.keys()) {
|
|
18
|
+
genotypeFactor.add(alt);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
const rows = {};
|
|
22
|
+
forEachWithStopTokenCheck(mafs, stopToken, ({ feature }) => {
|
|
23
|
+
const genotypes = feature.get('genotypes');
|
|
24
|
+
for (const { name } of sources) {
|
|
25
|
+
if (!rows[name]) {
|
|
26
|
+
rows[name] = [];
|
|
27
|
+
}
|
|
28
|
+
const val = genotypes[name];
|
|
29
|
+
const alleles = val.split(/[/|]/);
|
|
30
|
+
let genotypeStatus = 0;
|
|
31
|
+
let nonRefCount = 0;
|
|
32
|
+
let uncalledCount = 0;
|
|
33
|
+
for (const l of alleles) {
|
|
34
|
+
if (l === '.') {
|
|
35
|
+
uncalledCount++;
|
|
36
|
+
}
|
|
37
|
+
else if (l !== '0') {
|
|
38
|
+
nonRefCount++;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
if (uncalledCount === alleles.length) {
|
|
42
|
+
genotypeStatus = -1;
|
|
43
|
+
}
|
|
44
|
+
else if (nonRefCount === 0) {
|
|
45
|
+
genotypeStatus = 0;
|
|
46
|
+
}
|
|
47
|
+
else if (nonRefCount === alleles.length) {
|
|
48
|
+
genotypeStatus = 2;
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
genotypeStatus = 1;
|
|
52
|
+
}
|
|
53
|
+
rows[name].push(genotypeStatus);
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
return rows;
|
|
57
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { Source } from '../shared/types';
|
|
2
|
+
import type { AnyConfigurationModel } from '@jbrowse/core/configuration';
|
|
3
|
+
import type { Region } from '@jbrowse/core/util';
|
|
4
|
+
export interface GetGenotypeMatrixArgs {
|
|
5
|
+
sources: Source[];
|
|
6
|
+
minorAlleleFrequencyFilter: number;
|
|
7
|
+
adapterConfig: AnyConfigurationModel;
|
|
8
|
+
stopToken?: string;
|
|
9
|
+
sessionId: string;
|
|
10
|
+
headers?: Record<string, string>;
|
|
11
|
+
regions: Region[];
|
|
12
|
+
bpPerPx: number;
|
|
13
|
+
lengthCutoffFilter: number;
|
|
14
|
+
}
|
|
15
|
+
export interface GetSimplifiedFeaturesArgs {
|
|
16
|
+
adapterConfig: AnyConfigurationModel;
|
|
17
|
+
stopToken?: string;
|
|
18
|
+
sessionId: string;
|
|
19
|
+
headers?: Record<string, string>;
|
|
20
|
+
regions: Region[];
|
|
21
|
+
bpPerPx: number;
|
|
22
|
+
minorAlleleFrequencyFilter: number;
|
|
23
|
+
lengthCutoffFilter: number;
|
|
24
|
+
}
|
|
25
|
+
export interface ClusterGenotypeMatrixArgs {
|
|
26
|
+
adapterConfig: AnyConfigurationModel;
|
|
27
|
+
stopToken?: string;
|
|
28
|
+
statusCallback: (arg: string) => void;
|
|
29
|
+
sessionId: string;
|
|
30
|
+
headers?: Record<string, string>;
|
|
31
|
+
regions: Region[];
|
|
32
|
+
bpPerPx: number;
|
|
33
|
+
sources: Source[];
|
|
34
|
+
minorAlleleFrequencyFilter: number;
|
|
35
|
+
lengthCutoffFilter: number;
|
|
36
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import IntervalTree from '@flatten-js/interval-tree';
|
|
2
2
|
import VcfParser from '@gmod/vcf';
|
|
3
3
|
import { BaseFeatureDataAdapter } from '@jbrowse/core/data_adapters/BaseAdapter';
|
|
4
|
-
import { fetchAndMaybeUnzip } from '@jbrowse/core/util';
|
|
4
|
+
import { fetchAndMaybeUnzip, getProgressDisplayStr } from '@jbrowse/core/util';
|
|
5
5
|
import { openLocation } from '@jbrowse/core/util/io';
|
|
6
6
|
import { ObservableCreate } from '@jbrowse/core/util/rxjs';
|
|
7
7
|
import VcfFeature from '../VcfFeature';
|
|
@@ -45,7 +45,7 @@ class VcfAdapter extends BaseFeatureDataAdapter {
|
|
|
45
45
|
}
|
|
46
46
|
}
|
|
47
47
|
if (i++ % 10000 === 0) {
|
|
48
|
-
statusCallback(`Loading ${
|
|
48
|
+
statusCallback(`Loading ${getProgressDisplayStr(blockStart, buffer.length)}`);
|
|
49
49
|
}
|
|
50
50
|
blockStart = n + 1;
|
|
51
51
|
}
|
|
@@ -96,9 +96,12 @@ class VcfAdapter extends BaseFeatureDataAdapter {
|
|
|
96
96
|
try {
|
|
97
97
|
const { start, end, refName } = region;
|
|
98
98
|
const { intervalTreeMap } = await this.setup();
|
|
99
|
-
(_a = intervalTreeMap[refName]) === null || _a === void 0 ? void 0 : _a.call(intervalTreeMap, opts.statusCallback).search([
|
|
99
|
+
for (const f of ((_a = intervalTreeMap[refName]) === null || _a === void 0 ? void 0 : _a.call(intervalTreeMap, opts.statusCallback).search([
|
|
100
|
+
start,
|
|
101
|
+
end,
|
|
102
|
+
])) || []) {
|
|
100
103
|
observer.next(f);
|
|
101
|
-
}
|
|
104
|
+
}
|
|
102
105
|
observer.complete();
|
|
103
106
|
}
|
|
104
107
|
catch (e) {
|
package/esm/VcfFeature/index.js
CHANGED
package/esm/VcfFeature/util.d.ts
CHANGED
|
@@ -2,3 +2,5 @@ import type VCF from '@gmod/vcf';
|
|
|
2
2
|
export declare function getSOTermAndDescription(ref: string, alt: string[] | undefined, parser: VCF): string[];
|
|
3
3
|
export declare function getSOAndDescFromAltDefs(alt: string, parser: VCF): string[];
|
|
4
4
|
export declare function getSOAndDescByExamination(ref: string, alt: string): string[];
|
|
5
|
+
export declare function getMinimalDesc(ref: string, alt: string): string;
|
|
6
|
+
export declare function makeSimpleAltString(genotype: string, ref: string, alt: string[]): string;
|
package/esm/VcfFeature/util.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { parseBreakend } from '@gmod/vcf';
|
|
2
|
+
import { getBpDisplayStr } from '@jbrowse/core/util';
|
|
2
3
|
const altTypeToSO = {
|
|
3
4
|
DEL: 'deletion',
|
|
4
5
|
INS: 'insertion',
|
|
@@ -17,7 +18,7 @@ export function getSOTermAndDescription(ref, alt, parser) {
|
|
|
17
18
|
}
|
|
18
19
|
const soTerms = new Set();
|
|
19
20
|
let descriptions = new Set();
|
|
20
|
-
|
|
21
|
+
for (const a of alt) {
|
|
21
22
|
let [soTerm, description] = getSOAndDescFromAltDefs(a, parser);
|
|
22
23
|
if (!soTerm) {
|
|
23
24
|
;
|
|
@@ -27,7 +28,7 @@ export function getSOTermAndDescription(ref, alt, parser) {
|
|
|
27
28
|
soTerms.add(soTerm);
|
|
28
29
|
descriptions.add(description);
|
|
29
30
|
}
|
|
30
|
-
}
|
|
31
|
+
}
|
|
31
32
|
if (descriptions.size > 1) {
|
|
32
33
|
const descs = [...descriptions];
|
|
33
34
|
const prefixes = new Set(descs
|
|
@@ -62,63 +63,158 @@ export function getSOAndDescFromAltDefs(alt, parser) {
|
|
|
62
63
|
return [soTerm, alt];
|
|
63
64
|
}
|
|
64
65
|
const modAlt = alt.split(':');
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
return [];
|
|
66
|
+
return modAlt.length > 1
|
|
67
|
+
? getSOAndDescFromAltDefs(`<${modAlt.slice(0, -1).join(':')}>`, parser)
|
|
68
|
+
: [];
|
|
69
69
|
}
|
|
70
70
|
export function getSOAndDescByExamination(ref, alt) {
|
|
71
71
|
const bnd = parseBreakend(alt);
|
|
72
72
|
if (bnd) {
|
|
73
73
|
return ['breakend', alt];
|
|
74
74
|
}
|
|
75
|
-
if (ref.length === 1 && alt.length === 1) {
|
|
75
|
+
else if (ref.length === 1 && alt.length === 1) {
|
|
76
76
|
return ['SNV', makeDescriptionString('SNV', ref, alt)];
|
|
77
77
|
}
|
|
78
|
-
if (alt === '<INS>') {
|
|
78
|
+
else if (alt === '<INS>') {
|
|
79
79
|
return ['insertion', alt];
|
|
80
80
|
}
|
|
81
|
-
if (alt === '<DEL>') {
|
|
81
|
+
else if (alt === '<DEL>') {
|
|
82
82
|
return ['deletion', alt];
|
|
83
83
|
}
|
|
84
|
-
if (alt === '<DUP>') {
|
|
84
|
+
else if (alt === '<DUP>') {
|
|
85
85
|
return ['duplication', alt];
|
|
86
86
|
}
|
|
87
|
-
if (alt === '<CNV>') {
|
|
87
|
+
else if (alt === '<CNV>') {
|
|
88
88
|
return ['cnv', alt];
|
|
89
89
|
}
|
|
90
|
-
if (alt === '<INV>') {
|
|
90
|
+
else if (alt === '<INV>') {
|
|
91
91
|
return ['inversion', alt];
|
|
92
92
|
}
|
|
93
|
-
if (alt === '<TRA>') {
|
|
93
|
+
else if (alt === '<TRA>') {
|
|
94
94
|
return ['translocation', alt];
|
|
95
95
|
}
|
|
96
|
-
if (alt.includes('<')) {
|
|
96
|
+
else if (alt.includes('<')) {
|
|
97
97
|
return ['sv', alt];
|
|
98
98
|
}
|
|
99
|
-
if (ref.length === alt.length) {
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
99
|
+
else if (ref.length === alt.length) {
|
|
100
|
+
const lenRef = ref.length;
|
|
101
|
+
const lenAlt = alt.length;
|
|
102
|
+
if (lenRef > 5 || lenAlt > 5) {
|
|
103
|
+
const lena = getBpDisplayStr(lenRef);
|
|
104
|
+
const lenb = getBpDisplayStr(lenAlt);
|
|
105
|
+
return ref.split('').reverse().join('') === alt
|
|
106
|
+
? ['inverson', makeDescriptionString('inv', lena, lenb)]
|
|
107
|
+
: ['substitution', makeDescriptionString('substitution', lena, lenb)];
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
return ref.split('').reverse().join('') === alt
|
|
111
|
+
? ['inversion', makeDescriptionString('inv', ref, alt)]
|
|
112
|
+
: ['substitution', makeDescriptionString('substitution', ref, alt)];
|
|
113
|
+
}
|
|
103
114
|
}
|
|
104
|
-
if (ref.length <= alt.length) {
|
|
115
|
+
else if (ref.length <= alt.length) {
|
|
105
116
|
const len = alt.length - ref.length;
|
|
106
|
-
const
|
|
117
|
+
const lenAlt = alt.length;
|
|
118
|
+
const lenRef = ref.length;
|
|
119
|
+
const lena = getBpDisplayStr(len);
|
|
107
120
|
return [
|
|
108
121
|
'insertion',
|
|
109
|
-
|
|
122
|
+
lenRef > 5 || lenAlt > 5
|
|
123
|
+
? `${lena} INS`
|
|
124
|
+
: makeDescriptionString('insertion', len > 5 ? lena : ref, alt),
|
|
110
125
|
];
|
|
111
126
|
}
|
|
112
|
-
if (ref.length > alt.length) {
|
|
113
|
-
const
|
|
114
|
-
const
|
|
127
|
+
else if (ref.length > alt.length) {
|
|
128
|
+
const lenRef = ref.length;
|
|
129
|
+
const lenAlt = alt.length;
|
|
130
|
+
const lena = getBpDisplayStr(lenRef - lenAlt);
|
|
115
131
|
return [
|
|
116
132
|
'deletion',
|
|
117
|
-
|
|
133
|
+
lenRef > 5 || lenAlt > 5
|
|
134
|
+
? `${lena} DEL`
|
|
135
|
+
: makeDescriptionString('deletion', ref, alt),
|
|
118
136
|
];
|
|
119
137
|
}
|
|
120
|
-
|
|
138
|
+
else {
|
|
139
|
+
return ['indel', makeDescriptionString('indel', ref, alt)];
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
export function getMinimalDesc(ref, alt) {
|
|
143
|
+
const bnd = parseBreakend(alt);
|
|
144
|
+
if (bnd) {
|
|
145
|
+
return alt;
|
|
146
|
+
}
|
|
147
|
+
else if (ref.length === 1 && alt.length === 1) {
|
|
148
|
+
return alt;
|
|
149
|
+
}
|
|
150
|
+
else if (alt === '<INS>') {
|
|
151
|
+
return alt;
|
|
152
|
+
}
|
|
153
|
+
else if (alt === '<DEL>') {
|
|
154
|
+
return alt;
|
|
155
|
+
}
|
|
156
|
+
else if (alt === '<DUP>') {
|
|
157
|
+
return alt;
|
|
158
|
+
}
|
|
159
|
+
else if (alt === '<CNV>') {
|
|
160
|
+
return alt;
|
|
161
|
+
}
|
|
162
|
+
else if (alt === '<INV>') {
|
|
163
|
+
return alt;
|
|
164
|
+
}
|
|
165
|
+
else if (alt === '<TRA>') {
|
|
166
|
+
return alt;
|
|
167
|
+
}
|
|
168
|
+
else if (alt.includes('<')) {
|
|
169
|
+
return alt;
|
|
170
|
+
}
|
|
171
|
+
else if (ref.length === alt.length) {
|
|
172
|
+
const lenRef = ref.length;
|
|
173
|
+
const lenAlt = alt.length;
|
|
174
|
+
if (lenRef > 5 || lenAlt > 5) {
|
|
175
|
+
const lena = getBpDisplayStr(lenRef);
|
|
176
|
+
const lenb = getBpDisplayStr(lenAlt);
|
|
177
|
+
return ref.split('').reverse().join('') === alt
|
|
178
|
+
? makeDescriptionString('inv', lena, lenb)
|
|
179
|
+
: makeDescriptionString('substitution', lena, lenb);
|
|
180
|
+
}
|
|
181
|
+
else {
|
|
182
|
+
return ref.split('').reverse().join('') === alt
|
|
183
|
+
? makeDescriptionString('inv', ref, alt)
|
|
184
|
+
: makeDescriptionString('substitution', ref, alt);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
else if (ref.length <= alt.length) {
|
|
188
|
+
const len = alt.length - ref.length;
|
|
189
|
+
const lenAlt = alt.length;
|
|
190
|
+
const lenRef = ref.length;
|
|
191
|
+
const lena = getBpDisplayStr(len);
|
|
192
|
+
return lenRef > 5 || lenAlt > 5
|
|
193
|
+
? `${lena} INS`
|
|
194
|
+
: makeDescriptionString('insertion', len > 5 ? lena : ref, alt);
|
|
195
|
+
}
|
|
196
|
+
else if (ref.length > alt.length) {
|
|
197
|
+
const lenRef = ref.length;
|
|
198
|
+
const lenAlt = alt.length;
|
|
199
|
+
const lena = getBpDisplayStr(lenRef - lenAlt);
|
|
200
|
+
return lenRef > 5 || lenAlt > 5
|
|
201
|
+
? `${lena} DEL`
|
|
202
|
+
: makeDescriptionString('deletion', ref, alt);
|
|
203
|
+
}
|
|
204
|
+
else {
|
|
205
|
+
return makeDescriptionString('indel', ref, alt);
|
|
206
|
+
}
|
|
121
207
|
}
|
|
122
208
|
function makeDescriptionString(soTerm, ref, alt) {
|
|
123
|
-
return `${soTerm} ${ref
|
|
209
|
+
return `${soTerm} ${[ref, alt].join(' -> ')}`;
|
|
210
|
+
}
|
|
211
|
+
export function makeSimpleAltString(genotype, ref, alt) {
|
|
212
|
+
return genotype
|
|
213
|
+
.split(/[/|]/)
|
|
214
|
+
.map(r => r === '.'
|
|
215
|
+
? '.'
|
|
216
|
+
: +r === 0
|
|
217
|
+
? `ref(${ref.length < 10 ? ref : getBpDisplayStr(ref.length)})`
|
|
218
|
+
: getMinimalDesc(ref, alt[+r - 1] || ''))
|
|
219
|
+
.join(genotype.includes('|') ? '|' : '/');
|
|
124
220
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { TabixIndexedFile } from '@gmod/tabix';
|
|
2
2
|
import VcfParser from '@gmod/vcf';
|
|
3
3
|
import { BaseFeatureDataAdapter } from '@jbrowse/core/data_adapters/BaseAdapter';
|
|
4
|
-
import { fetchAndMaybeUnzipText, updateStatus } from '@jbrowse/core/util';
|
|
4
|
+
import { fetchAndMaybeUnzipText, shorten2, updateStatus, } from '@jbrowse/core/util';
|
|
5
5
|
import { openLocation } from '@jbrowse/core/util/io';
|
|
6
6
|
import { ObservableCreate } from '@jbrowse/core/util/rxjs';
|
|
7
7
|
import VcfFeature from '../VcfFeature';
|
|
@@ -85,17 +85,27 @@ export default class VcfTabixAdapter extends BaseFeatureDataAdapter {
|
|
|
85
85
|
const lines = txt.split(/\n|\r\n|\r/);
|
|
86
86
|
const header = lines[0].split('\t');
|
|
87
87
|
const { parser } = await this.configure();
|
|
88
|
-
const
|
|
89
|
-
return lines
|
|
88
|
+
const metadataLines = lines
|
|
90
89
|
.slice(1)
|
|
90
|
+
.filter(f => !!f)
|
|
91
91
|
.map(line => {
|
|
92
|
-
const
|
|
92
|
+
const [name, ...rest] = line.split('\t');
|
|
93
93
|
return {
|
|
94
|
-
|
|
95
|
-
|
|
94
|
+
...Object.fromEntries(header.slice(1).map((c, idx) => [c, rest[idx] || ''])),
|
|
95
|
+
name: name,
|
|
96
96
|
};
|
|
97
|
-
})
|
|
98
|
-
|
|
97
|
+
});
|
|
98
|
+
const vcfSampleSet = new Set(parser.samples);
|
|
99
|
+
const metadataSet = new Set(metadataLines.map(r => r.name));
|
|
100
|
+
const metadataNotInVcfSamples = [...metadataSet].filter(f => !vcfSampleSet.has(f));
|
|
101
|
+
const vcfSamplesNotInMetadata = [...vcfSampleSet].filter(f => !metadataSet.has(f));
|
|
102
|
+
if (metadataNotInVcfSamples.length) {
|
|
103
|
+
console.warn(`There are ${metadataNotInVcfSamples.length} samples in metadata file (${metadataLines.length} lines) not in VCF (${parser.samples.length} samples):`, shorten2(metadataNotInVcfSamples.join(',')));
|
|
104
|
+
}
|
|
105
|
+
if (vcfSamplesNotInMetadata.length) {
|
|
106
|
+
console.warn(`There are ${vcfSamplesNotInMetadata.length} samples in VCF file (${parser.samples.length} samples) not in metadata file (${metadataLines.length} lines):`, shorten2(vcfSamplesNotInMetadata.map(m => m).join(',')));
|
|
107
|
+
}
|
|
108
|
+
return metadataLines.filter(f => vcfSampleSet.has(f.name));
|
|
99
109
|
}
|
|
100
110
|
}
|
|
101
111
|
freeResources() { }
|
|
@@ -6,6 +6,7 @@ export declare function getMultiVariantFeaturesAutorun(self: {
|
|
|
6
6
|
adapterConfig: AnyConfigurationModel;
|
|
7
7
|
sources?: Source[];
|
|
8
8
|
minorAlleleFrequencyFilter: number;
|
|
9
|
+
lengthCutoffFilter: number;
|
|
9
10
|
statsReadyAndRegionNotTooLarge: boolean;
|
|
10
11
|
adapterProps: () => Record<string, unknown>;
|
|
11
12
|
setError: (error: unknown) => void;
|
|
@@ -13,4 +14,5 @@ export declare function getMultiVariantFeaturesAutorun(self: {
|
|
|
13
14
|
setMessage: (str: string) => void;
|
|
14
15
|
setHasPhased: (arg: boolean) => void;
|
|
15
16
|
setSampleInfo: (arg: Record<string, SampleInfo>) => void;
|
|
17
|
+
setSimplifiedFeaturesLoading: (arg: string) => void;
|
|
16
18
|
}): void;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { SimpleFeature, getContainingView, getSession, } from '@jbrowse/core/util';
|
|
2
2
|
import { isAbortException } from '@jbrowse/core/util/aborting';
|
|
3
|
+
import { createStopToken } from '@jbrowse/core/util/stopToken';
|
|
3
4
|
import { getRpcSessionId } from '@jbrowse/core/util/tracks';
|
|
4
5
|
import { autorun } from 'mobx';
|
|
5
6
|
import { addDisposer, isAlive } from 'mobx-state-tree';
|
|
@@ -10,16 +11,20 @@ export function getMultiVariantFeaturesAutorun(self) {
|
|
|
10
11
|
if (!view.initialized || !self.statsReadyAndRegionNotTooLarge) {
|
|
11
12
|
return;
|
|
12
13
|
}
|
|
14
|
+
const stopToken = createStopToken();
|
|
15
|
+
self.setSimplifiedFeaturesLoading(stopToken);
|
|
13
16
|
const { rpcManager } = getSession(self);
|
|
14
|
-
const { sources, minorAlleleFrequencyFilter, adapterConfig } = self;
|
|
17
|
+
const { lengthCutoffFilter, sources, minorAlleleFrequencyFilter, adapterConfig, } = self;
|
|
15
18
|
if (sources) {
|
|
16
19
|
const sessionId = getRpcSessionId(self);
|
|
17
20
|
const { sampleInfo, hasPhased, features } = (await rpcManager.call(sessionId, 'MultiVariantGetSimplifiedFeatures', {
|
|
18
21
|
regions: view.dynamicBlocks.contentBlocks,
|
|
19
22
|
sources,
|
|
20
23
|
minorAlleleFrequencyFilter,
|
|
24
|
+
lengthCutoffFilter,
|
|
21
25
|
sessionId,
|
|
22
26
|
adapterConfig,
|
|
27
|
+
stopToken,
|
|
23
28
|
}));
|
|
24
29
|
if (isAlive(self)) {
|
|
25
30
|
self.setHasPhased(hasPhased);
|
|
@@ -34,5 +39,7 @@ export function getMultiVariantFeaturesAutorun(self) {
|
|
|
34
39
|
getSession(self).notifyError(`${e}`, e);
|
|
35
40
|
}
|
|
36
41
|
}
|
|
37
|
-
}, {
|
|
42
|
+
}, {
|
|
43
|
+
delay: 1000,
|
|
44
|
+
}));
|
|
38
45
|
}
|
|
@@ -13,12 +13,13 @@ export function getMultiVariantSourcesAutorun(self) {
|
|
|
13
13
|
}
|
|
14
14
|
const { rpcManager } = getSession(self);
|
|
15
15
|
const { adapterConfig } = self;
|
|
16
|
-
const
|
|
17
|
-
self.setSourcesLoading(
|
|
16
|
+
const stopToken = createStopToken();
|
|
17
|
+
self.setSourcesLoading(stopToken);
|
|
18
18
|
const sessionId = getRpcSessionId(self);
|
|
19
19
|
const sources = (await rpcManager.call(sessionId, 'MultiVariantGetSources', {
|
|
20
20
|
sessionId,
|
|
21
21
|
adapterConfig,
|
|
22
|
+
stopToken,
|
|
22
23
|
}));
|
|
23
24
|
if (isAlive(self)) {
|
|
24
25
|
self.setSources(sources);
|
package/esm/index.js
CHANGED
|
@@ -8,6 +8,7 @@ import MultiVariantRendererF from './MultiLinearVariantRenderer';
|
|
|
8
8
|
import SplitVcfTabixAdapterF from './SplitVcfTabixAdapter';
|
|
9
9
|
import StructuralVariantChordRendererF from './StructuralVariantChordRenderer';
|
|
10
10
|
import VariantFeatureWidgetF from './VariantFeatureWidget';
|
|
11
|
+
import { MultiVariantClusterGenotypeMatrix } from './VariantRPC/MultiVariantClusterGenotypeMatrix';
|
|
11
12
|
import { MultiVariantGetGenotypeMatrix } from './VariantRPC/MultiVariantGetGenotypeMatrix';
|
|
12
13
|
import { MultiVariantGetSimplifiedFeatures } from './VariantRPC/MultiVariantGetSimplifiedFeatures';
|
|
13
14
|
import { MultiVariantGetSources } from './VariantRPC/MultiVariantGetSources';
|
|
@@ -36,6 +37,7 @@ export default class VariantsPlugin extends Plugin {
|
|
|
36
37
|
ChordVariantDisplayF(pluginManager);
|
|
37
38
|
pluginManager.addRpcMethod(() => new MultiVariantGetSources(pluginManager));
|
|
38
39
|
pluginManager.addRpcMethod(() => new MultiVariantGetGenotypeMatrix(pluginManager));
|
|
40
|
+
pluginManager.addRpcMethod(() => new MultiVariantClusterGenotypeMatrix(pluginManager));
|
|
39
41
|
pluginManager.addRpcMethod(() => new MultiVariantGetSimplifiedFeatures(pluginManager));
|
|
40
42
|
}
|
|
41
43
|
}
|