<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="http://morphml.org/biophysics/schema"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="http://morphml.org/biophysics/schema"
xmlns:meta="http://morphml.org/metadata/schema"
elementFormDefault="qualified" attributeFormDefault="unqualified">
<!--
This file specifies a number of elements needed by NeuroML v1.6 Level 2 compliant files
This file has been developed as part of the neuroConstruct and NeuroML initiatives
Funding for this work has been received from the Medical Research Council
Author: Padraig Gleeson
-->
<xs:import namespace="http://morphml.org/metadata/schema"
schemaLocation="../Level1/Metadata_v1.6.xsd"/>
<xs:annotation>
<xs:documentation>Definition of the elements needed for specifying the biophysical properties of cells.
These elements are linked with those in MorphML.xsd and from the ChannelML spec by
the NeuroML.xsd file</xs:documentation>
</xs:annotation>
<xs:element name="biophysics" type="Biophysics">
<xs:annotation>
<xs:documentation>The root element. All other complex/simple elements will be children of this.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:complexType name="Biophysics">
<xs:annotation>
<xs:documentation>Description of biophysical properties of a cell.</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="mechanism" type="Mechanism" minOccurs="1" maxOccurs="unbounded"/>
<xs:element name="specificCapacitance" type="SpecCapacitance"/>
<xs:element name="specificAxialResistance" type="SpecAxialResistance"/>
<xs:element name="initialMembPotential" type="InitialMembPotential" minOccurs="0"/>
<xs:element name="ionProperties" type="IonProperties" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="units" type="meta:Units" use="required">
<xs:annotation>
<xs:documentation>Unit system of all quantities.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<xs:complexType name="Mechanism">
<xs:annotation>
<xs:documentation>Definition of placement of a single electrophysiological mechanism (e.g. channel mechanism)
on a group of cables of a cell</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="parameter" type="NamedParameter" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="variableParameter" type="VariableNamedParameter" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="name" type="xs:string" use="required"/>
<xs:attribute name="type" type="MechanismType" use="required"/>
</xs:complexType>
<xs:complexType name="SpecCapacitance">
<xs:annotation>
<xs:appinfo>
<meta:units>F/m2</meta:units>
</xs:appinfo>
<xs:documentation>Capacitance per unit area of a group of sections</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="parameter" type="UnnamedParameter" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="variableParameter" type="VariableParameter" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="SpecAxialResistance">
<xs:annotation>
<xs:appinfo>
<meta:units>ohm m</meta:units>
</xs:appinfo>
<xs:documentation>Specific axial resistance of a group of sections</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="parameter" type="UnnamedParameter" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="variableParameter" type="VariableParameter" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="InitialMembPotential">
<xs:annotation>
<xs:appinfo>
<meta:units>V</meta:units>
</xs:appinfo>
<xs:documentation>This quantity is often required for computational simulations and specifies the potential
difference across the membrane at the start of the simulation. This is an optional field</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="parameter" type="UnnamedParameter" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="variableParameter" type="VariableParameter" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="IonProperties">
<xs:annotation>
<xs:documentation>Some properties accociated with an ion type which takes part in the mechanisms on the cell</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="parameter" type="NamedParameter" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="name" type="xs:string" use="required"/>
</xs:complexType>
<xs:complexType name="NamedParameter">
<xs:annotation>
<xs:documentation>Definition of a value for a quantity and the associated groups of cables
which have this value</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="group" type="xs:string" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="name" type="xs:string" use="required"/>
<xs:attribute name="value" type="xs:double" use="required"/>
</xs:complexType>
<xs:complexType name="VariableParameter">
<xs:annotation>
<xs:documentation>Definition of a value for a quantity which varies over a given group of cables</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="group" type="xs:string" maxOccurs="unbounded"/>
<xs:element name="inhomogeneous_value" type="InhomogeneousValue" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="name" type="xs:string"/>
</xs:complexType>
<xs:complexType name="VariableNamedParameter">
<xs:annotation>
<xs:documentation>Definition of a value for a quantity which varies over a given group of cables</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="group" type="xs:string" maxOccurs="unbounded"/>
<xs:element name="inhomogeneous_value" type="InhomogeneousValue" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="name" type="xs:string" use="required"/>
</xs:complexType>
<xs:complexType name="InhomogeneousValue">
<xs:annotation>
<xs:documentation>How a value changes over the cable group. Implementation here based on NEURON inhomogeneous parameter specification.
See example for usage of this element</xs:documentation>
</xs:annotation>
<xs:attribute name="param_name" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>Name used in the inhomogeneous_param element in the cable group</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="value" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>Equation showing how parameter changes as function of variable attribute in inhomogeneous_param element</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<!--
<xs:complexType name="IonParameter">
<xs:annotation>
<xs:documentation>NamedParameter restricted to params for ions</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:restriction base="NamedParameter">
<xs:sequence>
<xs:element name="group">
<xs:restriction base="xs:string">
<xs:enumeration value="yes"/>
<xs:enumeration value="no"/>
</xs:restriction>
</xs:element>
</xs:sequence>
<xs:attribute name="name" type="xs:string" use="required"/>
<xs:attribute name="value" type="xs:double" use="required"/>
</xs:restriction>
</xs:complexContent>
</xs:complexType> -->
<xs:complexType name="UnnamedParameter">
<xs:annotation>
<xs:documentation>Definition of a value for a quantity and the associated groups of cables
which have this value. The quantity referred to will be clear from the usage, e.g. InitialMembPotential</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="group" type="xs:string" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="value" type="xs:double" use="required"/>
</xs:complexType>
<!-- Definition of MechanismType follows. -->
<xs:simpleType name="MechanismType">
<xs:annotation>
<xs:documentation>Specifies the type of cellular mechanism. Note could be used for any type of electrophysiological
property of a section of a cell</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="Channel Mechanism">
<xs:annotation>
<xs:documentation>Voltage and/or conductance dependent membrane conductance</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="Ion Concentration">
<xs:annotation>
<xs:documentation>Mechanism which alters the oncentration of a specific ion</xs:documentation>
</xs:annotation>
</xs:enumeration>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="SynapticDelayValue">
<xs:annotation>
<xs:appinfo>
<meta:units>s</meta:units>
<meta:typical_value>0.005</meta:typical_value>
</xs:appinfo>
<xs:documentation>Units of a delay associated with a synaptic connection</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:double">
<xs:minInclusive value="0"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="TimeConstantValue">
<xs:annotation>
<xs:appinfo>
<meta:units>s</meta:units>
<meta:typical_value>0.005</meta:typical_value>
</xs:appinfo>
<xs:documentation>Units of any time constant</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:double">
<xs:minExclusive value="0"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="TimeValue">
<xs:annotation>
<xs:appinfo>
<meta:units>s</meta:units>
<meta:typical_value>0.005</meta:typical_value>
</xs:appinfo>
<xs:documentation>Units of any time value, zero or greater</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:double">
<xs:minInclusive value="0"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="FrequencyValue">
<xs:annotation>
<xs:appinfo>
<meta:units>Hz</meta:units>
<meta:typical_value>50</meta:typical_value>
</xs:appinfo>
<xs:documentation>Units of any frequency, zero or greater</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:double">
<xs:minInclusive value="0"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="ConductanceValue">
<xs:annotation>
<xs:appinfo>
<meta:units>S</meta:units>
<meta:typical_value>1e-8</meta:typical_value>
</xs:appinfo>
<xs:documentation>Units of conductance</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:double">
<xs:minInclusive value="0"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="ConductanceDensityValue">
<xs:annotation>
<xs:appinfo>
<meta:units>S m-2</meta:units>
<meta:typical_value>100</meta:typical_value>
</xs:appinfo>
<xs:documentation>Units of conductance density</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:double">
<xs:minInclusive value="0"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="LengthValue">
<xs:annotation>
<xs:appinfo>
<meta:units>m</meta:units>
<meta:typical_value>1e-6</meta:typical_value>
</xs:appinfo>
<xs:documentation>Units of length</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:double">
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="CurrentValue">
<xs:annotation>
<xs:appinfo>
<meta:units>A</meta:units>
<meta:typical_value>1e-11</meta:typical_value>
</xs:appinfo>
<xs:documentation>Units of current</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:double">
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="ConcentrationValue">
<xs:annotation>
<xs:appinfo>
<meta:units>mM</meta:units>
<meta:typical_value>1e-5</meta:typical_value>
</xs:appinfo>
<xs:documentation>Units of concentration</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:double">
<xs:minInclusive value="0"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="VoltageValue">
<xs:annotation>
<xs:appinfo>
<meta:units>V</meta:units>
<meta:typical_value>-0.07</meta:typical_value>
</xs:appinfo>
<xs:documentation>Units of voltage</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:double"/>
</xs:simpleType>
<xs:simpleType name="TemperatureValue">
<xs:annotation>
<xs:appinfo>
<meta:units>deg C</meta:units>
<meta:typical_value>32</meta:typical_value>
</xs:appinfo>
<xs:documentation>Units of temperature</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:double">
<xs:minExclusive value="0"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>
|