From: <luc...@us...> - 2019-10-24 18:57:09
|
Revision: 26142 http://sourceforge.net/p/sbml/code/26142 Author: luciansmith Date: 2019-10-24 18:57:07 +0000 (Thu, 24 Oct 2019) Log Message: ----------- Add spatial validation rule 23350. Modified Paths: -------------- branches/libsbml-experimental/src/sbml/packages/spatial/validator/SpatialSBMLError.h branches/libsbml-experimental/src/sbml/packages/spatial/validator/SpatialSBMLErrorTable.h branches/libsbml-experimental/src/sbml/packages/spatial/validator/constraints/SpatialConsistencyConstraints.cpp branches/libsbml-experimental/src/sbml/packages/spatial/validator/constraints/SpatialConsistencyConstraintsDeclared.cxx Added Paths: ----------- branches/libsbml-experimental/src/sbml/packages/spatial/validator/SpatialSpatialSymbolReferenceUniqueRefCheck.cpp branches/libsbml-experimental/src/sbml/packages/spatial/validator/SpatialSpatialSymbolReferenceUniqueRefCheck.h branches/libsbml-experimental/src/sbml/packages/spatial/validator/test/test-data/general-constraints/1223350-fail-01-01.xml branches/libsbml-experimental/src/sbml/packages/spatial/validator/test/test-data/general-constraints/1223350-fail-02-02.xml branches/libsbml-experimental/src/sbml/packages/spatial/validator/test/test-data/general-constraints/1223350-pass-00-01.xml Modified: branches/libsbml-experimental/src/sbml/packages/spatial/validator/SpatialSBMLError.h =================================================================== --- branches/libsbml-experimental/src/sbml/packages/spatial/validator/SpatialSBMLError.h 2019-10-24 17:25:24 UTC (rev 26141) +++ branches/libsbml-experimental/src/sbml/packages/spatial/validator/SpatialSBMLError.h 2019-10-24 18:57:07 UTC (rev 26142) @@ -260,6 +260,7 @@ , SpatialSpatialSymbolReferenceAllowedCoreElements = 1223302 , SpatialSpatialSymbolReferenceAllowedAttributes = 1223303 , SpatialSpatialSymbolReferenceSpatialRefMustBeGeometry = 1223304 +, SpatialSpatialSymbolReferenceUniqueRef = 1223350 , SpatialDiffusionCoefficientAllowedCoreAttributes = 1223401 , SpatialDiffusionCoefficientAllowedCoreElements = 1223402 , SpatialDiffusionCoefficientAllowedAttributes = 1223403 Modified: branches/libsbml-experimental/src/sbml/packages/spatial/validator/SpatialSBMLErrorTable.h =================================================================== --- branches/libsbml-experimental/src/sbml/packages/spatial/validator/SpatialSBMLErrorTable.h 2019-10-24 17:25:24 UTC (rev 26141) +++ branches/libsbml-experimental/src/sbml/packages/spatial/validator/SpatialSBMLErrorTable.h 2019-10-24 18:57:07 UTC (rev 26142) @@ -2410,6 +2410,16 @@ } }, + // 1223350 + { SpatialSpatialSymbolReferenceUniqueRef, + "Every <spatialSymbolReference> must point to unique object.", + LIBSBML_CAT_GENERAL_CONSISTENCY, + LIBSBML_SEV_ERROR, + "Every <spatialSymbolReference> in a <model> must reference a unique spatial element.", + { "L3V1 Spatial V1 Section" + } + }, + // 1223401 { SpatialDiffusionCoefficientAllowedCoreAttributes, "Core attributes allowed on <diffusionCoefficient>.", Added: branches/libsbml-experimental/src/sbml/packages/spatial/validator/SpatialSpatialSymbolReferenceUniqueRefCheck.cpp =================================================================== --- branches/libsbml-experimental/src/sbml/packages/spatial/validator/SpatialSpatialSymbolReferenceUniqueRefCheck.cpp (rev 0) +++ branches/libsbml-experimental/src/sbml/packages/spatial/validator/SpatialSpatialSymbolReferenceUniqueRefCheck.cpp 2019-10-24 18:57:07 UTC (rev 26142) @@ -0,0 +1,107 @@ +/** +* @cond doxygenLibsbmlInternal +* +* @file SpatialSpatialSymbolReferenceUniqueRefCheck.cpp +* @brief Ensure that spatial compartment mappings' unit sizes sum to one. +* @author Sarah Keating, Lucian Smith +* +* <!-------------------------------------------------------------------------- +* This file is part of libSBML. Please visit http://sbml.org for more +* information about SBML, and the latest version of libSBML. +* +* Copyright (C) 2019 jointly by the following organizations: +* 1. California Institute of Technology, Pasadena, CA, USA +* 2. University of Heidelberg, Heidelberg, Germany +* +* Copyright (C) 2013-2018 jointly by the following organizations: +* 1. California Institute of Technology, Pasadena, CA, USA +* 2. EMBL European Bioinformatics Institute (EMBL-EBI), Hinxton, UK +* 3. University of Heidelberg, Heidelberg, Germany +* +* Copyright (C) 2009-2013 jointly by the following organizations: +* 1. California Institute of Technology, Pasadena, CA, USA +* 2. EMBL European Bioinformatics Institute (EMBL-EBI), Hinxton, UK +* +* Copyright (C) 2006-2008 by the California Institute of Technology, +* Pasadena, CA, USA +* +* Copyright (C) 2002-2005 jointly by the following organizations: +* 1. California Institute of Technology, Pasadena, CA, USA +* 2. Japan Science and Technology Agency, Japan +* +* This library is free software; you can redistribute it and/or modify it +* under the terms of the GNU Lesser General Public License as published by +* the Free Software Foundation. A copy of the license agreement is provided +* in the file named "LICENSE.txt" included with this software distribution +* and also available online as http://sbml.org/software/libsbml/license.html +* ---------------------------------------------------------------------- -->*/ + +#include "SpatialSpatialSymbolReferenceUniqueRefCheck.h" +#include <sbml/packages/spatial/extension/SpatialParameterPlugin.h> + +#include <set> + +/** @cond doxygenIgnored */ +using namespace std; +/** @endcond */ + +LIBSBML_CPP_NAMESPACE_BEGIN +#ifdef __cplusplus + + +/* +* Creates a new Constraint with the given constraint id. +*/ +SpatialSpatialSymbolReferenceUniqueRefCheck::SpatialSpatialSymbolReferenceUniqueRefCheck(unsigned int id, SpatialValidator & v): + TConstraint<Model>(id, v) +{ +} + +/* +* Destroys this Constraint. +*/ +SpatialSpatialSymbolReferenceUniqueRefCheck::~SpatialSpatialSymbolReferenceUniqueRefCheck () +{ +} + + +/* +* Checks that all ids on the following Model objects are unique: +* event assignments and assignment rules. +*/ +void +SpatialSpatialSymbolReferenceUniqueRefCheck::check_ (const Model& m, const Model&) +{ + if (m.getLevel() < 3) { + return; + } + set<string> referencedIDs; + set<string> duplicates; + for (unsigned long p = 0; p < m.getNumParameters(); p++) { + const Parameter* param = m.getParameter(p); + const SpatialParameterPlugin* spp = static_cast<const SpatialParameterPlugin*>(param->getPlugin("spatial")); + if (spp == NULL) { + continue; + } + if (spp->isSetSpatialSymbolReference()) { + const SpatialSymbolReference* ssr = spp->getSpatialSymbolReference(); + if (ssr->isSetSpatialRef()) { + string ref = ssr->getSpatialRef(); + if (referencedIDs.find(ref) != referencedIDs.end()) { + duplicates.insert(ref); + } + referencedIDs.insert(ref); + } + } + } + for (set<string>::iterator dup = duplicates.begin(); dup != duplicates.end(); dup++) { + msg = "Multiple <spatialSymbolReference> objects were found with the same spatialRef value, '"; + msg += *dup + "'."; + logFailure(m); + } +} + +#endif /* __cplusplus */ + +LIBSBML_CPP_NAMESPACE_END +/** @endcond */ Added: branches/libsbml-experimental/src/sbml/packages/spatial/validator/SpatialSpatialSymbolReferenceUniqueRefCheck.h =================================================================== --- branches/libsbml-experimental/src/sbml/packages/spatial/validator/SpatialSpatialSymbolReferenceUniqueRefCheck.h (rev 0) +++ branches/libsbml-experimental/src/sbml/packages/spatial/validator/SpatialSpatialSymbolReferenceUniqueRefCheck.h 2019-10-24 18:57:07 UTC (rev 26142) @@ -0,0 +1,69 @@ +/** +* @cond doxygenLibsbmlInternal +* +* @file SpatialSpatialSymbolReferenceUniqueRefCheck.h +* @brief Ensure that spatial compartment mappings' unit sizes sum to one. +* @author Sarah Keating, Lucian Smith +* +* <!-------------------------------------------------------------------------- +* This file is part of libSBML. Please visit http://sbml.org for more +* information about SBML, and the latest version of libSBML. +* +* Copyright (C) 2019 jointly by the following organizations: +* 1. California Institute of Technology, Pasadena, CA, USA +* 2. University of Heidelberg, Heidelberg, Germany +* +* Copyright (C) 2013-2018 jointly by the following organizations: +* 1. California Institute of Technology, Pasadena, CA, USA +* 2. EMBL European Bioinformatics Institute (EMBL-EBI), Hinxton, UK +* 3. University of Heidelberg, Heidelberg, Germany +* +* Copyright 2011-2012 jointly by the following organizations: +* 1. California Institute of Technology, Pasadena, CA, USA +* 2. EMBL European Bioinformatics Institute (EMBL-EBI), Hinxton, UK +* +* This library is free software; you can redistribute it and/or modify it +* under the terms of the GNU Lesser General Public License as published by +* the Free Software Foundation. A copy of the license agreement is provided +* in the file named "LICENSE.txt" included with this software distribution +* and also available online as http://sbml.org/software/libsbml/license.html +* ---------------------------------------------------------------------- -->*/ + +#ifndef SpatialSpatialSymbolReferenceUniqueRefSum_h +#define SpatialSpatialSymbolReferenceUniqueRefSum_h + + +#ifdef __cplusplus + +#include <sbml/validator/VConstraint.h> +#include <sbml/packages/spatial/validator/SpatialValidator.h> + + +LIBSBML_CPP_NAMESPACE_BEGIN + +class SpatialSpatialSymbolReferenceUniqueRefCheck: public TConstraint<Model> +{ +public: + + /** + * Creates a new Constraint with the given constraint id. + */ + SpatialSpatialSymbolReferenceUniqueRefCheck (unsigned int id, SpatialValidator& v); + + /** + * Destroys this Constraint. + */ + virtual ~SpatialSpatialSymbolReferenceUniqueRefCheck (); + + +protected: + + virtual void check_ (const Model& m, const Model& object); + +}; + +LIBSBML_CPP_NAMESPACE_END + +#endif /* __cplusplus */ +#endif /* SpatialSpatialSymbolReferenceUniqueRefSum_h */ +/** @endcond */ Modified: branches/libsbml-experimental/src/sbml/packages/spatial/validator/constraints/SpatialConsistencyConstraints.cpp =================================================================== --- branches/libsbml-experimental/src/sbml/packages/spatial/validator/constraints/SpatialConsistencyConstraints.cpp 2019-10-24 17:25:24 UTC (rev 26141) +++ branches/libsbml-experimental/src/sbml/packages/spatial/validator/constraints/SpatialConsistencyConstraints.cpp 2019-10-24 18:57:07 UTC (rev 26142) @@ -45,6 +45,7 @@ #include <sbml/packages/spatial/common/SpatialExtensionTypes.h> #include <sbml/packages/spatial/sbml/Geometry.h> #include <sbml/packages/spatial/validator/SpatialCompartmentMappingUnitSizesCheck.h> +#include <sbml/packages/spatial/validator/SpatialSpatialSymbolReferenceUniqueRefCheck.h> #include <sbml/Species.h> #endif /* AddingConstraintsToValidator */ @@ -54,6 +55,7 @@ using namespace std; EXTERN_CONSTRAINT(ErrorEnumValue, SpatialCompartmentMappingUnitSizesCheck); +EXTERN_CONSTRAINT(ErrorEnumValue, SpatialSpatialSymbolReferenceUniqueRefCheck); Modified: branches/libsbml-experimental/src/sbml/packages/spatial/validator/constraints/SpatialConsistencyConstraintsDeclared.cxx =================================================================== --- branches/libsbml-experimental/src/sbml/packages/spatial/validator/constraints/SpatialConsistencyConstraintsDeclared.cxx 2019-10-24 17:25:24 UTC (rev 26141) +++ branches/libsbml-experimental/src/sbml/packages/spatial/validator/constraints/SpatialConsistencyConstraintsDeclared.cxx 2019-10-24 18:57:07 UTC (rev 26142) @@ -39,6 +39,7 @@ */ #include "sbml\packages\spatial\validator\SpatialCompartmentMappingUnitSizesCheck.h" +#include "sbml\packages\spatial\validator\SpatialSpatialSymbolReferenceUniqueRefCheck.h" addConstraint(new VConstraintDomainSpatialDomainDomainTypeMustBeDomainType(*this)); addConstraint(new VConstraintAdjacentDomainsSpatialAdjacentDomainsDomain1MustBeDomain(*this)); @@ -61,6 +62,7 @@ addConstraint(new VConstraintSpeciesSpatialCompartmentsMustHaveCompartmentMapping(*this)); addConstraint(new SpatialCompartmentMappingUnitSizesCheck(1221351, *this)); +addConstraint(new SpatialSpatialSymbolReferenceUniqueRefCheck(SpatialSpatialSymbolReferenceUniqueRef, *this)); /** @endcond */ Added: branches/libsbml-experimental/src/sbml/packages/spatial/validator/test/test-data/general-constraints/1223350-fail-01-01.xml =================================================================== --- branches/libsbml-experimental/src/sbml/packages/spatial/validator/test/test-data/general-constraints/1223350-fail-01-01.xml (rev 0) +++ branches/libsbml-experimental/src/sbml/packages/spatial/validator/test/test-data/general-constraints/1223350-fail-01-01.xml 2019-10-24 18:57:07 UTC (rev 26142) @@ -0,0 +1,79 @@ +<?xml version="1.0" encoding="UTF-8"?> +<sbml level="3" spatial:required="true" version="1" xmlns="http://www.sbml.org/sbml/level3/version1/core" xmlns:spatial="http://www.sbml.org/sbml/level3/version1/spatial/version1"> + <model> + <spatial:geometry spatial:coordinateSystem="cartesian" spatial:id="geometry_1"> + <spatial:listOfCoordinateComponents> + <spatial:coordinateComponent spatial:id="coordinateComponent_1" spatial:type="cartesianX" spatial:unit="dimensionless"> + <spatial:boundaryMin spatial:id="boundary_1" spatial:value="0"/> + <spatial:boundaryMax spatial:id="boundary_2" spatial:value="1"/> + </spatial:coordinateComponent> + <spatial:coordinateComponent spatial:id="coordinateComponent_1" spatial:type="cartesianY" spatial:unit="dimensionless"> + <spatial:boundaryMin spatial:id="boundary_3" spatial:value="0"/> + <spatial:boundaryMax spatial:id="boundary_4" spatial:value="1"/> + </spatial:coordinateComponent> + <spatial:coordinateComponent spatial:id="coordinateComponent_1" spatial:type="cartesianZ" spatial:unit="dimensionless"> + <spatial:boundaryMin spatial:id="boundary_5" spatial:value="0"/> + <spatial:boundaryMax spatial:id="boundary_6" spatial:value="1"/> + </spatial:coordinateComponent> + </spatial:listOfCoordinateComponents> + <spatial:listOfDomainTypes> + <spatial:domainType spatial:id="domainType_1" spatial:spatialDimensions="3"/> + </spatial:listOfDomainTypes> + <spatial:listOfDomains> + <spatial:domain spatial:domainType="domainType_1" spatial:id="domain_1"> + <spatial:listOfInteriorPoints> + <spatial:interiorPoint spatial:coord1="0" spatial:coord2="0" spatial:coord3="0"/> + </spatial:listOfInteriorPoints> + </spatial:domain> + </spatial:listOfDomains> + <spatial:listOfAdjacentDomains> + <spatial:adjacentDomains spatial:domain1="domain_1" spatial:domain2="domain_1" spatial:id="adjacentDomains_1"/> + </spatial:listOfAdjacentDomains> + <spatial:listOfGeometryDefinitions> + <spatial:analyticGeometry spatial:id="geometryDefinition_1" spatial:isActive="false"> + <spatial:listOfAnalyticVolumes> + <spatial:analyticVolume spatial:domainType="domainType_1" spatial:functionType="layered" spatial:id="analyticVolume_1" spatial:ordinal="0"> + <math xmlns="http://www.w3.org/1998/Math/MathML"/> + </spatial:analyticVolume> + </spatial:listOfAnalyticVolumes> + </spatial:analyticGeometry> + <spatial:sampledFieldGeometry spatial:id="geometryDefinition_2" spatial:isActive="false" spatial:sampledField="sampledField_1"> + <spatial:listOfSampledVolumes> + <spatial:sampledVolume spatial:domainType="domainType_1" spatial:id="sampledVolume_1" spatial:maxValue="0" spatial:minValue="0"/> + </spatial:listOfSampledVolumes> + </spatial:sampledFieldGeometry> + <spatial:parametricGeometry spatial:id="geometryDefinition_3" spatial:isActive="false"> + <spatial:spatialPoints spatial:arrayDataLength="0" spatial:compression="uncompressed" spatial:dataType="double" spatial:id="spatialPoints_1"/> + <spatial:listOfParametricObjects> + <spatial:parametricObject spatial:compression="uncompressed" spatial:dataType="double" spatial:domainType="domainType_1" spatial:id="parametricObject_1" spatial:pointIndexLength="0" spatial:polygonType="triangle"/> + </spatial:listOfParametricObjects> + </spatial:parametricGeometry> + <spatial:mixedGeometry spatial:id="geometryDefinition_4" spatial:isActive="false"> + <spatial:listOfOrdinalMappings> + <spatial:ordinalMapping spatial:geometryDefinition="geometryDefinition_4" spatial:ordinal="0"/> + </spatial:listOfOrdinalMappings> + </spatial:mixedGeometry> + </spatial:listOfGeometryDefinitions> + <spatial:listOfSampledFields> + <spatial:sampledField spatial:compression="uncompressed" spatial:dataType="double" spatial:id="sampledField_1" spatial:interpolationType="nearestNeighbor" spatial:numSamples1="0" spatial:numSamples2="0" spatial:numSamples3="0" spatial:samplesLength="3"/> + </spatial:listOfSampledFields> + </spatial:geometry> + <listOfCompartments> + <compartment constant="false" id="compartment"> + <spatial:compartmentMapping spatial:domainType="domainType_1" spatial:id="compartmentMapping_1" spatial:unitSize="1"/> + </compartment> + </listOfCompartments> + <listOfSpecies> + <species boundaryCondition="false" compartment="compartment" constant="false" hasOnlySubstanceUnits="false" id="id_2" spatial:isSpatial="false"/> + </listOfSpecies> + <listOfParameters> + <parameter constant="false" id="id_3"> + <spatial:spatialSymbolReference spatial:spatialRef="coordinateComponent_1"/> + </parameter> + <parameter constant="false" id="id_4"> + <spatial:spatialSymbolReference spatial:spatialRef="coordinateComponent_1"/> + </parameter> + </listOfParameters> + </model> +</sbml> + Added: branches/libsbml-experimental/src/sbml/packages/spatial/validator/test/test-data/general-constraints/1223350-fail-02-02.xml =================================================================== --- branches/libsbml-experimental/src/sbml/packages/spatial/validator/test/test-data/general-constraints/1223350-fail-02-02.xml (rev 0) +++ branches/libsbml-experimental/src/sbml/packages/spatial/validator/test/test-data/general-constraints/1223350-fail-02-02.xml 2019-10-24 18:57:07 UTC (rev 26142) @@ -0,0 +1,85 @@ +<?xml version="1.0" encoding="UTF-8"?> +<sbml level="3" spatial:required="true" version="1" xmlns="http://www.sbml.org/sbml/level3/version1/core" xmlns:spatial="http://www.sbml.org/sbml/level3/version1/spatial/version1"> + <model> + <spatial:geometry spatial:coordinateSystem="cartesian" spatial:id="geometry_1"> + <spatial:listOfCoordinateComponents> + <spatial:coordinateComponent spatial:id="coordinateComponent_1" spatial:type="cartesianX" spatial:unit="dimensionless"> + <spatial:boundaryMin spatial:id="boundary_1" spatial:value="0"/> + <spatial:boundaryMax spatial:id="boundary_2" spatial:value="1"/> + </spatial:coordinateComponent> + <spatial:coordinateComponent spatial:id="coordinateComponent_1" spatial:type="cartesianY" spatial:unit="dimensionless"> + <spatial:boundaryMin spatial:id="boundary_3" spatial:value="0"/> + <spatial:boundaryMax spatial:id="boundary_4" spatial:value="1"/> + </spatial:coordinateComponent> + <spatial:coordinateComponent spatial:id="coordinateComponent_1" spatial:type="cartesianZ" spatial:unit="dimensionless"> + <spatial:boundaryMin spatial:id="boundary_5" spatial:value="0"/> + <spatial:boundaryMax spatial:id="boundary_6" spatial:value="1"/> + </spatial:coordinateComponent> + </spatial:listOfCoordinateComponents> + <spatial:listOfDomainTypes> + <spatial:domainType spatial:id="domainType_1" spatial:spatialDimensions="3"/> + </spatial:listOfDomainTypes> + <spatial:listOfDomains> + <spatial:domain spatial:domainType="domainType_1" spatial:id="domain_1"> + <spatial:listOfInteriorPoints> + <spatial:interiorPoint spatial:coord1="0" spatial:coord2="0" spatial:coord3="0"/> + </spatial:listOfInteriorPoints> + </spatial:domain> + </spatial:listOfDomains> + <spatial:listOfAdjacentDomains> + <spatial:adjacentDomains spatial:domain1="domain_1" spatial:domain2="domain_1" spatial:id="adjacentDomains_1"/> + </spatial:listOfAdjacentDomains> + <spatial:listOfGeometryDefinitions> + <spatial:analyticGeometry spatial:id="geometryDefinition_1" spatial:isActive="false"> + <spatial:listOfAnalyticVolumes> + <spatial:analyticVolume spatial:domainType="domainType_1" spatial:functionType="layered" spatial:id="analyticVolume_1" spatial:ordinal="0"> + <math xmlns="http://www.w3.org/1998/Math/MathML"/> + </spatial:analyticVolume> + </spatial:listOfAnalyticVolumes> + </spatial:analyticGeometry> + <spatial:sampledFieldGeometry spatial:id="geometryDefinition_2" spatial:isActive="false" spatial:sampledField="sampledField_1"> + <spatial:listOfSampledVolumes> + <spatial:sampledVolume spatial:domainType="domainType_1" spatial:id="sampledVolume_1" spatial:maxValue="0" spatial:minValue="0"/> + </spatial:listOfSampledVolumes> + </spatial:sampledFieldGeometry> + <spatial:parametricGeometry spatial:id="geometryDefinition_3" spatial:isActive="false"> + <spatial:spatialPoints spatial:arrayDataLength="0" spatial:compression="uncompressed" spatial:dataType="double" spatial:id="spatialPoints_1"/> + <spatial:listOfParametricObjects> + <spatial:parametricObject spatial:compression="uncompressed" spatial:dataType="double" spatial:domainType="domainType_1" spatial:id="parametricObject_1" spatial:pointIndexLength="0" spatial:polygonType="triangle"/> + </spatial:listOfParametricObjects> + </spatial:parametricGeometry> + <spatial:mixedGeometry spatial:id="geometryDefinition_4" spatial:isActive="false"> + <spatial:listOfOrdinalMappings> + <spatial:ordinalMapping spatial:geometryDefinition="geometryDefinition_4" spatial:ordinal="0"/> + </spatial:listOfOrdinalMappings> + </spatial:mixedGeometry> + </spatial:listOfGeometryDefinitions> + <spatial:listOfSampledFields> + <spatial:sampledField spatial:compression="uncompressed" spatial:dataType="double" spatial:id="sampledField_1" spatial:interpolationType="nearestNeighbor" spatial:numSamples1="0" spatial:numSamples2="0" spatial:numSamples3="0" spatial:samplesLength="3"/> + </spatial:listOfSampledFields> + </spatial:geometry> + <listOfCompartments> + <compartment constant="false" id="compartment"> + <spatial:compartmentMapping spatial:domainType="domainType_1" spatial:id="compartmentMapping_1" spatial:unitSize="1"/> + </compartment> + </listOfCompartments> + <listOfSpecies> + <species boundaryCondition="false" compartment="compartment" constant="false" hasOnlySubstanceUnits="false" id="id_2" spatial:isSpatial="false"/> + </listOfSpecies> + <listOfParameters> + <parameter constant="false" id="id_3"> + <spatial:spatialSymbolReference spatial:spatialRef="coordinateComponent_1"/> + </parameter> + <parameter constant="false" id="id_4"> + <spatial:spatialSymbolReference spatial:spatialRef="coordinateComponent_1"/> + </parameter> + <parameter constant="false" id="id_5"> + <spatial:spatialSymbolReference spatial:spatialRef="geometry_1"/> + </parameter> + <parameter constant="false" id="id_6"> + <spatial:spatialSymbolReference spatial:spatialRef="geometry_1"/> + </parameter> + </listOfParameters> + </model> +</sbml> + Added: branches/libsbml-experimental/src/sbml/packages/spatial/validator/test/test-data/general-constraints/1223350-pass-00-01.xml =================================================================== --- branches/libsbml-experimental/src/sbml/packages/spatial/validator/test/test-data/general-constraints/1223350-pass-00-01.xml (rev 0) +++ branches/libsbml-experimental/src/sbml/packages/spatial/validator/test/test-data/general-constraints/1223350-pass-00-01.xml 2019-10-24 18:57:07 UTC (rev 26142) @@ -0,0 +1,79 @@ +<?xml version="1.0" encoding="UTF-8"?> +<sbml level="3" spatial:required="true" version="1" xmlns="http://www.sbml.org/sbml/level3/version1/core" xmlns:spatial="http://www.sbml.org/sbml/level3/version1/spatial/version1"> + <model> + <spatial:geometry spatial:coordinateSystem="cartesian" spatial:id="geometry_1"> + <spatial:listOfCoordinateComponents> + <spatial:coordinateComponent spatial:id="coordinateComponent_1" spatial:type="cartesianX" spatial:unit="dimensionless"> + <spatial:boundaryMin spatial:id="boundary_1" spatial:value="0"/> + <spatial:boundaryMax spatial:id="boundary_2" spatial:value="1"/> + </spatial:coordinateComponent> + <spatial:coordinateComponent spatial:id="coordinateComponent_1" spatial:type="cartesianY" spatial:unit="dimensionless"> + <spatial:boundaryMin spatial:id="boundary_3" spatial:value="0"/> + <spatial:boundaryMax spatial:id="boundary_4" spatial:value="1"/> + </spatial:coordinateComponent> + <spatial:coordinateComponent spatial:id="coordinateComponent_1" spatial:type="cartesianZ" spatial:unit="dimensionless"> + <spatial:boundaryMin spatial:id="boundary_5" spatial:value="0"/> + <spatial:boundaryMax spatial:id="boundary_6" spatial:value="1"/> + </spatial:coordinateComponent> + </spatial:listOfCoordinateComponents> + <spatial:listOfDomainTypes> + <spatial:domainType spatial:id="domainType_1" spatial:spatialDimensions="3"/> + </spatial:listOfDomainTypes> + <spatial:listOfDomains> + <spatial:domain spatial:domainType="domainType_1" spatial:id="domain_1"> + <spatial:listOfInteriorPoints> + <spatial:interiorPoint spatial:coord1="0" spatial:coord2="0" spatial:coord3="0"/> + </spatial:listOfInteriorPoints> + </spatial:domain> + </spatial:listOfDomains> + <spatial:listOfAdjacentDomains> + <spatial:adjacentDomains spatial:domain1="domain_1" spatial:domain2="domain_1" spatial:id="adjacentDomains_1"/> + </spatial:listOfAdjacentDomains> + <spatial:listOfGeometryDefinitions> + <spatial:analyticGeometry spatial:id="geometryDefinition_1" spatial:isActive="false"> + <spatial:listOfAnalyticVolumes> + <spatial:analyticVolume spatial:domainType="domainType_1" spatial:functionType="layered" spatial:id="analyticVolume_1" spatial:ordinal="0"> + <math xmlns="http://www.w3.org/1998/Math/MathML"/> + </spatial:analyticVolume> + </spatial:listOfAnalyticVolumes> + </spatial:analyticGeometry> + <spatial:sampledFieldGeometry spatial:id="geometryDefinition_2" spatial:isActive="false" spatial:sampledField="sampledField_1"> + <spatial:listOfSampledVolumes> + <spatial:sampledVolume spatial:domainType="domainType_1" spatial:id="sampledVolume_1" spatial:maxValue="0" spatial:minValue="0"/> + </spatial:listOfSampledVolumes> + </spatial:sampledFieldGeometry> + <spatial:parametricGeometry spatial:id="geometryDefinition_3" spatial:isActive="false"> + <spatial:spatialPoints spatial:arrayDataLength="0" spatial:compression="uncompressed" spatial:dataType="double" spatial:id="spatialPoints_1"/> + <spatial:listOfParametricObjects> + <spatial:parametricObject spatial:compression="uncompressed" spatial:dataType="double" spatial:domainType="domainType_1" spatial:id="parametricObject_1" spatial:pointIndexLength="0" spatial:polygonType="triangle"/> + </spatial:listOfParametricObjects> + </spatial:parametricGeometry> + <spatial:mixedGeometry spatial:id="geometryDefinition_4" spatial:isActive="false"> + <spatial:listOfOrdinalMappings> + <spatial:ordinalMapping spatial:geometryDefinition="geometryDefinition_4" spatial:ordinal="0"/> + </spatial:listOfOrdinalMappings> + </spatial:mixedGeometry> + </spatial:listOfGeometryDefinitions> + <spatial:listOfSampledFields> + <spatial:sampledField spatial:compression="uncompressed" spatial:dataType="double" spatial:id="sampledField_1" spatial:interpolationType="nearestNeighbor" spatial:numSamples1="0" spatial:numSamples2="0" spatial:numSamples3="0" spatial:samplesLength="3"/> + </spatial:listOfSampledFields> + </spatial:geometry> + <listOfCompartments> + <compartment constant="false" id="compartment"> + <spatial:compartmentMapping spatial:domainType="domainType_1" spatial:id="compartmentMapping_1" spatial:unitSize="1"/> + </compartment> + </listOfCompartments> + <listOfSpecies> + <species boundaryCondition="false" compartment="compartment" constant="false" hasOnlySubstanceUnits="false" id="id_2" spatial:isSpatial="false"/> + </listOfSpecies> + <listOfParameters> + <parameter constant="false" id="id_3"> + <spatial:spatialSymbolReference spatial:spatialRef="geometry_1"/> + </parameter> + <parameter constant="false" id="id_4"> + <spatial:spatialSymbolReference spatial:spatialRef="coordinateComponent_1"/> + </parameter> + </listOfParameters> + </model> +</sbml> + |