Jest tests failed
Failed tests: 8/439. Failed suites: 8/100.
Details
● test for pipeline services › Create QC pipeline works
TypeError: Cannot read property 'select' of undefined
17 | async getMetadataByExperimentIds(experimentIds) {
18 | const result = await this.sql
> 19 | .select([...fields, `${tableNames.CELL_LEVEL_TO_EXPERIMENT_MAP}.experiment_id`])
| ^
20 | .from(tableNames.CELL_LEVEL_TO_EXPERIMENT_MAP)
21 | .leftJoin(
22 | tableNames.CELL_LEVEL,
at CellLevelMeta.getMetadataByExperimentIds (src/api.v2/model/CellLevelMeta.js:19:8)
at createQCPipeline (src/api.v2/helpers/pipeline/pipelineConstruct/index.js:122:57)
at Object.<anonymous> (tests/api.v2/helpers/pipeline/pipelineConstruct.test.js:123:5)
● test for pipeline services › Parses QC processingConfig correctly
TypeError: Cannot read property 'select' of undefined
17 | async getMetadataByExperimentIds(experimentIds) {
18 | const result = await this.sql
> 19 | .select([...fields, `${tableNames.CELL_LEVEL_TO_EXPERIMENT_MAP}.experiment_id`])
| ^
20 | .from(tableNames.CELL_LEVEL_TO_EXPERIMENT_MAP)
21 | .leftJoin(
22 | tableNames.CELL_LEVEL,
at CellLevelMeta.getMetadataByExperimentIds (src/api.v2/model/CellLevelMeta.js:19:8)
at createQCPipeline (src/api.v2/helpers/pipeline/pipelineConstruct/index.js:122:57)
at Object.<anonymous> (tests/api.v2/helpers/pipeline/pipelineConstruct.test.js:186:5)
● test for pipeline services › Create Subset pipeline works
expect(received).toMatchSnapshot(hint)
Snapshot name: `test for pipeline services Create Subset pipeline works: createStateMachineSpy calls 1`
- Snapshot - 1
+ Received + 1
@@ -1,9 +1,9 @@
Array [
Array [
Object {
- "definition": "{\"Comment\":\"Subset Pipeline for clusterEnv 'test'\",\"StartAt\":\"RequestPod\",\"States\":{\"RequestPod\":{\"ResultPath\":null,\"Next\":\"WaitForPod\",\"Comment\":\"Send a message through SNS so that the API assigns a pod to the pipeline\",\"Type\":\"Task\",\"Resource\":\"arn:aws:states:::sns:publish\",\"Parameters\":{\"TopicArn\":\"arn:aws:sns:eu-west-1:000000000000:work-results-test-default-v2\",\"Message\":\"{\\\"taskName\\\":\\\"assignPodToPipeline\\\",\\\"experimentId\\\":\\\"toExperimentId\\\",\\\"apiUrl\\\":\\\"test-public-api-url\\\",\\\"input\\\":{\\\"experimentId\\\":\\\"toExperimentId\\\",\\\"sandboxId\\\":\\\"default\\\",\\\"activityId\\\":\\\"pipeline-test-mock-uuid\\\",\\\"processName\\\":\\\"subset\\\"}}\",\"MessageAttributes\":{\"type\":{\"DataType\":\"String\",\"StringValue\":\"PipelineResponse\"}}}},\"WaitForPod\":{\"ResultPath\":null,\"Next\":\"SubsetSeurat\",\"Type\":\"Map\",\"ItemsPath\":\"$.retries\",\"MaxConcurrency\":1,\"Retry\":[{\"ErrorEquals\":[\"NoPodAssigned\"],\"IntervalSeconds\":1,\"MaxAttempts\":13,\"BackoffRate\":1.5}],\"Iterator\":{\"StartAt\":\"GetAssignedPod\",\"States\":{\"GetAssignedPod\":{\"Next\":\"IsPodAssigned\",\"Type\":\"Task\",\"Comment\":\"Retrieves first unassigned and running pipeline pod.\",\"Resource\":\"arn:aws:states:::eks:call\",\"Parameters\":{\"ClusterName\":\"biomage-test\",\"CertificateAuthority\":\"AAAAAAAAAAA\",\"Endpoint\":\"https://test-endpoint.me/fgh\",\"Method\":\"GET\",\"Path\":\"/api/v1/namespaces/pipeline-test-namespace/pods\",\"QueryParameters\":{\"labelSelector\":[\"type=pipeline,activityId=pipeline-test-mock-uuid\"]}}},\"IsPodAssigned\":{\"Type\":\"Choice\",\"Comment\":\"Redirects to an error state if the pipeline pod is not assigned yet.\",\"Choices\":[{\"Variable\":\"$.ResponseBody.items[0]\",\"IsPresent\":false,\"Next\":\"NoPodAssigned\"}],\"Default\":\"ReadyToRun\"},\"NoPodAssigned\":{\"Type\":\"Fail\",\"Cause\":\"No available and running pipeline pods.\",\"Error\":\"NoPodAssigned\"},\"ReadyToRun\":{\"Type\":\"Pass\",\"End\":true}}}},\"SubsetSeurat\":{\"Next\":\"PrepareExperiment\",\"Type\":\"Task\",\"Resource\":\"arn:aws:states:eu-west-1:000000000000:activity:pipeline-test-mock-uuid\",\"ResultPath\":null,\"TimeoutSeconds\":10800,\"HeartbeatSeconds\":90,\"Parameters\":{\"experimentId\":\"toExperimentId\",\"taskName\":\"subsetSeurat\",\"processName\":\"subset\",\"server\":\"remoter-server-toExperimentId.pipeline-test-namespace.svc.cluster.local\",\"ignoreSslCert\":false,\"parentExperimentId\":\"fromExperimentId\",\"subsetExperimentId\":\"toExperimentId\",\"cellSetKeys\":[\"louvain-1\",\"louvain-2\"],\"parentProcessingConfig\":{\"classifier\":{\"oneSample\":{\"auto\":true,\"enabled\":false,\"prefiltered\":true,\"filterSettings\":{\"FDR\":0.01},\"defaultFilterSettings\":{\"FDR\":0.01}},\"otherSample\":{\"auto\":true,\"enabled\":false,\"prefiltered\":true,\"filterSettings\":{\"FDR\":0.01},\"defaultFilterSettings\":{\"FDR\":0.01}}},\"doubletScores\":{\"oneSample\":{\"defaultFilterSettings\":{\"oneSetting\":1},\"filterSettings\":{\"oneSetting\":7}},\"otherSample\":{\"filterSettings\":{\"oneSetting\":15}}},\"dataIntegration\":{\"dataIntegration\":{\"method\":\"harmony\",\"methodSettings\":{\"fastmnn\":{\"numGenes\":2000,\"normalisation\":\"logNormalize\"},\"harmony\":{\"numGenes\":2000,\"normalisation\":\"logNormalize\"},\"seuratv4\":{\"numGenes\":2000,\"normalisation\":\"logNormalize\"},\"unisample\":{\"numGenes\":2000,\"normalisation\":\"logNormalize\"}}},\"dimensionalityReduction\":{\"method\":\"rpca\",\"numPCs\":30,\"excludeGeneCategories\":[]}},\"numGenesVsNumUmis\":{\"oneSample\":{\"auto\":true,\"enabled\":true,\"filterSettings\":{\"regressionType\":\"linear\",\"regressionTypeSettings\":{\"linear\":{\"p.level\":0.001},\"spline\":{\"p.level\":0.001}}},\"defaultFilterSettings\":{\"regressionType\":\"linear\",\"regressionTypeSettings\":{\"linear\":{\"p.level\":0.001},\"spline\":{\"p.level\":0.001}}}},\"otherSample\":{\"auto\":true,\"enabled\":true,\"filterSettings\":{\"regressionType\":\"linear\",\"regressionTypeSettings\":{\"linear\":{\"p.level\":0.001},\"spline\":{\"p.level\":0.001}}},\"defaultFilterSettings\":{\"regressionType\":\"linear\",\"regressionTypeSettings\":{\"linear\":{\"p.level\":0.001},\"spline\":{\"p.level\":0.001}}}}},\"configureEmbedding\":{\"embeddingSettings\":{\"method\":\"umap\",\"methodSettings\":{\"tsne\":{\"perplexity\":30,\"learningRate\":200},\"umap\":{\"distanceMetric\":\"cosine\",\"minimumDistance\":0.3}}},\"clusteringSettings\":{\"method\":\"louvain\",\"methodSettings\":{\"louvain\":{\"resolution\":0.8}}}},\"cellSizeDistribution\":{\"oneSample\":{\"auto\":true,\"enabled\":false,\"filterSettings\":{\"binStep\":200,\"minCellSize\":1044},\"defaultFilterSettings\":{\"binStep\":200,\"minCellSize\":1044}},\"otherSample\":{\"auto\":true,\"enabled\":false,\"filterSettings\":{\"binStep\":200,\"minCellSize\":1044},\"defaultFilterSettings\":{\"binStep\":200,\"minCellSize\":1044}}},\"mitochondrialContent\":{\"oneSample\":{\"auto\":true,\"enabled\":true,\"filterSettings\":{\"method\":\"absoluteThreshold\",\"methodSettings\":{\"absoluteThreshold\":{\"binStep\":0.3,\"maxFraction\":0.07181329}}},\"defaultFilterSettings\":{\"method\":\"absoluteThreshold\",\"methodSettings\":{\"absoluteThreshold\":{\"binStep\":0.3,\"maxFraction\":0.07181329}}}},\"otherSample\":{\"auto\":true,\"enabled\":true,\"filterSettings\":{\"method\":\"absoluteThreshold\",\"methodSettings\":{\"absoluteThreshold\":{\"binStep\":0.3,\"maxFraction\":0.07181329}}},\"defaultFilterSettings\":{\"method\":\"absoluteThreshold\",\"methodSettings\":{\"absoluteThreshold\":{\"binStep\":0.3,\"maxFraction\":0.07181329}}}}}}},\"Catch\":[{\"ErrorEquals\":[\"States.ALL\"],\"ResultPath\":\"$.errorInfo\",\"Next\":\"HandleError\"}]},\"PrepareExperiment\":{\"Next\":\"UploadToAWS\",\"Type\":\"Task\",\"Resource\":\"arn:aws:states:eu-west-1:000000000000:activity:pipeline-test-mock-uuid\",\"ResultPath\":null,\"TimeoutSeconds\":10800,\"HeartbeatSeconds\":90,\"Parameters\":{\"experimentId\":\"toExperimentId\",\"taskName\":\"prepareExperiment\",\"processName\":\"subset\",\"server\":\"remoter-server-toExperimentId.pipeline-test-namespace.svc.cluster.local\",\"ignoreSslCert\":false,\"experimentName\":\"toExperimentName\",\"authJWT\":\"mockAuthJWT\"},\"Catch\":[{\"ErrorEquals\":[\"States.ALL\"],\"ResultPath\":\"$.errorInfo\",\"Next\":\"HandleError\"}]},\"UploadToAWS\":{\"Next\":\"EndOfPipeline\",\"Type\":\"Task\",\"Resource\":\"arn:aws:states:eu-west-1:000000000000:activity:pipeline-test-mock-uuid\",\"ResultPath\":null,\"TimeoutSeconds\":10800,\"HeartbeatSeconds\":90,\"Parameters\":{\"experimentId\":\"toExperimentId\",\"taskName\":\"uploadToAWS\",\"processName\":\"subset\",\"server\":\"remoter-server-toExperimentId.pipeline-test-namespace.svc.cluster.local\",\"ignoreSslCert\":false,\"experimentName\":\"toExperimentName\",\"authJWT\":\"mockAuthJWT\"},\"Catch\":[{\"ErrorEquals\":[\"States.ALL\"],\"ResultPath\":\"$.errorInfo\",\"Next\":\"HandleError\"}]},\"HandleError\":{\"Next\":\"MarkAsFailed\",\"Type\":\"Task\",\"Resource\":\"arn:aws:states:::sns:publish\",\"Parameters\":{\"TopicArn\":\"arn:aws:sns:eu-west-1:000000000000:work-results-test-default-v2\",\"Message.$\":\"States.Format('\\\\{\\\"taskName\\\":\\\"pipelineError\\\",\\\"experimentId\\\":\\\"toExperimentId\\\",\\\"apiUrl\\\":\\\"test-public-api-url\\\",\\\"input\\\":\\\\{\\\"experimentId\\\":\\\"toExperimentId\\\",\\\"error\\\":\\\"{}\\\",\\\"taskName\\\":\\\"pipelineError\\\",\\\"sandboxId\\\":\\\"default\\\",\\\"activityId\\\":\\\"pipeline-test-mock-uuid\\\",\\\"processName\\\":\\\"subset\\\"\\\\}\\\\}', $.errorInfo.Error)\",\"MessageAttributes\":{\"type\":{\"DataType\":\"String\",\"StringValue\":\"PipelineResponse\"}}}},\"MarkAsFailed\":{\"Type\":\"Fail\"},\"EndOfPipeline\":{\"Type\":\"Pass\",\"End\":true}}}",
+ "definition": "{\"Comment\":\"Subset Pipeline for clusterEnv 'test'\",\"StartAt\":\"RequestPod\",\"States\":{\"RequestPod\":{\"ResultPath\":null,\"Next\":\"WaitForPod\",\"Comment\":\"Send a message through SNS so that the API assigns a pod to the pipeline\",\"Type\":\"Task\",\"Resource\":\"arn:aws:states:::sns:publish\",\"Parameters\":{\"TopicArn\":\"arn:aws:sns:eu-west-1:000000000000:work-results-test-default-v2\",\"Message\":\"{\\\"taskName\\\":\\\"assignPodToPipeline\\\",\\\"experimentId\\\":\\\"toExperimentId\\\",\\\"apiUrl\\\":\\\"test-public-api-url\\\",\\\"input\\\":{\\\"experimentId\\\":\\\"toExperimentId\\\",\\\"sandboxId\\\":\\\"default\\\",\\\"activityId\\\":\\\"pipeline-test-mock-uuid\\\",\\\"processName\\\":\\\"subset\\\"}}\",\"MessageAttributes\":{\"type\":{\"DataType\":\"String\",\"StringValue\":\"PipelineResponse\"}}}},\"WaitForPod\":{\"ResultPath\":null,\"Next\":\"SubsetSeurat\",\"Type\":\"Map\",\"ItemsPath\":\"$.retries\",\"MaxConcurrency\":1,\"Retry\":[{\"ErrorEquals\":[\"NoPodAssigned\"],\"IntervalSeconds\":1,\"MaxAttempts\":13,\"BackoffRate\":1.5}],\"Iterator\":{\"StartAt\":\"GetAssignedPod\",\"States\":{\"GetAssignedPod\":{\"Next\":\"IsPodAssigned\",\"Type\":\"Task\",\"Comment\":\"Retrieves first unassigned and running pipeline pod.\",\"Resource\":\"arn:aws:states:::eks:call\",\"Parameters\":{\"ClusterName\":\"biomage-test\",\"CertificateAuthority\":\"AAAAAAAAAAA\",\"Endpoint\":\"https://test-endpoint.me/fgh\",\"Method\":\"GET\",\"Path\":\"/api/v1/namespaces/pipeline-test-namespace/pods\",\"QueryParameters\":{\"labelSelector\":[\"type=pipeline,activityId=pipeline-test-mock-uuid\"]}}},\"IsPodAssigned\":{\"Type\":\"Choice\",\"Comment\":\"Redirects to an error state if the pipeline pod is not assigned yet.\",\"Choices\":[{\"Variable\":\"$.ResponseBody.items[0]\",\"IsPresent\":false,\"Next\":\"NoPodAssigned\"}],\"Default\":\"ReadyToRun\"},\"NoPodAssigned\":{\"Type\":\"Fail\",\"Cause\":\"No available and running pipeline pods.\",\"Error\":\"NoPodAssigned\"},\"ReadyToRun\":{\"Type\":\"Pass\",\"End\":true}}}},\"SubsetSeurat\":{\"Next\":\"PrepareExperiment\",\"Type\":\"Task\",\"Resource\":\"arn:aws:states:eu-west-1:000000000000:activity:pipeline-test-mock-uuid\",\"ResultPath\":null,\"TimeoutSeconds\":10800,\"HeartbeatSeconds\":90,\"Parameters\":{\"experimentId\":\"toExperimentId\",\"taskName\":\"subsetSeurat\",\"processName\":\"subset\",\"server\":\"remoter-server-toExperimentId.pipeline-test-namespace.svc.cluster.local\",\"ignoreSslCert\":false,\"parentExperimentId\":\"fromExperimentId\",\"subsetExperimentId\":\"toExperimentId\",\"cellSetKeys\":[\"louvain-1\",\"louvain-2\"],\"parentProcessingConfig\":{\"classifier\":{\"oneSample\":{\"auto\":true,\"enabled\":false,\"prefiltered\":true,\"filterSettings\":{\"FDR\":0.01},\"defaultFilterSettings\":{\"FDR\":0.01}},\"otherSample\":{\"auto\":true,\"enabled\":false,\"prefiltered\":true,\"filterSettings\":{\"FDR\":0.01},\"defaultFilterSettings\":{\"FDR\":0.01}}},\"doubletScores\":{\"oneSample\":{\"enabled\":true,\"filterSettings\":{\"oneSetting\":1},\"defaultFilterSettings\":{\"oneSetting\":1},\"recomputeDoubletScore\":true},\"otherSample\":{\"enabled\":true,\"filterSettings\":{\"oneSetting\":1},\"defaultFilterSettings\":{\"oneSetting\":1},\"recomputeDoubletScore\":true}},\"dataIntegration\":{\"dataIntegration\":{\"method\":\"harmony\",\"methodSettings\":{\"fastmnn\":{\"numGenes\":2000,\"normalisation\":\"logNormalize\"},\"harmony\":{\"numGenes\":2000,\"normalisation\":\"logNormalize\"},\"seuratv4\":{\"numGenes\":2000,\"normalisation\":\"logNormalize\"},\"unisample\":{\"numGenes\":2000,\"normalisation\":\"logNormalize\"}}},\"dimensionalityReduction\":{\"method\":\"rpca\",\"numPCs\":30,\"excludeGeneCategories\":[]}},\"numGenesVsNumUmis\":{\"oneSample\":{\"auto\":true,\"enabled\":true,\"filterSettings\":{\"regressionType\":\"linear\",\"regressionTypeSettings\":{\"linear\":{\"p.level\":0.001},\"spline\":{\"p.level\":0.001}}},\"defaultFilterSettings\":{\"regressionType\":\"linear\",\"regressionTypeSettings\":{\"linear\":{\"p.level\":0.001},\"spline\":{\"p.level\":0.001}}}},\"otherSample\":{\"auto\":true,\"enabled\":true,\"filterSettings\":{\"regressionType\":\"linear\",\"regressionTypeSettings\":{\"linear\":{\"p.level\":0.001},\"spline\":{\"p.level\":0.001}}},\"defaultFilterSettings\":{\"regressionType\":\"linear\",\"regressionTypeSettings\":{\"linear\":{\"p.level\":0.001},\"spline\":{\"p.level\":0.001}}}}},\"configureEmbedding\":{\"embeddingSettings\":{\"method\":\"umap\",\"methodSettings\":{\"tsne\":{\"perplexity\":30,\"learningRate\":200},\"umap\":{\"distanceMetric\":\"cosine\",\"minimumDistance\":0.3}}},\"clusteringSettings\":{\"method\":\"louvain\",\"methodSettings\":{\"louvain\":{\"resolution\":0.8}}}},\"cellSizeDistribution\":{\"oneSample\":{\"auto\":true,\"enabled\":false,\"filterSettings\":{\"binStep\":200,\"minCellSize\":1044},\"defaultFilterSettings\":{\"binStep\":200,\"minCellSize\":1044}},\"otherSample\":{\"auto\":true,\"enabled\":false,\"filterSettings\":{\"binStep\":200,\"minCellSize\":1044},\"defaultFilterSettings\":{\"binStep\":200,\"minCellSize\":1044}}},\"mitochondrialContent\":{\"oneSample\":{\"auto\":true,\"enabled\":true,\"filterSettings\":{\"method\":\"absoluteThreshold\",\"methodSettings\":{\"absoluteThreshold\":{\"binStep\":0.3,\"maxFraction\":0.07181329}}},\"defaultFilterSettings\":{\"method\":\"absoluteThreshold\",\"methodSettings\":{\"absoluteThreshold\":{\"binStep\":0.3,\"maxFraction\":0.07181329}}}},\"otherSample\":{\"auto\":true,\"enabled\":true,\"filterSettings\":{\"method\":\"absoluteThreshold\",\"methodSettings\":{\"absoluteThreshold\":{\"binStep\":0.3,\"maxFraction\":0.07181329}}},\"defaultFilterSettings\":{\"method\":\"absoluteThreshold\",\"methodSettings\":{\"absoluteThreshold\":{\"binStep\":0.3,\"maxFraction\":0.07181329}}}}}}},\"Catch\":[{\"ErrorEquals\":[\"States.ALL\"],\"ResultPath\":\"$.errorInfo\",\"Next\":\"HandleError\"}]},\"PrepareExperiment\":{\"Next\":\"UploadToAWS\",\"Type\":\"Task\",\"Resource\":\"arn:aws:states:eu-west-1:000000000000:activity:pipeline-test-mock-uuid\",\"ResultPath\":null,\"TimeoutSeconds\":10800,\"HeartbeatSeconds\":90,\"Parameters\":{\"experimentId\":\"toExperimentId\",\"taskName\":\"prepareExperiment\",\"processName\":\"subset\",\"server\":\"remoter-server-toExperimentId.pipeline-test-namespace.svc.cluster.local\",\"ignoreSslCert\":false,\"experimentName\":\"toExperimentName\",\"authJWT\":\"mockAuthJWT\"},\"Catch\":[{\"ErrorEquals\":[\"States.ALL\"],\"ResultPath\":\"$.errorInfo\",\"Next\":\"HandleError\"}]},\"UploadToAWS\":{\"Next\":\"EndOfPipeline\",\"Type\":\"Task\",\"Resource\":\"arn:aws:states:eu-west-1:000000000000:activity:pipeline-test-mock-uuid\",\"ResultPath\":null,\"TimeoutSeconds\":10800,\"HeartbeatSeconds\":90,\"Parameters\":{\"experimentId\":\"toExperimentId\",\"taskName\":\"uploadToAWS\",\"processName\":\"subset\",\"server\":\"remoter-server-toExperimentId.pipeline-test-namespace.svc.cluster.local\",\"ignoreSslCert\":false,\"experimentName\":\"toExperimentName\",\"authJWT\":\"mockAuthJWT\"},\"Catch\":[{\"ErrorEquals\":[\"States.ALL\"],\"ResultPath\":\"$.errorInfo\",\"Next\":\"HandleError\"}]},\"HandleError\":{\"Next\":\"MarkAsFailed\",\"Type\":\"Task\",\"Resource\":\"arn:aws:states:::sns:publish\",\"Parameters\":{\"TopicArn\":\"arn:aws:sns:eu-west-1:000000000000:work-results-test-default-v2\",\"Message.$\":\"States.Format('\\\\{\\\"taskName\\\":\\\"pipelineError\\\",\\\"experimentId\\\":\\\"toExperimentId\\\",\\\"apiUrl\\\":\\\"test-public-api-url\\\",\\\"input\\\":\\\\{\\\"experimentId\\\":\\\"toExperimentId\\\",\\\"error\\\":\\\"{}\\\",\\\"taskName\\\":\\\"pipelineError\\\",\\\"sandboxId\\\":\\\"default\\\",\\\"activityId\\\":\\\"pipeline-test-mock-uuid\\\",\\\"processName\\\":\\\"subset\\\"\\\\}\\\\}', $.errorInfo.Error)\",\"MessageAttributes\":{\"type\":{\"DataType\":\"String\",\"StringValue\":\"PipelineResponse\"}}}},\"MarkAsFailed\":{\"Type\":\"Fail\"},\"EndOfPipeline\":{\"Type\":\"Pass\",\"End\":true}}}",
"loggingConfiguration": Object {
"level": "OFF",
},
"name": "biomage-subset-test-f3880dbb8507da8b0f158c0216a7d7189670e6ca",
"roleArn": "arn:aws:iam::000000000000:role/state-machine-role-test",
284 | expect(describeClusterSpy).toMatchSnapshot();
285 |
> 286 | expect(createStateMachineSpy.mock.calls).toMatchSnapshot('createStateMachineSpy calls');
| ^
287 | expect(createStateMachineSpy.mock.results).toMatchSnapshot('createStateMachineSpy results');
288 |
289 | expect(createActivitySpy).toHaveBeenCalled();
at Object.<anonymous> (tests/api.v2/helpers/pipeline/pipelineConstruct.test.js:286:46)
● gem2sResponse › Starts a QC run when gem2s finishes
expect(received).toMatchSnapshot()
Snapshot name: `gem2sResponse Starts a QC run when gem2s finishes 2`
- Snapshot - 1
+ Received + 146
Array [
Array [
"mockExperimentId",
- Array [],
+ Object {
+ "cellSizeDistribution": Object {
+ "fc68aefc-c3ca-467f-8589-f1dbaaac1c1e": Object {
+ "auto": true,
+ "defaultFilterSettings": Object {
+ "binStep": 200,
+ "minCellSize": 1044,
+ },
+ "enabled": false,
+ "filterSettings": Object {
+ "binStep": 200,
+ "minCellSize": 1044,
+ },
+ },
+ },
+ "classifier": Object {
+ "fc68aefc-c3ca-467f-8589-f1dbaaac1c1e": Object {
+ "auto": true,
+ "defaultFilterSettings": Object {
+ "FDR": 0.02,
+ },
+ "enabled": false,
+ "filterSettings": Object {
+ "FDR": 0.01,
+ },
+ "prefiltered": true,
+ },
+ },
+ "configureEmbedding": Object {
+ "clusteringSettings": Object {
+ "method": "louvain",
+ "methodSettings": Object {
+ "louvain": Object {
+ "resolution": 0.8,
+ },
+ },
+ },
+ "embeddingSettings": Object {
+ "method": "umap",
+ "methodSettings": Object {
+ "tsne": Object {
+ "learningRate": 200,
+ "perplexity": 30,
+ },
+ "umap": Object {
+ "distanceMetric": "cosine",
+ "minimumDistance": 0.3,
+ },
+ },
+ },
+ },
+ "dataIntegration": Object {
+ "dataIntegration": Object {
+ "method": "harmony",
+ "methodSettings": Object {
+ "fastmnn": Object {
+ "normalisation": "logNormalize",
+ "numGenes": 2000,
+ },
+ "harmony": Object {
+ "normalisation": "logNormalize",
+ "numGenes": 2000,
+ },
+ "seuratv4": Object {
+ "normalisation": "logNormalize",
+ "numGenes": 2000,
+ },
+ "unisample": Object {
+ "normalisation": "logNormalize",
+ "numGenes": 2000,
+ },
+ },
+ },
+ "dimensionalityReduction": Object {
+ "excludeGeneCategories": Array [],
+ "method": "rpca",
+ "numPCs": 30,
+ },
+ },
+ "doubletScores": Object {
+ "fc68aefc-c3ca-467f-8589-f1dbaaac1c1e": Object {
+ "auto": true,
+ "defaultFilterSettings": Object {
+ "binStep": 0.05,
+ "probabilityThreshold": 0.6569474,
+ },
+ "enabled": true,
+ "filterSettings": Object {
+ "binStep": 0.02,
+ "probabilityThreshold": 0.6569474,
+ },
+ },
+ },
+ "mitochondrialContent": Object {
+ "fc68aefc-c3ca-467f-8589-f1dbaaac1c1e": Object {
+ "auto": true,
+ "defaultFilterSettings": Object {
+ "method": "absoluteThreshold",
+ "methodSettings": Object {
+ "absoluteThreshold": Object {
+ "binStep": 0.6,
+ "maxFraction": 0.07181355,
+ },
+ },
+ },
+ "enabled": true,
+ "filterSettings": Object {
+ "method": "absoluteThreshold",
+ "methodSettings": Object {
+ "absoluteThreshold": Object {
+ "binStep": 0.3,
+ "maxFraction": 0.07181329,
+ },
+ },
+ },
+ },
+ },
+ "numGenesVsNumUmis": Object {
+ "fc68aefc-c3ca-467f-8589-f1dbaaac1c1e": Object {
+ "auto": true,
+ "defaultFilterSettings": Object {
+ "regressionType": "linear",
+ "regressionTypeSettings": Object {
+ "linear": Object {
+ "p.level": 0.001,
+ },
+ "spline": Object {
+ "p.level": 0.001,
+ },
+ },
+ },
+ "enabled": true,
+ "filterSettings": Object {
+ "regressionType": "linear",
+ "regressionTypeSettings": Object {
+ "linear": Object {
+ "p.level": 0.001,
+ },
+ "spline": Object {
+ "p.level": 0.001,
+ },
+ },
+ },
+ },
+ },
+ },
"mockAuthJWT",
"mockJobId",
],
]
133 |
134 | expect(experimentInstance.updateById.mock.calls).toMatchSnapshot();
> 135 | expect(pipelineConstruct.createQCPipeline.mock.calls).toMatchSnapshot();
| ^
136 | });
137 |
138 | it('Starts a QC run when gem2s finishes and can duplicate defaultProcessingConfig ignoring entries that arent samples', async () => {
at Object.<anonymous> (tests/api.v2/helpers/pipeline/gem2s.test.js:135:59)
● gem2sResponse › Starts a QC run when gem2s finishes and can duplicate defaultProcessingConfig ignoring entries that arent samples
expect(received).toMatchSnapshot()
Snapshot name: `gem2sResponse Starts a QC run when gem2s finishes and can duplicate defaultProcessingConfig ignoring entries that arent samples 2`
- Snapshot - 1
+ Received + 147
Array [
Array [
"mockExperimentId",
- Array [],
+ Object {
+ "cellSizeDistribution": Object {
+ "fc68aefc-c3ca-467f-8589-f1dbaaac1c1e": Object {
+ "auto": true,
+ "defaultFilterSettings": Object {
+ "binStep": 200,
+ "minCellSize": 1044,
+ },
+ "enabled": false,
+ "filterSettings": Object {
+ "binStep": 200,
+ "minCellSize": 1044,
+ },
+ },
+ },
+ "classifier": Object {
+ "fc68aefc-c3ca-467f-8589-f1dbaaac1c1e": Object {
+ "auto": true,
+ "defaultFilterSettings": Object {
+ "FDR": 0.02,
+ },
+ "enabled": false,
+ "filterSettings": Object {
+ "FDR": 0.01,
+ },
+ "prefiltered": true,
+ },
+ },
+ "configureEmbedding": Object {
+ "clusteringSettings": Object {
+ "method": "louvain",
+ "methodSettings": Object {
+ "louvain": Object {
+ "resolution": 0.8,
+ },
+ },
+ },
+ "embeddingSettings": Object {
+ "method": "umap",
+ "methodSettings": Object {
+ "tsne": Object {
+ "learningRate": 200,
+ "perplexity": 30,
+ },
+ "umap": Object {
+ "distanceMetric": "cosine",
+ "minimumDistance": 0.3,
+ },
+ },
+ },
+ },
+ "dataIntegration": Object {
+ "dataIntegration": Object {
+ "method": "harmony",
+ "methodSettings": Object {
+ "fastmnn": Object {
+ "normalisation": "logNormalize",
+ "numGenes": 2000,
+ },
+ "harmony": Object {
+ "normalisation": "logNormalize",
+ "numGenes": 2000,
+ },
+ "seuratv4": Object {
+ "normalisation": "logNormalize",
+ "numGenes": 2000,
+ },
+ "unisample": Object {
+ "normalisation": "logNormalize",
+ "numGenes": 2000,
+ },
+ },
+ },
+ "dimensionalityReduction": Object {
+ "excludeGeneCategories": Array [],
+ "method": "rpca",
+ "numPCs": 30,
+ },
+ },
+ "doubletScores": Object {
+ "fc68aefc-c3ca-467f-8589-f1dbaaac1c1e": Object {
+ "auto": true,
+ "defaultFilterSettings": Object {
+ "binStep": 0.05,
+ "probabilityThreshold": 0.6569474,
+ },
+ "enabled": true,
+ "filterSettings": Object {
+ "binStep": 0.02,
+ "probabilityThreshold": 0.6569474,
+ },
+ },
+ "someStepFlag": true,
+ },
+ "mitochondrialContent": Object {
+ "fc68aefc-c3ca-467f-8589-f1dbaaac1c1e": Object {
+ "auto": true,
+ "defaultFilterSettings": Object {
+ "method": "absoluteThreshold",
+ "methodSettings": Object {
+ "absoluteThreshold": Object {
+ "binStep": 0.6,
+ "maxFraction": 0.07181355,
+ },
+ },
+ },
+ "enabled": true,
+ "filterSettings": Object {
+ "method": "absoluteThreshold",
+ "methodSettings": Object {
+ "absoluteThreshold": Object {
+ "binStep": 0.3,
+ "maxFraction": 0.07181329,
+ },
+ },
+ },
+ },
+ },
+ "numGenesVsNumUmis": Object {
+ "fc68aefc-c3ca-467f-8589-f1dbaaac1c1e": Object {
+ "auto": true,
+ "defaultFilterSettings": Object {
+ "regressionType": "linear",
+ "regressionTypeSettings": Object {
+ "linear": Object {
+ "p.level": 0.001,
+ },
+ "spline": Object {
+ "p.level": 0.001,
+ },
+ },
+ },
+ "enabled": true,
+ "filterSettings": Object {
+ "regressionType": "linear",
+ "regressionTypeSettings": Object {
+ "linear": Object {
+ "p.level": 0.001,
+ },
+ "spline": Object {
+ "p.level": 0.001,
+ },
+ },
+ },
+ },
+ },
+ },
"mockAuthJWT",
"mockJobId",
],
]
178 |
179 | expect(experimentInstance.updateById.mock.calls).toMatchSnapshot();
> 180 | expect(pipelineConstruct.createQCPipeline.mock.calls).toMatchSnapshot();
| ^
181 | });
182 |
183 | it('Updates the subset experiment when subsetSeurat is notified to have finished', async () => {
at Object.<anonymous> (tests/api.v2/helpers/pipeline/gem2s.test.js:180:59)
● qcController › runQC works correctly with processingConfig changes
expect(jest.fn()).toHaveBeenCalledWith(...expected)
Expected: "experimentId", [{"body": {"auto": true, "enabled": true, "f87892f0-3403-4ba9-b871-c366e3fa855e": {"auto": false, "defaultFilterSettings": {"regressionType": "linear", "regressionTypeSettings": {"linear": {"p.level": 0.001}, "spline": {"p.level": 0.001}}}, "enabled": true, "filterSettings": {"regressionType": "linear", "regressionTypeSettings": {"linear": {"p.level": 0.00095}, "spline": {"p.level": 0.001}}}}, "filterSettings": {"regressionType": "linear", "regressionTypeSettings": {"linear": {"p.level": 0.001}, "spline": {"p.level": 0.001}}}}, "name": "numGenesVsNumUmis"}], "mockAuthorization"
Received: "experimentId", undefined, "mockAuthorization"
Number of calls: 1
86 | await qcController.runQC(mockReq, mockRes);
87 |
> 88 | expect(pipelineConstruct.createQCPipeline).toHaveBeenCalledWith(
| ^
89 | experimentId, processingConfigUpdate, authorization,
90 | );
91 |
at Object.<anonymous> (tests/api.v2/controllers/qcController.test.js:88:48)
● qcController › runQC works correctly without processingConfig changes
expect(jest.fn()).toHaveBeenCalledWith(...expected)
Expected: "experimentId", [], "mockAuthorization"
Received: "experimentId", undefined, "mockAuthorization"
Number of calls: 1
109 | await qcController.runQC(mockReq, mockRes);
110 |
> 111 | expect(pipelineConstruct.createQCPipeline).toHaveBeenCalledWith(
| ^
112 | experimentId, [], authorization,
113 | );
114 |
at Object.<anonymous> (tests/api.v2/controllers/qcController.test.js:111:48)
● helper functions for skeletons › returns from first not-completed step if the config has no changes
TypeError: Cannot read property 'select' of undefined
17 | async getMetadataByExperimentIds(experimentIds) {
18 | const result = await this.sql
> 19 | .select([...fields, `${tableNames.CELL_LEVEL_TO_EXPERIMENT_MAP}.experiment_id`])
| ^
20 | .from(tableNames.CELL_LEVEL_TO_EXPERIMENT_MAP)
21 | .leftJoin(
22 | tableNames.CELL_LEVEL,
at CellLevelMeta.getMetadataByExperimentIds (src/api.v2/model/CellLevelMeta.js:19:8)
at getCellLevelMetadataFileChanged (src/api.v2/helpers/pipeline/pipelineConstruct/qcHelpers.js:26:6)
at getFirstQCStep (src/api.v2/helpers/pipeline/pipelineConstruct/qcHelpers.js:46:14)
at getQcStepsToRun (src/api.v2/helpers/pipeline/pipelineConstruct/qcHelpers.js:107:27)
at Object.<anonymous> (tests/api.v2/helpers/pipeline/pipelineConstruct/qcHelpers.test.js:131:27)
Annotations
Check failure on line 91 in tests/api.v2/helpers/pipeline/pipelineConstruct.test.js
github-actions / jest-github-action
test for pipeline services > Create QC pipeline works
TypeError: Cannot read property 'select' of undefined
at CellLevelMeta.getMetadataByExperimentIds (/home/runner/work/api/api/src/api.v2/model/CellLevelMeta.js:19:8)
at createQCPipeline (/home/runner/work/api/api/src/api.v2/helpers/pipeline/pipelineConstruct/index.js:122:57)
at Object.<anonymous> (/home/runner/work/api/api/tests/api.v2/helpers/pipeline/pipelineConstruct.test.js:123:5)
Check failure on line 141 in tests/api.v2/helpers/pipeline/pipelineConstruct.test.js
github-actions / jest-github-action
test for pipeline services > Parses QC processingConfig correctly
TypeError: Cannot read property 'select' of undefined
at CellLevelMeta.getMetadataByExperimentIds (/home/runner/work/api/api/src/api.v2/model/CellLevelMeta.js:19:8)
at createQCPipeline (/home/runner/work/api/api/src/api.v2/helpers/pipeline/pipelineConstruct/index.js:122:57)
at Object.<anonymous> (/home/runner/work/api/api/tests/api.v2/helpers/pipeline/pipelineConstruct.test.js:186:5)
Check failure on line 241 in tests/api.v2/helpers/pipeline/pipelineConstruct.test.js
github-actions / jest-github-action
test for pipeline services > Create Subset pipeline works
Error: expect(received).toMatchSnapshot(hint)
Snapshot name: `test for pipeline services Create Subset pipeline works: createStateMachineSpy calls 1`
- Snapshot - 1
+ Received + 1
@@ -1,9 +1,9 @@
Array [
Array [
Object {
- "definition": "{\"Comment\":\"Subset Pipeline for clusterEnv 'test'\",\"StartAt\":\"RequestPod\",\"States\":{\"RequestPod\":{\"ResultPath\":null,\"Next\":\"WaitForPod\",\"Comment\":\"Send a message through SNS so that the API assigns a pod to the pipeline\",\"Type\":\"Task\",\"Resource\":\"arn:aws:states:::sns:publish\",\"Parameters\":{\"TopicArn\":\"arn:aws:sns:eu-west-1:000000000000:work-results-test-default-v2\",\"Message\":\"{\\\"taskName\\\":\\\"assignPodToPipeline\\\",\\\"experimentId\\\":\\\"toExperimentId\\\",\\\"apiUrl\\\":\\\"test-public-api-url\\\",\\\"input\\\":{\\\"experimentId\\\":\\\"toExperimentId\\\",\\\"sandboxId\\\":\\\"default\\\",\\\"activityId\\\":\\\"pipeline-test-mock-uuid\\\",\\\"processName\\\":\\\"subset\\\"}}\",\"MessageAttributes\":{\"type\":{\"DataType\":\"String\",\"StringValue\":\"PipelineResponse\"}}}},\"WaitForPod\":{\"ResultPath\":null,\"Next\":\"SubsetSeurat\",\"Type\":\"Map\",\"ItemsPath\":\"$.retries\",\"MaxConcurrency\":1,\"Retry\":[{\"ErrorEquals\":[\"NoPodAssigned\"],\"IntervalSeconds\":1,\"MaxAttempts\":13,\"BackoffRate\":1.5}],\"Iterator\":{\"StartAt\":\"GetAssignedPod\",\"States\":{\"GetAssignedPod\":{\"Next\":\"IsPodAssigned\",\"Type\":\"Task\",\"Comment\":\"Retrieves first unassigned and running pipeline pod.\",\"Resource\":\"arn:aws:states:::eks:call\",\"Parameters\":{\"ClusterName\":\"biomage-test\",\"CertificateAuthority\":\"AAAAAAAAAAA\",\"Endpoint\":\"https://test-endpoint.me/fgh\",\"Method\":\"GET\",\"Path\":\"/api/v1/namespaces/pipeline-test-namespace/pods\",\"QueryParameters\":{\"labelSelector\":[\"type=pipeline,activityId=pipeline-test-mock-uuid\"]}}},\"IsPodAssigned\":{\"Type\":\"Choice\",\"Comment\":\"Redirects to an error state if the pipeline pod is not assigned yet.\",\"Choices\":[{\"Variable\":\"$.ResponseBody.items[0]\",\"IsPresent\":false,\"Next\":\"NoPodAssigned\"}],\"Default\":\"ReadyToRun\"},\"NoPodAssigned\":{\"Type\":\"Fail\",\"Cause\":\"No available and running pipeline pods.\",\"Error\":\"NoPodAssigned\"},\"ReadyToRun\":{\"Type\":\"Pass\",\"End\":true}}}},\"SubsetSeurat\":{\"Next\":\"PrepareExperiment\",\"Type\":\"Task\",\"Resource\":\"arn:aws:states:eu-west-1:000000000000:activity:pipeline-test-mock-uuid\",\"ResultPath\":null,\"TimeoutSeconds\":10800,\"HeartbeatSeconds\":90,\"Parameters\":{\"experimentId\":\"toExperimentId\",\"taskName\":\"subsetSeurat\",\"processName\":\"subset\",\"server\":\"remoter-server-toExperimentId.pipeline-test-namespace.svc.cluster.local\",\"ignoreSslCert\":false,\"parentExperimentId\":\"fromExperimentId\",\"subsetExperimentId\":\"toExperimentId\",\"cellSetKeys\":[\"louvain-1\",\"louvain-2\"],\"parentProcessingConfig\":{\"classifier\":{\"oneSample\":{\"auto\":true,\"enabled\":false,\"prefiltered\":true,\"filterSettings\":{\"FDR\":0.01},\"defaultFilterSettings\":{\"FDR\":0.01}},\"otherSample\":{\"auto\":true,\"enabled\":false,\"prefiltered\":true,\"filterSettings\":{\"FDR\":0.01},\"defaultFilterSettings\":{\"FDR\":0.01}}},\"doubletScores\":{\"oneSample\":{\"defaultFilterSettings\":{\"oneSetting\":1},\"filterSettings\":{\"oneSetting\":7}},\"otherSample\":{\"filterSettings\":{\"oneSetting\":15}}},\"dataIntegration\":{\"dataIntegration\":{\"method\":\"harmony\",\"methodSettings\":{\"fastmnn\":{\"numGenes\":2000,\"normalisation\":\"logNormalize\"},\"harmony\":{\"numGenes\":2000,\"normalisation\":\"logNormalize\"},\"seuratv4\":{\"numGenes\":2000,\"normalisation\":\"logNormalize\"},\"unisample\":{\"numGenes\":2000,\"normalisation\":\"logNormalize\"}}},\"dimensionalityReduction\":{\"method\":\"rpca\",\"numPCs\":30,\"excludeGeneCategories\":[]}},\"numGenesVsNumUmis\":{\"oneSample\":{\"auto\":true,\"enabled\":true,\"filterSettings\":{\"regressionType\":\"linear\",\"regressionTypeSettings\":{\"linear\":{\"p.level\":0.001},\"spline\":{\"p.level\":0.001}}},\"defaultFilterSettings\":{\"regressionType\":\"linear\",\"regressionTypeSettings\":{\"linear\":{\"p.level\":0.001},\"spline\":{\"p.level\":0.001}}}},\"otherSample\":{\"auto\":true,\"enabled\":true,\"filterSettings\":{\"regressionType\":\"linear\",\"regressionTypeSettings\":{\"linear\":{\"p.level\":0.001},\"spline\":{\"p.level\":0.001}}},\"defaultFilterSettings\":{\"regressionType\":\"linear\",\"regressionTypeSettings\":{\"linear\":{\"p.level\":0.001},\"spline\":{\"p.level\":0.001}}}}},\"configureEmbedding\":{\"embeddingSettings\":{\"method\":\"umap\",\"methodSettings\":{\"tsne\":{\"perplexity\":30,\"learningRate\":200},\"umap\":{\"distanceMetric\":\"cosine\",\"minimumDistance\":0.3}}},\"clusteringSettings\":{\"method\":\"louvain\",\"methodSettings\":{\"louvain\":{\"resolution\":0.8}}}},\"cellSizeDistribution\":{\"oneSample\":{\"auto\":true,\"enabled\":false,\"filterSettings\":{\"binStep\":200,\"minCellSize\":1044},\"defaultFilterSettings\":{\"binStep\":200,\"minCellSize\":1044}},\"otherSample\":{\"auto\":true,\"enabled\":false,\"filterSettings\":{\"binStep\":200,\"minCellSize\":1044},\"defaultFilterSettings\":{\"binStep\":200,\"minCellSize\":1044}}},\"mitochondrialContent\":{\"oneSample\":{\"auto\":true,\"enabled\":true,\"filterSettings\":{\"method\":\"absoluteThreshold\",\"methodSettings\":{\"absoluteThreshold\":{\"binStep\":0.3,\"maxFraction\":0.07181329}}},\"defaultFilterSettings\":{\"method\":\"absoluteThreshold\",\"methodSettings\":{\"absoluteThreshold\":{\"binStep\":0.3,\"maxFraction\":0.07181329}}}},\"otherSample\":{\"auto\":true,\"enabled\":true,\"filterSettings\":{\"method\":\"absoluteThreshold\",\"methodSettings\":{\"absoluteThreshold\":{\"binStep\":0.3,\"maxFraction\":0.07181329}}},\"defaultFilterSettings\":{\"method\":\"absoluteThreshold\",\"methodSettings\":{\"absoluteThreshold\":{\"binStep\":0.3,\"maxFraction\":0.07181329}}}}}}},\"Catch\":[{\"ErrorEquals\":[\"States.ALL\"],\"ResultPath\":\"$.errorInfo\",\"Next\":\"HandleError\"}]},\"PrepareExperiment\":{\"Next\":\"UploadToAWS\",\"Type\":\"Task\",\"Resource\":\"arn:aws:states:eu-west-1:000000000000:activity:pipeline-test-mock-uuid\",\"ResultPath\":null,\"TimeoutSeconds\":10800,\"HeartbeatSeconds\":90,\"Parameters\":{\"experimentId\":\"toExperimentId\",\"taskName\":\"prepareExperiment\",\"processName\":\"subset\",\"server\":\"remoter-server-toExperimentId.pipeline-test-namespace.svc.cluster.local\",\"ignoreSslCert\":false,\"experimentName\":\"toExperimentName\",\"authJWT\":\"mockAuthJWT\"},\"Catch\":[{\"ErrorEquals\":[\"States.ALL\"],\"ResultPath\":\"$.errorInfo\",\"Next\":\"HandleError\"}]},\"UploadToAWS\":{\"Next\":\"EndOfPipeline\",\"Type\":\"Task\",\"Resource\":\"arn:aws:states:eu-west-1:000000000000:activity:pipeline-test-mock-uuid\",\"ResultPath\":null,\"TimeoutSeconds\":10800,\"HeartbeatSeconds\":90,\"Parameters\":{\"experimentId\":\"toExperimentId\",\"taskName\":\"uploadToAWS\",\"processName\":\"subset\",\"server\":\"remoter-server-toExperimentId.pipeline-test-namespace.svc.cluster.local\",\"ignoreSslCert\":false,\"experimentName\":\"toExperimentName\",\"authJWT\":\"mockAuthJWT\"},\"Catch\":[{\"ErrorEquals\":[\"States.ALL\"],\"ResultPath\":\"$.errorInfo\",\"Next\":\"HandleError\"}]},\"HandleError\":{\"Next\":\"MarkAsFailed\",\"Type\":\"Task\",\"Resource\":\"arn:aws:states:::sns:publish\",\"Parameters\":{\"TopicArn\":\"arn:aws:sns:eu-west-1:000000000000:work-results-test-default-v2\",\"Message.$\":\"States.Format('\\\\{\\\"taskName\\\":\\\"pipelineError\\\",\\\"experimentId\\\":\\\"toExperimentId\\\",\\\"apiUrl\\\":\\\"test-public-api-url\\\",\\\"input\\\":\\\\{\\\"experimentId\\\":\\\"toExperimentId\\\",\\\"error\\\":\\\"{}\\\",\\\"taskName\\\":\\\"pipelineError\\\",\\\"sandboxId\\\":\\\"default\\\",\\\"activityId\\\":\\\"pipeline-test-mock-uuid\\\",\\\"processName\\\":\\\"subset\\\"\\\\}\\\\}', $.errorInfo.Error)\",\"MessageAttributes\":{\"type\":{\"DataType\":\"String\",\"StringValue\":\"PipelineResponse\"}}}},\"MarkAsFailed\":{\"Type\":\"Fail\"},\"EndOfPipeline\":{\"Type\":\"Pass\",\"End\":true}}}",
+ "definition": "{\"Comment\":\"Subset Pipeline for clusterEnv 'test'\",\"StartAt\":\"RequestPod\",\"States\":{\"RequestPod\":{\"ResultPath\":null,\"Next\":\"WaitForPod\",\"Comment\":\"Send a message through SNS so that the API assigns a pod to the pipeline\",\"Type\":\"Task\",\"Resource\":\"arn:aws:states:::sns:publish\",\"Parameters\":{\"TopicArn\":\"arn:aws:sns:eu-west-1:000000000000:work-results-test-default-v2\",\"Message\":\"{\\\"taskName\\\":\\\"assignPodToPipeline\\\",\\\"experimentId\\\":\\\"toExperimentId\\\",\\\"apiUrl\\\":\\\"test-public-api-url\\\",\\\"input\\\":{\\\"experimentId\\\":\\\"toExperimentId\\\",\\\"sandboxId\\\":\\\"default\\\",\\\"activityId\\\":\\\"pipeline-test-mock-uuid\\\",\\\"processName\\\":\\\"subset\\\"}}\",\"MessageAttributes\":{\"type\":{\"DataType\":\"String\",\"StringValue\":\"PipelineResponse\"}}}},\"WaitForPod\":{\"ResultPath\":null,\"Next\":\"SubsetSeurat\",\"Type\":\"Map\",\"ItemsPath\":\"$.retries\",\"MaxConcurrency\":1,\"Retry\":[{\"ErrorEquals\":[\"NoPodAssigned\"],\"IntervalSeconds\":1,\"MaxAttempts\":13,\"BackoffRate\":1.5}],\"Iterator\":{\"StartAt\":\"GetAssignedPod\",\"States\":{\"GetAssignedPod\":{\"Next\":\"IsPodAssigned\",\"Type\":\"Task\",\"Comment\":\"Retrieves first unassigned and running pipeline pod.\",\"Resource\":\"arn:aws:states:::eks:call\",\"Parameters\":{\"ClusterName\":\"biomage-test\",\"CertificateAuthority\":\"AAAAAAAAAAA\",\"Endpoint\":\"https://test-endpoint.me/fgh\",\"Method\":\"GET\",\"Path\":\"/api/v1/namespaces/pipeline-test-namespace/pods\",\"QueryParameters\":{\"labelSelector\":[\"type=pipeline,activityId=pipeline-test-mock-uuid\"]}}},\"IsPodAssigned\":{\"Type\":\"Choice\",\"Comment\":\"Redirects to an error state if the pipeline pod is not assigned yet.\",\"Choices\":[{\"Variable\":\"$.ResponseBody.items[0]\",\"IsPresent\":false,\"Next\":\"NoPodAssigned\"}],\"Default\":\"ReadyToRun\"},\"NoPodAssigned\":{\"Type\":\"Fail\",\"Cause\":\"No available and running pipeline pods.\",\"Error\":\"NoPodAssigned\"},\"ReadyToRun\":{\"Type\":\"Pass\",\"End\":true}}}},\"SubsetSeurat\":{\"Next\":\"PrepareExperiment\",\"Type\":\"Task\",\"Resource\":\"arn:aws:states:eu-west-1:000000000000:activity:pipeline-test-mock-uuid\",\"ResultPath\":null,\"TimeoutSeconds\":10800,\"HeartbeatSeconds\":90,\"Parameters\":{\"experimentId\":\"toExperimentId\",\"taskName\":\"subsetSeurat\",\"processName\":\"subset\",\"server\":\"remoter-server-toExperimentId.pipeline-test-namespace.svc.cluster.local\",\"ignoreSslCert\":false,\"parentExperimentId\":\"fromExperimentId\",\"subsetExperimentId\":\"toExperimentId\",\"cellSetKeys\":[\"louvain-1\",\"louvain-2\"],\"parentProcessingConfig\":{\"classifier\":{\"oneSample\":{\"auto\":true,\"enabled\":false,\"prefiltered\":true,\"filterSettings\":{\"FDR\":0.01},\"defaultFilterSettings\":{\"FDR\":0.01}},\"otherSample\":{\"auto\":true,\"enabled\":false,\"prefiltered\":true,\"filterSettings\":{\"FDR\":0.01},\"defaultFilterSettings\":{\"FDR\":0.01}}},\"doubletScores\":{\"oneSample\":{\"enabled\":true,\"filterSettings\":{\"oneSetting\":1},\"defaultFilterSettings\":{\"oneSetting\":1},\"recomputeDoubletScore\":true},\"otherSample\":{\"enabled\":true,\"filterSettings\":{\"oneSetting\":1},\"defaultFilterSettings\":{\"oneSetting\":1},\"recomputeDoubletScore\":true}},\"dataIntegration\":{\"dataIntegration\":{\"method\":\"harmony\",\"methodSettings\":{\"fastmnn\":{\"numGenes\":2000,\"normalisation\":\"logNormalize\"},\"harmony\":{\"numGenes\":2000,\"normalisation\":\"logNormalize\"},\"seuratv4\":{\"numGenes\":2000,\"normalisation\":\"logNormalize\"},\"unisample\":{\"numGenes\":2000,\"normalisation\":\"logNormalize\"}}},\"dimensionalityReduction\":{\"method\":\"rpca\",\"numPCs\":30,\"excludeGeneCategories\":[]}},\"numGenesVsNumUmis\":{\"oneSample\":{\"auto\":true,\"enabled\":true,\"filterSettings\":{\"regressionType\":\"linear\",\"regressionTypeSettings\":{\"linear\":{\"p.level\":0.001},\"spline\":{\"p.level\":0.001}}},\"defaultFilterSettings\":{\"regressionType\":\"linear\",\"regressionTypeSettings\":{\"linear\":{\"p.level\":0.001},\"spline\":{\"p.level\":0.001}}}},\"otherSample\":{\"auto\":true,\"enabled\":true,\"filterSettings\":{\"regressionType\":\"linear\",\"regressionTypeSettings\":{\"linear\":{\"p.level\":0.001},\"spline\":{\"p.level\":0.001}}},\"defaultFilterSettings\":{\"regressionType\":\"linear\",\"regressionTypeSettings\":{\"linear\":{\"p.level\":0.001},\"spline\":{\"p.level\":0.001}}}}},\"configureEmbedding\":{\"embeddingSettings\":{\"method\":\"umap\",\"methodSettings\":{\"tsne\":{\"perplexity\":30,\"learningRate\":200},\"umap\":{\"distanceMetric\":\"cosine\",\"minimumDistance\":0.3}}},\"clusteringSettings\":{\"method\":\"louvain\",\"methodSettings\":{\"louvain\":{\"resolution\":0.8}}}},\"cellSizeDistribution\":{\"oneSample\":{\"auto\":true,\"enabled\":false,\"filterSettings\":{\"binStep\":200,\"minCellSize\":1044},\"defaultFilterSettings\":{\"binStep\":200,\"minCellSize\":1044}},\"otherSample\":{\"auto\":true,\"enabled\":false,\"filterSettings\":{\"binStep\":200,\"minCellSize\":1044},\"defaultFilterSettings\":{\"binStep\":200,\"minCellSize\":1044}}},\"mitochondrialContent\":{\"oneSample\":{\"auto\":true,\"enabled\":true,\"filterSettings\":{\"method\":\"absoluteThreshold\",\"methodSettings\":{\"absoluteThreshold\":{\"binStep\":0.3,\"maxFraction\":0.07181329}}},\"defaultFilterSettings\":{\"method\":\"absoluteThreshold\",\"methodSettings\":{\"absoluteThreshold\":{\"binStep\":0.3,\"maxFraction\":0.07181329}}}},\"otherSample\":{\"auto\":true,\"enabled\":true,\"filterSettings\":{\"method\":\"absoluteThreshold\",\"methodSettings\":{\"absoluteThreshold\":{\"binStep\":0.3,\"maxFraction\":0.07181329}}},\"defaultFilterSettings\":{\"method\":\"absoluteThreshold\",\"methodSettings\":{\"absoluteThreshold\":{\"binStep\":0.3,\"maxFraction\":0.07181329}}}}}}},\"Catch\":[{\"ErrorEquals\":[\"States.ALL\"],\"ResultPath\":\"$.errorInfo\",\"Next\":\"HandleError\"}]},\"PrepareExperiment\":{\"Next\":\"UploadToAWS\",\"Type\":\"Task\",\"Resource\":\"arn:aws:states:eu-west-1:000000000000:activity:pipeline-test-mock-uuid\",\"ResultPath\":null,\"TimeoutSeconds\":10800,\"HeartbeatSeconds\":90,\"Parameters\":{\"experimentId\":\"toExperimentId\",\"taskName\":\"prepareExperiment\",\"processName\":\"subset\",\"server\":\"remoter-server-toExperimentId.pipeline-test-namespace.svc.cluster.local\",\"ignoreSslCert\":false,\"experimentName\":\"toExperimentName\",\"authJWT\":\"mockAuthJWT\"},\"Catch\":[{\"ErrorEquals\":[\"States.ALL\"],\"ResultPath\":\"$.errorInfo\",\"Next\":\"HandleError\"}]},\"UploadToAWS\":{\"Next\":\"EndOfPipeline\",\"Type\":\"Task\",\"Resource\":\"arn:aws:states:eu-west-1:000000000000:activity:pipeline-test-mock-uuid\",\"ResultPath\":null,\"TimeoutSeconds\":10800,\"HeartbeatSeconds\":90,\"Parameters\":{\"experimentId\":\"toExperimentId\",\"taskName\":\"uploadToAWS\",\"processName\":\"subset\",\"server\":\"remoter-server-toExperimentId.pipeline-test-namespace.svc.cluster.local\",\"ignoreSslCert\":false,\"experimentName\":\"toExperimentName\",\"authJWT\":\"mockAuthJWT\"},\"Catch\":[{\"ErrorEquals\":[\"States.ALL\"],\"ResultPath\":\"$.errorInfo\",\"Next\":\"HandleError\"}]},\"HandleError\":{\"Next\":\"MarkAsFailed\",\"Type\":\"Task\",\"Resource\":\"arn:aws:states:::sns:publish\",\"Parameters\":{\"TopicArn\":\"arn:aws:sns:eu-west-1:000000000000:work-results-test-default-v2\",\"Message.$\":\"States.Format('\\\\{\\\"taskName\\\":\\\"pipelineError\\\",\\\"experimentId\\\":\\\"toExperimentId\\\",\\\"apiUrl\\\":\\\"test-public-api-url\\\",\\\"input\\\":\\\\{\\\"experimentId\\\":\\\"toExperimentId\\\",\\\"error\\\":\\\"{}\\\",\\\"taskName\\\":\\\"pipelineError\\\",\\\"sandboxId\\\":\\\"default\\\",\\\"activityId\\\":\\\"pipeline-test-mock-uuid\\\",\\\"processName\\\":\\\"subset\\\"\\\\}\\\\}', $.errorInfo.Error)\",\"MessageAttributes\":{\"type\":{\"DataType\":\"String\",\"StringValue\":\"PipelineResponse\"}}}},\"MarkAsFailed\":{\"Type\":\"Fail\"},\"EndOfPipeline\":{\"Type\":\"Pass\",\"End\":true}}}",
"loggingConfiguration": Object {
"level": "OFF",
},
"name": "biomage-subset-test-f3880dbb8507da8b0f158c0216a7d7189670e6ca",
"roleArn": "arn:aws:iam::000000000000:role/state-machine-role-test",
at Object.<anonymous> (/home/runner/work/api/api/tests/api.v2/helpers/pipeline/pipelineConstruct.test.js:286:46)
at processTicksAndRejections (internal/process/task_queues.js:95:5)
Check failure on line 99 in tests/api.v2/helpers/pipeline/gem2s.test.js
github-actions / jest-github-action
gem2sResponse > Starts a QC run when gem2s finishes
Error: expect(received).toMatchSnapshot()
Snapshot name: `gem2sResponse Starts a QC run when gem2s finishes 2`
- Snapshot - 1
+ Received + 146
Array [
Array [
"mockExperimentId",
- Array [],
+ Object {
+ "cellSizeDistribution": Object {
+ "fc68aefc-c3ca-467f-8589-f1dbaaac1c1e": Object {
+ "auto": true,
+ "defaultFilterSettings": Object {
+ "binStep": 200,
+ "minCellSize": 1044,
+ },
+ "enabled": false,
+ "filterSettings": Object {
+ "binStep": 200,
+ "minCellSize": 1044,
+ },
+ },
+ },
+ "classifier": Object {
+ "fc68aefc-c3ca-467f-8589-f1dbaaac1c1e": Object {
+ "auto": true,
+ "defaultFilterSettings": Object {
+ "FDR": 0.02,
+ },
+ "enabled": false,
+ "filterSettings": Object {
+ "FDR": 0.01,
+ },
+ "prefiltered": true,
+ },
+ },
+ "configureEmbedding": Object {
+ "clusteringSettings": Object {
+ "method": "louvain",
+ "methodSettings": Object {
+ "louvain": Object {
+ "resolution": 0.8,
+ },
+ },
+ },
+ "embeddingSettings": Object {
+ "method": "umap",
+ "methodSettings": Object {
+ "tsne": Object {
+ "learningRate": 200,
+ "perplexity": 30,
+ },
+ "umap": Object {
+ "distanceMetric": "cosine",
+ "minimumDistance": 0.3,
+ },
+ },
+ },
+ },
+ "dataIntegration": Object {
+ "dataIntegration": Object {
+ "method": "harmony",
+ "methodSettings": Object {
+ "fastmnn": Object {
+ "normalisation": "logNormalize",
+ "numGenes": 2000,
+ },
+ "harmony": Object {
+ "normalisation": "logNormalize",
+ "numGenes": 2000,
+ },
+ "seuratv4": Object {
+ "normalisation": "logNormalize",
+ "numGenes": 2000,
+ },
+ "unisample": Object {
+ "normalisation": "logNormalize",
+ "numGenes": 2000,
+ },
+ },
+ },
+ "dimensionalityReduction": Object {
+ "excludeGeneCategories": Array [],
+ "method": "rpca",
+ "numPCs": 30,
+ },
+ },
+ "doubletScores": Object {
+ "fc68aefc-c3ca-467f-8589-f1dbaaac1c1e": Object {
+ "auto": true,
+ "defaultFilterSettings": Object {
+ "binStep": 0.05,
+ "probabilityThreshold": 0.6569474,
+ },
+ "enabled": true,
+ "filterSettings": Object {
+ "binStep": 0.02,
+ "probabilityThreshold": 0.6569474,
+ },
+ },
+ },
+ "mitochondrialContent": Object {
+ "fc68aefc-c3ca-467f-8589-f1dbaaac1c1e": Object {
+ "auto": true,
+ "defaultFilterSettings": Object {
+ "method": "absoluteThreshold",
+ "methodSettings": Object {
+ "absoluteThreshold": Object {
+ "binStep": 0.6,
+ "maxFraction": 0.07181355,
+ },
+ },
+ },
+ "enabled": true,
+ "filterSettings": Object {
+ "method": "absoluteThreshold",
+ "methodSettings": Object {
+ "absoluteThreshold": Object {
+ "binStep": 0.3,
+ "maxFraction": 0.07181329,
+ },
+ },
+ },
+ },
+ },
+ "numGenesVsNumUmis": Object {
+ "fc68aefc-c3ca-467f-8589-f1dbaaac1c1e": Object {
+ "auto": true,
+ "defaultFilterSettings": Object {
+ "regressionType": "linear",
+ "regressionTypeSettings": Object {
+ "linear": Object {
+ "p.level": 0.001,
+ },
+ "spline": Object {
+ "p.level": 0.001,
+ },
+ },
+ },
+ "enabled": true,
+ "filterSettings": Object {
+ "regressionType": "linear",
+ "regressionTypeSettings": Object {
+ "linear": Object {
+ "p.level": 0.001,
+ },
+ "spline": Object {
+ "p.level": 0.001,
+ },
+ },
+ },
+ },
+ },
+ },
"mockAuthJWT",
"mockJobId",
],
]
at Object.<anonymous> (/home/runner/work/api/api/tests/api.v2/helpers/pipeline/gem2s.test.js:135:59)
Check failure on line 138 in tests/api.v2/helpers/pipeline/gem2s.test.js
github-actions / jest-github-action
gem2sResponse > Starts a QC run when gem2s finishes and can duplicate defaultProcessingConfig ignoring entries that arent samples
Error: expect(received).toMatchSnapshot()
Snapshot name: `gem2sResponse Starts a QC run when gem2s finishes and can duplicate defaultProcessingConfig ignoring entries that arent samples 2`
- Snapshot - 1
+ Received + 147
Array [
Array [
"mockExperimentId",
- Array [],
+ Object {
+ "cellSizeDistribution": Object {
+ "fc68aefc-c3ca-467f-8589-f1dbaaac1c1e": Object {
+ "auto": true,
+ "defaultFilterSettings": Object {
+ "binStep": 200,
+ "minCellSize": 1044,
+ },
+ "enabled": false,
+ "filterSettings": Object {
+ "binStep": 200,
+ "minCellSize": 1044,
+ },
+ },
+ },
+ "classifier": Object {
+ "fc68aefc-c3ca-467f-8589-f1dbaaac1c1e": Object {
+ "auto": true,
+ "defaultFilterSettings": Object {
+ "FDR": 0.02,
+ },
+ "enabled": false,
+ "filterSettings": Object {
+ "FDR": 0.01,
+ },
+ "prefiltered": true,
+ },
+ },
+ "configureEmbedding": Object {
+ "clusteringSettings": Object {
+ "method": "louvain",
+ "methodSettings": Object {
+ "louvain": Object {
+ "resolution": 0.8,
+ },
+ },
+ },
+ "embeddingSettings": Object {
+ "method": "umap",
+ "methodSettings": Object {
+ "tsne": Object {
+ "learningRate": 200,
+ "perplexity": 30,
+ },
+ "umap": Object {
+ "distanceMetric": "cosine",
+ "minimumDistance": 0.3,
+ },
+ },
+ },
+ },
+ "dataIntegration": Object {
+ "dataIntegration": Object {
+ "method": "harmony",
+ "methodSettings": Object {
+ "fastmnn": Object {
+ "normalisation": "logNormalize",
+ "numGenes": 2000,
+ },
+ "harmony": Object {
+ "normalisation": "logNormalize",
+ "numGenes": 2000,
+ },
+ "seuratv4": Object {
+ "normalisation": "logNormalize",
+ "numGenes": 2000,
+ },
+ "unisample": Object {
+ "normalisation": "logNormalize",
+ "numGenes": 2000,
+ },
+ },
+ },
+ "dimensionalityReduction": Object {
+ "excludeGeneCategories": Array [],
+ "method": "rpca",
+ "numPCs": 30,
+ },
+ },
+ "doubletScores": Object {
+ "fc68aefc-c3ca-467f-8589-f1dbaaac1c1e": Object {
+ "auto": true,
+ "defaultFilterSettings": Object {
+ "binStep": 0.05,
+ "probabilityThreshold": 0.6569474,
+ },
+ "enabled": true,
+ "filterSettings": Object {
+ "binStep": 0.02,
+ "probabilityThreshold": 0.6569474,
+ },
+ },
+ "someStepFlag": true,
+ },
+ "mitochondrialContent": Object {
+ "fc68aefc-c3ca-467f-8589-f1dbaaac1c1e": Object {
+ "auto": true,
+ "defaultFilterSettings": Object {
+ "method": "absoluteThreshold",
+ "methodSettings": Object {
+ "absoluteThreshold": Object {
+ "binStep": 0.6,
+ "maxFraction": 0.07181355,
+ },
+ },
+ },
+ "enabled": true,
+ "filterSettings": Object {
+ "method": "absoluteThreshold",
+ "methodSettings": Object {
+ "absoluteThreshold": Object {
+ "binStep": 0.3,
+ "maxFraction": 0.07181329,
+ },
+ },
+ },
+ },
+ },
+ "numGenesVsNumUmis": Object {
+ "fc68aefc-c3ca-467f-8589-f1dbaaac1c1e": Object {
+ "auto": true,
+ "defaultFilterSettings": Object {
+ "regressionType": "linear",
+ "regressionTypeSettings": Object {
+ "linear": Object {
+ "p.level": 0.001,
+ },
+ "spline": Object {
+ "p.level": 0.001,
+ },
+ },
+ },
+ "enabled": true,
+ "filterSettings": Object {
+ "regressionType": "linear",
+ "regressionTypeSettings": Object {
+ "linear": Object {
+ "p.level": 0.001,
+ },
+ "spline": Object {
+ "p.level": 0.001,
+ },
+ },
+ },
+ },
+ },
+ },
"mockAuthJWT",
"mockJobId",
],
]
at Object.<anonymous> (/home/runner/work/api/api/tests/api.v2/helpers/pipeline/gem2s.test.js:180:59)
Check failure on line 74 in tests/api.v2/controllers/qcController.test.js
github-actions / jest-github-action
qcController > runQC works correctly with processingConfig changes
Error: expect(jest.fn()).toHaveBeenCalledWith(...expected)
Expected: "experimentId", [{"body": {"auto": true, "enabled": true, "f87892f0-3403-4ba9-b871-c366e3fa855e": {"auto": false, "defaultFilterSettings": {"regressionType": "linear", "regressionTypeSettings": {"linear": {"p.level": 0.001}, "spline": {"p.level": 0.001}}}, "enabled": true, "filterSettings": {"regressionType": "linear", "regressionTypeSettings": {"linear": {"p.level": 0.00095}, "spline": {"p.level": 0.001}}}}, "filterSettings": {"regressionType": "linear", "regressionTypeSettings": {"linear": {"p.level": 0.001}, "spline": {"p.level": 0.001}}}}, "name": "numGenesVsNumUmis"}], "mockAuthorization"
Received: "experimentId", undefined, "mockAuthorization"
Number of calls: 1
at Object.<anonymous> (/home/runner/work/api/api/tests/api.v2/controllers/qcController.test.js:88:48)
Check failure on line 97 in tests/api.v2/controllers/qcController.test.js
github-actions / jest-github-action
qcController > runQC works correctly without processingConfig changes
Error: expect(jest.fn()).toHaveBeenCalledWith(...expected)
Expected: "experimentId", [], "mockAuthorization"
Received: "experimentId", undefined, "mockAuthorization"
Number of calls: 1
at Object.<anonymous> (/home/runner/work/api/api/tests/api.v2/controllers/qcController.test.js:111:48)
Check failure on line 123 in tests/api.v2/helpers/pipeline/pipelineConstruct/qcHelpers.test.js
github-actions / jest-github-action
helper functions for skeletons > returns from first not-completed step if the config has no changes
TypeError: Cannot read property 'select' of undefined
at CellLevelMeta.getMetadataByExperimentIds (/home/runner/work/api/api/src/api.v2/model/CellLevelMeta.js:19:8)
at getCellLevelMetadataFileChanged (/home/runner/work/api/api/src/api.v2/helpers/pipeline/pipelineConstruct/qcHelpers.js:26:6)
at getFirstQCStep (/home/runner/work/api/api/src/api.v2/helpers/pipeline/pipelineConstruct/qcHelpers.js:46:14)
at getQcStepsToRun (/home/runner/work/api/api/src/api.v2/helpers/pipeline/pipelineConstruct/qcHelpers.js:107:27)
at Object.<anonymous> (/home/runner/work/api/api/tests/api.v2/helpers/pipeline/pipelineConstruct/qcHelpers.test.js:131:27)
at Object.asyncJestTest (/home/runner/work/api/api/node_modules/jest-jasmine2/build/jasmineAsyncInstall.js:106:37)
at /home/runner/work/api/api/node_modules/jest-jasmine2/build/queueRunner.js:45:12
at new Promise (<anonymous>)
at mapper (/home/runner/work/api/api/node_modules/jest-jasmine2/build/queueRunner.js:28:19)
at /home/runner/work/api/api/node_modules/jest-jasmine2/build/queueRunner.js:75:41