diff --git a/deploy/datasets/query.js b/deploy/datasets/query.js index 83986048bfd30ee2eca99c1bba2cd97cddf51b6d..6dd7876b048172db429a8dd078a942d07f1a6706 100644 --- a/deploy/datasets/query.js +++ b/deploy/datasets/query.js @@ -3,7 +3,7 @@ const request = require('request') const URL = require('url') const path = require('path') const archiver = require('archiver') -const { commonSenseDsFilter } = require('./supplements/commonSense') +const { getCommonSenseDsFilter } = require('./supplements/commonSense') const { getPreviewFile, hasPreview } = require('./supplements/previewFile') const { init: kgQueryUtilInit, getUserKGRequestParam } = require('./util') @@ -183,7 +183,7 @@ const filterByPRName = ({ parcellationName = null, dataset = {parcellationAtlas: : (dataset.parcellationAtlas || []).some(({ name }) => name === parcellationName) const filter = (datasets = [], { templateName, parcellationName }) => datasets - .filter(ds => commonSenseDsFilter({ ds, templateName, parcellationName })) + .filter(getCommonSenseDsFilter({ templateName, parcellationName })) .filter(ds => { if (/infant/.test(ds.name)) return false diff --git a/deploy/datasets/supplements/commonSense.js b/deploy/datasets/supplements/commonSense.js index 42e4f30f57e4a2b8e1c15ed7ebba0a4572bbcb60..404617f8f6e82ba5ff8475dbd5dd0bf27b1069b3 100644 --- a/deploy/datasets/supplements/commonSense.js +++ b/deploy/datasets/supplements/commonSense.js @@ -34,7 +34,7 @@ const mouseParcellationSet = new Set([ 'Allen Mouse Common Coordinate Framework v3 2015' ]) -const dsIsHuman = ({ds}) => ds && ds.species.some(species => /homo\ sapiens/i.test(species)) +const dsIsHuman = ({ ds }) => ds && ds.species.some(species => /homo\ sapiens/i.test(species)) const dsIsRat = ({ ds }) => ds && ds.species.some(species => /rattus\ norvegicus/i.test(species)) const dsIsMouse = ({ ds }) => ds && ds.species.some(species => /mus\ musculus/i.test(species)) @@ -50,7 +50,23 @@ const queryIsHuman = ({ templateName, parcellationName }) => (templateName && humanTemplateSet.has(templateName)) || (parcellationName && humanParcellationSet.has(parcellationName)) -exports.commonSenseDsFilter = ({ ds , templateName, parcellationName}) => - (queryIsHuman({ templateName, parcellationName }) && !dsIsRat({ ds }) && !dsIsMouse({ ds })) - || (queryIsMouse({ templateName, parcellationName }) && !dsIsRat({ ds }) && !dsIsHuman({ ds })) - || (queryIsRat({ templateName, parcellationName }) && !dsIsMouse({ ds }) && !dsIsHuman({ ds })) +exports.getCommonSenseDsFilter = ({ templateName, parcellationName }) => { + const trueFilter = queryIsHuman({ templateName, parcellationName }) + ? dsIsHuman + : queryIsMouse({ templateName, parcellationName }) + ? dsIsMouse + : queryIsRat({ templateName, parcellationName }) + ? dsIsRat + : null + + const falseFilters = queryIsHuman({ templateName, parcellationName }) + ? [dsIsMouse, dsIsRat] + : queryIsMouse({ templateName, parcellationName }) + ? [dsIsHuman, dsIsRat] + : queryIsRat({ templateName, parcellationName }) + ? [dsIsMouse, dsIsHuman] + : [] + return ds => trueFilter + ? trueFilter({ ds }) || (falseFilters.every(filterFn => !filterFn({ ds }))) + : false +}