diff --git a/js-test/servers/common/datastore_server/etc/service.properties b/js-test/servers/common/datastore_server/etc/service.properties index 1ce6fcea9837b3cde6ba1a06e5b4c43f36aa2171..12f6613e96f107d3075550cda36a27098017b9ac 100644 --- a/js-test/servers/common/datastore_server/etc/service.properties +++ b/js-test/servers/common/datastore_server/etc/service.properties @@ -1,181 +1,138 @@ # Unique code of this Data Store Server. Not more than 40 characters. -data-store-server-code = DSS1 - +data-store-server-code=DSS1 # host name of the machine on which the datastore server is running -host-address = http://localhost - +host-address=http://localhost # parent directory of the store directory and all the dropboxes -root-dir = data - +root-dir=data # The root directory of the data store -storeroot-dir = ${root-dir}/store - -incoming-root-dir = ${root-dir} - +storeroot-dir=${root-dir}/store +incoming-root-dir=${root-dir} # Cache for data set files from other Data Store Servers cache-workspace-folder ${root-dir}/dss-cache - -# The directory where the command queue file is located; defaults to storeroot-dir -commandqueue-dir = - +# The directory where the command queue file is located; defaults to storeroot-dir +commandqueue-dir= # Port -port = 20001 -use-ssl = false - +port=20001 +use-ssl=false # Session timeout in minutes -session-timeout = 720 - +session-timeout=720 # Path to the keystore -keystore.path = etc/openBIS.keystore +keystore.path=etc/openBIS.keystore # Password of the keystore -keystore.password = changeit +keystore.password=changeit # Key password of the keystore -keystore.key-password = changeit - +keystore.key-password=changeit # The check interval (in seconds) -check-interval = 5 - -quiet-period = 10 - -data-set-locking-timeout = 1 - +check-interval=5 +quiet-period=10 +data-set-locking-timeout=1 # The time-out for clean up work in the shutdown sequence (in seconds). # Note that that the maximal time for the shutdown sequence to complete can be as large # as twice this time. # Remark: On a network file system, it is not recommended to turn this value to something # lower than 180. -shutdown-timeout = 180 - +shutdown-timeout=180 # The minimum time (in seconds) of availability of the data stream since moment when user requested # for the data stream url. If not specified default value (20 seconds) will be used. # minimum-time-to-keep-streams-in-sec = 20 - #�If free disk space goes below value defined here, a notification email will be sent. # Value must be specified in kilobytes (1048576 = 1024 * 1024 = 1GB). If no high water mark is # specified or if value is negative, the system will not be watching. There are 2 different kinds # of highwater mark supported: the one that is checking the space on the store, and one that is # checking the amount of free space for recovery state (on the local filesystem). -highwater-mark = -1 -recovery-highwater-mark = -1 - -# If a data set is successfully registered it sends out an email to the registrator. +highwater-mark=-1 +recovery-highwater-mark=-1 +# If a data set is successfully registered it sends out an email to the registrator. # If this property is not specified, no email is sent to the registrator. This property # does not affect the mails which are sent, when the data set could not be registered. -notify-successful-registration = false - +notify-successful-registration=false # The URL of the openBIS server -server-url = ${host-address}:20000 - +server-url=${host-address}:20000 # The username to use when contacting the openBIS server -username = etlserver - +username=etlserver # The password for the etlserver user who contacts the openBIS server password=e1AWO4f0ro - # The base URL for Web client access to the data store server. -download-url = ${host-address}:${port} - +download-url=${host-address}:${port} # SMTP properties (must start with 'mail' to be considered). # The current configuration saves the emails in the file system in the root directory -mail.smtp.host = file://${root-dir}/email +mail.smtp.host=file://${root-dir}/email # mail.smtp.host = localhost # mail.from = openbis-dss@localhost # mail.smtp.user = # mail.smtp.password = - - # Data sources -data-sources = path-info-db - +data-sources=path-info-db # Data source for pathinfo database -path-info-db.version-holder-class = ch.systemsx.cisd.openbis.dss.generic.shared.PathInfoDatabaseVersionHolder -path-info-db.databaseEngineCode = postgresql -path-info-db.basicDatabaseName = pathinfo +path-info-db.version-holder-class=ch.systemsx.cisd.openbis.dss.generic.shared.PathInfoDatabaseVersionHolder +path-info-db.databaseEngineCode=postgresql +path-info-db.basicDatabaseName=pathinfo # The host and optionally port. Default is 'localhost'. # path-info-db.urlHostPart = -path-info-db.databaseKind = test_js_common -path-info-db.scriptFolder = ../../../../datastore_server/source/sql - +path-info-db.databaseKind=test_js_common +path-info-db.scriptFolder=../../../../datastore_server/source/sql # --------------------------------------------------------------------------- # maintenance plugins configuration # --------------------------------------------------------------------------- - # Comma separated names of maintenance plugins. Each plugin should have configuration properties prefixed with its name. -maintenance-plugins = post-registration, path-info-deletion - -# Maintenance task for post registration of all paths of a freshly registered data set to be fed into pathinfo database -post-registration.class = ch.systemsx.cisd.etlserver.postregistration.PostRegistrationMaintenanceTask -post-registration.interval = 30 -post-registration.cleanup-tasks-folder = ${root-dir}/post-registration/cleanup-tasks -post-registration.last-seen-data-set-file = ${root-dir}/post-registration/last-seen-data-set.txt -post-registration.post-registration-tasks = pathinfo-feeding, notifying -post-registration.pathinfo-feeding.class = ch.systemsx.cisd.etlserver.path.PathInfoDatabaseFeedingTask -post-registration.pathinfo-feeding.compute-checksum = true +maintenance-plugins=post-registration, path-info-deletion +# Maintenance task for post registration of all paths of a freshly registered data set to be fed into pathinfo database +post-registration.class=ch.systemsx.cisd.etlserver.postregistration.PostRegistrationMaintenanceTask +post-registration.interval=30 +post-registration.cleanup-tasks-folder=${root-dir}/post-registration/cleanup-tasks +post-registration.last-seen-data-set-file=${root-dir}/post-registration/last-seen-data-set.txt +post-registration.post-registration-tasks=pathinfo-feeding, notifying +post-registration.pathinfo-feeding.class=ch.systemsx.cisd.etlserver.path.PathInfoDatabaseFeedingTask +post-registration.pathinfo-feeding.compute-checksum=true # The NotifyingTask throws an exception. Thus, post-registration will always fail. # This is needed to have an example of a data set which isn't post-registered. -post-registration.notifying.class = ch.systemsx.cisd.etlserver.postregistration.NotifyingTask -post-registration.notifying.destination-path-template = targets/${unknown-placeholder-preventing-post-registration} -post-registration.notifying.message-template = hello - +post-registration.notifying.class=ch.systemsx.cisd.etlserver.postregistration.NotifyingTask +post-registration.notifying.destination-path-template=targets/${unknown-placeholder-preventing-post-registration} +post-registration.notifying.message-template=hello # Maintenance task for deleting entries from pathinfo database after deletion of a data set -path-info-deletion.class = ch.systemsx.cisd.etlserver.plugins.DeleteFromExternalDBMaintenanceTask -path-info-deletion.interval = 120 -path-info-deletion.data-source = path-info-db -path-info-deletion.data-set-table-name = data_sets -path-info-deletion.data-set-perm-id = CODE - +path-info-deletion.class=ch.systemsx.cisd.etlserver.plugins.DeleteFromExternalDBMaintenanceTask +path-info-deletion.interval=120 +path-info-deletion.data-source=path-info-db +path-info-deletion.data-set-table-name=data_sets +path-info-deletion.data-set-perm-id=CODE # --------------------------------------------------------------------------- # processing plugins configuration # --------------------------------------------------------------------------- - # Comma separated names of processing plugins. Each plugin should have configuration properties prefixed with its name. -processing-plugins = path-info-db-consistency-check - +processing-plugins=path-info-db-consistency-check # Processing task that checks the consistency between the data store and the meta information stored in the PathInfoDB. # It sends out an email which contains all differences found. -path-info-db-consistency-check.label = Path Info DB consistency check -path-info-db-consistency-check.dataset-types = .* -path-info-db-consistency-check.class = ch.systemsx.cisd.openbis.dss.generic.server.plugins.standard.DataSetAndPathInfoDBConsistencyCheckProcessingPlugin - +path-info-db-consistency-check.label=Path Info DB consistency check +path-info-db-consistency-check.dataset-types=.* +path-info-db-consistency-check.class=ch.systemsx.cisd.openbis.dss.generic.server.plugins.standard.DataSetAndPathInfoDBConsistencyCheckProcessingPlugin # --------------------------------------------------------------------------- # dropbox configurations # --------------------------------------------------------------------------- -inputs = default-dropbox -dss-rpc.put-default = default-dropbox - -default-dropbox.incoming-dir = ${incoming-root-dir}/incoming-default -default-dropbox.incoming-data-completeness-condition = auto-detection -default-dropbox.top-level-data-set-handler = ch.systemsx.cisd.etlserver.registrator.api.v2.JavaTopLevelDataSetHandlerV2 -default-dropbox.program-class = ch.systemsx.cisd.etlserver.registrator.DefaultDropbox -default-dropbox.storage-processor = ch.systemsx.cisd.etlserver.DefaultStorageProcessor +inputs=default-dropbox +dss-rpc.put-default=default-dropbox +default-dropbox.incoming-dir=${incoming-root-dir}/incoming-default +default-dropbox.incoming-data-completeness-condition=auto-detection +default-dropbox.top-level-data-set-handler=ch.systemsx.cisd.etlserver.registrator.api.v2.JavaTopLevelDataSetHandlerV2 +default-dropbox.program-class=ch.systemsx.cisd.etlserver.registrator.DefaultDropbox +default-dropbox.storage-processor=ch.systemsx.cisd.etlserver.DefaultStorageProcessor #default-dropbox.validation-script-path = ../core-plugins/default/default-validation-script.py - # --------------------------------------------------------------------------- # Archiver configuration (optional) # --------------------------------------------------------------------------- - # Configuration of an archiver task. All properties are prefixed with 'archiver.'. - # Archiver class specification (together with the list of packages this class belongs to). -archiver.class = ch.systemsx.cisd.openbis.dss.generic.server.plugins.demo.DemoArchiver - +archiver.class=ch.systemsx.cisd.openbis.dss.generic.server.plugins.demo.DemoArchiver # --------------------------------------------------------------------------- # Imaging database for screening (optional, only used if screening technology switched on) # --------------------------------------------------------------------------- # Format: <host>[:<port>]. Default: localhost # imaging-database.url-host-part = # Default: prod. - -imaging-database.kind = test_js_common -proteomics-database-kind = test_js_common - -screening-sql-root-folder = ../../../../screening/source/ -proteomics-sql-root-folder = ../../../../rtd_phosphonetx/source/ - +imaging-database.kind=test_js_common +proteomics-database-kind=test_js_common +screening-sql-root-folder=../../../../screening/source/ # --------------------------------------------------------------------------- # INTERNAL CONFIGURATION, # Do not change this part unless you are developing openBIS extensions. # --------------------------------------------------------------------------- - - jython-version=2.7 diff --git a/js-test/servers/common/datastore_server2/etc/service.properties b/js-test/servers/common/datastore_server2/etc/service.properties index 7bc4758e4fb7fc0e2c90129edfd91c99d6ab5572..646ee8ef193577503f8ff04505b09647471480b3 100644 --- a/js-test/servers/common/datastore_server2/etc/service.properties +++ b/js-test/servers/common/datastore_server2/etc/service.properties @@ -1,181 +1,138 @@ # Unique code of this Data Store Server. Not more than 40 characters. -data-store-server-code = DSS2 - +data-store-server-code=DSS2 # host name of the machine on which the datastore server is running -host-address = http://localhost - +host-address=http://localhost # parent directory of the store directory and all the dropboxes -root-dir = data - +root-dir=data # The root directory of the data store -storeroot-dir = ${root-dir}/store - -incoming-root-dir = ${root-dir} - +storeroot-dir=${root-dir}/store +incoming-root-dir=${root-dir} # Cache for data set files from other Data Store Servers -cache-workspace-folder = ${root-dir}/dss-cache - -# The directory where the command queue file is located; defaults to storeroot-dir -commandqueue-dir = - +cache-workspace-folder=${root-dir}/dss-cache +# The directory where the command queue file is located; defaults to storeroot-dir +commandqueue-dir= # Port -port = 20002 -use-ssl = false - +port=20002 +use-ssl=false # Session timeout in minutes -session-timeout = 720 - +session-timeout=720 # Path to the keystore -keystore.path = etc/openBIS.keystore +keystore.path=etc/openBIS.keystore # Password of the keystore -keystore.password = changeit +keystore.password=changeit # Key password of the keystore -keystore.key-password = changeit - +keystore.key-password=changeit # The check interval (in seconds) -check-interval = 5 - -quiet-period = 10 - -data-set-locking-timeout = 1 - +check-interval=5 +quiet-period=10 +data-set-locking-timeout=1 # The time-out for clean up work in the shutdown sequence (in seconds). # Note that that the maximal time for the shutdown sequence to complete can be as large # as twice this time. # Remark: On a network file system, it is not recommended to turn this value to something # lower than 180. -shutdown-timeout = 180 - +shutdown-timeout=180 # The minimum time (in seconds) of availability of the data stream since moment when user requested # for the data stream url. If not specified default value (20 seconds) will be used. # minimum-time-to-keep-streams-in-sec = 20 - #�If free disk space goes below value defined here, a notification email will be sent. # Value must be specified in kilobytes (1048576 = 1024 * 1024 = 1GB). If no high water mark is # specified or if value is negative, the system will not be watching. There are 2 different kinds # of highwater mark supported: the one that is checking the space on the store, and one that is # checking the amount of free space for recovery state (on the local filesystem). -highwater-mark = -1 -recovery-highwater-mark = -1 - -# If a data set is successfully registered it sends out an email to the registrator. +highwater-mark=-1 +recovery-highwater-mark=-1 +# If a data set is successfully registered it sends out an email to the registrator. # If this property is not specified, no email is sent to the registrator. This property # does not affect the mails which are sent, when the data set could not be registered. -notify-successful-registration = false - +notify-successful-registration=false # The URL of the openBIS server -server-url = ${host-address}:20000 - +server-url=${host-address}:20000 # The username to use when contacting the openBIS server -username = etlserver - +username=etlserver # The password for the etlserver user who contacts the openBIS server password=e1AWO4f0ro - # The base URL for Web client access to the data store server. -download-url = ${host-address}:${port} - +download-url=${host-address}:${port} # SMTP properties (must start with 'mail' to be considered). # The current configuration saves the emails in the file system in the root directory -mail.smtp.host = file://${root-dir}/email +mail.smtp.host=file://${root-dir}/email # mail.smtp.host = localhost # mail.from = openbis-dss@localhost # mail.smtp.user = # mail.smtp.password = - - # Data sources -data-sources = path-info-db - +data-sources=path-info-db # Data source for pathinfo database -path-info-db.version-holder-class = ch.systemsx.cisd.openbis.dss.generic.shared.PathInfoDatabaseVersionHolder -path-info-db.databaseEngineCode = postgresql -path-info-db.basicDatabaseName = pathinfo +path-info-db.version-holder-class=ch.systemsx.cisd.openbis.dss.generic.shared.PathInfoDatabaseVersionHolder +path-info-db.databaseEngineCode=postgresql +path-info-db.basicDatabaseName=pathinfo # The host and optionally port. Default is 'localhost'. # path-info-db.urlHostPart = -path-info-db.databaseKind = test_js_common2 -path-info-db.scriptFolder = ../../../../datastore_server/source/sql - +path-info-db.databaseKind=test_js_common2 +path-info-db.scriptFolder=../../../../datastore_server/source/sql # --------------------------------------------------------------------------- # maintenance plugins configuration # --------------------------------------------------------------------------- - # Comma separated names of maintenance plugins. Each plugin should have configuration properties prefixed with its name. -maintenance-plugins = post-registration, path-info-deletion - -# Maintenance task for post registration of all paths of a freshly registered data set to be fed into pathinfo database -post-registration.class = ch.systemsx.cisd.etlserver.postregistration.PostRegistrationMaintenanceTask -post-registration.interval = 30 -post-registration.cleanup-tasks-folder = ${root-dir}/post-registration/cleanup-tasks -post-registration.last-seen-data-set-file = ${root-dir}/post-registration/last-seen-data-set.txt -post-registration.post-registration-tasks = pathinfo-feeding, notifying -post-registration.pathinfo-feeding.class = ch.systemsx.cisd.etlserver.path.PathInfoDatabaseFeedingTask -post-registration.pathinfo-feeding.compute-checksum = true +maintenance-plugins=post-registration, path-info-deletion +# Maintenance task for post registration of all paths of a freshly registered data set to be fed into pathinfo database +post-registration.class=ch.systemsx.cisd.etlserver.postregistration.PostRegistrationMaintenanceTask +post-registration.interval=30 +post-registration.cleanup-tasks-folder=${root-dir}/post-registration/cleanup-tasks +post-registration.last-seen-data-set-file=${root-dir}/post-registration/last-seen-data-set.txt +post-registration.post-registration-tasks=pathinfo-feeding, notifying +post-registration.pathinfo-feeding.class=ch.systemsx.cisd.etlserver.path.PathInfoDatabaseFeedingTask +post-registration.pathinfo-feeding.compute-checksum=true # The NotifyingTask throws an exception. Thus, post-registration will always fail. # This is needed to have an example of a data set which isn't post-registered. -post-registration.notifying.class = ch.systemsx.cisd.etlserver.postregistration.NotifyingTask -post-registration.notifying.destination-path-template = targets/${unknown-placeholder-preventing-post-registration} -post-registration.notifying.message-template = hello - +post-registration.notifying.class=ch.systemsx.cisd.etlserver.postregistration.NotifyingTask +post-registration.notifying.destination-path-template=targets/${unknown-placeholder-preventing-post-registration} +post-registration.notifying.message-template=hello # Maintenance task for deleting entries from pathinfo database after deletion of a data set -path-info-deletion.class = ch.systemsx.cisd.etlserver.plugins.DeleteFromExternalDBMaintenanceTask -path-info-deletion.interval = 120 -path-info-deletion.data-source = path-info-db -path-info-deletion.data-set-table-name = data_sets -path-info-deletion.data-set-perm-id = CODE - +path-info-deletion.class=ch.systemsx.cisd.etlserver.plugins.DeleteFromExternalDBMaintenanceTask +path-info-deletion.interval=120 +path-info-deletion.data-source=path-info-db +path-info-deletion.data-set-table-name=data_sets +path-info-deletion.data-set-perm-id=CODE # --------------------------------------------------------------------------- # processing plugins configuration # --------------------------------------------------------------------------- - # Comma separated names of processing plugins. Each plugin should have configuration properties prefixed with its name. -processing-plugins = path-info-db-consistency-check - +processing-plugins=path-info-db-consistency-check # Processing task that checks the consistency between the data store and the meta information stored in the PathInfoDB. # It sends out an email which contains all differences found. -path-info-db-consistency-check.label = Path Info DB consistency check -path-info-db-consistency-check.dataset-types = .* -path-info-db-consistency-check.class = ch.systemsx.cisd.openbis.dss.generic.server.plugins.standard.DataSetAndPathInfoDBConsistencyCheckProcessingPlugin - +path-info-db-consistency-check.label=Path Info DB consistency check +path-info-db-consistency-check.dataset-types=.* +path-info-db-consistency-check.class=ch.systemsx.cisd.openbis.dss.generic.server.plugins.standard.DataSetAndPathInfoDBConsistencyCheckProcessingPlugin # --------------------------------------------------------------------------- # dropbox configurations # --------------------------------------------------------------------------- -inputs = default-dropbox -dss-rpc.put-default = default-dropbox - -default-dropbox.incoming-dir = ${incoming-root-dir}/incoming-default -default-dropbox.incoming-data-completeness-condition = auto-detection -default-dropbox.top-level-data-set-handler = ch.systemsx.cisd.etlserver.registrator.api.v2.JavaTopLevelDataSetHandlerV2 -default-dropbox.program-class = ch.systemsx.cisd.etlserver.registrator.DefaultDropbox -default-dropbox.storage-processor = ch.systemsx.cisd.etlserver.DefaultStorageProcessor -default-dropbox.validation-script-path = ../core-plugins/default/default-validation-script.py - +inputs=default-dropbox +dss-rpc.put-default=default-dropbox +default-dropbox.incoming-dir=${incoming-root-dir}/incoming-default +default-dropbox.incoming-data-completeness-condition=auto-detection +default-dropbox.top-level-data-set-handler=ch.systemsx.cisd.etlserver.registrator.api.v2.JavaTopLevelDataSetHandlerV2 +default-dropbox.program-class=ch.systemsx.cisd.etlserver.registrator.DefaultDropbox +default-dropbox.storage-processor=ch.systemsx.cisd.etlserver.DefaultStorageProcessor +default-dropbox.validation-script-path=../core-plugins/default/default-validation-script.py # --------------------------------------------------------------------------- # Archiver configuration (optional) # --------------------------------------------------------------------------- - # Configuration of an archiver task. All properties are prefixed with 'archiver.'. - # Archiver class specification (together with the list of packages this class belongs to). -archiver.class = ch.systemsx.cisd.openbis.dss.generic.server.plugins.demo.DemoArchiver - +archiver.class=ch.systemsx.cisd.openbis.dss.generic.server.plugins.demo.DemoArchiver # --------------------------------------------------------------------------- # Imaging database for screening (optional, only used if screening technology switched on) # --------------------------------------------------------------------------- # Format: <host>[:<port>]. Default: localhost # imaging-database.url-host-part = # Default: prod. - -imaging-database.kind = test_js_common2 -proteomics-database-kind = test_js_common2 - -screening-sql-root-folder = ../../../../screening/source/ -proteomics-sql-root-folder = ../../../../rtd_phosphonetx/source/ - +imaging-database.kind=test_js_common2 +proteomics-database-kind=test_js_common2 +screening-sql-root-folder=../../../../screening/source/ # --------------------------------------------------------------------------- # INTERNAL CONFIGURATION, # Do not change this part unless you are developing openBIS extensions. # --------------------------------------------------------------------------- - - jython-version=2.7 diff --git a/openbis_all/build/build.xml b/openbis_all/build/build.xml index 42907f391a032faa9af0f103bdc126fbc2dd7de9..c1b51dec44c922aa2d7ffae89df0b4793f1dcf51 100644 --- a/openbis_all/build/build.xml +++ b/openbis_all/build/build.xml @@ -20,10 +20,6 @@ <param name="project" value="deep_sequencing_unit" /> <param name="pattern" value="*"/> </antcall> - <antcall target="_dist"> - <param name="project" value="rtd_phosphonetx" /> - <param name="pattern" value="*"/> - </antcall> <antcall target="_dist"> <param name="project" value="rtd_yeastx" /> <param name="pattern" value="*"/> @@ -91,9 +87,6 @@ <antcall target="_clean"> <param name="project" value="deep_sequencing_unit"/> </antcall> - <antcall target="_clean"> - <param name="project" value="rtd_phosphonetx"/> - </antcall> <antcall target="_clean"> <param name="project" value="rtd_yeastx"/> </antcall> diff --git a/openbis_all/source/bash/build/branch.sh b/openbis_all/source/bash/build/branch.sh index 0541401e60c6a8f56199d3e220c98d66a5aa3411..e046ba9c8802659de5add732e7469daf401b1fc5 100755 --- a/openbis_all/source/bash/build/branch.sh +++ b/openbis_all/source/bash/build/branch.sh @@ -39,7 +39,6 @@ openbis-common \ openbis_standard_technologies \ openbis_api \ plasmid \ -rtd_phosphonetx \ rtd_yeastx \ screening \ ui-test\ diff --git a/rtd_phosphonetx/.gitignore b/rtd_phosphonetx/.gitignore deleted file mode 100644 index 8186f94570a6b4799f1e33486c93a5b35e842d5b..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/.gitignore +++ /dev/null @@ -1,11 +0,0 @@ -/etc -/tomcat -/targets -/test-output -/.updater -/.dynamic_property_evaluator_queue -/bin -/build/ -/.idea/ -*.iml -*.eml \ No newline at end of file diff --git a/rtd_phosphonetx/.pydevproject b/rtd_phosphonetx/.pydevproject deleted file mode 100644 index a9cca037b33037ebc3232e6b63f3f00283463a4e..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/.pydevproject +++ /dev/null @@ -1,7 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<?eclipse-pydev version="1.0"?> - -<pydev_project> -<pydev_property name="org.python.pydev.PYTHON_PROJECT_INTERPRETER">Default</pydev_property> -<pydev_property name="org.python.pydev.PYTHON_PROJECT_VERSION">python 2.7</pydev_property> -</pydev_project> diff --git a/rtd_phosphonetx/.shredder b/rtd_phosphonetx/.shredder deleted file mode 100644 index 2e08dce276e43c677d121d627a250d1710fed824..0000000000000000000000000000000000000000 Binary files a/rtd_phosphonetx/.shredder and /dev/null differ diff --git a/rtd_phosphonetx/build.gradle b/rtd_phosphonetx/build.gradle deleted file mode 100644 index a53a350ca6216b9c5c52b20743dd3a825c140888..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/build.gradle +++ /dev/null @@ -1,58 +0,0 @@ -evaluationDependsOn(':commonbase') -evaluationDependsOn(':common') -evaluationDependsOn(':openbis_api') -evaluationDependsOn(':openbis-common') -evaluationDependsOn(':authentication') -evaluationDependsOn(':dbmigration') -evaluationDependsOn(':openbis') -evaluationDependsOn(':datastore_server') - -apply from: '../gradle/javaproject.gradle' - -dependencies { - compile project(':common'), - project(':datastore_server') - - testCompile project(path: ':datastore_server', configuration: 'tests') - -} - -sourceSets { - test { - resources { - srcDirs = ['source/java'] - } - } -} - -jar { - from('../rtd_phosphonetx/source/sql'){ - into("/sql") - include "proteomics/**/*.sql" - } -} - -task systemTestSuite(type: Test) { - useTestNG() - options.suites('sourceTest/java/tests_system.xml') - jvmArgs '-Xmx2048m', '-XX:MaxPermSize=256m' - reports.html.destination = file("${project.buildDir}/reports/tests-system") -} - -test.dependsOn(systemTestSuite) - -task zip(type: Zip) { - includeEmptyDirs false - from (jar.archivePath) { - into 'datastore_server/lib/' - rename 'datastore_server_plugin-proteomics(.*)\\.jar', 'datastore_server_plugin-proteomics.jar' - } - - from (fileTree(dir: 'source/core-plugins', includes:['proteomics/**', 'proteomics-optional/**'], excludes:['**/as/**', '**/package-to-dist'])) { - into 'core-plugins' - } -} -zip.dependsOn jar -build.dependsOn zip - -apply from: 'gwtdev.gradle' diff --git a/rtd_phosphonetx/etc/log.xml b/rtd_phosphonetx/etc/log.xml deleted file mode 100644 index 5cee0a68436a19a6c4ec4b14b580e6d9f75bf84f..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/etc/log.xml +++ /dev/null @@ -1,19 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" ?> -<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> - -<log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/'> - - <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender"> - <layout class="org.apache.log4j.PatternLayout"> - <param name="ConversionPattern" value="%d %-5p [%t] %c - %m%n"/> - </layout> - </appender> - - <appender name="NULL" class="org.apache.log4j.varia.NullAppender" /> - - <root> - <priority value ="info" /> - <appender-ref ref="STDOUT" /> - </root> - -</log4j:configuration> diff --git a/rtd_phosphonetx/etc/passwd b/rtd_phosphonetx/etc/passwd deleted file mode 100644 index 6ead36251a5325160d2d13a2894487f82cf95cf8..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/etc/passwd +++ /dev/null @@ -1,4 +0,0 @@ -test:a@admins.com:A:The Admin:J3fII6Pex7jnCBwF+uXz2mFuB1QVhPUi -u:u@users.com:U:The User:dmbGKaGRmbX8YKfslMxUHObmYfjywkuT -o:o@observers.com:O:The Observer:t53ADCnFnEFhBvHB7FPoHhbHeW2O1KJc -etlserver::::SHGHSPawL/B3NKXD5nsu4fSrj5LwR2MX diff --git a/rtd_phosphonetx/etc/passwd.sv b/rtd_phosphonetx/etc/passwd.sv deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/rtd_phosphonetx/etc/passwd.tmp b/rtd_phosphonetx/etc/passwd.tmp deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/rtd_phosphonetx/etc/service.properties b/rtd_phosphonetx/etc/service.properties deleted file mode 100644 index 3db2ce8d811de16962e5ddebbde3d567ffa66878..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/etc/service.properties +++ /dev/null @@ -1,115 +0,0 @@ -# Unique code of this Data Store Server. Not more than 40 characters. -data-store-server-code = DSS1 - -root-dir = targets/playground - -# The root directory of the data store -storeroot-dir = ${root-dir}/data/store - -incoming-root-dir = ${root-dir}/data - -core-plugins-folder = source/core-plugins - -proteomics-database-kind = dev -proteomics-sql-root-folder = source/ - -session-workspace-root-dir = ${incoming-root-dir}/session-workspace - -dss-rpc.put-default = default-dropbox - -# The directory where the command queue file is located; defaults to storeroot-dir -commandqueue-dir = - -# Port -port = 8889 - -# Session timeout in minutes -session-timeout = 720 - -# Path to the keystore -keystore.path = ../datastore_server/dist/etc/openBIS.keystore - -# Password of the keystore -keystore.password = changeit - -# Key password of the keystore -keystore.key-password = changeit - -# The check interval (in seconds) -check-interval = 5 - -# The time-out for clean up work in the shutdown sequence (in seconds). -# Note that that the maximal time for the shutdown sequence to complete can be as large -# as twice this time. -# Remark: On a network file system, it is not recommended to turn this value to something -# lower than 180. -shutdown-timeout = 2 - -# If free disk space goes below value defined here, a notification email will be sent. -# Value must be specified in kilobytes (1048576 = 1024 * 1024 = 1GB). If no high water mark is -# specified or if value is negative, the system will not be watching. -highwater-mark = -1 - -# If a data set is successfully registered it sends out an email to the registrator. -# If this property is not specified, no email is sent to the registrator. This property -# does not affect the mails which are sent, when the data set could not be registered. -notify-successful-registration = false - -dss-temp-dir = ${root-dir}/dss-temp -dss-registration-log-dir = ${root-dir}/dss-registration-logs -dss-recovery-state-dir = ${root-dir}/recovery-state - -use-ssl = false - -# The URL of the openBIS server -server-url = http://localhost:8888/openbis -server-timeout-in-minutes = 10 - -# The username to use when contacting the openBIS server -username = etlserver - -# The password to use when contacting the openBIS server -password = etlserver - -# The base URL for Web client access. -download-url = http://localhost:8889 - -# SMTP properties (must start with 'mail' to be considered). -mail.smtp.host = file://targets/email -mail.from = datastore_server@localhost - -# ---------------- Timing parameters for file system operations on remote shares. - -# Time (in seconds) to wait for any file system operation to finish. Operations exceeding this -# timeout will be terminated. -timeout = 60 -# Number of times that a timed out operation will be tried again (0 means: every file system -# operation will only ever be performed once). -max-retries = 11 -# Time (in seconds) to wait after an operation has been timed out before re-trying. -failure-interval = 10 - -# The period of no write access that needs to pass before an incoming data item is considered -# complete and ready to be processed (in seconds) [default: 300]. -# Valid only when auto-detection method is used to determine if an incoming data are ready to be processed. -quiet-period = 10 - -# --------------------------------------------------------------------------- - -# Globally used separator character which separates entities in a data set file name -data-set-file-name-entity-separator = _ - -# --------------------------------------------------------------------------- -# dropbox configurations -# --------------------------------------------------------------------------- -inputs = default-dropbox -dss-rpc.put-default = default-dropbox - -default-dropbox.incoming-dir = ${incoming-root-dir}/incoming-default -default-dropbox.incoming-data-completeness-condition = auto-detection -default-dropbox.top-level-data-set-handler = ch.systemsx.cisd.etlserver.registrator.api.v2.JavaTopLevelDataSetHandlerV2 -default-dropbox.program-class = ch.systemsx.cisd.etlserver.registrator.DefaultDropbox -default-dropbox.storage-processor = ch.systemsx.cisd.etlserver.DefaultStorageProcessor - - -jython-version=2.7 diff --git a/rtd_phosphonetx/etc/web-client.properties b/rtd_phosphonetx/etc/web-client.properties deleted file mode 100644 index dc67a8589bc51a9c697f4595c8924da3fa01f1e9..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/etc/web-client.properties +++ /dev/null @@ -1,12 +0,0 @@ -# Maximal number of visible columns in tables. Default: 50. -max-visible-columns = 15 -enable-trash = true - -technologies = proteomics - -# Relative path of cache. Default value is 'cache'. -proteomics.cache-folder = targets/cache -# Minimum free disk space needed for the cache. Default value is 1 GB. -#proteomics.minimum-free-disk-space-in-MB = 1024 -# Maximum retention time. Data older than this time will be removed from cache. Default value is a week. -#proteomics.maximum-retention-time-in-days = 7 diff --git a/rtd_phosphonetx/gradle/wrapper/gradle-wrapper.jar b/rtd_phosphonetx/gradle/wrapper/gradle-wrapper.jar deleted file mode 100644 index 05a89ea194c2a29cec5f0bd3df21c3e8e1a81b78..0000000000000000000000000000000000000000 Binary files a/rtd_phosphonetx/gradle/wrapper/gradle-wrapper.jar and /dev/null differ diff --git a/rtd_phosphonetx/gradle/wrapper/gradle-wrapper.properties b/rtd_phosphonetx/gradle/wrapper/gradle-wrapper.properties deleted file mode 100644 index 3cf832e831fce0b9eca9f1759bffa29875642332..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/gradle/wrapper/gradle-wrapper.properties +++ /dev/null @@ -1,5 +0,0 @@ -distributionBase=GRADLE_USER_HOME -distributionPath=wrapper/dists -distributionUrl=http\://svnsis.ethz.ch/repos/cisd/ivy-repository/trunk/gradle/distribution/5.6.4/gradle-5.6.4-all.zip -zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists diff --git a/rtd_phosphonetx/gradlew b/rtd_phosphonetx/gradlew deleted file mode 100755 index 4453ccea33d960069d9137ee65f6b21fc65e7e92..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/gradlew +++ /dev/null @@ -1,172 +0,0 @@ -#!/usr/bin/env sh - -############################################################################## -## -## Gradle start up script for UN*X -## -############################################################################## - -# Attempt to set APP_HOME -# Resolve links: $0 may be a link -PRG="$0" -# Need this for relative symlinks. -while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi -done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >/dev/null -APP_HOME="`pwd -P`" -cd "$SAVED" >/dev/null - -APP_NAME="Gradle" -APP_BASE_NAME=`basename "$0"` - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS="" - -# Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD="maximum" - -warn ( ) { - echo "$*" -} - -die ( ) { - echo - echo "$*" - echo - exit 1 -} - -# OS specific support (must be 'true' or 'false'). -cygwin=false -msys=false -darwin=false -nonstop=false -case "`uname`" in - CYGWIN* ) - cygwin=true - ;; - Darwin* ) - darwin=true - ;; - MINGW* ) - msys=true - ;; - NONSTOP* ) - nonstop=true - ;; -esac - -CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar - -# Determine the Java command to use to start the JVM. -if [ -n "$JAVA_HOME" ] ; then - if [ -x "$JAVA_HOME/jre/sh/java" ] ; then - # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" - else - JAVACMD="$JAVA_HOME/bin/java" - fi - if [ ! -x "$JAVACMD" ] ; then - die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." - fi -else - JAVACMD="java" - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." -fi - -# Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then - MAX_FD_LIMIT=`ulimit -H -n` - if [ $? -eq 0 ] ; then - if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then - MAX_FD="$MAX_FD_LIMIT" - fi - ulimit -n $MAX_FD - if [ $? -ne 0 ] ; then - warn "Could not set maximum file descriptor limit: $MAX_FD" - fi - else - warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" - fi -fi - -# For Darwin, add options to specify how the application appears in the dock -if $darwin; then - GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" -fi - -# For Cygwin, switch paths to Windows format before running java -if $cygwin ; then - APP_HOME=`cygpath --path --mixed "$APP_HOME"` - CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` - JAVACMD=`cygpath --unix "$JAVACMD"` - - # We build the pattern for arguments to be converted via cygpath - ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` - SEP="" - for dir in $ROOTDIRSRAW ; do - ROOTDIRS="$ROOTDIRS$SEP$dir" - SEP="|" - done - OURCYGPATTERN="(^($ROOTDIRS))" - # Add a user-defined pattern to the cygpath arguments - if [ "$GRADLE_CYGPATTERN" != "" ] ; then - OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" - fi - # Now convert the arguments - kludge to limit ourselves to /bin/sh - i=0 - for arg in "$@" ; do - CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` - CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option - - if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition - eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` - else - eval `echo args$i`="\"$arg\"" - fi - i=$((i+1)) - done - case $i in - (0) set -- ;; - (1) set -- "$args0" ;; - (2) set -- "$args0" "$args1" ;; - (3) set -- "$args0" "$args1" "$args2" ;; - (4) set -- "$args0" "$args1" "$args2" "$args3" ;; - (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; - esac -fi - -# Escape application args -save ( ) { - for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done - echo " " -} -APP_ARGS=$(save "$@") - -# Collect all arguments for the java command, following the shell quoting and substitution rules -eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" - -# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong -if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then - cd "$(dirname "$0")" -fi - -exec "$JAVACMD" "$@" diff --git a/rtd_phosphonetx/gradlew.bat b/rtd_phosphonetx/gradlew.bat deleted file mode 100644 index e95643d6a2ca62258464e83c72f5156dc941c609..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/gradlew.bat +++ /dev/null @@ -1,84 +0,0 @@ -@if "%DEBUG%" == "" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS= - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto init - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto init - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:init -@rem Get command-line arguments, handling Windows variants - -if not "%OS%" == "Windows_NT" goto win9xME_args - -:win9xME_args -@rem Slurp the command line arguments. -set CMD_LINE_ARGS= -set _SKIP=2 - -:win9xME_args_slurp -if "x%~1" == "x" goto execute - -set CMD_LINE_ARGS=%* - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% - -:end -@rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega diff --git a/rtd_phosphonetx/gwtdev.gradle b/rtd_phosphonetx/gwtdev.gradle deleted file mode 100644 index 072841cf7be9c51e0dbffb4c7c1e6d6bc7e107b4..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/gwtdev.gradle +++ /dev/null @@ -1,95 +0,0 @@ -configurations.create('gwt') -if (System.getProperty("openbis.development-build") != null) { - configurations.gwt { - transitive = false - } - - dependencies { - gwt 'reveregroup:gwt-image-loader:1.1.4', - 'google:gwt-dev:2.4', - 'google:gwt-user:2.4', - 'google:gwt-debug-panel:1.0', - 'sencha:gxt:2.2.5', - 'sis:sis-base:18.09.0', - 'fasterxml:jackson-annotations:2.9.10', - project(':common'), - project(path:':common', configuration: 'archives'), - project(path:':openbis_api'), - project(path:':openbis_api', configuration: 'archives'), - project(path:':openbis-common'), - project(path:':openbis-common', configuration: 'archives'), - project(path:':openbis'), - project(path:':openbis', configuration: 'archives'), - project(path:':rtd_phosphonetx', configuration: 'archives') - } -} - -task deleteGWT(type: Exec) { - executable "rm" - args "-rf", "${project.projectDir.absolutePath}/.gwt-cache", "${project.projectDir.absolutePath}/targets/www" -} - -task prepareGWT(type:Copy, dependsOn: [deleteGWT, compileJava]) { - from 'resource/server' - from files('../common/resource/server') { - exclude 'gwt.xml' - } - from file('../openbis/resource/server/bis-common.xml') - into 'targets/www/WEB-INF' - - from (project.configurations.runtime.files) { - into 'lib' - exclude 'cisd-cifex*' - exclude 'common-*' - exclude 'authentication-*' - exclude 'dbmigration-*' - exclude 'openbis-common-*' - exclude 'openbis_api-*' - exclude 'openbis-*' - exclude 'datastore_server-*' - } - - from ('source/java/service.properties') { - into 'classes' - } - - doLast { - file("targets/www/WEB-INF/gwt.xml").createNewFile() - } -} - -task compileGWTToTemp(type: JavaExec, dependsOn: prepareGWT) { - //inputs.source - sourceSets.main.java.srcDirs - inputs.dir sourceSets.main.output.resourcesDir - outputs.dir 'targets/www/gwt-temp' - - main = 'com.google.gwt.dev.Compiler' - maxHeapSize = '1024m' - classpath { - [ - sourceSets.main.java.srcDirs, - project(":openbis").sourceSets.main.java.srcDirs, - project(":openbis").sourceSets.main.output.resourcesDir, - project(":openbis").sourceSets.main.output.classesDirs, - project(":openbis").sourceSets.main.compileClasspath, - project(":common").sourceSets.main.java.srcDirs, - project(":openbis_api").sourceSets.main.java.srcDirs, - project(":rtd_phosphonetx").sourceSets.main.java.srcDirs, - project(":rtd_phosphonetx").sourceSets.main.output.resourcesDir, - configurations.gwt - ] - } - args = [ '-war', - 'targets/www/gwt-temp', - "ch.systemsx.cisd.openbis.plugin.proteomics.OpenBISSafari", - '-draftCompile', - '-style', 'PRETTY', - '-logLevel', 'INFO'] -} - -task compileGWT(type: Copy, dependsOn: compileGWTToTemp) { - from "targets/www/gwt-temp/ch.systemsx.cisd.openbis.plugin.proteomics.OpenBIS" - into "targets/www/openbis-test-proteomics" -} - diff --git a/rtd_phosphonetx/resource/dependency-structure.ddf b/rtd_phosphonetx/resource/dependency-structure.ddf deleted file mode 100644 index 5597c17019c7687e273e07826902f228667472f2..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/resource/dependency-structure.ddf +++ /dev/null @@ -1,50 +0,0 @@ -# -# -# -#show allResults - -{root} = ch.systemsx.cisd.openbis -{generic} = ${root}.generic -{proteomics} = ${root}.plugin.proteomics - -###################################################################### -# Check dependencies to openbis - -[etlserver] = ${root}.etlserver.proteomics.* -[private_openbis] = ${root}.* excluding [etlserver] ${root}.dss.generic.shared.* ${root}.generic.shared.* ${proteomics}.shared.* ${root}.common.* - -check sets [etlserver] - -check [etlserver] independentOf [private_openbis] - -###################################################################### -# Check plugin dependencies -# -[proteomics.client] = ${proteomics}.client.* -[proteomics.server] = ${proteomics}.server.* -[proteomics.shared] = ${proteomics}.shared.* -[other.client] = ${generic}.client.* ${root}.plugin.*.client excluding [proteomics.client] -[other.server] = ${generic}.server.* ${root}.plugin.*.server excluding [proteomics.server] - -check sets [proteomics.client] [proteomics.server] [proteomics.shared] - -layer proteomics.client-server = [proteomics.client] [proteomics.server] -layer proteomics.shared = [proteomics.shared] -check layeringOf proteomics.shared proteomics.client-server - -check [proteomics.client] independentOf [other.server] -check [proteomics.server] independentOf [other.client] - -###################################################################### -# Check API -# - -[api-shared] = ${root}.generic.shared.api.* ${proteomics}.shared.api.* -[api-client] = ${proteomics}.client.api.* -[everything-except-java] = * excluding java* *.annotation.* ch.systemsx.cisd.common.api.IRpcService -[everything-except-java-and-api-shared] = [everything-except-java] excluding [api-shared] ${root}.common.api.client.* ch.systemsx.cisd.common.api.retry.* - -check sets [api-shared] [api-client] - -check [api-shared] independentOf [everything-except-java] -check [api-client] independentOf [everything-except-java-and-api-shared] diff --git a/rtd_phosphonetx/resource/eclipse/Gradle Proteomics compile GWT.launch b/rtd_phosphonetx/resource/eclipse/Gradle Proteomics compile GWT.launch deleted file mode 100644 index 5be105954616c2ac6d2d35bf458b1345ae300ada..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/resource/eclipse/Gradle Proteomics compile GWT.launch +++ /dev/null @@ -1,6 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<launchConfiguration type="org.springsource.ide.eclipse.gradle.launch"> -<stringAttribute key="org.springsource.ide.eclipse.gradle.launch.PGM_ARGS" value="-Dopenbis.development-build=true"/> -<stringAttribute key="org.springsource.ide.eclipse.gradle.launch.PROJECT" value="gradle"/> -<stringAttribute key="org.springsource.ide.eclipse.gradle.launch.TASKTEXT" value=":rtd_phosphonetx:compileGWT "/> -</launchConfiguration> diff --git a/rtd_phosphonetx/resource/eclipse/Gradle Proteomics openBIS GWT Shell.launch b/rtd_phosphonetx/resource/eclipse/Gradle Proteomics openBIS GWT Shell.launch deleted file mode 100644 index 45a3c674d3defd8636136026c2d71f7243a8e046..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/resource/eclipse/Gradle Proteomics openBIS GWT Shell.launch +++ /dev/null @@ -1,37 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication"> -<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS"> -<listEntry value="/rtd_phosphonetx"/> -</listAttribute> -<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES"> -<listEntry value="4"/> -</listAttribute> -<booleanAttribute key="org.eclipse.debug.core.appendEnvironmentVariables" value="true"/> -<booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_START_ON_FIRST_THREAD" value="true"/> -<listAttribute key="org.eclipse.jdt.launching.CLASSPATH"> -<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry containerPath="org.eclipse.jdt.launching.JRE_CONTAINER" javaProject="rtd_phosphonetx" path="1" type="4"/> "/> -<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/libraries/gwt2.4/gwt-dev.jar" path="3" type="2"/> "/> -<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/authentication/targets/classes" path="3" type="2"/> "/> -<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/common/targets/classes" path="3" type="2"/> "/> -<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/datastore_server/targets/classes" path="3" type="2"/> "/> -<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/dbmigration/targets/classes" path="3" type="2"/> "/> -<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/openbis/targets/classes" path="3" type="2"/> "/> -<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/openbis_api/targets/classes" path="3" type="2"/> "/> -<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/openbis-common/targets/classes" path="3" type="2"/> "/> -<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/rtd_phosphonetx/targets/classes" path="3" type="2"/> "/> -<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/authentication/source/java" path="3" type="2"/> "/> -<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/common/source/java" path="3" type="2"/> "/> -<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/datastore_server/source/java" path="3" type="2"/> "/> -<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/dbmigration/source/java" path="3" type="2"/> "/> -<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/openbis/source/java" path="3" type="2"/> "/> -<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/openbis_api/source/java" path="3" type="2"/> "/> -<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/openbis-common/source/java" path="3" type="2"/> "/> -<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/rtd_phosphonetx/source/java" path="3" type="2"/> "/> -<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry id="org.eclipse.jdt.launching.classpathentry.defaultClasspath"> <memento exportedEntriesOnly="false" project="rtd_phosphonetx"/> </runtimeClasspathEntry> "/> -</listAttribute> -<booleanAttribute key="org.eclipse.jdt.launching.DEFAULT_CLASSPATH" value="false"/> -<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="com.google.gwt.dev.DevMode"/> -<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-startupUrl ch.systemsx.cisd.openbis.plugin.proteomics.OpenBIS/index.html ch.systemsx.cisd.openbis.plugin.proteomics.OpenBIS -war targets/www -logLevel WARN"/> -<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="rtd_phosphonetx"/> -<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Dpython.path=../libraries/jython/jython-lib -Dlog4j.configuration=../openbis/etc/log.xml -Djavax.net.ssl.trustStore=../openbis/dist/server/openBIS.keystore -Dorg.mortbay.util.FileResource.checkAliases=false -Xmx2048m -XX:MaxPermSize=512m -ea"/> -</launchConfiguration> diff --git a/rtd_phosphonetx/resource/eclipse/Gradle Proteomics prepare GWT.launch b/rtd_phosphonetx/resource/eclipse/Gradle Proteomics prepare GWT.launch deleted file mode 100644 index 52ab66e796806152ecc09f544b3c6ed1bd500a49..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/resource/eclipse/Gradle Proteomics prepare GWT.launch +++ /dev/null @@ -1,6 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<launchConfiguration type="org.springsource.ide.eclipse.gradle.launch"> -<stringAttribute key="org.springsource.ide.eclipse.gradle.launch.PGM_ARGS" value="-Dopenbis.development-build=true"/> -<stringAttribute key="org.springsource.ide.eclipse.gradle.launch.PROJECT" value="gradle"/> -<stringAttribute key="org.springsource.ide.eclipse.gradle.launch.TASKTEXT" value=":rtd_phosphonetx:prepareGWT "/> -</launchConfiguration> diff --git a/rtd_phosphonetx/resource/eclipse/Proteomics openBIS GWT Shell.launch b/rtd_phosphonetx/resource/eclipse/Proteomics openBIS GWT Shell.launch deleted file mode 100644 index 047a0d656b20207fd23e83daba650aae4bd10c85..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/resource/eclipse/Proteomics openBIS GWT Shell.launch +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication"> -<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS"> -<listEntry value="/rtd_phosphonetx"/> -</listAttribute> -<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES"> -<listEntry value="4"/> -</listAttribute> -<booleanAttribute key="org.eclipse.debug.core.appendEnvironmentVariables" value="true"/> -<listAttribute key="org.eclipse.jdt.launching.CLASSPATH"> -<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry containerPath="org.eclipse.jdt.launching.JRE_CONTAINER" javaProject="rtd_phosphonetx" path="1" type="4"/> "/> -<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/libraries/gwt2.4/gwt-dev.jar" path="3" type="2"/> "/> -<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry id="org.eclipse.jdt.launching.classpathentry.defaultClasspath"> <memento exportedEntriesOnly="false" project="rtd_phosphonetx"/> </runtimeClasspathEntry> "/> -<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/rtd_phosphonetx/source/java" path="3" type="2"/> "/> -<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/openbis/source/java" path="3" type="2"/> "/> -</listAttribute> -<booleanAttribute key="org.eclipse.jdt.launching.DEFAULT_CLASSPATH" value="false"/> -<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="com.google.gwt.dev.DevMode"/> -<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-startupUrl ch.systemsx.cisd.openbis.plugin.proteomics.OpenBIS/index.html ch.systemsx.cisd.openbis.plugin.proteomics.OpenBIS -war targets/www -logLevel WARN"/> -<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="rtd_phosphonetx"/> -<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Dpython.path=../libraries/jython/jython-lib -Dlog4j.configuration=../openbis/etc/log.xml -Djavax.net.ssl.trustStore=../openbis/dist/server/openBIS.keystore -Dorg.mortbay.util.FileResource.checkAliases=false -Xmx2048m -XX:MaxPermSize=512m -ea"/> -</launchConfiguration> diff --git a/rtd_phosphonetx/resource/eclipse/phosphonetx Data Store Server.launch b/rtd_phosphonetx/resource/eclipse/phosphonetx Data Store Server.launch deleted file mode 100644 index 258a7dbb82216b0a4b08b9608bda7bc33b5532b5..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/resource/eclipse/phosphonetx Data Store Server.launch +++ /dev/null @@ -1,13 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication"> -<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS"> -<listEntry value="/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/DataStoreServer.java"/> -</listAttribute> -<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES"> -<listEntry value="1"/> -</listAttribute> -<booleanAttribute key="org.eclipse.debug.core.appendEnvironmentVariables" value="true"/> -<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="ch.systemsx.cisd.openbis.dss.generic.DataStoreServer"/> -<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="rtd_phosphonetx"/> -<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-ea"/> -</launchConfiguration> diff --git a/rtd_phosphonetx/resource/server/spring-servlet.xml b/rtd_phosphonetx/resource/server/spring-servlet.xml deleted file mode 100644 index c209198e6c1c9a51156c493c233f10c1f5705c71..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/resource/server/spring-servlet.xml +++ /dev/null @@ -1,38 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<beans xmlns="http://www.springframework.org/schema/beans" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xmlns:tx="http://www.springframework.org/schema/tx" - xmlns:context="http://www.springframework.org/schema/context" - xsi:schemaLocation=" - http://www.springframework.org/schema/beans - http://www.springframework.org/schema/beans/spring-beans-2.5.xsd - http://www.springframework.org/schema/tx - http://www.springframework.org/schema/tx/spring-tx-2.5.xsd - http://www.springframework.org/schema/context - http://www.springframework.org/schema/context/spring-context-2.5.xsd"> - - <!-- - // Note: obviously it is not possible to have a mix of 'urlMappings' and annotated configuration. - --> - <context:annotation-config /> - - <context:component-scan base-package="ch.systemsx.cisd.openbis" use-default-filters="false"> - <context:include-filter type="annotation" - expression="org.springframework.stereotype.Controller" /> - </context:component-scan> - - <context:component-scan base-package="ch.ethz.sis.openbis" use-default-filters="false"> - <context:include-filter type="annotation" - expression="org.springframework.stereotype.Controller" /> - </context:component-scan> - - <!-- - // Commons-based implementation of the MultipartResolver interface. - // Needs 'commons-fileupload' library. - --> - <bean id="multipartResolver" - class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> - <!-- Default is 10240 (10kB). Set to 1MB (1048576). --> - <property name="maxInMemorySize" value="1048576" /> - </bean> -</beans> diff --git a/rtd_phosphonetx/resource/server/web.xml b/rtd_phosphonetx/resource/server/web.xml deleted file mode 100644 index 89daa03c6f5829e2eed55c86ea4bee7ebff597ea..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/resource/server/web.xml +++ /dev/null @@ -1,30 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE web-app [ - <!ENTITY common SYSTEM "web-common.xml"> - <!ENTITY biscommon SYSTEM "bis-common.xml"> -]> -<web-app> - - <display-name>openBIS</display-name> - <description>openBIS server</description> - - &common; - - <context-param> - <param-name>contextConfigLocation</param-name> - <param-value>classpath:proteomics-applicationContext.xml</param-value> - <description>File for Spring beans.</description> - </context-param> - - <context-param> - <param-name>infoClass</param-name> - <param-value>ch.systemsx.cisd.openbis.plugin.proteomics.BuildAndEnvironmentInfo</param-value> - </context-param> - - &biscommon; - - <!-- - // Additional servlets - --> - -</web-app> diff --git a/rtd_phosphonetx/settings.gradle b/rtd_phosphonetx/settings.gradle deleted file mode 100644 index 33440dae995c32d3e498e18b39ed5c1e0f9af0b5..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/settings.gradle +++ /dev/null @@ -1 +0,0 @@ -includeFlat 'commonbase', 'common', 'openbis_api', 'openbis-common', 'authentication', 'dbmigration', 'openbis', 'datastore_server' diff --git a/rtd_phosphonetx/source/core-plugins/core-plugins.properties b/rtd_phosphonetx/source/core-plugins/core-plugins.properties deleted file mode 100644 index 5da5ded3e0bc0845e30c86047ccd9823985a9e7c..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/core-plugins/core-plugins.properties +++ /dev/null @@ -1,16 +0,0 @@ -# -# Properties for enabling/disabling core plugins -# - -# -# List of comma-separated regular expressions. If a technology (i.e. module) from the core plugins -# folder is matching one of these regular expressions it is enabled. -# By default all technologies are disabled. -# -enabled-modules = proteomics, dev-.* - -# -# List of comma-separated full core plugin names (or prefixes) of core plugins to be disabled -# even though they are in an enabled technology. -# -#disabled-core-plugins = \ No newline at end of file diff --git a/rtd_phosphonetx/source/core-plugins/dev-demo/1/dss/reporting-plugins/demo-proteomics-aggregation/plugin.properties b/rtd_phosphonetx/source/core-plugins/dev-demo/1/dss/reporting-plugins/demo-proteomics-aggregation/plugin.properties deleted file mode 100644 index ca4567559765fcec82d1bbcc1d1785353bd6287b..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/core-plugins/dev-demo/1/dss/reporting-plugins/demo-proteomics-aggregation/plugin.properties +++ /dev/null @@ -1,3 +0,0 @@ -label = Demo Proteomics Aggregation -class = ch.systemsx.cisd.openbis.dss.generic.server.plugins.jython.JythonAggregationService -script-path = script.py \ No newline at end of file diff --git a/rtd_phosphonetx/source/core-plugins/dev-demo/1/dss/reporting-plugins/demo-proteomics-aggregation/script.py b/rtd_phosphonetx/source/core-plugins/dev-demo/1/dss/reporting-plugins/demo-proteomics-aggregation/script.py deleted file mode 100644 index d9b0b2609501a8423a478219c01302f841cd8ab3..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/core-plugins/dev-demo/1/dss/reporting-plugins/demo-proteomics-aggregation/script.py +++ /dev/null @@ -1,122 +0,0 @@ -from java.util import ArrayList -from ch.systemsx.cisd.openbis.generic.shared.api.v1.dto import SearchCriteria -from ch.systemsx.cisd.openbis.generic.shared.api.v1.dto import SearchSubCriteria -from ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.SearchCriteria import MatchClause -from ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.SearchCriteria import MatchClauseAttribute -from ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.SearchCriteria import SearchOperator - -BIO_EXPERIMENT = "Biological Experiment" -BIO_SAMPLE = "Biological Sample" -MS_SAMPLE = "MS Injection Sample" -SEARCH_EXPERIMENT = "Search Experiment" -SEARCH_EXPERIMENT_PERM_ID = "Search Experiment Perm ID" -ACCESION_NUMBER = "Accession Number" -DESCRIPTION = "Protein Description" - -def countFiles(node): - sum = 1 - if node.isDirectory(): - for child in node.getChildNodes(): - sum = sum + countFiles(child) - return sum - - -def gatherExperimentsAndSamples(space): - bioSample2ExperimentDict = {} - msInjectionSample2bioSamplesDict = {} - searchExperiment2msInjectionSamplesDict = {} - searchExperimentsByPermIdDict = {} - searchCriteria = SearchCriteria() - subCriteria = SearchCriteria() - subCriteria.addMatchClause(MatchClause.createAttributeMatch(MatchClauseAttribute.TYPE, "BIO*")) - searchCriteria.addSubCriteria(SearchSubCriteria.createExperimentCriteria(subCriteria)) - bioSamples = searchService.searchForSamples(searchCriteria) - searchCriteria = SearchCriteria() - searchCriteria.addMatchClause(MatchClause.createAttributeMatch(MatchClauseAttribute.TYPE, "MS_INJECTION")) - subCriteria = SearchCriteria() - subCriteria.operator = SearchOperator.MATCH_ANY_CLAUSES - for sample in bioSamples: - if space == sample.space: - bioSample2ExperimentDict[sample.sampleIdentifier] = sample.experiment.experimentIdentifier - subCriteria.addMatchClause(MatchClause.createAttributeMatch(MatchClauseAttribute.CODE, sample.code)) - - if len(bioSample2ExperimentDict) > 0: - searchCriteria.addSubCriteria(SearchSubCriteria.createSampleParentCriteria(subCriteria)) - msInjectionSamples = searchService.searchForSamples(searchCriteria) - if len(msInjectionSamples) > 0: - searchCriteria = SearchCriteria() - searchCriteria.addMatchClause(MatchClause.createAttributeMatch(MatchClauseAttribute.TYPE, "SEARCH")) - subCriteria = SearchCriteria() - subCriteria.operator = SearchOperator.MATCH_ANY_CLAUSES - for sample in msInjectionSamples: - msInjectionSample2bioSamplesDict[sample.sampleIdentifier] = sample.parentSampleIdentifiers - subCriteria.addMatchClause(MatchClause.createAttributeMatch(MatchClauseAttribute.CODE, sample.code)) - searchCriteria.addSubCriteria(SearchSubCriteria.createSampleParentCriteria(subCriteria)) - searchSamples = searchService.searchForSamples(searchCriteria) - for sample in searchSamples: - experiment = sample.experiment - searchExperimentsByPermIdDict[experiment.permId] = experiment - expId = experiment.experimentIdentifier - for msInjectionSample in sample.parentSampleIdentifiers: - if expId in searchExperiment2msInjectionSamplesDict: - searchExperiment2msInjectionSamplesDict[expId].append(msInjectionSample) - else: - searchExperiment2msInjectionSamplesDict[expId] = [msInjectionSample] - return bioSample2ExperimentDict, msInjectionSample2bioSamplesDict, \ - searchExperiment2msInjectionSamplesDict, searchExperimentsByPermIdDict - -def createPermIdList(searchExperimentsByPermIdDict): - permIds = "" - for exp in searchExperimentsByPermIdDict.values(): - if len(permIds) > 0: - permIds = permIds + ", " - permIds = permIds + "'" + exp.permId + "'" - return permIds - -def aggregate(parameters, tableBuilder): - space = parameters.get('space').upper() - bioSample2ExperimentDict, msInjectionSample2bioSamplesDict, \ - searchExperiment2msInjectionSamplesDict, searchExperimentsByPermIdDict \ - = gatherExperimentsAndSamples(space) - - tableBuilder.addHeader(BIO_EXPERIMENT) - tableBuilder.addHeader(BIO_SAMPLE) - tableBuilder.addHeader(MS_SAMPLE) - tableBuilder.addHeader(SEARCH_EXPERIMENT) - tableBuilder.addHeader(SEARCH_EXPERIMENT_PERM_ID) - tableBuilder.addHeader(ACCESION_NUMBER) - tableBuilder.addHeader(DESCRIPTION) - if len(searchExperimentsByPermIdDict) == 0: - return - protein = '%' + parameters.get('protein') + '%' - permIds = createPermIdList(searchExperimentsByPermIdDict) - result = queryService.select("proteomics-db", - """select e.perm_id, accession_number, description - from experiments as e join data_sets as d on d.expe_id = e.id - join proteins as p on p.dase_id = d.id - join identified_proteins as ip on ip.prot_id = p.id - join sequences as s on ip.sequ_id = s.id - join protein_references as pr on s.prre_id = pr.id - where e.perm_id in (""" - + permIds + - """) and (accession_number like ?{1} or description like ?{1}) - order by perm_id""", - [protein]) - for resultRow in result: - permId = resultRow.get('perm_id') - if (permId in searchExperimentsByPermIdDict): - experiment = searchExperimentsByPermIdDict[permId] - expId = experiment.experimentIdentifier - msInjectionSamples = searchExperiment2msInjectionSamplesDict[expId] - for msInjectionSample in msInjectionSamples: - bioSamples = msInjectionSample2bioSamplesDict[msInjectionSample] - for bioSample in bioSamples: - bioExperiment = bioSample2ExperimentDict[bioSample] - row = tableBuilder.addRow() - row.setCell(BIO_EXPERIMENT, bioExperiment) - row.setCell(BIO_SAMPLE, bioSample) - row.setCell(MS_SAMPLE, msInjectionSample) - row.setCell(SEARCH_EXPERIMENT, expId) - row.setCell(SEARCH_EXPERIMENT_PERM_ID, permId) - row.setCell(ACCESION_NUMBER, resultRow.get('accession_number')) - row.setCell(DESCRIPTION, resultRow.get('description')) diff --git a/rtd_phosphonetx/source/core-plugins/proteomics-optional/1/as/initialize-master-data.py b/rtd_phosphonetx/source/core-plugins/proteomics-optional/1/as/initialize-master-data.py deleted file mode 100644 index 0b4de321b86887fcc911f8be125081c0d77b3026..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/core-plugins/proteomics-optional/1/as/initialize-master-data.py +++ /dev/null @@ -1,81 +0,0 @@ -import ch.systemsx.cisd.openbis.generic.server.jython.api.v1.DataType as DataType - -tr = service.transaction() - -file_type_HTML = tr.getOrCreateNewFileFormatType('HTML') -file_type_HTML.setDescription('HTML File') - -file_type_MZDATA = tr.getOrCreateNewFileFormatType('MZDATA') -file_type_MZDATA.setDescription('Mass spectrometry data format.') - -file_type_MZML = tr.getOrCreateNewFileFormatType('MZML') -file_type_MZML.setDescription('Mass spectrometry data format. \ -Unifiying mzXML and mzData formats, as released at the \ -2008 American Society for Mass Spectrometry Meeting.') - -file_type_MZXML = tr.getOrCreateNewFileFormatType('MZXML') -file_type_MZXML.setDescription('Mass spectrometry data format.') - -file_type_RAW = tr.getOrCreateNewFileFormatType('RAW') -file_type_RAW.setDescription('Proprietary file format for Thermo mass sepectrometry data.') - -file_type_TGZ = tr.getOrCreateNewFileFormatType('TGZ') -file_type_TGZ.setDescription('gzipped tar') - -file_type_WIFF = tr.getOrCreateNewFileFormatType('WIFF') -file_type_WIFF.setDescription('Proprieatry file format for Sciex and Agilent mass spectrometry data.') - -file_type_ZIP = tr.getOrCreateNewFileFormatType('ZIP') -file_type_ZIP.setDescription('A zipped package') - -vocabulary_TREATMENT_TYPE = tr.getOrCreateNewVocabulary('TREATMENT_TYPE') - -vocabulary_term_TREATMENT_TYPE_PH = tr.createNewVocabularyTerm('PH') -vocabulary_term_TREATMENT_TYPE_PH.setDescription(None) -vocabulary_term_TREATMENT_TYPE_PH.setUrl(None) -vocabulary_term_TREATMENT_TYPE_PH.setLabel('ph') -vocabulary_term_TREATMENT_TYPE_PH.setOrdinal(1) -vocabulary_TREATMENT_TYPE.addTerm(vocabulary_term_TREATMENT_TYPE_PH) - -exp_type_BIOLOGICAL_EXPERIMENT = tr.getOrCreateNewExperimentType('BIOLOGICAL_EXPERIMENT') -exp_type_BIOLOGICAL_EXPERIMENT.setDescription('A biological experiment') - -exp_type_MS_INJECT = tr.getOrCreateNewExperimentType('MS_INJECT') -exp_type_MS_INJECT.setDescription('MS injection experiment') - -exp_type_MS_QUANTIFICATION = tr.getOrCreateNewExperimentType('MS_QUANTIFICATION') -exp_type_MS_QUANTIFICATION.setDescription('Quantification of LC-MS data') - -data_set_type_MZXML_DATA = tr.getOrCreateNewDataSetType('MZXML_DATA') -data_set_type_MZXML_DATA.setDescription('standardized format for ms data') - -data_set_type_RAW_DATA = tr.getOrCreateNewDataSetType('RAW_DATA') -data_set_type_RAW_DATA.setDescription(None) - -prop_type_PARENTDATASETCODES = tr.getOrCreateNewPropertyType('PARENT-DATA-SET-CODES', DataType.VARCHAR) -prop_type_PARENTDATASETCODES.setLabel('Parent Dataset Codes') -prop_type_PARENTDATASETCODES.setManagedInternally(False) -prop_type_PARENTDATASETCODES.setInternalNamespace(False) - -prop_type_TREATMENT_TYPE1 = tr.getOrCreateNewPropertyType('TREATMENT_TYPE1', DataType.CONTROLLEDVOCABULARY) -prop_type_TREATMENT_TYPE1.setLabel('Treatment Type 1') -prop_type_TREATMENT_TYPE1.setManagedInternally(False) -prop_type_TREATMENT_TYPE1.setInternalNamespace(False) - -prop_type_TREATMENT_TYPE1.setVocabulary(vocabulary_TREATMENT_TYPE) - -prop_type_TREATMENT_TYPE2 = tr.getOrCreateNewPropertyType('TREATMENT_TYPE2', DataType.CONTROLLEDVOCABULARY) -prop_type_TREATMENT_TYPE2.setLabel('Treatment Type 2') -prop_type_TREATMENT_TYPE2.setManagedInternally(False) -prop_type_TREATMENT_TYPE2.setInternalNamespace(False) - -prop_type_TREATMENT_TYPE2.setVocabulary(vocabulary_TREATMENT_TYPE) - -prop_type_TREATMENT_TYPE3 = tr.getOrCreateNewPropertyType('TREATMENT_TYPE3', DataType.CONTROLLEDVOCABULARY) -prop_type_TREATMENT_TYPE3.setLabel('Treatment Type 3') -prop_type_TREATMENT_TYPE3.setManagedInternally(False) -prop_type_TREATMENT_TYPE3.setInternalNamespace(False) - -prop_type_TREATMENT_TYPE3.setVocabulary(vocabulary_TREATMENT_TYPE) - - diff --git a/rtd_phosphonetx/source/core-plugins/proteomics-optional/package-to-dist b/rtd_phosphonetx/source/core-plugins/proteomics-optional/package-to-dist deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/rtd_phosphonetx/source/core-plugins/proteomics/1/as/dss-data-sources/DSS1/plugin.properties b/rtd_phosphonetx/source/core-plugins/proteomics/1/as/dss-data-sources/DSS1/plugin.properties deleted file mode 100644 index eb43003949a57dd40b0b2d0563be65f3eadc39b8..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/core-plugins/proteomics/1/as/dss-data-sources/DSS1/plugin.properties +++ /dev/null @@ -1,17 +0,0 @@ -# -# Data Store Server data source for the database storing protein identification and quantification results. -# -# Variables: -# proteomics-basic-database-name -# First part of the database name. Default value is 'proteomics'. -# proteomics-database-kind -# Second part of the database name. Default value is 'productive'. -# proteomics-database-owner -# Owner of the proteomics database. Default value is an empty string (i.e. the user starting up DSS). -# proteomics-database-password -# Password of the owner of the proteomics database. Default value is an empty string. -# -database-driver = org.postgresql.Driver -database-url = jdbc:postgresql://localhost/${proteomics-basic-database-name:proteomics}_${proteomics-database-kind:productive} -atabase-username = ${proteomics-database-owner:} -database-password = ${proteomics-database-password:} diff --git a/rtd_phosphonetx/source/core-plugins/proteomics/1/as/initialize-master-data.py b/rtd_phosphonetx/source/core-plugins/proteomics/1/as/initialize-master-data.py deleted file mode 100644 index 1825b0950e36e837c31bea25cfc0ea63b9527390..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/core-plugins/proteomics/1/as/initialize-master-data.py +++ /dev/null @@ -1,42 +0,0 @@ -import ch.systemsx.cisd.openbis.generic.server.jython.api.v1.DataType as DataType - -tr = service.transaction() - -vocabulary_TREATMENT_TYPE = tr.getOrCreateNewVocabulary('TREATMENT_TYPE') -vocabulary_TREATMENT_TYPE.setDescription('Type of treatment of a biological sample.') -vocabulary_TREATMENT_TYPE.setUrlTemplate(None) -vocabulary_TREATMENT_TYPE.setManagedInternally(False) -vocabulary_TREATMENT_TYPE.setInternalNamespace(False) -vocabulary_TREATMENT_TYPE.setChosenFromList(True) - -prop_type_NOT_PROCESSED = tr.getOrCreateNewPropertyType('NOT_PROCESSED', DataType.VARCHAR) -prop_type_NOT_PROCESSED.setLabel('Not Processed') -prop_type_NOT_PROCESSED.setDescription('Reason why prot.xml file has not been processed.') -prop_type_NOT_PROCESSED.setManagedInternally(False) -prop_type_NOT_PROCESSED.setInternalNamespace(False) - -exp_type_MS_SEARCH = tr.getOrCreateNewExperimentType('MS_SEARCH') -exp_type_MS_SEARCH.setDescription('MS_SEARCH experiment') - -assignment_MS_SEARCH_NOT_PROCESSED = tr.assignPropertyType(exp_type_MS_SEARCH, prop_type_NOT_PROCESSED) -assignment_MS_SEARCH_NOT_PROCESSED.setMandatory(False) -assignment_MS_SEARCH_NOT_PROCESSED.setSection(None) -assignment_MS_SEARCH_NOT_PROCESSED.setPositionInForms(1) - -samp_type_MS_INJECTION = tr.getOrCreateNewSampleType('MS_INJECTION') -samp_type_MS_INJECTION.setDescription('injection of a biological sample into a MS') -samp_type_MS_INJECTION.setListable(True) -samp_type_MS_INJECTION.setSubcodeUnique(False) -samp_type_MS_INJECTION.setAutoGeneratedCode(False) -samp_type_MS_INJECTION.setGeneratedCodePrefix('S') - -samp_type_SEARCH = tr.getOrCreateNewSampleType('SEARCH') -samp_type_SEARCH.setDescription('pointer to an MS_INJECTION sample used as placeholder for searches') -samp_type_SEARCH.setListable(True) -samp_type_SEARCH.setSubcodeUnique(False) -samp_type_SEARCH.setAutoGeneratedCode(False) -samp_type_SEARCH.setGeneratedCodePrefix('S') - -data_set_type_PROT_RESULT = tr.getOrCreateNewDataSetType('PROT_RESULT') -data_set_type_PROT_RESULT.setDescription('protXML file') - diff --git a/rtd_phosphonetx/source/core-plugins/proteomics/1/as/miscellaneous/proteomics-application/plugin.properties b/rtd_phosphonetx/source/core-plugins/proteomics/1/as/miscellaneous/proteomics-application/plugin.properties deleted file mode 100644 index 6d34ded45d3cb11097159fd4f351fb796f1364f6..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/core-plugins/proteomics/1/as/miscellaneous/proteomics-application/plugin.properties +++ /dev/null @@ -1 +0,0 @@ -proteomics-application-context-required = true diff --git a/rtd_phosphonetx/source/core-plugins/proteomics/1/dss/data-sources/proteomics-db/plugin.properties b/rtd_phosphonetx/source/core-plugins/proteomics/1/dss/data-sources/proteomics-db/plugin.properties deleted file mode 100644 index 664b20a45a8b5b162aa945d2404a33465c9c89fe..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/core-plugins/proteomics/1/dss/data-sources/proteomics-db/plugin.properties +++ /dev/null @@ -1,25 +0,0 @@ -# -# Data source for the database storing protein identification and quantification results. -# -# Variables: -# proteomics-database.url-host-part -# The host and optionally port. Default is 'localhost'. -# proteomics-basic-database-name -# First part of the database name. Default value is 'proteomics'. -# proteomics-database-kind -# Second part of the database name. Default value is 'productive'. -# proteomics-sql-root-folder -# Path to root folder of SQL scripts. Default value is an empty string. -# proteomics-database-owner -# Owner of the proteomics database. Default value is an empty string (i.e. the user starting up DSS). -# proteomics-database-password -# Password of the owner of the proteomics database. Default value is an empty string. -# -version-holder-class = ch.systemsx.cisd.openbis.etlserver.proteomics.DatabaseVersionHolder -databaseEngineCode = postgresql -urlHostPart = ${proteomics-database.url-host-part:localhost} -basicDatabaseName = ${proteomics-basic-database-name:proteomics} -databaseKind = ${proteomics-database-kind:productive} -scriptFolder = ${proteomics-sql-root-folder:}sql/proteomics -owner = ${proteomics-database-owner:} -password = ${proteomics-database-password:} \ No newline at end of file diff --git a/rtd_phosphonetx/source/core-plugins/proteomics/1/dss/drop-boxes/ms-injection/plugin.properties b/rtd_phosphonetx/source/core-plugins/proteomics/1/dss/drop-boxes/ms-injection/plugin.properties deleted file mode 100644 index bff82ed31c5b6ee6c3a746c130ffad6bf808265b..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/core-plugins/proteomics/1/dss/drop-boxes/ms-injection/plugin.properties +++ /dev/null @@ -1,18 +0,0 @@ -# -# Drop box for MS spectra data. -# -# Variables: -# incoming-root-dir -# Path to the directory which contains incoming directories for drop boxes. -incoming-dir = ${incoming-root-dir}/incoming-ms-injection - -# Determines when the incoming data should be considered complete and ready to be processed. -# Allowed values: -# - auto-detection - when no write access will be detected for a specified 'quite-period' -# - marker-file - when an appropriate marker file for the data exists. -# The default value is 'marker-file'. -incoming-data-completeness-condition = auto-detection - -data-set-info-extractor = ch.systemsx.cisd.openbis.etlserver.proteomics.DataSetInfoExtractorForMSInjection -storage-processor = ch.systemsx.cisd.etlserver.DefaultStorageProcessor -type-extractor = ch.systemsx.cisd.openbis.etlserver.proteomics.TypeExtractorForMSInjection diff --git a/rtd_phosphonetx/source/core-plugins/proteomics/1/dss/drop-boxes/ms-search/plugin.properties b/rtd_phosphonetx/source/core-plugins/proteomics/1/dss/drop-boxes/ms-search/plugin.properties deleted file mode 100644 index da2bca2bce85639ff3105fa00c235594232f4804..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/core-plugins/proteomics/1/dss/drop-boxes/ms-search/plugin.properties +++ /dev/null @@ -1,29 +0,0 @@ -# -# Drop box for protein identification and quantification data. -# -# Variables: -# incoming-root-dir -# Path to the directory which contains incoming directories for drop boxes. -# -# This drop box assumes that data source 'proteomics-db' has been defined. -# -incoming-dir = ${incoming-root-dir}/incoming-ms-search - -incoming-data-completeness-condition = auto-detection - -data-set-info-extractor = ch.systemsx.cisd.openbis.etlserver.proteomics.DataSetInfoExtractorForProteinResults -data-set-info-extractor.separator = + - -type-extractor = ch.systemsx.cisd.etlserver.SimpleTypeExtractor -type-extractor.file-format-type = XML -type-extractor.locator-type = RELATIVE_LOCATION -type-extractor.data-set-type = PROT_RESULT -type-extractor.is-measured = false - -storage-processor = ch.systemsx.cisd.openbis.etlserver.proteomics.StorageProcessorWithResultDataSetUploader -storage-processor.processor = ch.systemsx.cisd.etlserver.DefaultStorageProcessor -storage-processor.assuming-extended-prot-xml = false -storage-processor.database.basic-name = ${proteomics-db.basicDatabaseName} -storage-processor.database.kind = ${proteomics-db.databaseKind} -storage-processor.database.owner = ${proteomics-db.owner} -storage-processor.database.password = ${proteomics-db.password} diff --git a/rtd_phosphonetx/source/core-plugins/proteomics/1/dss/maintenance-tasks/proteomics-db-clean-up/plugin.properties b/rtd_phosphonetx/source/core-plugins/proteomics/1/dss/maintenance-tasks/proteomics-db-clean-up/plugin.properties deleted file mode 100644 index 36cd4bae6c223aacdaf381679d03a9e788a64a85..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/core-plugins/proteomics/1/dss/maintenance-tasks/proteomics-db-clean-up/plugin.properties +++ /dev/null @@ -1,8 +0,0 @@ -# -# Maintenance task which does a database clean up by deleting all data sets deleted in application server. -# This task assumes that data source 'proteomics-db' has been defined. -# -class = ch.systemsx.cisd.etlserver.plugins.DeleteFromExternalDBMaintenanceTask -interval = 300 -data-source = proteomics-db -data-set-table-name = data_sets diff --git a/rtd_phosphonetx/source/core-plugins/proteomics/package-to-dist b/rtd_phosphonetx/source/core-plugins/proteomics/package-to-dist deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/rtd_phosphonetx/source/html/demoapp/body-style.css b/rtd_phosphonetx/source/html/demoapp/body-style.css deleted file mode 100644 index 7a5324bef86a861b7415bbc2a35318c0c1c99fa1..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/html/demoapp/body-style.css +++ /dev/null @@ -1,14 +0,0 @@ -body { font: 12px "Verdana", sans-serif; } - -h1 { font: 16px; } -h3 { font: 12px; } - -div#vis { padding-top: 10px;} -div#vis div { padding-top: 2px;} - -.headers { background-color: #eee; } - -div#vis tr:nth-child(even) { background-color: #EEE; } -div#vis tr:nth-child(odd) { background-color: white; } - -#main form { padding-top: 10px;} diff --git a/rtd_phosphonetx/source/html/demoapp/button.css b/rtd_phosphonetx/source/html/demoapp/button.css deleted file mode 100644 index b0c9944b1891ae36866b9a1a8918d45825a82fc0..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/html/demoapp/button.css +++ /dev/null @@ -1,52 +0,0 @@ -button { - font: 14px "Trebuchet MS"; - background-color: #222; - background-image: -moz-linear-gradient(top, rgba(255,255,255,.25), rgba(255,255,255,.11)); - background-image: -webkit-gradient(linear,left top,left bottom,color-stop(0, rgba(255,255,255,.25)),color-stop(1, rgba(255,255,255,.11))); - background-image: -webkit-linear-gradient(rgba(255,255,255,.25), rgba(255,255,255,.11)); - color: #fff; - text-rendering: optimizeLegibility; - text-shadow: 0 -1px 1px #222; - padding: 3px 5px 3px 5px; - border: 0; - border-radius: 0; - border-bottom: 1px solid #222; - margin: 0; - -moz-box-shadow: 0 1px 3px #999; - -webkit-box-shadow: 0 1px 3px #999; - box-shadow: 0 1px 3px #999; -} - -button.first { - border-top-left-radius: 5px; - border-bottom-left-radius: 5px; -} - -button.last { - border-top-right-radius: 5px; - border-bottom-right-radius: 5px; -} - -button.active { - background-color: rgb(65,102,133); -} - -button:hover { - background-color: steelblue; -} - -input { - font: 14px "Trebuchet MS"; - background-image: -moz-linear-gradient(top, rgba(255,255,255,.25), rgba(255,255,255,.11)); - background-image: -webkit-gradient(linear,left top,left bottom,color-stop(0, rgba(255,255,255,.25)),color-stop(1, rgba(255,255,255,.11))); - background-image: -webkit-linear-gradient(rgba(255,255,255,.5), rgba(255,255,255,.1)); - color: #000; - text-rendering: optimizeLegibility; - padding: 3px 5px 3px 5px; - border: 0; - border-radius: 0; - margin: 0; - -moz-box-shadow: 0 1px 3px #999; - -webkit-box-shadow: 0 1px 3px #999; - box-shadow: 0 1px 3px #999; -} \ No newline at end of file diff --git a/rtd_phosphonetx/source/html/demoapp/d3.js b/rtd_phosphonetx/source/html/demoapp/d3.js deleted file mode 100755 index 13abb6dbc6f9665c005209b8e09d0dc97266d1f7..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/html/demoapp/d3.js +++ /dev/null @@ -1,4013 +0,0 @@ -(function(){if (!Date.now) Date.now = function() { - return +new Date; -}; -try { - document.createElement("div").style.setProperty("opacity", 0, ""); -} catch (error) { - var d3_style_prototype = CSSStyleDeclaration.prototype, - d3_style_setProperty = d3_style_prototype.setProperty; - d3_style_prototype.setProperty = function(name, value, priority) { - d3_style_setProperty.call(this, name, value + "", priority); - }; -} -d3 = {version: "2.1.3"}; // semver -var d3_arraySubclass = [].__proto__? - -// Until ECMAScript supports array subclassing, prototype injection works well. -function(array, prototype) { - array.__proto__ = prototype; -}: - -// And if your browser doesn't support __proto__, we'll use direct extension. -function(array, prototype) { - for (var property in prototype) array[property] = prototype[property]; -}; -function d3_this() { - return this; -} -d3.functor = function(v) { - return typeof v === "function" ? v : function() { return v; }; -}; -// A getter-setter method that preserves the appropriate `this` context. -d3.rebind = function(object, method) { - return function() { - var x = method.apply(object, arguments); - return arguments.length ? object : x; - }; -}; -d3.ascending = function(a, b) { - return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN; -}; -d3.descending = function(a, b) { - return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN; -}; -d3.min = function(array, f) { - var i = -1, - n = array.length, - a, - b; - if (arguments.length === 1) { - while (++i < n && ((a = array[i]) == null || a != a)) a = undefined; - while (++i < n) if ((b = array[i]) != null && a > b) a = b; - } else { - while (++i < n && ((a = f.call(array, array[i], i)) == null || a != a)) a = undefined; - while (++i < n) if ((b = f.call(array, array[i], i)) != null && a > b) a = b; - } - return a; -}; -d3.max = function(array, f) { - var i = -1, - n = array.length, - a, - b; - if (arguments.length === 1) { - while (++i < n && ((a = array[i]) == null || a != a)) a = undefined; - while (++i < n) if ((b = array[i]) != null && b > a) a = b; - } else { - while (++i < n && ((a = f.call(array, array[i], i)) == null || a != a)) a = undefined; - while (++i < n) if ((b = f.call(array, array[i], i)) != null && b > a) a = b; - } - return a; -}; -d3.sum = function(array, f) { - var s = 0, - n = array.length, - a, - i = -1; - - if (arguments.length === 1) { - while (++i < n) if (!isNaN(a = +array[i])) s += a; - } else { - while (++i < n) if (!isNaN(a = +f.call(array, array[i], i))) s += a; - } - - return s; -}; -// R-7 per <http://en.wikipedia.org/wiki/Quantile> -d3.quantile = function(values, p) { - var H = (values.length - 1) * p + 1, - h = Math.floor(H), - v = values[h - 1], - e = H - h; - return e ? v + e * (values[h] - v) : v; -}; -d3.zip = function() { - if (!(n = arguments.length)) return []; - for (var i = -1, m = d3.min(arguments, d3_zipLength), zips = new Array(m); ++i < m;) { - for (var j = -1, n, zip = zips[i] = new Array(n); ++j < n;) { - zip[j] = arguments[j][i]; - } - } - return zips; -}; - -function d3_zipLength(d) { - return d.length; -} -// Locate the insertion point for x in a to maintain sorted order. The -// arguments lo and hi may be used to specify a subset of the array which should -// be considered; by default the entire array is used. If x is already present -// in a, the insertion point will be before (to the left of) any existing -// entries. The return value is suitable for use as the first argument to -// `array.splice` assuming that a is already sorted. -// -// The returned insertion point i partitions the array a into two halves so that -// all v < x for v in a[lo:i] for the left side and all v >= x for v in a[i:hi] -// for the right side. -d3.bisectLeft = function(a, x, lo, hi) { - if (arguments.length < 3) lo = 0; - if (arguments.length < 4) hi = a.length; - while (lo < hi) { - var mid = (lo + hi) >> 1; - if (a[mid] < x) lo = mid + 1; - else hi = mid; - } - return lo; -}; - -// Similar to bisectLeft, but returns an insertion point which comes after (to -// the right of) any existing entries of x in a. -// -// The returned insertion point i partitions the array into two halves so that -// all v <= x for v in a[lo:i] for the left side and all v > x for v in a[i:hi] -// for the right side. -d3.bisect = -d3.bisectRight = function(a, x, lo, hi) { - if (arguments.length < 3) lo = 0; - if (arguments.length < 4) hi = a.length; - while (lo < hi) { - var mid = (lo + hi) >> 1; - if (x < a[mid]) hi = mid; - else lo = mid + 1; - } - return lo; -}; -d3.first = function(array, f) { - var i = 0, - n = array.length, - a = array[0], - b; - if (arguments.length === 1) f = d3.ascending; - while (++i < n) { - if (f.call(array, a, b = array[i]) > 0) { - a = b; - } - } - return a; -}; -d3.last = function(array, f) { - var i = 0, - n = array.length, - a = array[0], - b; - if (arguments.length === 1) f = d3.ascending; - while (++i < n) { - if (f.call(array, a, b = array[i]) <= 0) { - a = b; - } - } - return a; -}; -d3.nest = function() { - var nest = {}, - keys = [], - sortKeys = [], - sortValues, - rollup; - - function map(array, depth) { - if (depth >= keys.length) return rollup - ? rollup.call(nest, array) : (sortValues - ? array.sort(sortValues) - : array); - - var i = -1, - n = array.length, - key = keys[depth++], - keyValue, - object, - o = {}; - - while (++i < n) { - if ((keyValue = key(object = array[i])) in o) { - o[keyValue].push(object); - } else { - o[keyValue] = [object]; - } - } - - for (keyValue in o) { - o[keyValue] = map(o[keyValue], depth); - } - - return o; - } - - function entries(map, depth) { - if (depth >= keys.length) return map; - - var a = [], - sortKey = sortKeys[depth++], - key; - - for (key in map) { - a.push({key: key, values: entries(map[key], depth)}); - } - - if (sortKey) a.sort(function(a, b) { - return sortKey(a.key, b.key); - }); - - return a; - } - - nest.map = function(array) { - return map(array, 0); - }; - - nest.entries = function(array) { - return entries(map(array, 0), 0); - }; - - nest.key = function(d) { - keys.push(d); - return nest; - }; - - // Specifies the order for the most-recently specified key. - // Note: only applies to entries. Map keys are unordered! - nest.sortKeys = function(order) { - sortKeys[keys.length - 1] = order; - return nest; - }; - - // Specifies the order for leaf values. - // Applies to both maps and entries array. - nest.sortValues = function(order) { - sortValues = order; - return nest; - }; - - nest.rollup = function(f) { - rollup = f; - return nest; - }; - - return nest; -}; -d3.keys = function(map) { - var keys = []; - for (var key in map) keys.push(key); - return keys; -}; -d3.values = function(map) { - var values = []; - for (var key in map) values.push(map[key]); - return values; -}; -d3.entries = function(map) { - var entries = []; - for (var key in map) entries.push({key: key, value: map[key]}); - return entries; -}; -d3.permute = function(array, indexes) { - var permutes = [], - i = -1, - n = indexes.length; - while (++i < n) permutes[i] = array[indexes[i]]; - return permutes; -}; -d3.merge = function(arrays) { - return Array.prototype.concat.apply([], arrays); -}; -d3.split = function(array, f) { - var arrays = [], - values = [], - value, - i = -1, - n = array.length; - if (arguments.length < 2) f = d3_splitter; - while (++i < n) { - if (f.call(values, value = array[i], i)) { - values = []; - } else { - if (!values.length) arrays.push(values); - values.push(value); - } - } - return arrays; -}; - -function d3_splitter(d) { - return d == null; -} -function d3_collapse(s) { - return s.replace(/(^\s+)|(\s+$)/g, "").replace(/\s+/g, " "); -} -/** - * @param {number} start - * @param {number=} stop - * @param {number=} step - */ -d3.range = function(start, stop, step) { - if (arguments.length < 3) { - step = 1; - if (arguments.length < 2) { - stop = start; - start = 0; - } - } - if ((stop - start) / step == Infinity) throw new Error("infinite range"); - var range = [], - i = -1, - j; - if (step < 0) while ((j = start + step * ++i) > stop) range.push(j); - else while ((j = start + step * ++i) < stop) range.push(j); - return range; -}; -d3.requote = function(s) { - return s.replace(d3_requote_re, "\\$&"); -}; - -var d3_requote_re = /[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g; -d3.round = function(x, n) { - return n - ? Math.round(x * Math.pow(10, n)) * Math.pow(10, -n) - : Math.round(x); -}; -d3.xhr = function(url, mime, callback) { - var req = new XMLHttpRequest; - if (arguments.length < 3) callback = mime; - else if (mime && req.overrideMimeType) req.overrideMimeType(mime); - req.open("GET", url, true); - req.onreadystatechange = function() { - if (req.readyState === 4) callback(req.status < 300 ? req : null); - }; - req.send(null); -}; -d3.text = function(url, mime, callback) { - function ready(req) { - callback(req && req.responseText); - } - if (arguments.length < 3) { - callback = mime; - mime = null; - } - d3.xhr(url, mime, ready); -}; -d3.json = function(url, callback) { - d3.text(url, "application/json", function(text) { - callback(text ? JSON.parse(text) : null); - }); -}; -d3.html = function(url, callback) { - d3.text(url, "text/html", function(text) { - if (text != null) { // Treat empty string as valid HTML. - var range = document.createRange(); - range.selectNode(document.body); - text = range.createContextualFragment(text); - } - callback(text); - }); -}; -d3.xml = function(url, mime, callback) { - function ready(req) { - callback(req && req.responseXML); - } - if (arguments.length < 3) { - callback = mime; - mime = null; - } - d3.xhr(url, mime, ready); -}; -d3.ns = { - - prefix: { - svg: "http://www.w3.org/2000/svg", - xhtml: "http://www.w3.org/1999/xhtml", - xlink: "http://www.w3.org/1999/xlink", - xml: "http://www.w3.org/XML/1998/namespace", - xmlns: "http://www.w3.org/2000/xmlns/" - }, - - qualify: function(name) { - var i = name.indexOf(":"); - return i < 0 ? name : { - space: d3.ns.prefix[name.substring(0, i)], - local: name.substring(i + 1) - }; - } - -}; -/** @param {...string} types */ -d3.dispatch = function(types) { - var dispatch = {}, - type; - for (var i = 0, n = arguments.length; i < n; i++) { - type = arguments[i]; - dispatch[type] = d3_dispatch(type); - } - return dispatch; -}; - -function d3_dispatch(type) { - var dispatch = {}, - listeners = []; - - dispatch.add = function(listener) { - for (var i = 0; i < listeners.length; i++) { - if (listeners[i].listener == listener) return dispatch; // already registered - } - listeners.push({listener: listener, on: true}); - return dispatch; - }; - - dispatch.remove = function(listener) { - for (var i = 0; i < listeners.length; i++) { - var l = listeners[i]; - if (l.listener == listener) { - l.on = false; - listeners = listeners.slice(0, i).concat(listeners.slice(i + 1)); - break; - } - } - return dispatch; - }; - - dispatch.dispatch = function() { - var ls = listeners; // defensive reference - for (var i = 0, n = ls.length; i < n; i++) { - var l = ls[i]; - if (l.on) l.listener.apply(this, arguments); - } - }; - - return dispatch; -}; -// TODO align -d3.format = function(specifier) { - var match = d3_format_re.exec(specifier), - fill = match[1] || " ", - sign = match[3] || "", - zfill = match[5], - width = +match[6], - comma = match[7], - precision = match[8], - type = match[9], - percentage = false, - integer = false; - - if (precision) precision = precision.substring(1); - - if (zfill) { - fill = "0"; // TODO align = "="; - if (comma) width -= Math.floor((width - 1) / 4); - } - - switch (type) { - case "n": comma = true; type = "g"; break; - case "%": percentage = true; type = "f"; break; - case "p": percentage = true; type = "r"; break; - case "d": integer = true; precision = "0"; break; - } - - type = d3_format_types[type] || d3_format_typeDefault; - - return function(value) { - var number = percentage ? value * 100 : +value, - negative = (number < 0) && (number = -number) ? "\u2212" : sign; - - // Return the empty string for floats formatted as ints. - if (integer && (number % 1)) return ""; - - // Convert the input value to the desired precision. - value = type(number, precision); - - // If the fill character is 0, the sign and group is applied after the fill. - if (zfill) { - var length = value.length + negative.length; - if (length < width) value = new Array(width - length + 1).join(fill) + value; - if (comma) value = d3_format_group(value); - value = negative + value; - } - - // Otherwise (e.g., space-filling), the sign and group is applied before. - else { - if (comma) value = d3_format_group(value); - value = negative + value; - var length = value.length; - if (length < width) value = new Array(width - length + 1).join(fill) + value; - } - if (percentage) value += "%"; - - return value; - }; -}; - -// [[fill]align][sign][#][0][width][,][.precision][type] -var d3_format_re = /(?:([^{])?([<>=^]))?([+\- ])?(#)?(0)?([0-9]+)?(,)?(\.[0-9]+)?([a-zA-Z%])?/; - -var d3_format_types = { - g: function(x, p) { return x.toPrecision(p); }, - e: function(x, p) { return x.toExponential(p); }, - f: function(x, p) { return x.toFixed(p); }, - r: function(x, p) { - var n = 1 + Math.floor(1e-15 + Math.log(x) / Math.LN10); - return d3.round(x, p - n).toFixed(Math.max(0, Math.min(20, p - n))); - } -}; - -function d3_format_typeDefault(x) { - return x + ""; -} - -// Apply comma grouping for thousands. -function d3_format_group(value) { - var i = value.lastIndexOf("."), - f = i >= 0 ? value.substring(i) : (i = value.length, ""), - t = []; - while (i > 0) t.push(value.substring(i -= 3, i + 3)); - return t.reverse().join(",") + f; -} -/* - * TERMS OF USE - EASING EQUATIONS - * - * Open source under the BSD License. - * - * Copyright 2001 Robert Penner - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * - Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * - Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * - Neither the name of the author nor the names of contributors may be used to - * endorse or promote products derived from this software without specific - * prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ - -var d3_ease_quad = d3_ease_poly(2), - d3_ease_cubic = d3_ease_poly(3); - -var d3_ease = { - linear: function() { return d3_ease_linear; }, - poly: d3_ease_poly, - quad: function() { return d3_ease_quad; }, - cubic: function() { return d3_ease_cubic; }, - sin: function() { return d3_ease_sin; }, - exp: function() { return d3_ease_exp; }, - circle: function() { return d3_ease_circle; }, - elastic: d3_ease_elastic, - back: d3_ease_back, - bounce: function() { return d3_ease_bounce; } -}; - -var d3_ease_mode = { - "in": function(f) { return f; }, - "out": d3_ease_reverse, - "in-out": d3_ease_reflect, - "out-in": function(f) { return d3_ease_reflect(d3_ease_reverse(f)); } -}; - -d3.ease = function(name) { - var i = name.indexOf("-"), - t = i >= 0 ? name.substring(0, i) : name, - m = i >= 0 ? name.substring(i + 1) : "in"; - return d3_ease_clamp(d3_ease_mode[m](d3_ease[t].apply(null, Array.prototype.slice.call(arguments, 1)))); -}; - -function d3_ease_clamp(f) { - return function(t) { - return t <= 0 ? 0 : t >= 1 ? 1 : f(t); - }; -} - -function d3_ease_reverse(f) { - return function(t) { - return 1 - f(1 - t); - }; -} - -function d3_ease_reflect(f) { - return function(t) { - return .5 * (t < .5 ? f(2 * t) : (2 - f(2 - 2 * t))); - }; -} - -function d3_ease_linear(t) { - return t; -} - -function d3_ease_poly(e) { - return function(t) { - return Math.pow(t, e); - } -} - -function d3_ease_sin(t) { - return 1 - Math.cos(t * Math.PI / 2); -} - -function d3_ease_exp(t) { - return Math.pow(2, 10 * (t - 1)); -} - -function d3_ease_circle(t) { - return 1 - Math.sqrt(1 - t * t); -} - -function d3_ease_elastic(a, p) { - var s; - if (arguments.length < 2) p = 0.45; - if (arguments.length < 1) { a = 1; s = p / 4; } - else s = p / (2 * Math.PI) * Math.asin(1 / a); - return function(t) { - return 1 + a * Math.pow(2, 10 * -t) * Math.sin((t - s) * 2 * Math.PI / p); - }; -} - -function d3_ease_back(s) { - if (!s) s = 1.70158; - return function(t) { - return t * t * ((s + 1) * t - s); - }; -} - -function d3_ease_bounce(t) { - return t < 1 / 2.75 ? 7.5625 * t * t - : t < 2 / 2.75 ? 7.5625 * (t -= 1.5 / 2.75) * t + .75 - : t < 2.5 / 2.75 ? 7.5625 * (t -= 2.25 / 2.75) * t + .9375 - : 7.5625 * (t -= 2.625 / 2.75) * t + .984375; -} -d3.event = null; -d3.interpolate = function(a, b) { - var i = d3.interpolators.length, f; - while (--i >= 0 && !(f = d3.interpolators[i](a, b))); - return f; -}; - -d3.interpolateNumber = function(a, b) { - b -= a; - return function(t) { return a + b * t; }; -}; - -d3.interpolateRound = function(a, b) { - b -= a; - return function(t) { return Math.round(a + b * t); }; -}; - -d3.interpolateString = function(a, b) { - var m, // current match - i, // current index - j, // current index (for coallescing) - s0 = 0, // start index of current string prefix - s1 = 0, // end index of current string prefix - s = [], // string constants and placeholders - q = [], // number interpolators - n, // q.length - o; - - // Reset our regular expression! - d3_interpolate_number.lastIndex = 0; - - // Find all numbers in b. - for (i = 0; m = d3_interpolate_number.exec(b); ++i) { - if (m.index) s.push(b.substring(s0, s1 = m.index)); - q.push({i: s.length, x: m[0]}); - s.push(null); - s0 = d3_interpolate_number.lastIndex; - } - if (s0 < b.length) s.push(b.substring(s0)); - - // Find all numbers in a. - for (i = 0, n = q.length; (m = d3_interpolate_number.exec(a)) && i < n; ++i) { - o = q[i]; - if (o.x == m[0]) { // The numbers match, so coallesce. - if (o.i) { - if (s[o.i + 1] == null) { // This match is followed by another number. - s[o.i - 1] += o.x; - s.splice(o.i, 1); - for (j = i + 1; j < n; ++j) q[j].i--; - } else { // This match is followed by a string, so coallesce twice. - s[o.i - 1] += o.x + s[o.i + 1]; - s.splice(o.i, 2); - for (j = i + 1; j < n; ++j) q[j].i -= 2; - } - } else { - if (s[o.i + 1] == null) { // This match is followed by another number. - s[o.i] = o.x; - } else { // This match is followed by a string, so coallesce twice. - s[o.i] = o.x + s[o.i + 1]; - s.splice(o.i + 1, 1); - for (j = i + 1; j < n; ++j) q[j].i--; - } - } - q.splice(i, 1); - n--; - i--; - } else { - o.x = d3.interpolateNumber(parseFloat(m[0]), parseFloat(o.x)); - } - } - - // Remove any numbers in b not found in a. - while (i < n) { - o = q.pop(); - if (s[o.i + 1] == null) { // This match is followed by another number. - s[o.i] = o.x; - } else { // This match is followed by a string, so coallesce twice. - s[o.i] = o.x + s[o.i + 1]; - s.splice(o.i + 1, 1); - } - n--; - } - - // Special optimization for only a single match. - if (s.length === 1) { - return s[0] == null ? q[0].x : function() { return b; }; - } - - // Otherwise, interpolate each of the numbers and rejoin the string. - return function(t) { - for (i = 0; i < n; ++i) s[(o = q[i]).i] = o.x(t); - return s.join(""); - }; -}; - -d3.interpolateRgb = function(a, b) { - a = d3.rgb(a); - b = d3.rgb(b); - var ar = a.r, - ag = a.g, - ab = a.b, - br = b.r - ar, - bg = b.g - ag, - bb = b.b - ab; - return function(t) { - return "rgb(" + Math.round(ar + br * t) - + "," + Math.round(ag + bg * t) - + "," + Math.round(ab + bb * t) - + ")"; - }; -}; - -// interpolates HSL space, but outputs RGB string (for compatibility) -d3.interpolateHsl = function(a, b) { - a = d3.hsl(a); - b = d3.hsl(b); - var h0 = a.h, - s0 = a.s, - l0 = a.l, - h1 = b.h - h0, - s1 = b.s - s0, - l1 = b.l - l0; - return function(t) { - return d3_hsl_rgb(h0 + h1 * t, s0 + s1 * t, l0 + l1 * t).toString(); - }; -}; - -d3.interpolateArray = function(a, b) { - var x = [], - c = [], - na = a.length, - nb = b.length, - n0 = Math.min(a.length, b.length), - i; - for (i = 0; i < n0; ++i) x.push(d3.interpolate(a[i], b[i])); - for (; i < na; ++i) c[i] = a[i]; - for (; i < nb; ++i) c[i] = b[i]; - return function(t) { - for (i = 0; i < n0; ++i) c[i] = x[i](t); - return c; - }; -}; - -d3.interpolateObject = function(a, b) { - var i = {}, - c = {}, - k; - for (k in a) { - if (k in b) { - i[k] = d3_interpolateByName(k)(a[k], b[k]); - } else { - c[k] = a[k]; - } - } - for (k in b) { - if (!(k in a)) { - c[k] = b[k]; - } - } - return function(t) { - for (k in i) c[k] = i[k](t); - return c; - }; -} - -var d3_interpolate_number = /[-+]?(?:\d+\.\d+|\d+\.|\.\d+|\d+)(?:[eE][-]?\d+)?/g, - d3_interpolate_rgb = {background: 1, fill: 1, stroke: 1}; - -function d3_interpolateByName(n) { - return n in d3_interpolate_rgb || /\bcolor\b/.test(n) - ? d3.interpolateRgb - : d3.interpolate; -} - -d3.interpolators = [ - d3.interpolateObject, - function(a, b) { return (b instanceof Array) && d3.interpolateArray(a, b); }, - function(a, b) { return (typeof b === "string") && d3.interpolateString(String(a), b); }, - function(a, b) { return (typeof b === "string" ? b in d3_rgb_names || /^(#|rgb\(|hsl\()/.test(b) : b instanceof d3_Rgb || b instanceof d3_Hsl) && d3.interpolateRgb(String(a), b); }, - function(a, b) { return (typeof b === "number") && d3.interpolateNumber(+a, b); } -]; -function d3_uninterpolateNumber(a, b) { - b = b - (a = +a) ? 1 / (b - a) : 0; - return function(x) { return (x - a) * b; }; -} - -function d3_uninterpolateClamp(a, b) { - b = b - (a = +a) ? 1 / (b - a) : 0; - return function(x) { return Math.max(0, Math.min(1, (x - a) * b)); }; -} -d3.rgb = function(r, g, b) { - return arguments.length === 1 - ? d3_rgb_parse("" + r, d3_rgb, d3_hsl_rgb) - : d3_rgb(~~r, ~~g, ~~b); -}; - -function d3_rgb(r, g, b) { - return new d3_Rgb(r, g, b); -} - -function d3_Rgb(r, g, b) { - this.r = r; - this.g = g; - this.b = b; -} - -d3_Rgb.prototype.brighter = function(k) { - k = Math.pow(0.7, arguments.length ? k : 1); - var r = this.r, - g = this.g, - b = this.b, - i = 30; - if (!r && !g && !b) return d3_rgb(i, i, i); - if (r && r < i) r = i; - if (g && g < i) g = i; - if (b && b < i) b = i; - return d3_rgb( - Math.min(255, Math.floor(r / k)), - Math.min(255, Math.floor(g / k)), - Math.min(255, Math.floor(b / k))); -}; - -d3_Rgb.prototype.darker = function(k) { - k = Math.pow(0.7, arguments.length ? k : 1); - return d3_rgb( - Math.max(0, Math.floor(k * this.r)), - Math.max(0, Math.floor(k * this.g)), - Math.max(0, Math.floor(k * this.b))); -}; - -d3_Rgb.prototype.hsl = function() { - return d3_rgb_hsl(this.r, this.g, this.b); -}; - -d3_Rgb.prototype.toString = function() { - return "#" + d3_rgb_hex(this.r) + d3_rgb_hex(this.g) + d3_rgb_hex(this.b); -}; - -function d3_rgb_hex(v) { - return v < 0x10 ? "0" + v.toString(16) : v.toString(16); -} - -function d3_rgb_parse(format, rgb, hsl) { - var r = 0, // red channel; int in [0, 255] - g = 0, // green channel; int in [0, 255] - b = 0, // blue channel; int in [0, 255] - m1, // CSS color specification match - m2, // CSS color specification type (e.g., rgb) - name; - - /* Handle hsl, rgb. */ - m1 = /([a-z]+)\((.*)\)/i.exec(format); - if (m1) { - m2 = m1[2].split(","); - switch (m1[1]) { - case "hsl": { - return hsl( - parseFloat(m2[0]), // degrees - parseFloat(m2[1]) / 100, // percentage - parseFloat(m2[2]) / 100 // percentage - ); - } - case "rgb": { - return rgb( - d3_rgb_parseNumber(m2[0]), - d3_rgb_parseNumber(m2[1]), - d3_rgb_parseNumber(m2[2]) - ); - } - } - } - - /* Named colors. */ - if (name = d3_rgb_names[format]) return rgb(name.r, name.g, name.b); - - /* Hexadecimal colors: #rgb and #rrggbb. */ - if (format != null && format.charAt(0) === "#") { - if (format.length === 4) { - r = format.charAt(1); r += r; - g = format.charAt(2); g += g; - b = format.charAt(3); b += b; - } else if (format.length === 7) { - r = format.substring(1, 3); - g = format.substring(3, 5); - b = format.substring(5, 7); - } - r = parseInt(r, 16); - g = parseInt(g, 16); - b = parseInt(b, 16); - } - - return rgb(r, g, b); -} - -function d3_rgb_hsl(r, g, b) { - var min = Math.min(r /= 255, g /= 255, b /= 255), - max = Math.max(r, g, b), - d = max - min, - h, - s, - l = (max + min) / 2; - if (d) { - s = l < .5 ? d / (max + min) : d / (2 - max - min); - if (r == max) h = (g - b) / d + (g < b ? 6 : 0); - else if (g == max) h = (b - r) / d + 2; - else h = (r - g) / d + 4; - h *= 60; - } else { - s = h = 0; - } - return d3_hsl(h, s, l); -} - -function d3_rgb_parseNumber(c) { // either integer or percentage - var f = parseFloat(c); - return c.charAt(c.length - 1) === "%" ? Math.round(f * 2.55) : f; -} - -var d3_rgb_names = { - aliceblue: "#f0f8ff", - antiquewhite: "#faebd7", - aqua: "#00ffff", - aquamarine: "#7fffd4", - azure: "#f0ffff", - beige: "#f5f5dc", - bisque: "#ffe4c4", - black: "#000000", - blanchedalmond: "#ffebcd", - blue: "#0000ff", - blueviolet: "#8a2be2", - brown: "#a52a2a", - burlywood: "#deb887", - cadetblue: "#5f9ea0", - chartreuse: "#7fff00", - chocolate: "#d2691e", - coral: "#ff7f50", - cornflowerblue: "#6495ed", - cornsilk: "#fff8dc", - crimson: "#dc143c", - cyan: "#00ffff", - darkblue: "#00008b", - darkcyan: "#008b8b", - darkgoldenrod: "#b8860b", - darkgray: "#a9a9a9", - darkgreen: "#006400", - darkgrey: "#a9a9a9", - darkkhaki: "#bdb76b", - darkmagenta: "#8b008b", - darkolivegreen: "#556b2f", - darkorange: "#ff8c00", - darkorchid: "#9932cc", - darkred: "#8b0000", - darksalmon: "#e9967a", - darkseagreen: "#8fbc8f", - darkslateblue: "#483d8b", - darkslategray: "#2f4f4f", - darkslategrey: "#2f4f4f", - darkturquoise: "#00ced1", - darkviolet: "#9400d3", - deeppink: "#ff1493", - deepskyblue: "#00bfff", - dimgray: "#696969", - dimgrey: "#696969", - dodgerblue: "#1e90ff", - firebrick: "#b22222", - floralwhite: "#fffaf0", - forestgreen: "#228b22", - fuchsia: "#ff00ff", - gainsboro: "#dcdcdc", - ghostwhite: "#f8f8ff", - gold: "#ffd700", - goldenrod: "#daa520", - gray: "#808080", - green: "#008000", - greenyellow: "#adff2f", - grey: "#808080", - honeydew: "#f0fff0", - hotpink: "#ff69b4", - indianred: "#cd5c5c", - indigo: "#4b0082", - ivory: "#fffff0", - khaki: "#f0e68c", - lavender: "#e6e6fa", - lavenderblush: "#fff0f5", - lawngreen: "#7cfc00", - lemonchiffon: "#fffacd", - lightblue: "#add8e6", - lightcoral: "#f08080", - lightcyan: "#e0ffff", - lightgoldenrodyellow: "#fafad2", - lightgray: "#d3d3d3", - lightgreen: "#90ee90", - lightgrey: "#d3d3d3", - lightpink: "#ffb6c1", - lightsalmon: "#ffa07a", - lightseagreen: "#20b2aa", - lightskyblue: "#87cefa", - lightslategray: "#778899", - lightslategrey: "#778899", - lightsteelblue: "#b0c4de", - lightyellow: "#ffffe0", - lime: "#00ff00", - limegreen: "#32cd32", - linen: "#faf0e6", - magenta: "#ff00ff", - maroon: "#800000", - mediumaquamarine: "#66cdaa", - mediumblue: "#0000cd", - mediumorchid: "#ba55d3", - mediumpurple: "#9370db", - mediumseagreen: "#3cb371", - mediumslateblue: "#7b68ee", - mediumspringgreen: "#00fa9a", - mediumturquoise: "#48d1cc", - mediumvioletred: "#c71585", - midnightblue: "#191970", - mintcream: "#f5fffa", - mistyrose: "#ffe4e1", - moccasin: "#ffe4b5", - navajowhite: "#ffdead", - navy: "#000080", - oldlace: "#fdf5e6", - olive: "#808000", - olivedrab: "#6b8e23", - orange: "#ffa500", - orangered: "#ff4500", - orchid: "#da70d6", - palegoldenrod: "#eee8aa", - palegreen: "#98fb98", - paleturquoise: "#afeeee", - palevioletred: "#db7093", - papayawhip: "#ffefd5", - peachpuff: "#ffdab9", - peru: "#cd853f", - pink: "#ffc0cb", - plum: "#dda0dd", - powderblue: "#b0e0e6", - purple: "#800080", - red: "#ff0000", - rosybrown: "#bc8f8f", - royalblue: "#4169e1", - saddlebrown: "#8b4513", - salmon: "#fa8072", - sandybrown: "#f4a460", - seagreen: "#2e8b57", - seashell: "#fff5ee", - sienna: "#a0522d", - silver: "#c0c0c0", - skyblue: "#87ceeb", - slateblue: "#6a5acd", - slategray: "#708090", - slategrey: "#708090", - snow: "#fffafa", - springgreen: "#00ff7f", - steelblue: "#4682b4", - tan: "#d2b48c", - teal: "#008080", - thistle: "#d8bfd8", - tomato: "#ff6347", - turquoise: "#40e0d0", - violet: "#ee82ee", - wheat: "#f5deb3", - white: "#ffffff", - whitesmoke: "#f5f5f5", - yellow: "#ffff00", - yellowgreen: "#9acd32" -}; - -for (var d3_rgb_name in d3_rgb_names) { - d3_rgb_names[d3_rgb_name] = d3_rgb_parse( - d3_rgb_names[d3_rgb_name], - d3_rgb, - d3_hsl_rgb); -} -d3.hsl = function(h, s, l) { - return arguments.length === 1 - ? d3_rgb_parse("" + h, d3_rgb_hsl, d3_hsl) - : d3_hsl(+h, +s, +l); -}; - -function d3_hsl(h, s, l) { - return new d3_Hsl(h, s, l); -} - -function d3_Hsl(h, s, l) { - this.h = h; - this.s = s; - this.l = l; -} - -d3_Hsl.prototype.brighter = function(k) { - k = Math.pow(0.7, arguments.length ? k : 1); - return d3_hsl(this.h, this.s, this.l / k); -}; - -d3_Hsl.prototype.darker = function(k) { - k = Math.pow(0.7, arguments.length ? k : 1); - return d3_hsl(this.h, this.s, k * this.l); -}; - -d3_Hsl.prototype.rgb = function() { - return d3_hsl_rgb(this.h, this.s, this.l); -}; - -d3_Hsl.prototype.toString = function() { - return "hsl(" + this.h + "," + this.s * 100 + "%," + this.l * 100 + "%)"; -}; - -function d3_hsl_rgb(h, s, l) { - var m1, - m2; - - /* Some simple corrections for h, s and l. */ - h = h % 360; if (h < 0) h += 360; - s = s < 0 ? 0 : s > 1 ? 1 : s; - l = l < 0 ? 0 : l > 1 ? 1 : l; - - /* From FvD 13.37, CSS Color Module Level 3 */ - m2 = l <= .5 ? l * (1 + s) : l + s - l * s; - m1 = 2 * l - m2; - - function v(h) { - if (h > 360) h -= 360; - else if (h < 0) h += 360; - if (h < 60) return m1 + (m2 - m1) * h / 60; - if (h < 180) return m2; - if (h < 240) return m1 + (m2 - m1) * (240 - h) / 60; - return m1; - } - - function vv(h) { - return Math.round(v(h) * 255); - } - - return d3_rgb(vv(h + 120), vv(h), vv(h - 120)); -} -function d3_selection(groups) { - d3_arraySubclass(groups, d3_selectionPrototype); - return groups; -} - -var d3_select = function(s, n) { return n.querySelector(s); }, - d3_selectAll = function(s, n) { return n.querySelectorAll(s); }; - -// Prefer Sizzle, if available. -if (typeof Sizzle === "function") { - d3_select = function(s, n) { return Sizzle(s, n)[0]; }; - d3_selectAll = function(s, n) { return Sizzle.uniqueSort(Sizzle(s, n)); }; -} - -var d3_selectionPrototype = []; - -d3.selection = function() { - return d3_selectionRoot; -}; - -d3.selection.prototype = d3_selectionPrototype; -d3_selectionPrototype.select = function(selector) { - var subgroups = [], - subgroup, - subnode, - group, - node; - - if (typeof selector !== "function") selector = d3_selection_selector(selector); - - for (var j = -1, m = this.length; ++j < m;) { - subgroups.push(subgroup = []); - subgroup.parentNode = (group = this[j]).parentNode; - for (var i = -1, n = group.length; ++i < n;) { - if (node = group[i]) { - subgroup.push(subnode = selector.call(node, node.__data__, i)); - if (subnode && "__data__" in node) subnode.__data__ = node.__data__; - } else { - subgroup.push(null); - } - } - } - - return d3_selection(subgroups); -}; - -function d3_selection_selector(selector) { - return function() { - return d3_select(selector, this); - }; -} -d3_selectionPrototype.selectAll = function(selector) { - var subgroups = [], - subgroup, - node; - - if (typeof selector !== "function") selector = d3_selection_selectorAll(selector); - - for (var j = -1, m = this.length; ++j < m;) { - for (var group = this[j], i = -1, n = group.length; ++i < n;) { - if (node = group[i]) { - subgroups.push(subgroup = selector.call(node, node.__data__, i)); - subgroup.parentNode = node; - } - } - } - - return d3_selection(subgroups); -}; - -function d3_selection_selectorAll(selector) { - return function() { - return d3_selectAll(selector, this); - }; -} -d3_selectionPrototype.attr = function(name, value) { - name = d3.ns.qualify(name); - - // If no value is specified, return the first value. - if (arguments.length < 2) { - var node = this.node(); - return name.local - ? node.getAttributeNS(name.space, name.local) - : node.getAttribute(name); - } - - function attrNull() { - this.removeAttribute(name); - } - - function attrNullNS() { - this.removeAttributeNS(name.space, name.local); - } - - function attrConstant() { - this.setAttribute(name, value); - } - - function attrConstantNS() { - this.setAttributeNS(name.space, name.local, value); - } - - function attrFunction() { - var x = value.apply(this, arguments); - if (x == null) this.removeAttribute(name); - else this.setAttribute(name, x); - } - - function attrFunctionNS() { - var x = value.apply(this, arguments); - if (x == null) this.removeAttributeNS(name.space, name.local); - else this.setAttributeNS(name.space, name.local, x); - } - - return this.each(value == null - ? (name.local ? attrNullNS : attrNull) : (typeof value === "function" - ? (name.local ? attrFunctionNS : attrFunction) - : (name.local ? attrConstantNS : attrConstant))); -}; -d3_selectionPrototype.classed = function(name, value) { - var re = new RegExp("(^|\\s+)" + d3.requote(name) + "(\\s+|$)", "g"); - - // If no value is specified, return the first value. - if (arguments.length < 2) { - var node = this.node(); - if (c = node.classList) return c.contains(name); - var c = node.className; - re.lastIndex = 0; - return re.test(c.baseVal != null ? c.baseVal : c); - } - - function classedAdd() { - if (c = this.classList) return c.add(name); - var c = this.className, - cb = c.baseVal != null, - cv = cb ? c.baseVal : c; - re.lastIndex = 0; - if (!re.test(cv)) { - cv = d3_collapse(cv + " " + name); - if (cb) c.baseVal = cv; - else this.className = cv; - } - } - - function classedRemove() { - if (c = this.classList) return c.remove(name); - var c = this.className, - cb = c.baseVal != null, - cv = cb ? c.baseVal : c; - cv = d3_collapse(cv.replace(re, " ")); - if (cb) c.baseVal = cv; - else this.className = cv; - } - - function classedFunction() { - (value.apply(this, arguments) - ? classedAdd - : classedRemove).call(this); - } - - return this.each(typeof value === "function" - ? classedFunction : value - ? classedAdd - : classedRemove); -}; -d3_selectionPrototype.style = function(name, value, priority) { - if (arguments.length < 3) priority = ""; - - // If no value is specified, return the first value. - if (arguments.length < 2) return window - .getComputedStyle(this.node(), null) - .getPropertyValue(name); - - function styleNull() { - this.style.removeProperty(name); - } - - function styleConstant() { - this.style.setProperty(name, value, priority); - } - - function styleFunction() { - var x = value.apply(this, arguments); - if (x == null) this.style.removeProperty(name); - else this.style.setProperty(name, x, priority); - } - - return this.each(value == null - ? styleNull : (typeof value === "function" - ? styleFunction : styleConstant)); -}; -d3_selectionPrototype.property = function(name, value) { - - // If no value is specified, return the first value. - if (arguments.length < 2) return this.node()[name]; - - function propertyNull() { - delete this[name]; - } - - function propertyConstant() { - this[name] = value; - } - - function propertyFunction() { - var x = value.apply(this, arguments); - if (x == null) delete this[name]; - else this[name] = x; - } - - return this.each(value == null - ? propertyNull : (typeof value === "function" - ? propertyFunction : propertyConstant)); -}; -d3_selectionPrototype.text = function(value) { - return arguments.length < 1 ? this.node().textContent - : (this.each(typeof value === "function" - ? function() { this.textContent = value.apply(this, arguments); } - : function() { this.textContent = value; })); -}; -d3_selectionPrototype.html = function(value) { - return arguments.length < 1 ? this.node().innerHTML - : (this.each(typeof value === "function" - ? function() { this.innerHTML = value.apply(this, arguments); } - : function() { this.innerHTML = value; })); -}; -// TODO append(node)? -// TODO append(function)? -d3_selectionPrototype.append = function(name) { - name = d3.ns.qualify(name); - - function append() { - return this.appendChild(document.createElement(name)); - } - - function appendNS() { - return this.appendChild(document.createElementNS(name.space, name.local)); - } - - return this.select(name.local ? appendNS : append); -}; -// TODO insert(node, function)? -// TODO insert(function, string)? -// TODO insert(function, function)? -d3_selectionPrototype.insert = function(name, before) { - name = d3.ns.qualify(name); - - function insert() { - return this.insertBefore( - document.createElement(name), - d3_select(before, this)); - } - - function insertNS() { - return this.insertBefore( - document.createElementNS(name.space, name.local), - d3_select(before, this)); - } - - return this.select(name.local ? insertNS : insert); -}; -// TODO remove(selector)? -// TODO remove(node)? -// TODO remove(function)? -d3_selectionPrototype.remove = function() { - return this.each(function() { - var parent = this.parentNode; - if (parent) parent.removeChild(this); - }); -}; -// TODO data(null) for clearing data? -d3_selectionPrototype.data = function(data, join) { - var enter = [], - update = [], - exit = []; - - function bind(group, groupData) { - var i, - n = group.length, - m = groupData.length, - n0 = Math.min(n, m), - n1 = Math.max(n, m), - updateNodes = [], - enterNodes = [], - exitNodes = [], - node, - nodeData; - - if (join) { - var nodeByKey = {}, - keys = [], - key, - j = groupData.length; - - for (i = -1; ++i < n;) { - key = join.call(node = group[i], node.__data__, i); - if (key in nodeByKey) { - exitNodes[j++] = node; // duplicate key - } else { - nodeByKey[key] = node; - } - keys.push(key); - } - - for (i = -1; ++i < m;) { - node = nodeByKey[key = join.call(groupData, nodeData = groupData[i], i)]; - if (node) { - node.__data__ = nodeData; - updateNodes[i] = node; - enterNodes[i] = exitNodes[i] = null; - } else { - enterNodes[i] = d3_selection_dataNode(nodeData); - updateNodes[i] = exitNodes[i] = null; - } - delete nodeByKey[key]; - } - - for (i = -1; ++i < n;) { - if (keys[i] in nodeByKey) { - exitNodes[i] = group[i]; - } - } - } else { - for (i = -1; ++i < n0;) { - node = group[i]; - nodeData = groupData[i]; - if (node) { - node.__data__ = nodeData; - updateNodes[i] = node; - enterNodes[i] = exitNodes[i] = null; - } else { - enterNodes[i] = d3_selection_dataNode(nodeData); - updateNodes[i] = exitNodes[i] = null; - } - } - for (; i < m; ++i) { - enterNodes[i] = d3_selection_dataNode(groupData[i]); - updateNodes[i] = exitNodes[i] = null; - } - for (; i < n1; ++i) { - exitNodes[i] = group[i]; - enterNodes[i] = updateNodes[i] = null; - } - } - - enterNodes.update - = updateNodes; - - enterNodes.parentNode - = updateNodes.parentNode - = exitNodes.parentNode - = group.parentNode; - - enter.push(enterNodes); - update.push(updateNodes); - exit.push(exitNodes); - } - - var i = -1, - n = this.length, - group; - if (typeof data === "function") { - while (++i < n) { - bind(group = this[i], data.call(group, group.parentNode.__data__, i)); - } - } else { - while (++i < n) { - bind(group = this[i], data); - } - } - - var selection = d3_selection(update); - selection.enter = function() { return d3_selection_enter(enter); }; - selection.exit = function() { return d3_selection(exit); }; - return selection; -}; - -function d3_selection_dataNode(data) { - return {__data__: data}; -} -function d3_selection_enter(selection) { - d3_arraySubclass(selection, d3_selection_enterPrototype); - return selection; -} - -var d3_selection_enterPrototype = []; - -d3_selection_enterPrototype.append = d3_selectionPrototype.append; -d3_selection_enterPrototype.insert = d3_selectionPrototype.insert; -d3_selection_enterPrototype.empty = d3_selectionPrototype.empty; -d3_selection_enterPrototype.select = function(selector) { - var subgroups = [], - subgroup, - subnode, - upgroup, - group, - node; - - for (var j = -1, m = this.length; ++j < m;) { - upgroup = (group = this[j]).update; - subgroups.push(subgroup = []); - subgroup.parentNode = group.parentNode; - for (var i = -1, n = group.length; ++i < n;) { - if (node = group[i]) { - subgroup.push(upgroup[i] = subnode = selector.call(group.parentNode, node.__data__, i)); - subnode.__data__ = node.__data__; - } else { - subgroup.push(null); - } - } - } - - return d3_selection(subgroups); -}; -// TODO preserve null elements to maintain index? -d3_selectionPrototype.filter = function(filter) { - var subgroups = [], - subgroup, - group, - node; - - for (var j = 0, m = this.length; j < m; j++) { - subgroups.push(subgroup = []); - subgroup.parentNode = (group = this[j]).parentNode; - for (var i = 0, n = group.length; i < n; i++) { - if ((node = group[i]) && filter.call(node, node.__data__, i)) { - subgroup.push(node); - } - } - } - - return d3_selection(subgroups); -}; -d3_selectionPrototype.map = function(map) { - return this.each(function() { - this.__data__ = map.apply(this, arguments); - }); -}; -d3_selectionPrototype.sort = function(comparator) { - comparator = d3_selection_sortComparator.apply(this, arguments); - for (var j = 0, m = this.length; j < m; j++) { - for (var group = this[j].sort(comparator), i = 1, n = group.length, prev = group[0]; i < n; i++) { - var node = group[i]; - if (node) { - if (prev) prev.parentNode.insertBefore(node, prev.nextSibling); - prev = node; - } - } - } - return this; -}; - -function d3_selection_sortComparator(comparator) { - if (!arguments.length) comparator = d3.ascending; - return function(a, b) { - return comparator(a && a.__data__, b && b.__data__); - }; -} -// type can be namespaced, e.g., "click.foo" -// listener can be null for removal -d3_selectionPrototype.on = function(type, listener, capture) { - if (arguments.length < 3) capture = false; - - // parse the type specifier - var name = "__on" + type, i = type.indexOf("."); - if (i > 0) type = type.substring(0, i); - - // if called with only one argument, return the current listener - if (arguments.length < 2) return (i = this.node()[name]) && i._; - - // remove the old event listener, and add the new event listener - return this.each(function(d, i) { - var node = this; - - if (node[name]) node.removeEventListener(type, node[name], capture); - if (listener) node.addEventListener(type, node[name] = l, capture); - - // wrapped event listener that preserves i - function l(e) { - var o = d3.event; // Events can be reentrant (e.g., focus). - d3.event = e; - try { - listener.call(node, node.__data__, i); - } finally { - d3.event = o; - } - } - - // stash the unwrapped listener for retrieval - l._ = listener; - }); -}; -d3_selectionPrototype.each = function(callback) { - for (var j = -1, m = this.length; ++j < m;) { - for (var group = this[j], i = -1, n = group.length; ++i < n;) { - var node = group[i]; - if (node) callback.call(node, node.__data__, i, j); - } - } - return this; -}; -// -// Note: assigning to the arguments array simultaneously changes the value of -// the corresponding argument! -// -// TODO The `this` argument probably shouldn't be the first argument to the -// callback, anyway, since it's redundant. However, that will require a major -// version bump due to backwards compatibility, so I'm not changing it right -// away. -// -d3_selectionPrototype.call = function(callback) { - callback.apply(this, (arguments[0] = this, arguments)); - return this; -}; -d3_selectionPrototype.empty = function() { - return !this.node(); -}; -d3_selectionPrototype.node = function(callback) { - for (var j = 0, m = this.length; j < m; j++) { - for (var group = this[j], i = 0, n = group.length; i < n; i++) { - var node = group[i]; - if (node) return node; - } - } - return null; -}; -d3_selectionPrototype.transition = function() { - var subgroups = [], - subgroup, - node; - - for (var j = -1, m = this.length; ++j < m;) { - subgroups.push(subgroup = []); - for (var group = this[j], i = -1, n = group.length; ++i < n;) { - subgroup.push((node = group[i]) ? {node: node, delay: 0, duration: 250} : null); - } - } - - return d3_transition(subgroups, d3_transitionInheritId || ++d3_transitionId); -}; -var d3_selectionRoot = d3_selection([[document]]); - -d3_selectionRoot[0].parentNode = document.documentElement; - -// TODO fast singleton implementation! -d3.select = function(selector) { - return typeof selector === "string" - ? d3_selectionRoot.select(selector) - : d3_selection([[selector]]); // assume node -}; - -d3.selectAll = function(selector) { - return typeof selector === "string" - ? d3_selectionRoot.selectAll(selector) - : d3_selection([selector]); // assume node[] -}; -function d3_transition(groups, id) { - d3_arraySubclass(groups, d3_transitionPrototype); - - var tweens = {}, - event = d3.dispatch("start", "end"), - ease = d3_transitionEase, - then = Date.now(); - - groups.id = id; - - groups.tween = function(name, tween) { - if (arguments.length < 2) return tweens[name]; - if (tween == null) delete tweens[name]; - else tweens[name] = tween; - return groups; - }; - - groups.ease = function(value) { - if (!arguments.length) return ease; - ease = typeof value === "function" ? value : d3.ease.apply(d3, arguments); - return groups; - }; - - groups.each = function(type, listener) { - if (arguments.length < 2) return d3_transition_each.call(groups, type); - event[type].add(listener); - return groups; - }; - - d3.timer(function(elapsed) { - groups.each(function(d, i, j) { - var tweened = [], - node = this, - delay = groups[j][i].delay, - duration = groups[j][i].duration, - lock = node.__transition__ || (node.__transition__ = {active: 0, count: 0}); - - ++lock.count; - - delay <= elapsed ? start(elapsed) : d3.timer(start, delay, then); - - function start(elapsed) { - if (lock.active > id) return stop(); - lock.active = id; - - for (var tween in tweens) { - if (tween = tweens[tween].call(node, d, i)) { - tweened.push(tween); - } - } - - event.start.dispatch.call(node, d, i); - if (!tick(elapsed)) d3.timer(tick, 0, then); - return 1; - } - - function tick(elapsed) { - if (lock.active !== id) return stop(); - - var t = (elapsed - delay) / duration, - e = ease(t), - n = tweened.length; - - while (n > 0) { - tweened[--n].call(node, e); - } - - if (t >= 1) { - stop(); - d3_transitionInheritId = id; - event.end.dispatch.call(node, d, i); - d3_transitionInheritId = 0; - return 1; - } - } - - function stop() { - if (!--lock.count) delete node.__transition__; - return 1; - } - }); - return 1; - }, 0, then); - - return groups; -} - -function d3_transitionTween(b) { - return typeof b === "function" - ? function(d, i, a) { var v = b.call(this, d, i) + ""; return a != v && d3.interpolate(a, v); } - : (b = b + "", function(d, i, a) { return a != b && d3.interpolate(a, b); }); -} - -var d3_transitionPrototype = [], - d3_transitionId = 0, - d3_transitionInheritId = 0, - d3_transitionEase = d3.ease("cubic-in-out"); - -d3_transitionPrototype.call = d3_selectionPrototype.call; - -d3.transition = function() { - return d3_selectionRoot.transition(); -}; - -d3.transition.prototype = d3_transitionPrototype; -d3_transitionPrototype.select = function(selector) { - var subgroups = [], - subgroup, - subnode, - node; - - if (typeof selector !== "function") selector = d3_selection_selector(selector); - - for (var j = -1, m = this.length; ++j < m;) { - subgroups.push(subgroup = []); - for (var group = this[j], i = -1, n = group.length; ++i < n;) { - if ((node = group[i]) && (subnode = selector.call(node.node, node.node.__data__, i))) { - if ("__data__" in node.node) subnode.__data__ = node.node.__data__; - subgroup.push({node: subnode, delay: node.delay, duration: node.duration}); - } else { - subgroup.push(null); - } - } - } - - return d3_transition(subgroups, this.id).ease(this.ease()); -}; -d3_transitionPrototype.selectAll = function(selector) { - var subgroups = [], - subgroup, - node; - - if (typeof selector !== "function") selector = d3_selection_selectorAll(selector); - - for (var j = -1, m = this.length; ++j < m;) { - for (var group = this[j], i = -1, n = group.length; ++i < n;) { - if (node = group[i]) { - subgroups.push(subgroup = selector.call(node.node, node.node.__data__, i)); - for (var k = -1, o = subgroup.length; ++k < o;) { - subgroup[k] = {node: subgroup[k], delay: node.delay, duration: node.duration}; - } - } - } - } - - return d3_transition(subgroups, this.id).ease(this.ease()); -}; -d3_transitionPrototype.attr = function(name, value) { - return this.attrTween(name, d3_transitionTween(value)); -}; - -d3_transitionPrototype.attrTween = function(name, tween) { - name = d3.ns.qualify(name); - - function attrTween(d, i) { - var f = tween.call(this, d, i, this.getAttribute(name)); - return f && function(t) { - this.setAttribute(name, f(t)); - }; - } - - function attrTweenNS(d, i) { - var f = tween.call(this, d, i, this.getAttributeNS(name.space, name.local)); - return f && function(t) { - this.setAttributeNS(name.space, name.local, f(t)); - }; - } - - return this.tween("attr." + name, name.local ? attrTweenNS : attrTween); -}; -d3_transitionPrototype.style = function(name, value, priority) { - if (arguments.length < 3) priority = ""; - return this.styleTween(name, d3_transitionTween(value), priority); -}; - -d3_transitionPrototype.styleTween = function(name, tween, priority) { - if (arguments.length < 3) priority = ""; - return this.tween("style." + name, function(d, i) { - var f = tween.call(this, d, i, window.getComputedStyle(this, null).getPropertyValue(name)); - return f && function(t) { - this.style.setProperty(name, f(t), priority); - }; - }); -}; -d3_transitionPrototype.text = function(value) { - return this.tween("text", function(d, i) { - this.textContent = typeof value === "function" - ? value.call(this, d, i) - : value; - }); -}; -d3_transitionPrototype.remove = function() { - return this.each("end", function() { - var p; - if (!this.__transition__ && (p = this.parentNode)) p.removeChild(this); - }); -}; -d3_transitionPrototype.delay = function(value) { - var groups = this; - return groups.each(typeof value === "function" - ? function(d, i, j) { groups[j][i].delay = +value.apply(this, arguments); } - : (value = +value, function(d, i, j) { groups[j][i].delay = value; })); -}; -d3_transitionPrototype.duration = function(value) { - var groups = this; - return groups.each(typeof value === "function" - ? function(d, i, j) { groups[j][i].duration = +value.apply(this, arguments); } - : (value = +value, function(d, i, j) { groups[j][i].duration = value; })); -}; -function d3_transition_each(callback) { - for (var j = 0, m = this.length; j < m; j++) { - for (var group = this[j], i = 0, n = group.length; i < n; i++) { - var node = group[i]; - if (node) callback.call(node = node.node, node.__data__, i, j); - } - } - return this; -} -d3_transitionPrototype.transition = function() { - return this.select(d3_this); -}; -var d3_timer_queue = null, - d3_timer_interval, // is an interval (or frame) active? - d3_timer_timeout; // is a timeout active? - -// The timer will continue to fire until callback returns true. -d3.timer = function(callback, delay, then) { - var found = false, - t0, - t1 = d3_timer_queue; - - if (arguments.length < 3) { - if (arguments.length < 2) delay = 0; - else if (!isFinite(delay)) return; - then = Date.now(); - } - - // See if the callback's already in the queue. - while (t1) { - if (t1.callback === callback) { - t1.then = then; - t1.delay = delay; - found = true; - break; - } - t0 = t1; - t1 = t1.next; - } - - // Otherwise, add the callback to the queue. - if (!found) d3_timer_queue = { - callback: callback, - then: then, - delay: delay, - next: d3_timer_queue - }; - - // Start animatin'! - if (!d3_timer_interval) { - d3_timer_timeout = clearTimeout(d3_timer_timeout); - d3_timer_interval = 1; - d3_timer_frame(d3_timer_step); - } -} - -function d3_timer_step() { - var elapsed, - now = Date.now(), - t1 = d3_timer_queue; - - while (t1) { - elapsed = now - t1.then; - if (elapsed >= t1.delay) t1.flush = t1.callback(elapsed); - t1 = t1.next; - } - - var delay = d3_timer_flush() - now; - if (delay > 24) { - if (isFinite(delay)) { - clearTimeout(d3_timer_timeout); - d3_timer_timeout = setTimeout(d3_timer_step, delay); - } - d3_timer_interval = 0; - } else { - d3_timer_interval = 1; - d3_timer_frame(d3_timer_step); - } -} - -d3.timer.flush = function() { - var elapsed, - now = Date.now(), - t1 = d3_timer_queue; - - while (t1) { - elapsed = now - t1.then; - if (!t1.delay) t1.flush = t1.callback(elapsed); - t1 = t1.next; - } - - d3_timer_flush(); -}; - -// Flush after callbacks, to avoid concurrent queue modification. -function d3_timer_flush() { - var t0 = null, - t1 = d3_timer_queue, - then = Infinity; - while (t1) { - if (t1.flush) { - t1 = t0 ? t0.next = t1.next : d3_timer_queue = t1.next; - } else { - then = Math.min(then, t1.then + t1.delay); - t1 = (t0 = t1).next; - } - } - return then; -} - -var d3_timer_frame = window.requestAnimationFrame - || window.webkitRequestAnimationFrame - || window.mozRequestAnimationFrame - || window.oRequestAnimationFrame - || window.msRequestAnimationFrame - || function(callback) { setTimeout(callback, 17); }; -function d3_noop() {} -d3.scale = {}; - -function d3_scaleExtent(domain) { - var start = domain[0], stop = domain[domain.length - 1]; - return start < stop ? [start, stop] : [stop, start]; -} -function d3_scale_nice(domain, nice) { - var i0 = 0, - i1 = domain.length - 1, - x0 = domain[i0], - x1 = domain[i1], - dx; - - if (x1 < x0) { - dx = i0; i0 = i1; i1 = dx; - dx = x0; x0 = x1; x1 = dx; - } - - nice = nice(x1 - x0); - domain[i0] = nice.floor(x0); - domain[i1] = nice.ceil(x1); - return domain; -} - -function d3_scale_niceDefault() { - return Math; -} -d3.scale.linear = function() { - return d3_scale_linear([0, 1], [0, 1], d3.interpolate, false); -}; - -function d3_scale_linear(domain, range, interpolate, clamp) { - var output, - input; - - function rescale() { - var linear = domain.length == 2 ? d3_scale_bilinear : d3_scale_polylinear, - uninterpolate = clamp ? d3_uninterpolateClamp : d3_uninterpolateNumber; - output = linear(domain, range, uninterpolate, interpolate); - input = linear(range, domain, uninterpolate, d3.interpolate); - return scale; - } - - function scale(x) { - return output(x); - } - - // Note: requires range is coercible to number! - scale.invert = function(y) { - return input(y); - }; - - scale.domain = function(x) { - if (!arguments.length) return domain; - domain = x.map(Number); - return rescale(); - }; - - scale.range = function(x) { - if (!arguments.length) return range; - range = x; - return rescale(); - }; - - scale.rangeRound = function(x) { - return scale.range(x).interpolate(d3.interpolateRound); - }; - - scale.clamp = function(x) { - if (!arguments.length) return clamp; - clamp = x; - return rescale(); - }; - - scale.interpolate = function(x) { - if (!arguments.length) return interpolate; - interpolate = x; - return rescale(); - }; - - scale.ticks = function(m) { - return d3_scale_linearTicks(domain, m); - }; - - scale.tickFormat = function(m) { - return d3_scale_linearTickFormat(domain, m); - }; - - scale.nice = function() { - d3_scale_nice(domain, d3_scale_linearNice); - return rescale(); - }; - - scale.copy = function() { - return d3_scale_linear(domain, range, interpolate, clamp); - }; - - return rescale(); -}; - -function d3_scale_linearRebind(scale, linear) { - scale.range = d3.rebind(scale, linear.range); - scale.rangeRound = d3.rebind(scale, linear.rangeRound); - scale.interpolate = d3.rebind(scale, linear.interpolate); - scale.clamp = d3.rebind(scale, linear.clamp); - return scale; -} - -function d3_scale_linearNice(dx) { - dx = Math.pow(10, Math.round(Math.log(dx) / Math.LN10) - 1); - return { - floor: function(x) { return Math.floor(x / dx) * dx; }, - ceil: function(x) { return Math.ceil(x / dx) * dx; } - }; -} - -// TODO Dates? Ugh. -function d3_scale_linearTickRange(domain, m) { - var extent = d3_scaleExtent(domain), - span = extent[1] - extent[0], - step = Math.pow(10, Math.floor(Math.log(span / m) / Math.LN10)), - err = m / span * step; - - // Filter ticks to get closer to the desired count. - if (err <= .15) step *= 10; - else if (err <= .35) step *= 5; - else if (err <= .75) step *= 2; - - // Round start and stop values to step interval. - extent[0] = Math.ceil(extent[0] / step) * step; - extent[1] = Math.floor(extent[1] / step) * step + step * .5; // inclusive - extent[2] = step; - return extent; -} - -function d3_scale_linearTicks(domain, m) { - return d3.range.apply(d3, d3_scale_linearTickRange(domain, m)); -} - -function d3_scale_linearTickFormat(domain, m) { - return d3.format(",." + Math.max(0, -Math.floor(Math.log(d3_scale_linearTickRange(domain, m)[2]) / Math.LN10 + .01)) + "f"); -} -function d3_scale_bilinear(domain, range, uninterpolate, interpolate) { - var u = uninterpolate(domain[0], domain[1]), - i = interpolate(range[0], range[1]); - return function(x) { - return i(u(x)); - }; -} -function d3_scale_polylinear(domain, range, uninterpolate, interpolate) { - var u = [], - i = [], - j = 0, - n = domain.length; - - while (++j < n) { - u.push(uninterpolate(domain[j - 1], domain[j])); - i.push(interpolate(range[j - 1], range[j])); - } - - return function(x) { - var j = d3.bisect(domain, x, 1, domain.length - 1) - 1; - return i[j](u[j](x)); - }; -} -d3.scale.log = function() { - return d3_scale_log(d3.scale.linear(), d3_scale_logp); -}; - -function d3_scale_log(linear, log) { - var pow = log.pow; - - function scale(x) { - return linear(log(x)); - } - - scale.invert = function(x) { - return pow(linear.invert(x)); - }; - - scale.domain = function(x) { - if (!arguments.length) return linear.domain().map(pow); - log = x[0] < 0 ? d3_scale_logn : d3_scale_logp; - pow = log.pow; - linear.domain(x.map(log)); - return scale; - }; - - scale.nice = function() { - linear.domain(d3_scale_nice(linear.domain(), d3_scale_niceDefault)); - return scale; - }; - - scale.ticks = function() { - var extent = d3_scaleExtent(linear.domain()), - ticks = []; - if (extent.every(isFinite)) { - var i = Math.floor(extent[0]), - j = Math.ceil(extent[1]), - u = pow(extent[0]), - v = pow(extent[1]); - if (log === d3_scale_logn) { - ticks.push(pow(i)); - for (; i++ < j;) for (var k = 9; k > 0; k--) ticks.push(pow(i) * k); - } else { - for (; i < j; i++) for (var k = 1; k < 10; k++) ticks.push(pow(i) * k); - ticks.push(pow(i)); - } - for (i = 0; ticks[i] < u; i++) {} // strip small values - for (j = ticks.length; ticks[j - 1] > v; j--) {} // strip big values - ticks = ticks.slice(i, j); - } - return ticks; - }; - - scale.tickFormat = function() { - return d3_scale_logTickFormat; - }; - - scale.copy = function() { - return d3_scale_log(linear.copy(), log); - }; - - return d3_scale_linearRebind(scale, linear); -}; - -function d3_scale_logp(x) { - return Math.log(x) / Math.LN10; -} - -function d3_scale_logn(x) { - return -Math.log(-x) / Math.LN10; -} - -d3_scale_logp.pow = function(x) { - return Math.pow(10, x); -}; - -d3_scale_logn.pow = function(x) { - return -Math.pow(10, -x); -}; - -function d3_scale_logTickFormat(d) { - return d.toPrecision(1); -} -d3.scale.pow = function() { - return d3_scale_pow(d3.scale.linear(), 1); -}; - -function d3_scale_pow(linear, exponent) { - var powp = d3_scale_powPow(exponent), - powb = d3_scale_powPow(1 / exponent); - - function scale(x) { - return linear(powp(x)); - } - - scale.invert = function(x) { - return powb(linear.invert(x)); - }; - - scale.domain = function(x) { - if (!arguments.length) return linear.domain().map(powb); - linear.domain(x.map(powp)); - return scale; - }; - - scale.ticks = function(m) { - return d3_scale_linearTicks(scale.domain(), m); - }; - - scale.tickFormat = function(m) { - return d3_scale_linearTickFormat(scale.domain(), m); - }; - - scale.nice = function() { - return scale.domain(d3_scale_nice(scale.domain(), d3_scale_linearNice)); - }; - - scale.exponent = function(x) { - if (!arguments.length) return exponent; - var domain = scale.domain(); - powp = d3_scale_powPow(exponent = x); - powb = d3_scale_powPow(1 / exponent); - return scale.domain(domain); - }; - - scale.copy = function() { - return d3_scale_pow(linear.copy(), exponent); - }; - - return d3_scale_linearRebind(scale, linear); -}; - -function d3_scale_powPow(e) { - return function(x) { - return x < 0 ? -Math.pow(-x, e) : Math.pow(x, e); - }; -} -d3.scale.sqrt = function() { - return d3.scale.pow().exponent(.5); -}; -d3.scale.ordinal = function() { - return d3_scale_ordinal([], {t: "range", x: []}); -}; - -function d3_scale_ordinal(domain, ranger) { - var index, - range, - rangeBand; - - function scale(x) { - return range[((index[x] || (index[x] = domain.push(x))) - 1) % range.length]; - } - - scale.domain = function(x) { - if (!arguments.length) return domain; - domain = []; - index = {}; - var i = -1, n = x.length, xi; - while (++i < n) if (!index[xi = x[i]]) index[xi] = domain.push(xi); - return scale[ranger.t](ranger.x, ranger.p); - }; - - scale.range = function(x) { - if (!arguments.length) return range; - range = x; - rangeBand = 0; - ranger = {t: "range", x: x}; - return scale; - }; - - scale.rangePoints = function(x, padding) { - if (arguments.length < 2) padding = 0; - var start = x[0], - stop = x[1], - step = (stop - start) / (domain.length - 1 + padding); - range = domain.length < 2 ? [(start + stop) / 2] : d3.range(start + step * padding / 2, stop + step / 2, step); - rangeBand = 0; - ranger = {t: "rangePoints", x: x, p: padding}; - return scale; - }; - - scale.rangeBands = function(x, padding) { - if (arguments.length < 2) padding = 0; - var start = x[0], - stop = x[1], - step = (stop - start) / (domain.length + padding); - range = d3.range(start + step * padding, stop, step); - rangeBand = step * (1 - padding); - ranger = {t: "rangeBands", x: x, p: padding}; - return scale; - }; - - scale.rangeRoundBands = function(x, padding) { - if (arguments.length < 2) padding = 0; - var start = x[0], - stop = x[1], - step = Math.floor((stop - start) / (domain.length + padding)), - err = stop - start - (domain.length - padding) * step; - range = d3.range(start + Math.round(err / 2), stop, step); - rangeBand = Math.round(step * (1 - padding)); - ranger = {t: "rangeRoundBands", x: x, p: padding}; - return scale; - }; - - scale.rangeBand = function() { - return rangeBand; - }; - - scale.copy = function() { - return d3_scale_ordinal(domain, ranger); - }; - - return scale.domain(domain); -}; -/* - * This product includes color specifications and designs developed by Cynthia - * Brewer (http://colorbrewer.org/). See lib/colorbrewer for more information. - */ - -d3.scale.category10 = function() { - return d3.scale.ordinal().range(d3_category10); -}; - -d3.scale.category20 = function() { - return d3.scale.ordinal().range(d3_category20); -}; - -d3.scale.category20b = function() { - return d3.scale.ordinal().range(d3_category20b); -}; - -d3.scale.category20c = function() { - return d3.scale.ordinal().range(d3_category20c); -}; - -var d3_category10 = [ - "#1f77b4", "#ff7f0e", "#2ca02c", "#d62728", "#9467bd", - "#8c564b", "#e377c2", "#7f7f7f", "#bcbd22", "#17becf" -]; - -var d3_category20 = [ - "#1f77b4", "#aec7e8", - "#ff7f0e", "#ffbb78", - "#2ca02c", "#98df8a", - "#d62728", "#ff9896", - "#9467bd", "#c5b0d5", - "#8c564b", "#c49c94", - "#e377c2", "#f7b6d2", - "#7f7f7f", "#c7c7c7", - "#bcbd22", "#dbdb8d", - "#17becf", "#9edae5" -]; - -var d3_category20b = [ - "#393b79", "#5254a3", "#6b6ecf", "#9c9ede", - "#637939", "#8ca252", "#b5cf6b", "#cedb9c", - "#8c6d31", "#bd9e39", "#e7ba52", "#e7cb94", - "#843c39", "#ad494a", "#d6616b", "#e7969c", - "#7b4173", "#a55194", "#ce6dbd", "#de9ed6" -]; - -var d3_category20c = [ - "#3182bd", "#6baed6", "#9ecae1", "#c6dbef", - "#e6550d", "#fd8d3c", "#fdae6b", "#fdd0a2", - "#31a354", "#74c476", "#a1d99b", "#c7e9c0", - "#756bb1", "#9e9ac8", "#bcbddc", "#dadaeb", - "#636363", "#969696", "#bdbdbd", "#d9d9d9" -]; -d3.scale.quantile = function() { - return d3_scale_quantile([], []); -}; - -function d3_scale_quantile(domain, range) { - var thresholds; - - function rescale() { - var k = 0, - n = domain.length, - q = range.length; - thresholds = []; - while (++k < q) thresholds[k - 1] = d3.quantile(domain, k / q); - return scale; - } - - function scale(x) { - if (isNaN(x = +x)) return NaN; - return range[d3.bisect(thresholds, x)]; - } - - scale.domain = function(x) { - if (!arguments.length) return domain; - domain = x.filter(function(d) { return !isNaN(d); }).sort(d3.ascending); - return rescale(); - }; - - scale.range = function(x) { - if (!arguments.length) return range; - range = x; - return rescale(); - }; - - scale.quantiles = function() { - return thresholds; - }; - - scale.copy = function() { - return d3_scale_quantile(domain, range); // copy on write! - }; - - return rescale(); -}; -d3.scale.quantize = function() { - return d3_scale_quantize(0, 1, [0, 1]); -}; - -function d3_scale_quantize(x0, x1, range) { - var kx, i; - - function scale(x) { - return range[Math.max(0, Math.min(i, Math.floor(kx * (x - x0))))]; - } - - function rescale() { - kx = range.length / (x1 - x0); - i = range.length - 1; - return scale; - } - - scale.domain = function(x) { - if (!arguments.length) return [x0, x1]; - x0 = +x[0]; - x1 = +x[x.length - 1]; - return rescale(); - }; - - scale.range = function(x) { - if (!arguments.length) return range; - range = x; - return rescale(); - }; - - scale.copy = function() { - return d3_scale_quantize(x0, x1, range); // copy on write - }; - - return rescale(); -}; -d3.svg = {}; -d3.svg.arc = function() { - var innerRadius = d3_svg_arcInnerRadius, - outerRadius = d3_svg_arcOuterRadius, - startAngle = d3_svg_arcStartAngle, - endAngle = d3_svg_arcEndAngle; - - function arc() { - var r0 = innerRadius.apply(this, arguments), - r1 = outerRadius.apply(this, arguments), - a0 = startAngle.apply(this, arguments) + d3_svg_arcOffset, - a1 = endAngle.apply(this, arguments) + d3_svg_arcOffset, - da = (a1 < a0 && (da = a0, a0 = a1, a1 = da), a1 - a0), - df = da < Math.PI ? "0" : "1", - c0 = Math.cos(a0), - s0 = Math.sin(a0), - c1 = Math.cos(a1), - s1 = Math.sin(a1); - return da >= d3_svg_arcMax - ? (r0 - ? "M0," + r1 - + "A" + r1 + "," + r1 + " 0 1,1 0," + (-r1) - + "A" + r1 + "," + r1 + " 0 1,1 0," + r1 - + "M0," + r0 - + "A" + r0 + "," + r0 + " 0 1,0 0," + (-r0) - + "A" + r0 + "," + r0 + " 0 1,0 0," + r0 - + "Z" - : "M0," + r1 - + "A" + r1 + "," + r1 + " 0 1,1 0," + (-r1) - + "A" + r1 + "," + r1 + " 0 1,1 0," + r1 - + "Z") - : (r0 - ? "M" + r1 * c0 + "," + r1 * s0 - + "A" + r1 + "," + r1 + " 0 " + df + ",1 " + r1 * c1 + "," + r1 * s1 - + "L" + r0 * c1 + "," + r0 * s1 - + "A" + r0 + "," + r0 + " 0 " + df + ",0 " + r0 * c0 + "," + r0 * s0 - + "Z" - : "M" + r1 * c0 + "," + r1 * s0 - + "A" + r1 + "," + r1 + " 0 " + df + ",1 " + r1 * c1 + "," + r1 * s1 - + "L0,0" - + "Z"); - } - - arc.innerRadius = function(v) { - if (!arguments.length) return innerRadius; - innerRadius = d3.functor(v); - return arc; - }; - - arc.outerRadius = function(v) { - if (!arguments.length) return outerRadius; - outerRadius = d3.functor(v); - return arc; - }; - - arc.startAngle = function(v) { - if (!arguments.length) return startAngle; - startAngle = d3.functor(v); - return arc; - }; - - arc.endAngle = function(v) { - if (!arguments.length) return endAngle; - endAngle = d3.functor(v); - return arc; - }; - - arc.centroid = function() { - var r = (innerRadius.apply(this, arguments) - + outerRadius.apply(this, arguments)) / 2, - a = (startAngle.apply(this, arguments) - + endAngle.apply(this, arguments)) / 2 + d3_svg_arcOffset; - return [Math.cos(a) * r, Math.sin(a) * r]; - }; - - return arc; -}; - -var d3_svg_arcOffset = -Math.PI / 2, - d3_svg_arcMax = 2 * Math.PI - 1e-6; - -function d3_svg_arcInnerRadius(d) { - return d.innerRadius; -} - -function d3_svg_arcOuterRadius(d) { - return d.outerRadius; -} - -function d3_svg_arcStartAngle(d) { - return d.startAngle; -} - -function d3_svg_arcEndAngle(d) { - return d.endAngle; -} -function d3_svg_line(projection) { - var x = d3_svg_lineX, - y = d3_svg_lineY, - interpolate = "linear", - interpolator = d3_svg_lineInterpolators[interpolate], - tension = .7; - - function line(d) { - return d.length < 1 ? null : "M" + interpolator(projection(d3_svg_linePoints(this, d, x, y)), tension); - } - - line.x = function(v) { - if (!arguments.length) return x; - x = v; - return line; - }; - - line.y = function(v) { - if (!arguments.length) return y; - y = v; - return line; - }; - - line.interpolate = function(v) { - if (!arguments.length) return interpolate; - interpolator = d3_svg_lineInterpolators[interpolate = v]; - return line; - }; - - line.tension = function(v) { - if (!arguments.length) return tension; - tension = v; - return line; - }; - - return line; -} - -d3.svg.line = function() { - return d3_svg_line(Object); -}; - -// Converts the specified array of data into an array of points -// (x-y tuples), by evaluating the specified `x` and `y` functions on each -// data point. The `this` context of the evaluated functions is the specified -// "self" object; each function is passed the current datum and index. -function d3_svg_linePoints(self, d, x, y) { - var points = [], - i = -1, - n = d.length, - fx = typeof x === "function", - fy = typeof y === "function", - value; - if (fx && fy) { - while (++i < n) points.push([ - x.call(self, value = d[i], i), - y.call(self, value, i) - ]); - } else if (fx) { - while (++i < n) points.push([x.call(self, d[i], i), y]); - } else if (fy) { - while (++i < n) points.push([x, y.call(self, d[i], i)]); - } else { - while (++i < n) points.push([x, y]); - } - return points; -} - -// The default `x` property, which references d[0]. -function d3_svg_lineX(d) { - return d[0]; -} - -// The default `y` property, which references d[1]. -function d3_svg_lineY(d) { - return d[1]; -} - -// The various interpolators supported by the `line` class. -var d3_svg_lineInterpolators = { - "linear": d3_svg_lineLinear, - "step-before": d3_svg_lineStepBefore, - "step-after": d3_svg_lineStepAfter, - "basis": d3_svg_lineBasis, - "basis-open": d3_svg_lineBasisOpen, - "basis-closed": d3_svg_lineBasisClosed, - "bundle": d3_svg_lineBundle, - "cardinal": d3_svg_lineCardinal, - "cardinal-open": d3_svg_lineCardinalOpen, - "cardinal-closed": d3_svg_lineCardinalClosed, - "monotone": d3_svg_lineMonotone -}; - -// Linear interpolation; generates "L" commands. -function d3_svg_lineLinear(points) { - var path = [], - i = 0, - n = points.length, - p = points[0]; - path.push(p[0], ",", p[1]); - while (++i < n) path.push("L", (p = points[i])[0], ",", p[1]); - return path.join(""); -} - -// Step interpolation; generates "H" and "V" commands. -function d3_svg_lineStepBefore(points) { - var path = [], - i = 0, - n = points.length, - p = points[0]; - path.push(p[0], ",", p[1]); - while (++i < n) path.push("V", (p = points[i])[1], "H", p[0]); - return path.join(""); -} - -// Step interpolation; generates "H" and "V" commands. -function d3_svg_lineStepAfter(points) { - var path = [], - i = 0, - n = points.length, - p = points[0]; - path.push(p[0], ",", p[1]); - while (++i < n) path.push("H", (p = points[i])[0], "V", p[1]); - return path.join(""); -} - -// Open cardinal spline interpolation; generates "C" commands. -function d3_svg_lineCardinalOpen(points, tension) { - return points.length < 4 - ? d3_svg_lineLinear(points) - : points[1] + d3_svg_lineHermite(points.slice(1, points.length - 1), - d3_svg_lineCardinalTangents(points, tension)); -} - -// Closed cardinal spline interpolation; generates "C" commands. -function d3_svg_lineCardinalClosed(points, tension) { - return points.length < 3 - ? d3_svg_lineLinear(points) - : points[0] + d3_svg_lineHermite((points.push(points[0]), points), - d3_svg_lineCardinalTangents([points[points.length - 2]] - .concat(points, [points[1]]), tension)); -} - -// Cardinal spline interpolation; generates "C" commands. -function d3_svg_lineCardinal(points, tension, closed) { - return points.length < 3 - ? d3_svg_lineLinear(points) - : points[0] + d3_svg_lineHermite(points, - d3_svg_lineCardinalTangents(points, tension)); -} - -// Hermite spline construction; generates "C" commands. -function d3_svg_lineHermite(points, tangents) { - if (tangents.length < 1 - || (points.length != tangents.length - && points.length != tangents.length + 2)) { - return d3_svg_lineLinear(points); - } - - var quad = points.length != tangents.length, - path = "", - p0 = points[0], - p = points[1], - t0 = tangents[0], - t = t0, - pi = 1; - - if (quad) { - path += "Q" + (p[0] - t0[0] * 2 / 3) + "," + (p[1] - t0[1] * 2 / 3) - + "," + p[0] + "," + p[1]; - p0 = points[1]; - pi = 2; - } - - if (tangents.length > 1) { - t = tangents[1]; - p = points[pi]; - pi++; - path += "C" + (p0[0] + t0[0]) + "," + (p0[1] + t0[1]) - + "," + (p[0] - t[0]) + "," + (p[1] - t[1]) - + "," + p[0] + "," + p[1]; - for (var i = 2; i < tangents.length; i++, pi++) { - p = points[pi]; - t = tangents[i]; - path += "S" + (p[0] - t[0]) + "," + (p[1] - t[1]) - + "," + p[0] + "," + p[1]; - } - } - - if (quad) { - var lp = points[pi]; - path += "Q" + (p[0] + t[0] * 2 / 3) + "," + (p[1] + t[1] * 2 / 3) - + "," + lp[0] + "," + lp[1]; - } - - return path; -} - -// Generates tangents for a cardinal spline. -function d3_svg_lineCardinalTangents(points, tension) { - var tangents = [], - a = (1 - tension) / 2, - p0, - p1 = points[0], - p2 = points[1], - i = 1, - n = points.length; - while (++i < n) { - p0 = p1; - p1 = p2; - p2 = points[i]; - tangents.push([a * (p2[0] - p0[0]), a * (p2[1] - p0[1])]); - } - return tangents; -} - -// B-spline interpolation; generates "C" commands. -function d3_svg_lineBasis(points) { - if (points.length < 3) return d3_svg_lineLinear(points); - var path = [], - i = 1, - n = points.length, - pi = points[0], - x0 = pi[0], - y0 = pi[1], - px = [x0, x0, x0, (pi = points[1])[0]], - py = [y0, y0, y0, pi[1]]; - path.push(x0, ",", y0); - d3_svg_lineBasisBezier(path, px, py); - while (++i < n) { - pi = points[i]; - px.shift(); px.push(pi[0]); - py.shift(); py.push(pi[1]); - d3_svg_lineBasisBezier(path, px, py); - } - i = -1; - while (++i < 2) { - px.shift(); px.push(pi[0]); - py.shift(); py.push(pi[1]); - d3_svg_lineBasisBezier(path, px, py); - } - return path.join(""); -} - -// Open B-spline interpolation; generates "C" commands. -function d3_svg_lineBasisOpen(points) { - if (points.length < 4) return d3_svg_lineLinear(points); - var path = [], - i = -1, - n = points.length, - pi, - px = [0], - py = [0]; - while (++i < 3) { - pi = points[i]; - px.push(pi[0]); - py.push(pi[1]); - } - path.push(d3_svg_lineDot4(d3_svg_lineBasisBezier3, px) - + "," + d3_svg_lineDot4(d3_svg_lineBasisBezier3, py)); - --i; while (++i < n) { - pi = points[i]; - px.shift(); px.push(pi[0]); - py.shift(); py.push(pi[1]); - d3_svg_lineBasisBezier(path, px, py); - } - return path.join(""); -} - -// Closed B-spline interpolation; generates "C" commands. -function d3_svg_lineBasisClosed(points) { - var path, - i = -1, - n = points.length, - m = n + 4, - pi, - px = [], - py = []; - while (++i < 4) { - pi = points[i % n]; - px.push(pi[0]); - py.push(pi[1]); - } - path = [ - d3_svg_lineDot4(d3_svg_lineBasisBezier3, px), ",", - d3_svg_lineDot4(d3_svg_lineBasisBezier3, py) - ]; - --i; while (++i < m) { - pi = points[i % n]; - px.shift(); px.push(pi[0]); - py.shift(); py.push(pi[1]); - d3_svg_lineBasisBezier(path, px, py); - } - return path.join(""); -} - -function d3_svg_lineBundle(points, tension) { - var n = points.length - 1, - x0 = points[0][0], - y0 = points[0][1], - dx = points[n][0] - x0, - dy = points[n][1] - y0, - i = -1, - p, - t; - while (++i <= n) { - p = points[i]; - t = i / n; - p[0] = tension * p[0] + (1 - tension) * (x0 + t * dx); - p[1] = tension * p[1] + (1 - tension) * (y0 + t * dy); - } - return d3_svg_lineBasis(points); -} - -// Returns the dot product of the given four-element vectors. -function d3_svg_lineDot4(a, b) { - return a[0] * b[0] + a[1] * b[1] + a[2] * b[2] + a[3] * b[3]; -} - -// Matrix to transform basis (b-spline) control points to bezier -// control points. Derived from FvD 11.2.8. -var d3_svg_lineBasisBezier1 = [0, 2/3, 1/3, 0], - d3_svg_lineBasisBezier2 = [0, 1/3, 2/3, 0], - d3_svg_lineBasisBezier3 = [0, 1/6, 2/3, 1/6]; - -// Pushes a "C" Bézier curve onto the specified path array, given the -// two specified four-element arrays which define the control points. -function d3_svg_lineBasisBezier(path, x, y) { - path.push( - "C", d3_svg_lineDot4(d3_svg_lineBasisBezier1, x), - ",", d3_svg_lineDot4(d3_svg_lineBasisBezier1, y), - ",", d3_svg_lineDot4(d3_svg_lineBasisBezier2, x), - ",", d3_svg_lineDot4(d3_svg_lineBasisBezier2, y), - ",", d3_svg_lineDot4(d3_svg_lineBasisBezier3, x), - ",", d3_svg_lineDot4(d3_svg_lineBasisBezier3, y)); -} - -// Computes the slope from points p0 to p1. -function d3_svg_lineSlope(p0, p1) { - return (p1[1] - p0[1]) / (p1[0] - p0[0]); -} - -// Compute three-point differences for the given points. -// http://en.wikipedia.org/wiki/Cubic_Hermite_spline#Finite_difference -function d3_svg_lineFiniteDifferences(points) { - var i = 0, - j = points.length - 1, - m = [], - p0 = points[0], - p1 = points[1], - d = m[0] = d3_svg_lineSlope(p0, p1); - while (++i < j) { - m[i] = d + (d = d3_svg_lineSlope(p0 = p1, p1 = points[i + 1])); - } - m[i] = d; - return m; -} - -// Interpolates the given points using Fritsch-Carlson Monotone cubic Hermite -// interpolation. Returns an array of tangent vectors. For details, see -// http://en.wikipedia.org/wiki/Monotone_cubic_interpolation -function d3_svg_lineMonotoneTangents(points) { - var tangents = [], - d, - a, - b, - s, - m = d3_svg_lineFiniteDifferences(points), - i = -1, - j = points.length - 1; - - // The first two steps are done by computing finite-differences: - // 1. Compute the slopes of the secant lines between successive points. - // 2. Initialize the tangents at every point as the average of the secants. - - // Then, for each segment… - while (++i < j) { - d = d3_svg_lineSlope(points[i], points[i + 1]); - - // 3. If two successive yk = y{k + 1} are equal (i.e., d is zero), then set - // mk = m{k + 1} = 0 as the spline connecting these points must be flat to - // preserve monotonicity. Ignore step 4 and 5 for those k. - - if (Math.abs(d) < 1e-6) { - m[i] = m[i + 1] = 0; - } else { - // 4. Let ak = mk / dk and bk = m{k + 1} / dk. - a = m[i] / d; - b = m[i + 1] / d; - - // 5. Prevent overshoot and ensure monotonicity by restricting the - // magnitude of vector <ak, bk> to a circle of radius 3. - s = a * a + b * b; - if (s > 9) { - s = d * 3 / Math.sqrt(s); - m[i] = s * a; - m[i + 1] = s * b; - } - } - } - - // Compute the normalized tangent vector from the slopes. Note that if x is - // not monotonic, it's possible that the slope will be infinite, so we protect - // against NaN by setting the coordinate to zero. - i = -1; while (++i <= j) { - s = (points[Math.min(j, i + 1)][0] - points[Math.max(0, i - 1)][0]) - / (6 * (1 + m[i] * m[i])); - tangents.push([s || 0, m[i] * s || 0]); - } - - return tangents; -} - -function d3_svg_lineMonotone(points) { - return points.length < 3 - ? d3_svg_lineLinear(points) - : points[0] + - d3_svg_lineHermite(points, d3_svg_lineMonotoneTangents(points)); -} -d3.svg.line.radial = function() { - var line = d3_svg_line(d3_svg_lineRadial); - line.radius = line.x, delete line.x; - line.angle = line.y, delete line.y; - return line; -}; - -function d3_svg_lineRadial(points) { - var point, - i = -1, - n = points.length, - r, - a; - while (++i < n) { - point = points[i]; - r = point[0]; - a = point[1] + d3_svg_arcOffset; - point[0] = r * Math.cos(a); - point[1] = r * Math.sin(a); - } - return points; -} -function d3_svg_area(projection) { - var x0 = d3_svg_lineX, - x1 = d3_svg_lineX, - y0 = 0, - y1 = d3_svg_lineY, - interpolate = "linear", - interpolator = d3_svg_lineInterpolators[interpolate], - tension = .7; - - function area(d) { - if (d.length < 1) return null; - var points0 = d3_svg_linePoints(this, d, x0, y0), - points1 = d3_svg_linePoints(this, d, x0 === x1 ? d3_svg_areaX(points0) : x1, y0 === y1 ? d3_svg_areaY(points0) : y1); - return "M" + interpolator(projection(points1), tension) - + "L" + interpolator(projection(points0.reverse()), tension) - + "Z"; - } - - area.x = function(x) { - if (!arguments.length) return x1; - x0 = x1 = x; - return area; - }; - - area.x0 = function(x) { - if (!arguments.length) return x0; - x0 = x; - return area; - }; - - area.x1 = function(x) { - if (!arguments.length) return x1; - x1 = x; - return area; - }; - - area.y = function(y) { - if (!arguments.length) return y1; - y0 = y1 = y; - return area; - }; - - area.y0 = function(y) { - if (!arguments.length) return y0; - y0 = y; - return area; - }; - - area.y1 = function(y) { - if (!arguments.length) return y1; - y1 = y; - return area; - }; - - area.interpolate = function(x) { - if (!arguments.length) return interpolate; - interpolator = d3_svg_lineInterpolators[interpolate = x]; - return area; - }; - - area.tension = function(x) { - if (!arguments.length) return tension; - tension = x; - return area; - }; - - return area; -} - -d3.svg.area = function() { - return d3_svg_area(Object); -}; - -function d3_svg_areaX(points) { - return function(d, i) { - return points[i][0]; - }; -} - -function d3_svg_areaY(points) { - return function(d, i) { - return points[i][1]; - }; -} -d3.svg.area.radial = function() { - var area = d3_svg_area(d3_svg_lineRadial); - area.radius = area.x, delete area.x; - area.innerRadius = area.x0, delete area.x0; - area.outerRadius = area.x1, delete area.x1; - area.angle = area.y, delete area.y; - area.startAngle = area.y0, delete area.y0; - area.endAngle = area.y1, delete area.y1; - return area; -}; -d3.svg.chord = function() { - var source = d3_svg_chordSource, - target = d3_svg_chordTarget, - radius = d3_svg_chordRadius, - startAngle = d3_svg_arcStartAngle, - endAngle = d3_svg_arcEndAngle; - - // TODO Allow control point to be customized. - - function chord(d, i) { - var s = subgroup(this, source, d, i), - t = subgroup(this, target, d, i); - return "M" + s.p0 - + arc(s.r, s.p1) + (equals(s, t) - ? curve(s.r, s.p1, s.r, s.p0) - : curve(s.r, s.p1, t.r, t.p0) - + arc(t.r, t.p1) - + curve(t.r, t.p1, s.r, s.p0)) - + "Z"; - } - - function subgroup(self, f, d, i) { - var subgroup = f.call(self, d, i), - r = radius.call(self, subgroup, i), - a0 = startAngle.call(self, subgroup, i) + d3_svg_arcOffset, - a1 = endAngle.call(self, subgroup, i) + d3_svg_arcOffset; - return { - r: r, - a0: a0, - a1: a1, - p0: [r * Math.cos(a0), r * Math.sin(a0)], - p1: [r * Math.cos(a1), r * Math.sin(a1)] - }; - } - - function equals(a, b) { - return a.a0 == b.a0 && a.a1 == b.a1; - } - - function arc(r, p) { - return "A" + r + "," + r + " 0 0,1 " + p; - } - - function curve(r0, p0, r1, p1) { - return "Q 0,0 " + p1; - } - - chord.radius = function(v) { - if (!arguments.length) return radius; - radius = d3.functor(v); - return chord; - }; - - chord.source = function(v) { - if (!arguments.length) return source; - source = d3.functor(v); - return chord; - }; - - chord.target = function(v) { - if (!arguments.length) return target; - target = d3.functor(v); - return chord; - }; - - chord.startAngle = function(v) { - if (!arguments.length) return startAngle; - startAngle = d3.functor(v); - return chord; - }; - - chord.endAngle = function(v) { - if (!arguments.length) return endAngle; - endAngle = d3.functor(v); - return chord; - }; - - return chord; -}; - -function d3_svg_chordSource(d) { - return d.source; -} - -function d3_svg_chordTarget(d) { - return d.target; -} - -function d3_svg_chordRadius(d) { - return d.radius; -} - -function d3_svg_chordStartAngle(d) { - return d.startAngle; -} - -function d3_svg_chordEndAngle(d) { - return d.endAngle; -} -d3.svg.diagonal = function() { - var source = d3_svg_chordSource, - target = d3_svg_chordTarget, - projection = d3_svg_diagonalProjection; - - function diagonal(d, i) { - var p0 = source.call(this, d, i), - p3 = target.call(this, d, i), - m = (p0.y + p3.y) / 2, - p = [p0, {x: p0.x, y: m}, {x: p3.x, y: m}, p3]; - p = p.map(projection); - return "M" + p[0] + "C" + p[1] + " " + p[2] + " " + p[3]; - } - - diagonal.source = function(x) { - if (!arguments.length) return source; - source = d3.functor(x); - return diagonal; - }; - - diagonal.target = function(x) { - if (!arguments.length) return target; - target = d3.functor(x); - return diagonal; - }; - - diagonal.projection = function(x) { - if (!arguments.length) return projection; - projection = x; - return diagonal; - }; - - return diagonal; -}; - -function d3_svg_diagonalProjection(d) { - return [d.x, d.y]; -} -d3.svg.diagonal.radial = function() { - var diagonal = d3.svg.diagonal(), - projection = d3_svg_diagonalProjection, - projection_ = diagonal.projection; - - diagonal.projection = function(x) { - return arguments.length - ? projection_(d3_svg_diagonalRadialProjection(projection = x)) - : projection; - }; - - return diagonal; -}; - -function d3_svg_diagonalRadialProjection(projection) { - return function() { - var d = projection.apply(this, arguments), - r = d[0], - a = d[1] + d3_svg_arcOffset; - return [r * Math.cos(a), r * Math.sin(a)]; - }; -} -d3.svg.mouse = function(container) { - return d3_svg_mousePoint(container, d3.event); -}; - -// https://bugs.webkit.org/show_bug.cgi?id=44083 -var d3_mouse_bug44083 = /WebKit/.test(navigator.userAgent) ? -1 : 0; - -function d3_svg_mousePoint(container, e) { - var point = (container.ownerSVGElement || container).createSVGPoint(); - if ((d3_mouse_bug44083 < 0) && (window.scrollX || window.scrollY)) { - var svg = d3.select(document.body) - .append("svg:svg") - .style("position", "absolute") - .style("top", 0) - .style("left", 0); - var ctm = svg[0][0].getScreenCTM(); - d3_mouse_bug44083 = !(ctm.f || ctm.e); - svg.remove(); - } - if (d3_mouse_bug44083) { - point.x = e.pageX; - point.y = e.pageY; - } else { - point.x = e.clientX; - point.y = e.clientY; - } - point = point.matrixTransform(container.getScreenCTM().inverse()); - return [point.x, point.y]; -}; -d3.svg.touches = function(container) { - var touches = d3.event.touches; - return touches ? Array.prototype.map.call(touches, function(touch) { - var point = d3_svg_mousePoint(container, touch); - point.identifier = touch.identifier; - return point; - }) : []; -}; -d3.svg.symbol = function() { - var type = d3_svg_symbolType, - size = d3_svg_symbolSize; - - function symbol(d, i) { - return (d3_svg_symbols[type.call(this, d, i)] - || d3_svg_symbols.circle) - (size.call(this, d, i)); - } - - symbol.type = function(x) { - if (!arguments.length) return type; - type = d3.functor(x); - return symbol; - }; - - // size of symbol in square pixels - symbol.size = function(x) { - if (!arguments.length) return size; - size = d3.functor(x); - return symbol; - }; - - return symbol; -}; - -function d3_svg_symbolSize() { - return 64; -} - -function d3_svg_symbolType() { - return "circle"; -} - -// TODO cross-diagonal? -var d3_svg_symbols = { - "circle": function(size) { - var r = Math.sqrt(size / Math.PI); - return "M0," + r - + "A" + r + "," + r + " 0 1,1 0," + (-r) - + "A" + r + "," + r + " 0 1,1 0," + r - + "Z"; - }, - "cross": function(size) { - var r = Math.sqrt(size / 5) / 2; - return "M" + -3 * r + "," + -r - + "H" + -r - + "V" + -3 * r - + "H" + r - + "V" + -r - + "H" + 3 * r - + "V" + r - + "H" + r - + "V" + 3 * r - + "H" + -r - + "V" + r - + "H" + -3 * r - + "Z"; - }, - "diamond": function(size) { - var ry = Math.sqrt(size / (2 * d3_svg_symbolTan30)), - rx = ry * d3_svg_symbolTan30; - return "M0," + -ry - + "L" + rx + ",0" - + " 0," + ry - + " " + -rx + ",0" - + "Z"; - }, - "square": function(size) { - var r = Math.sqrt(size) / 2; - return "M" + -r + "," + -r - + "L" + r + "," + -r - + " " + r + "," + r - + " " + -r + "," + r - + "Z"; - }, - "triangle-down": function(size) { - var rx = Math.sqrt(size / d3_svg_symbolSqrt3), - ry = rx * d3_svg_symbolSqrt3 / 2; - return "M0," + ry - + "L" + rx +"," + -ry - + " " + -rx + "," + -ry - + "Z"; - }, - "triangle-up": function(size) { - var rx = Math.sqrt(size / d3_svg_symbolSqrt3), - ry = rx * d3_svg_symbolSqrt3 / 2; - return "M0," + -ry - + "L" + rx +"," + ry - + " " + -rx + "," + ry - + "Z"; - } -}; - -d3.svg.symbolTypes = d3.keys(d3_svg_symbols); - -var d3_svg_symbolSqrt3 = Math.sqrt(3), - d3_svg_symbolTan30 = Math.tan(30 * Math.PI / 180); -d3.svg.axis = function() { - var scale = d3.scale.linear(), - orient = "bottom", - tickMajorSize = 6, - tickMinorSize = 6, - tickEndSize = 6, - tickPadding = 3, - tickArguments_ = [10], - tickFormat_, - tickSubdivide = 0; - - function axis(selection) { - selection.each(function(d, i, j) { - var g = d3.select(this); - - // Ticks. - var ticks = scale.ticks.apply(scale, tickArguments_), - tickFormat = tickFormat_ == null ? scale.tickFormat.apply(scale, tickArguments_) : tickFormat_; - - // Minor ticks. - var subticks = d3_svg_axisSubdivide(scale, ticks, tickSubdivide), - subtick = g.selectAll(".minor").data(subticks, String), - subtickEnter = subtick.enter().insert("svg:line", "g").attr("class", "tick minor").style("opacity", 1e-6), - subtickExit = transition(subtick.exit()).style("opacity", 1e-6).remove(), - subtickUpdate = transition(subtick).style("opacity", 1); - - // Major ticks. - var tick = g.selectAll("g").data(ticks, String), - tickEnter = tick.enter().insert("svg:g", "path").style("opacity", 1e-6), - tickExit = transition(tick.exit()).style("opacity", 1e-6).remove(), - tickUpdate = transition(tick).style("opacity", 1), - tickTransform; - - // Domain. - var range = d3_scaleExtent(scale.range()), - path = g.selectAll(".domain").data([0]), - pathEnter = path.enter().append("svg:path").attr("class", "domain"), - pathUpdate = transition(path); - - // Stash the new scale and grab the old scale. - var scale0 = this.__chart__ || scale; - this.__chart__ = scale.copy(); - - tickEnter.append("svg:line").attr("class", "tick"); - tickEnter.append("svg:text"); - tickUpdate.select("text").text(tickFormat); - - switch (orient) { - case "bottom": { - tickTransform = d3_svg_axisX; - subtickUpdate.attr("y2", tickMinorSize); - tickEnter.select("text").attr("dy", ".71em").attr("text-anchor", "middle"); - tickUpdate.select("line").attr("y2", tickMajorSize); - tickUpdate.select("text").attr("y", Math.max(tickMajorSize, 0) + tickPadding); - pathUpdate.attr("d", "M" + range[0] + "," + tickEndSize + "V0H" + range[1] + "V" + tickEndSize); - break; - } - case "top": { - tickTransform = d3_svg_axisX; - subtickUpdate.attr("y2", -tickMinorSize); - tickEnter.select("text").attr("text-anchor", "middle"); - tickUpdate.select("line").attr("y2", -tickMajorSize); - tickUpdate.select("text").attr("y", -(Math.max(tickMajorSize, 0) + tickPadding)); - pathUpdate.attr("d", "M" + range[0] + "," + -tickEndSize + "V0H" + range[1] + "V" + -tickEndSize); - break; - } - case "left": { - tickTransform = d3_svg_axisY; - subtickUpdate.attr("x2", -tickMinorSize); - tickEnter.select("text").attr("dy", ".32em").attr("text-anchor", "end"); - tickUpdate.select("line").attr("x2", -tickMajorSize); - tickUpdate.select("text").attr("x", -(Math.max(tickMajorSize, 0) + tickPadding)); - pathUpdate.attr("d", "M" + -tickEndSize + "," + range[0] + "H0V" + range[1] + "H" + -tickEndSize); - break; - } - case "right": { - tickTransform = d3_svg_axisY; - subtickUpdate.attr("x2", tickMinorSize); - tickEnter.select("text").attr("dy", ".32em"); - tickUpdate.select("line").attr("x2", tickMajorSize); - tickUpdate.select("text").attr("x", Math.max(tickMajorSize, 0) + tickPadding); - pathUpdate.attr("d", "M" + tickEndSize + "," + range[0] + "H0V" + range[1] + "H" + tickEndSize); - break; - } - } - - tickEnter.call(tickTransform, scale0); - tickUpdate.call(tickTransform, scale); - tickExit.call(tickTransform, scale); - - subtickEnter.call(tickTransform, scale0); - subtickUpdate.call(tickTransform, scale); - subtickExit.call(tickTransform, scale); - - function transition(o) { - return selection.delay ? o.transition() - .delay(selection[j][i].delay) - .duration(selection[j][i].duration) - .ease(selection.ease()) : o; - } - }); - } - - axis.scale = function(x) { - if (!arguments.length) return scale; - scale = x; - return axis; - }; - - axis.orient = function(x) { - if (!arguments.length) return orient; - orient = x; - return axis; - }; - - axis.ticks = function() { - if (!arguments.length) return tickArguments_; - tickArguments_ = arguments; - return axis; - }; - - axis.tickFormat = function(x) { - if (!arguments.length) return tickFormat_; - tickFormat_ = x; - return axis; - }; - - axis.tickSize = function(x, y, z) { - if (!arguments.length) return tickMajorSize; - var n = arguments.length - 1; - tickMajorSize = +x; - tickMinorSize = n > 1 ? +y : tickMajorSize; - tickEndSize = n > 0 ? +arguments[n] : tickMajorSize; - return axis; - }; - - axis.tickPadding = function(x) { - if (!arguments.length) return tickPadding; - tickPadding = +x; - return axis; - }; - - axis.tickSubdivide = function(x) { - if (!arguments.length) return tickSubdivide; - tickSubdivide = +x; - return axis; - }; - - return axis; -}; - -function d3_svg_axisX(selection, x) { - selection.attr("transform", function(d) { return "translate(" + x(d) + ",0)"; }); -} - -function d3_svg_axisY(selection, y) { - selection.attr("transform", function(d) { return "translate(0," + y(d) + ")"; }); -} - -function d3_svg_axisSubdivide(scale, ticks, m) { - subticks = []; - if (m && ticks.length > 1) { - var extent = d3_scaleExtent(scale.domain()), - subticks, - i = -1, - n = ticks.length, - d = (ticks[1] - ticks[0]) / ++m, - j, - v; - while (++i < n) { - for (j = m; --j > 0;) { - if ((v = +ticks[i] - j * d) >= extent[0]) { - subticks.push(v); - } - } - } - for (--i, j = 0; ++j < m && (v = +ticks[i] + j * d) < extent[1];) { - subticks.push(v); - } - } - return subticks; -} -d3.behavior = {}; -d3.behavior.drag = function() { - var event = d3.dispatch("drag", "dragstart", "dragend"); - - function drag() { - this - .on("mousedown.drag", mousedown) - .on("touchstart.drag", mousedown); - - d3.select(window) - .on("mousemove.drag", d3_behavior_dragMove) - .on("touchmove.drag", d3_behavior_dragMove) - .on("mouseup.drag", d3_behavior_dragUp, true) - .on("touchend.drag", d3_behavior_dragUp, true) - .on("click.drag", d3_behavior_dragClick, true); - } - - // snapshot the local context for subsequent dispatch - function start() { - d3_behavior_dragEvent = event; - d3_behavior_dragOffset = d3_behavior_dragPoint((d3_behavior_dragTarget = this).parentNode); - d3_behavior_dragMoved = 0; - d3_behavior_dragArguments = arguments; - } - - function mousedown() { - start.apply(this, arguments); - d3_behavior_dragDispatch("dragstart"); - } - - drag.on = function(type, listener) { - event[type].add(listener); - return drag; - }; - - return drag; -}; - -var d3_behavior_dragEvent, - d3_behavior_dragTarget, - d3_behavior_dragArguments, - d3_behavior_dragOffset, - d3_behavior_dragMoved, - d3_behavior_dragStopClick; - -function d3_behavior_dragDispatch(type) { - var o = d3.event, p = d3_behavior_dragTarget.parentNode, dx = 0, dy = 0; - - if (p) { - p = d3_behavior_dragPoint(p); - dx = p[0] - d3_behavior_dragOffset[0]; - dy = p[1] - d3_behavior_dragOffset[1]; - d3_behavior_dragOffset = p; - d3_behavior_dragMoved |= dx | dy; - } - - try { - d3.event = {dx: dx, dy: dy}; - d3_behavior_dragEvent[type].dispatch.apply(d3_behavior_dragTarget, d3_behavior_dragArguments); - } finally { - d3.event = o; - } - - o.preventDefault(); -} - -function d3_behavior_dragPoint(container) { - return d3.event.touches - ? d3.svg.touches(container)[0] - : d3.svg.mouse(container); -} - -function d3_behavior_dragMove() { - if (!d3_behavior_dragTarget) return; - var parent = d3_behavior_dragTarget.parentNode; - - // O NOES! The drag element was removed from the DOM. - if (!parent) return d3_behavior_dragUp(); - - d3_behavior_dragDispatch("drag"); - d3_behavior_dragCancel(); -} - -function d3_behavior_dragUp() { - if (!d3_behavior_dragTarget) return; - d3_behavior_dragDispatch("dragend"); - d3_behavior_dragTarget = null; - - // If the node was moved, prevent the mouseup from propagating. - // Also prevent the subsequent click from propagating (e.g., for anchors). - if (d3_behavior_dragMoved) { - d3_behavior_dragStopClick = true; - d3_behavior_dragCancel(); - } -} - -function d3_behavior_dragClick() { - if (d3_behavior_dragStopClick) { - d3_behavior_dragCancel(); - d3_behavior_dragStopClick = false; - } -} - -function d3_behavior_dragCancel() { - d3.event.stopPropagation(); - d3.event.preventDefault(); -} -// TODO unbind zoom behavior? -// TODO unbind listener? -d3.behavior.zoom = function() { - var xyz = [0, 0, 0], - event = d3.dispatch("zoom"); - - function zoom() { - this - .on("mousedown.zoom", mousedown) - .on("mousewheel.zoom", mousewheel) - .on("DOMMouseScroll.zoom", mousewheel) - .on("dblclick.zoom", dblclick) - .on("touchstart.zoom", touchstart); - - d3.select(window) - .on("mousemove.zoom", d3_behavior_zoomMousemove) - .on("mouseup.zoom", d3_behavior_zoomMouseup) - .on("touchmove.zoom", d3_behavior_zoomTouchmove) - .on("touchend.zoom", d3_behavior_zoomTouchup) - .on("click.zoom", d3_behavior_zoomClick, true); - } - - // snapshot the local context for subsequent dispatch - function start() { - d3_behavior_zoomXyz = xyz; - d3_behavior_zoomDispatch = event.zoom.dispatch; - d3_behavior_zoomTarget = this; - d3_behavior_zoomArguments = arguments; - } - - function mousedown() { - start.apply(this, arguments); - d3_behavior_zoomPanning = d3_behavior_zoomLocation(d3.svg.mouse(d3_behavior_zoomTarget)); - d3_behavior_zoomMoved = false; - d3.event.preventDefault(); - window.focus(); - } - - // store starting mouse location - function mousewheel() { - start.apply(this, arguments); - if (!d3_behavior_zoomZooming) d3_behavior_zoomZooming = d3_behavior_zoomLocation(d3.svg.mouse(d3_behavior_zoomTarget)); - d3_behavior_zoomTo(d3_behavior_zoomDelta() + xyz[2], d3.svg.mouse(d3_behavior_zoomTarget), d3_behavior_zoomZooming); - } - - function dblclick() { - start.apply(this, arguments); - var mouse = d3.svg.mouse(d3_behavior_zoomTarget); - d3_behavior_zoomTo(d3.event.shiftKey ? Math.ceil(xyz[2] - 1) : Math.floor(xyz[2] + 1), mouse, d3_behavior_zoomLocation(mouse)); - } - - // doubletap detection - function touchstart() { - start.apply(this, arguments); - var touches = d3_behavior_zoomTouchup(), - touch, - now = Date.now(); - if ((touches.length === 1) && (now - d3_behavior_zoomLast < 300)) { - d3_behavior_zoomTo(1 + Math.floor(xyz[2]), touch = touches[0], d3_behavior_zoomLocations[touch.identifier]); - } - d3_behavior_zoomLast = now; - } - - zoom.on = function(type, listener) { - event[type].add(listener); - return zoom; - }; - - return zoom; -}; - -var d3_behavior_zoomDiv, - d3_behavior_zoomPanning, - d3_behavior_zoomZooming, - d3_behavior_zoomLocations = {}, // identifier -> location - d3_behavior_zoomLast = 0, - d3_behavior_zoomXyz, - d3_behavior_zoomDispatch, - d3_behavior_zoomTarget, - d3_behavior_zoomArguments, - d3_behavior_zoomMoved, - d3_behavior_zoomStopClick; - -function d3_behavior_zoomLocation(point) { - return [ - point[0] - d3_behavior_zoomXyz[0], - point[1] - d3_behavior_zoomXyz[1], - d3_behavior_zoomXyz[2] - ]; -} - -// detect the pixels that would be scrolled by this wheel event -function d3_behavior_zoomDelta() { - - // mousewheel events are totally broken! - // https://bugs.webkit.org/show_bug.cgi?id=40441 - // not only that, but Chrome and Safari differ in re. to acceleration! - if (!d3_behavior_zoomDiv) { - d3_behavior_zoomDiv = d3.select("body").append("div") - .style("visibility", "hidden") - .style("top", 0) - .style("height", 0) - .style("width", 0) - .style("overflow-y", "scroll") - .append("div") - .style("height", "2000px") - .node().parentNode; - } - - var e = d3.event, delta; - try { - d3_behavior_zoomDiv.scrollTop = 1000; - d3_behavior_zoomDiv.dispatchEvent(e); - delta = 1000 - d3_behavior_zoomDiv.scrollTop; - } catch (error) { - delta = e.wheelDelta || (-e.detail * 5); - } - - return delta * .005; -} - -// Note: Since we don't rotate, it's possible for the touches to become -// slightly detached from their original positions. Thus, we recompute the -// touch points on touchend as well as touchstart! -function d3_behavior_zoomTouchup() { - var touches = d3.svg.touches(d3_behavior_zoomTarget), - i = -1, - n = touches.length, - touch; - while (++i < n) d3_behavior_zoomLocations[(touch = touches[i]).identifier] = d3_behavior_zoomLocation(touch); - return touches; -} - -function d3_behavior_zoomTouchmove() { - var touches = d3.svg.touches(d3_behavior_zoomTarget); - switch (touches.length) { - - // single-touch pan - case 1: { - var touch = touches[0]; - d3_behavior_zoomTo(d3_behavior_zoomXyz[2], touch, d3_behavior_zoomLocations[touch.identifier]); - break; - } - - // double-touch pan + zoom - case 2: { - var p0 = touches[0], - p1 = touches[1], - p2 = [(p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2], - l0 = d3_behavior_zoomLocations[p0.identifier], - l1 = d3_behavior_zoomLocations[p1.identifier], - l2 = [(l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2, l0[2]]; - d3_behavior_zoomTo(Math.log(d3.event.scale) / Math.LN2 + l0[2], p2, l2); - break; - } - } -} - -function d3_behavior_zoomMousemove() { - d3_behavior_zoomZooming = null; - if (d3_behavior_zoomPanning) { - d3_behavior_zoomMoved = true; - d3_behavior_zoomTo(d3_behavior_zoomXyz[2], d3.svg.mouse(d3_behavior_zoomTarget), d3_behavior_zoomPanning); - } -} - -function d3_behavior_zoomMouseup() { - if (d3_behavior_zoomPanning) { - if (d3_behavior_zoomMoved) d3_behavior_zoomStopClick = true; - d3_behavior_zoomMousemove(); - d3_behavior_zoomPanning = null; - } -} - -function d3_behavior_zoomClick() { - if (d3_behavior_zoomStopClick) { - d3.event.stopPropagation(); - d3.event.preventDefault(); - d3_behavior_zoomStopClick = false; - } -} - -function d3_behavior_zoomTo(z, x0, x1) { - var K = Math.pow(2, (d3_behavior_zoomXyz[2] = z) - x1[2]), - x = d3_behavior_zoomXyz[0] = x0[0] - K * x1[0], - y = d3_behavior_zoomXyz[1] = x0[1] - K * x1[1], - o = d3.event, // Events can be reentrant (e.g., focus). - k = Math.pow(2, z); - - d3.event = { - scale: k, - translate: [x, y], - transform: function(sx, sy) { - if (sx) transform(sx, x); - if (sy) transform(sy, y); - } - }; - - function transform(scale, o) { - var domain = scale.__domain || (scale.__domain = scale.domain()), - range = scale.range().map(function(v) { return (v - o) / k; }); - scale.domain(domain).domain(range.map(scale.invert)); - } - - try { - d3_behavior_zoomDispatch.apply(d3_behavior_zoomTarget, d3_behavior_zoomArguments); - } finally { - d3.event = o; - } - - o.preventDefault(); -} -})(); diff --git a/rtd_phosphonetx/source/html/demoapp/d3.layout.js b/rtd_phosphonetx/source/html/demoapp/d3.layout.js deleted file mode 100755 index 6cc1d7161677597ae7f718a4c0cafb90a240a56a..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/html/demoapp/d3.layout.js +++ /dev/null @@ -1,1865 +0,0 @@ -(function(){d3.layout = {}; -// Implements hierarchical edge bundling using Holten's algorithm. For each -// input link, a path is computed that travels through the tree, up the parent -// hierarchy to the least common ancestor, and then back down to the destination -// node. Each path is simply an array of nodes. -d3.layout.bundle = function() { - return function(links) { - var paths = [], - i = -1, - n = links.length; - while (++i < n) paths.push(d3_layout_bundlePath(links[i])); - return paths; - }; -}; - -function d3_layout_bundlePath(link) { - var start = link.source, - end = link.target, - lca = d3_layout_bundleLeastCommonAncestor(start, end), - points = [start]; - while (start !== lca) { - start = start.parent; - points.push(start); - } - var k = points.length; - while (end !== lca) { - points.splice(k, 0, end); - end = end.parent; - } - return points; -} - -function d3_layout_bundleAncestors(node) { - var ancestors = [], - parent = node.parent; - while (parent != null) { - ancestors.push(node); - node = parent; - parent = parent.parent; - } - ancestors.push(node); - return ancestors; -} - -function d3_layout_bundleLeastCommonAncestor(a, b) { - if (a === b) return a; - var aNodes = d3_layout_bundleAncestors(a), - bNodes = d3_layout_bundleAncestors(b), - aNode = aNodes.pop(), - bNode = bNodes.pop(), - sharedNode = null; - while (aNode === bNode) { - sharedNode = aNode; - aNode = aNodes.pop(); - bNode = bNodes.pop(); - } - return sharedNode; -} -d3.layout.chord = function() { - var chord = {}, - chords, - groups, - matrix, - n, - padding = 0, - sortGroups, - sortSubgroups, - sortChords; - - function relayout() { - var subgroups = {}, - groupSums = [], - groupIndex = d3.range(n), - subgroupIndex = [], - k, - x, - x0, - i, - j; - - chords = []; - groups = []; - - // Compute the sum. - k = 0, i = -1; while (++i < n) { - x = 0, j = -1; while (++j < n) { - x += matrix[i][j]; - } - groupSums.push(x); - subgroupIndex.push(d3.range(n)); - k += x; - } - - // Sort groups… - if (sortGroups) { - groupIndex.sort(function(a, b) { - return sortGroups(groupSums[a], groupSums[b]); - }); - } - - // Sort subgroups… - if (sortSubgroups) { - subgroupIndex.forEach(function(d, i) { - d.sort(function(a, b) { - return sortSubgroups(matrix[i][a], matrix[i][b]); - }); - }); - } - - // Convert the sum to scaling factor for [0, 2pi]. - // TODO Allow start and end angle to be specified. - // TODO Allow padding to be specified as percentage? - k = (2 * Math.PI - padding * n) / k; - - // Compute the start and end angle for each group and subgroup. - x = 0, i = -1; while (++i < n) { - x0 = x, j = -1; while (++j < n) { - var di = groupIndex[i], - dj = subgroupIndex[i][j], - v = matrix[di][dj]; - subgroups[di + "-" + dj] = { - index: di, - subindex: dj, - startAngle: x, - endAngle: x += v * k, - value: v - }; - } - groups.push({ - index: di, - startAngle: x0, - endAngle: x, - value: (x - x0) / k - }); - x += padding; - } - - // Generate chords for each (non-empty) subgroup-subgroup link. - i = -1; while (++i < n) { - j = i - 1; while (++j < n) { - var source = subgroups[i + "-" + j], - target = subgroups[j + "-" + i]; - if (source.value || target.value) { - chords.push(source.value < target.value - ? {source: target, target: source} - : {source: source, target: target}); - } - } - } - - if (sortChords) resort(); - } - - function resort() { - chords.sort(function(a, b) { - return sortChords(a.target.value, b.target.value); - }); - } - - chord.matrix = function(x) { - if (!arguments.length) return matrix; - n = (matrix = x) && matrix.length; - chords = groups = null; - return chord; - }; - - chord.padding = function(x) { - if (!arguments.length) return padding; - padding = x; - chords = groups = null; - return chord; - }; - - chord.sortGroups = function(x) { - if (!arguments.length) return sortGroups; - sortGroups = x; - chords = groups = null; - return chord; - }; - - chord.sortSubgroups = function(x) { - if (!arguments.length) return sortSubgroups; - sortSubgroups = x; - chords = null; - return chord; - }; - - chord.sortChords = function(x) { - if (!arguments.length) return sortChords; - sortChords = x; - if (chords) resort(); - return chord; - }; - - chord.chords = function() { - if (!chords) relayout(); - return chords; - }; - - chord.groups = function() { - if (!groups) relayout(); - return groups; - }; - - return chord; -}; -// A rudimentary force layout using Gauss-Seidel. -d3.layout.force = function() { - var force = {}, - event = d3.dispatch("tick"), - size = [1, 1], - drag, - alpha, - friction = .9, - linkDistance = d3_layout_forceLinkDistance, - linkStrength = d3_layout_forceLinkStrength, - charge = -30, - gravity = .1, - theta = .8, - interval, - nodes = [], - links = [], - distances, - strengths; - - function repulse(node, kc) { - return function(quad, x1, y1, x2, y2) { - if (quad.point !== node) { - var dx = quad.cx - node.x, - dy = quad.cy - node.y, - dn = 1 / Math.sqrt(dx * dx + dy * dy); - - /* Barnes-Hut criterion. */ - if ((x2 - x1) * dn < theta) { - var k = kc * quad.count * dn * dn; - node.px -= dx * k; - node.py -= dy * k; - return true; - } - - if (quad.point && isFinite(dn)) { - var k = kc * dn * dn; - node.px -= dx * k; - node.py -= dy * k; - } - } - }; - } - - function tick() { - var n = nodes.length, - m = links.length, - q, - i, // current index - o, // current object - s, // current source - t, // current target - l, // current distance - k, // current force - x, // x-distance - y; // y-distance - - // gauss-seidel relaxation for links - for (i = 0; i < m; ++i) { - o = links[i]; - s = o.source; - t = o.target; - x = t.x - s.x; - y = t.y - s.y; - if (l = (x * x + y * y)) { - l = alpha * strengths[i] * ((l = Math.sqrt(l)) - distances[i]) / l; - x *= l; - y *= l; - t.x -= x * (k = s.weight / (t.weight + s.weight)); - t.y -= y * k; - s.x += x * (k = 1 - k); - s.y += y * k; - } - } - - // apply gravity forces - if (k = alpha * gravity) { - x = size[0] / 2; - y = size[1] / 2; - i = -1; if (k) while (++i < n) { - o = nodes[i]; - o.x += (x - o.x) * k; - o.y += (y - o.y) * k; - } - } - - // compute quadtree center of mass and apply charge forces - if (k = alpha * charge) { - d3_layout_forceAccumulate(q = d3.geom.quadtree(nodes)); - i = -1; while (++i < n) { - if (!(o = nodes[i]).fixed) { - q.visit(repulse(o, k)); - } - } - } - - // position verlet integration - i = -1; while (++i < n) { - o = nodes[i]; - if (o.fixed) { - o.x = o.px; - o.y = o.py; - } else { - o.x -= (o.px - (o.px = o.x)) * friction; - o.y -= (o.py - (o.py = o.y)) * friction; - } - } - - event.tick.dispatch({type: "tick", alpha: alpha}); - - // simulated annealing, basically - return (alpha *= .99) < .005; - } - - force.on = function(type, listener) { - event[type].add(listener); - return force; - }; - - force.nodes = function(x) { - if (!arguments.length) return nodes; - nodes = x; - return force; - }; - - force.links = function(x) { - if (!arguments.length) return links; - links = x; - return force; - }; - - force.size = function(x) { - if (!arguments.length) return size; - size = x; - return force; - }; - - force.linkDistance = function(x) { - if (!arguments.length) return linkDistance; - linkDistance = d3.functor(x); - return force; - }; - - // For backwards-compatibility. - force.distance = force.linkDistance; - - force.linkStrength = function(x) { - if (!arguments.length) return linkStrength; - linkStrength = d3.functor(x); - return force; - }; - - force.friction = function(x) { - if (!arguments.length) return friction; - friction = x; - return force; - }; - - force.charge = function(x) { - if (!arguments.length) return charge; - charge = x; - return force; - }; - - force.gravity = function(x) { - if (!arguments.length) return gravity; - gravity = x; - return force; - }; - - force.theta = function(x) { - if (!arguments.length) return theta; - theta = x; - return force; - }; - - force.start = function() { - var i, - j, - n = nodes.length, - m = links.length, - w = size[0], - h = size[1], - neighbors, - o; - - for (i = 0; i < n; ++i) { - (o = nodes[i]).index = i; - o.weight = 0; - } - - distances = []; - strengths = []; - for (i = 0; i < m; ++i) { - o = links[i]; - if (typeof o.source == "number") o.source = nodes[o.source]; - if (typeof o.target == "number") o.target = nodes[o.target]; - distances[i] = linkDistance.call(this, o, i); - strengths[i] = linkStrength.call(this, o, i); - ++o.source.weight; - ++o.target.weight; - } - - for (i = 0; i < n; ++i) { - o = nodes[i]; - if (isNaN(o.x)) o.x = position("x", w); - if (isNaN(o.y)) o.y = position("y", h); - if (isNaN(o.px)) o.px = o.x; - if (isNaN(o.py)) o.py = o.y; - } - - // initialize node position based on first neighbor - function position(dimension, size) { - var neighbors = neighbor(i), - j = -1, - m = neighbors.length, - x; - while (++j < m) if (!isNaN(x = neighbors[j][dimension])) return x; - return Math.random() * size; - } - - // initialize neighbors lazily - function neighbor() { - if (!neighbors) { - neighbors = []; - for (j = 0; j < n; ++j) { - neighbors[j] = []; - } - for (j = 0; j < m; ++j) { - var o = links[j]; - neighbors[o.source.index].push(o.target); - neighbors[o.target.index].push(o.source); - } - } - return neighbors[i]; - } - - return force.resume(); - }; - - force.resume = function() { - alpha = .1; - d3.timer(tick); - return force; - }; - - force.stop = function() { - alpha = 0; - return force; - }; - - // use `node.call(force.drag)` to make nodes draggable - force.drag = function() { - if (!drag) drag = d3.behavior.drag() - .on("dragstart", dragstart) - .on("drag", d3_layout_forceDrag) - .on("dragend", d3_layout_forceDragEnd); - - this.on("mouseover.force", d3_layout_forceDragOver) - .on("mouseout.force", d3_layout_forceDragOut) - .call(drag); - }; - - function dragstart(d) { - d3_layout_forceDragOver(d3_layout_forceDragNode = d); - d3_layout_forceDragForce = force; - } - - return force; -}; - -var d3_layout_forceDragForce, - d3_layout_forceDragNode; - -function d3_layout_forceDragOver(d) { - d.fixed |= 2; -} - -function d3_layout_forceDragOut(d) { - if (d !== d3_layout_forceDragNode) d.fixed &= 1; -} - -function d3_layout_forceDragEnd() { - d3_layout_forceDrag(); - d3_layout_forceDragNode.fixed &= 1; - d3_layout_forceDragForce = d3_layout_forceDragNode = null; -} - -function d3_layout_forceDrag() { - d3_layout_forceDragNode.px += d3.event.dx; - d3_layout_forceDragNode.py += d3.event.dy; - d3_layout_forceDragForce.resume(); // restart annealing -} - -function d3_layout_forceAccumulate(quad) { - var cx = 0, - cy = 0; - quad.count = 0; - if (!quad.leaf) { - var nodes = quad.nodes, - n = nodes.length, - i = -1, - c; - while (++i < n) { - c = nodes[i]; - if (c == null) continue; - d3_layout_forceAccumulate(c); - quad.count += c.count; - cx += c.count * c.cx; - cy += c.count * c.cy; - } - } - if (quad.point) { - // jitter internal nodes that are coincident - if (!quad.leaf) { - quad.point.x += Math.random() - .5; - quad.point.y += Math.random() - .5; - } - quad.count++; - cx += quad.point.x; - cy += quad.point.y; - } - quad.cx = cx / quad.count; - quad.cy = cy / quad.count; -} - -function d3_layout_forceLinkDistance(link) { - return 20; -} - -function d3_layout_forceLinkStrength(link) { - return 1; -} -d3.layout.partition = function() { - var hierarchy = d3.layout.hierarchy(), - size = [1, 1]; // width, height - - function position(node, x, dx, dy) { - var children = node.children; - node.x = x; - node.y = node.depth * dy; - node.dx = dx; - node.dy = dy; - if (children) { - var i = -1, - n = children.length, - c, - d; - dx = node.value ? dx / node.value : 0; - while (++i < n) { - position(c = children[i], x, d = c.value * dx, dy); - x += d; - } - } - } - - function depth(node) { - var children = node.children, - d = 0; - if (children) { - var i = -1, - n = children.length; - while (++i < n) d = Math.max(d, depth(children[i])); - } - return 1 + d; - } - - function partition(d, i) { - var nodes = hierarchy.call(this, d, i); - position(nodes[0], 0, size[0], size[1] / depth(nodes[0])); - return nodes; - } - - partition.size = function(x) { - if (!arguments.length) return size; - size = x; - return partition; - }; - - return d3_layout_hierarchyRebind(partition, hierarchy); -}; -d3.layout.pie = function() { - var value = Number, - sort = null, - startAngle = 0, - endAngle = 2 * Math.PI; - - function pie(data, i) { - - // Compute the start angle. - var a = +(typeof startAngle === "function" - ? startAngle.apply(this, arguments) - : startAngle); - - // Compute the angular range (end - start). - var k = (typeof endAngle === "function" - ? endAngle.apply(this, arguments) - : endAngle) - startAngle; - - // Optionally sort the data. - var index = d3.range(data.length); - if (sort != null) index.sort(function(i, j) { - return sort(data[i], data[j]); - }); - - // Compute the numeric values for each data element. - var values = data.map(value); - - // Convert k into a scale factor from value to angle, using the sum. - k /= values.reduce(function(p, d) { return p + d; }, 0); - - // Compute the arcs! - var arcs = index.map(function(i) { - return { - data: data[i], - value: d = values[i], - startAngle: a, - endAngle: a += d * k - }; - }); - - // Return the arcs in the original data's order. - return data.map(function(d, i) { - return arcs[index[i]]; - }); - } - - /** - * Specifies the value function *x*, which returns a nonnegative numeric value - * for each datum. The default value function is `Number`. The value function - * is passed two arguments: the current datum and the current index. - */ - pie.value = function(x) { - if (!arguments.length) return value; - value = x; - return pie; - }; - - /** - * Specifies a sort comparison operator *x*. The comparator is passed two data - * elements from the data array, a and b; it returns a negative value if a is - * less than b, a positive value if a is greater than b, and zero if a equals - * b. - */ - pie.sort = function(x) { - if (!arguments.length) return sort; - sort = x; - return pie; - }; - - /** - * Specifies the overall start angle of the pie chart. Defaults to 0. The - * start angle can be specified either as a constant or as a function; in the - * case of a function, it is evaluated once per array (as opposed to per - * element). - */ - pie.startAngle = function(x) { - if (!arguments.length) return startAngle; - startAngle = x; - return pie; - }; - - /** - * Specifies the overall end angle of the pie chart. Defaults to 2π. The - * end angle can be specified either as a constant or as a function; in the - * case of a function, it is evaluated once per array (as opposed to per - * element). - */ - pie.endAngle = function(x) { - if (!arguments.length) return endAngle; - endAngle = x; - return pie; - }; - - return pie; -}; -// data is two-dimensional array of x,y; we populate y0 -d3.layout.stack = function() { - var values = Object, - order = d3_layout_stackOrders["default"], - offset = d3_layout_stackOffsets["zero"], - out = d3_layout_stackOut, - x = d3_layout_stackX, - y = d3_layout_stackY; - - function stack(data, index) { - - // Convert series to canonical two-dimensional representation. - var series = data.map(function(d, i) { - return values.call(stack, d, i); - }); - - // Convert each series to canonical [[x,y]] representation. - var points = series.map(function(d, i) { - return d.map(function(v, i) { - return [x.call(stack, v, i), y.call(stack, v, i)]; - }); - }); - - // Compute the order of series, and permute them. - var orders = order.call(stack, points, index); - series = d3.permute(series, orders); - points = d3.permute(points, orders); - - // Compute the baseline… - var offsets = offset.call(stack, points, index); - - // And propagate it to other series. - var n = series.length, - m = series[0].length, - i, - j, - o; - for (j = 0; j < m; ++j) { - out.call(stack, series[0][j], o = offsets[j], points[0][j][1]); - for (i = 1; i < n; ++i) { - out.call(stack, series[i][j], o += points[i - 1][j][1], points[i][j][1]); - } - } - - return data; - } - - stack.values = function(x) { - if (!arguments.length) return values; - values = x; - return stack; - }; - - stack.order = function(x) { - if (!arguments.length) return order; - order = typeof x === "function" ? x : d3_layout_stackOrders[x]; - return stack; - }; - - stack.offset = function(x) { - if (!arguments.length) return offset; - offset = typeof x === "function" ? x : d3_layout_stackOffsets[x]; - return stack; - }; - - stack.x = function(z) { - if (!arguments.length) return x; - x = z; - return stack; - }; - - stack.y = function(z) { - if (!arguments.length) return y; - y = z; - return stack; - }; - - stack.out = function(z) { - if (!arguments.length) return out; - out = z; - return stack; - }; - - return stack; -} - -function d3_layout_stackX(d) { - return d.x; -} - -function d3_layout_stackY(d) { - return d.y; -} - -function d3_layout_stackOut(d, y0, y) { - d.y0 = y0; - d.y = y; -} - -var d3_layout_stackOrders = { - - "inside-out": function(data) { - var n = data.length, - i, - j, - max = data.map(d3_layout_stackMaxIndex), - sums = data.map(d3_layout_stackReduceSum), - index = d3.range(n).sort(function(a, b) { return max[a] - max[b]; }), - top = 0, - bottom = 0, - tops = [], - bottoms = []; - for (i = 0; i < n; ++i) { - j = index[i]; - if (top < bottom) { - top += sums[j]; - tops.push(j); - } else { - bottom += sums[j]; - bottoms.push(j); - } - } - return bottoms.reverse().concat(tops); - }, - - "reverse": function(data) { - return d3.range(data.length).reverse(); - }, - - "default": function(data) { - return d3.range(data.length); - } - -}; - -var d3_layout_stackOffsets = { - - "silhouette": function(data) { - var n = data.length, - m = data[0].length, - sums = [], - max = 0, - i, - j, - o, - y0 = []; - for (j = 0; j < m; ++j) { - for (i = 0, o = 0; i < n; i++) o += data[i][j][1]; - if (o > max) max = o; - sums.push(o); - } - for (j = 0; j < m; ++j) { - y0[j] = (max - sums[j]) / 2; - } - return y0; - }, - - "wiggle": function(data) { - var n = data.length, - x = data[0], - m = x.length, - max = 0, - i, - j, - k, - s1, - s2, - s3, - dx, - o, - o0, - y0 = []; - y0[0] = o = o0 = 0; - for (j = 1; j < m; ++j) { - for (i = 0, s1 = 0; i < n; ++i) s1 += data[i][j][1]; - for (i = 0, s2 = 0, dx = x[j][0] - x[j - 1][0]; i < n; ++i) { - for (k = 0, s3 = (data[i][j][1] - data[i][j - 1][1]) / (2 * dx); k < i; ++k) { - s3 += (data[k][j][1] - data[k][j - 1][1]) / dx; - } - s2 += s3 * data[i][j][1]; - } - y0[j] = o -= s1 ? s2 / s1 * dx : 0; - if (o < o0) o0 = o; - } - for (j = 0; j < m; ++j) y0[j] -= o0; - return y0; - }, - - "expand": function(data) { - var n = data.length, - m = data[0].length, - k = 1 / n, - i, - j, - o, - y0 = []; - for (j = 0; j < m; ++j) { - for (i = 0, o = 0; i < n; i++) o += data[i][j][1]; - if (o) for (i = 0; i < n; i++) data[i][j][1] /= o; - else for (i = 0; i < n; i++) data[i][j][1] = k; - } - for (j = 0; j < m; ++j) y0[j] = 0; - return y0; - }, - - "zero": function(data) { - var j = -1, - m = data[0].length, - y0 = []; - while (++j < m) y0[j] = 0; - return y0; - } - -}; - -function d3_layout_stackMaxIndex(array) { - var i = 1, - j = 0, - v = array[0][1], - k, - n = array.length; - for (; i < n; ++i) { - if ((k = array[i][1]) > v) { - j = i; - v = k; - } - } - return j; -} - -function d3_layout_stackReduceSum(d) { - return d.reduce(d3_layout_stackSum, 0); -} - -function d3_layout_stackSum(p, d) { - return p + d[1]; -} -d3.layout.histogram = function() { - var frequency = true, - valuer = Number, - ranger = d3_layout_histogramRange, - binner = d3_layout_histogramBinSturges; - - function histogram(data, i) { - var bins = [], - values = data.map(valuer, this), - range = ranger.call(this, values, i), - thresholds = binner.call(this, range, values, i), - bin, - i = -1, - n = values.length, - m = thresholds.length - 1, - k = frequency ? 1 : 1 / n, - x; - - // Initialize the bins. - while (++i < m) { - bin = bins[i] = []; - bin.dx = thresholds[i + 1] - (bin.x = thresholds[i]); - bin.y = 0; - } - - // Fill the bins, ignoring values outside the range. - i = -1; while(++i < n) { - x = values[i]; - if ((x >= range[0]) && (x <= range[1])) { - bin = bins[d3.bisect(thresholds, x, 1, m) - 1]; - bin.y += k; - bin.push(data[i]); - } - } - - return bins; - } - - // Specifies how to extract a value from the associated data. The default - // value function is `Number`, which is equivalent to the identity function. - histogram.value = function(x) { - if (!arguments.length) return valuer; - valuer = x; - return histogram; - }; - - // Specifies the range of the histogram. Values outside the specified range - // will be ignored. The argument `x` may be specified either as a two-element - // array representing the minimum and maximum value of the range, or as a - // function that returns the range given the array of values and the current - // index `i`. The default range is the extent (minimum and maximum) of the - // values. - histogram.range = function(x) { - if (!arguments.length) return ranger; - ranger = d3.functor(x); - return histogram; - }; - - // Specifies how to bin values in the histogram. The argument `x` may be - // specified as a number, in which case the range of values will be split - // uniformly into the given number of bins. Or, `x` may be an array of - // threshold values, defining the bins; the specified array must contain the - // rightmost (upper) value, thus specifying n + 1 values for n bins. Or, `x` - // may be a function which is evaluated, being passed the range, the array of - // values, and the current index `i`, returning an array of thresholds. The - // default bin function will divide the values into uniform bins using - // Sturges' formula. - histogram.bins = function(x) { - if (!arguments.length) return binner; - binner = typeof x === "number" - ? function(range) { return d3_layout_histogramBinFixed(range, x); } - : d3.functor(x); - return histogram; - }; - - // Specifies whether the histogram's `y` value is a count (frequency) or a - // probability (density). The default value is true. - histogram.frequency = function(x) { - if (!arguments.length) return frequency; - frequency = !!x; - return histogram; - }; - - return histogram; -}; - -function d3_layout_histogramBinSturges(range, values) { - return d3_layout_histogramBinFixed(range, Math.ceil(Math.log(values.length) / Math.LN2 + 1)); -} - -function d3_layout_histogramBinFixed(range, n) { - var x = -1, - b = +range[0], - m = (range[1] - b) / n, - f = []; - while (++x <= n) f[x] = m * x + b; - return f; -} - -function d3_layout_histogramRange(values) { - return [d3.min(values), d3.max(values)]; -} -d3.layout.hierarchy = function() { - var sort = d3_layout_hierarchySort, - children = d3_layout_hierarchyChildren, - value = d3_layout_hierarchyValue; - - // Recursively compute the node depth and value. - // Also converts the data representation into a standard hierarchy structure. - function recurse(data, depth, nodes) { - var childs = children.call(hierarchy, data, depth), - node = d3_layout_hierarchyInline ? data : {data: data}; - node.depth = depth; - nodes.push(node); - if (childs) { - var i = -1, - n = childs.length, - c = node.children = [], - v = 0, - j = depth + 1; - while (++i < n) { - d = recurse(childs[i], j, nodes); - d.parent = node; - c.push(d); - v += d.value; - } - if (sort) c.sort(sort); - if (value) node.value = v; - } else if (value) { - node.value = +value.call(hierarchy, data, depth) || 0; - } - return node; - } - - // Recursively re-evaluates the node value. - function revalue(node, depth) { - var children = node.children, - v = 0; - if (children) { - var i = -1, - n = children.length, - j = depth + 1; - while (++i < n) v += revalue(children[i], j); - } else if (value) { - v = +value.call(hierarchy, d3_layout_hierarchyInline ? node : node.data, depth) || 0; - } - if (value) node.value = v; - return v; - } - - function hierarchy(d) { - var nodes = []; - recurse(d, 0, nodes); - return nodes; - } - - hierarchy.sort = function(x) { - if (!arguments.length) return sort; - sort = x; - return hierarchy; - }; - - hierarchy.children = function(x) { - if (!arguments.length) return children; - children = x; - return hierarchy; - }; - - hierarchy.value = function(x) { - if (!arguments.length) return value; - value = x; - return hierarchy; - }; - - // Re-evaluates the `value` property for the specified hierarchy. - hierarchy.revalue = function(root) { - revalue(root, 0); - return root; - }; - - return hierarchy; -}; - -// A method assignment helper for hierarchy subclasses. -function d3_layout_hierarchyRebind(object, hierarchy) { - object.sort = d3.rebind(object, hierarchy.sort); - object.children = d3.rebind(object, hierarchy.children); - object.links = d3_layout_hierarchyLinks; - object.value = d3.rebind(object, hierarchy.value); - - // If the new API is used, enabling inlining. - object.nodes = function(d) { - d3_layout_hierarchyInline = true; - return (object.nodes = object)(d); - }; - - return object; -} - -function d3_layout_hierarchyChildren(d) { - return d.children; -} - -function d3_layout_hierarchyValue(d) { - return d.value; -} - -function d3_layout_hierarchySort(a, b) { - return b.value - a.value; -} - -// Returns an array source+target objects for the specified nodes. -function d3_layout_hierarchyLinks(nodes) { - return d3.merge(nodes.map(function(parent) { - return (parent.children || []).map(function(child) { - return {source: parent, target: child}; - }); - })); -} - -// For backwards-compatibility, don't enable inlining by default. -var d3_layout_hierarchyInline = false; -d3.layout.pack = function() { - var hierarchy = d3.layout.hierarchy().sort(d3_layout_packSort), - size = [1, 1]; - - function pack(d, i) { - var nodes = hierarchy.call(this, d, i), - root = nodes[0]; - - // Recursively compute the layout. - root.x = 0; - root.y = 0; - d3_layout_packTree(root); - - // Scale the layout to fit the requested size. - var w = size[0], - h = size[1], - k = 1 / Math.max(2 * root.r / w, 2 * root.r / h); - d3_layout_packTransform(root, w / 2, h / 2, k); - - return nodes; - } - - pack.size = function(x) { - if (!arguments.length) return size; - size = x; - return pack; - }; - - return d3_layout_hierarchyRebind(pack, hierarchy); -}; - -function d3_layout_packSort(a, b) { - return a.value - b.value; -} - -function d3_layout_packInsert(a, b) { - var c = a._pack_next; - a._pack_next = b; - b._pack_prev = a; - b._pack_next = c; - c._pack_prev = b; -} - -function d3_layout_packSplice(a, b) { - a._pack_next = b; - b._pack_prev = a; -} - -function d3_layout_packIntersects(a, b) { - var dx = b.x - a.x, - dy = b.y - a.y, - dr = a.r + b.r; - return (dr * dr - dx * dx - dy * dy) > .001; // within epsilon -} - -function d3_layout_packCircle(nodes) { - var xMin = Infinity, - xMax = -Infinity, - yMin = Infinity, - yMax = -Infinity, - n = nodes.length, - a, b, c, j, k; - - function bound(node) { - xMin = Math.min(node.x - node.r, xMin); - xMax = Math.max(node.x + node.r, xMax); - yMin = Math.min(node.y - node.r, yMin); - yMax = Math.max(node.y + node.r, yMax); - } - - // Create node links. - nodes.forEach(d3_layout_packLink); - - // Create first node. - a = nodes[0]; - a.x = -a.r; - a.y = 0; - bound(a); - - // Create second node. - if (n > 1) { - b = nodes[1]; - b.x = b.r; - b.y = 0; - bound(b); - - // Create third node and build chain. - if (n > 2) { - c = nodes[2]; - d3_layout_packPlace(a, b, c); - bound(c); - d3_layout_packInsert(a, c); - a._pack_prev = c; - d3_layout_packInsert(c, b); - b = a._pack_next; - - // Now iterate through the rest. - for (var i = 3; i < n; i++) { - d3_layout_packPlace(a, b, c = nodes[i]); - - // Search for the closest intersection. - var isect = 0, s1 = 1, s2 = 1; - for (j = b._pack_next; j !== b; j = j._pack_next, s1++) { - if (d3_layout_packIntersects(j, c)) { - isect = 1; - break; - } - } - if (isect == 1) { - for (k = a._pack_prev; k !== j._pack_prev; k = k._pack_prev, s2++) { - if (d3_layout_packIntersects(k, c)) { - if (s2 < s1) { - isect = -1; - j = k; - } - break; - } - } - } - - // Update node chain. - if (isect == 0) { - d3_layout_packInsert(a, c); - b = c; - bound(c); - } else if (isect > 0) { - d3_layout_packSplice(a, j); - b = j; - i--; - } else { // isect < 0 - d3_layout_packSplice(j, b); - a = j; - i--; - } - } - } - } - - // Re-center the circles and return the encompassing radius. - var cx = (xMin + xMax) / 2, - cy = (yMin + yMax) / 2, - cr = 0; - for (var i = 0; i < n; i++) { - var node = nodes[i]; - node.x -= cx; - node.y -= cy; - cr = Math.max(cr, node.r + Math.sqrt(node.x * node.x + node.y * node.y)); - } - - // Remove node links. - nodes.forEach(d3_layout_packUnlink); - - return cr; -} - -function d3_layout_packLink(node) { - node._pack_next = node._pack_prev = node; -} - -function d3_layout_packUnlink(node) { - delete node._pack_next; - delete node._pack_prev; -} - -function d3_layout_packTree(node) { - var children = node.children; - if (children) { - children.forEach(d3_layout_packTree); - node.r = d3_layout_packCircle(children); - } else { - node.r = Math.sqrt(node.value); - } -} - -function d3_layout_packTransform(node, x, y, k) { - var children = node.children; - node.x = (x += k * node.x); - node.y = (y += k * node.y); - node.r *= k; - if (children) { - var i = -1, n = children.length; - while (++i < n) d3_layout_packTransform(children[i], x, y, k); - } -} - -function d3_layout_packPlace(a, b, c) { - var da = b.r + c.r, - db = a.r + c.r, - dx = b.x - a.x, - dy = b.y - a.y, - dc = Math.sqrt(dx * dx + dy * dy), - cos = (db * db + dc * dc - da * da) / (2 * db * dc), - theta = Math.acos(cos), - x = cos * db, - h = Math.sin(theta) * db; - dx /= dc; - dy /= dc; - c.x = a.x + x * dx + h * dy; - c.y = a.y + x * dy - h * dx; -} -// Implements a hierarchical layout using the cluster (or dendogram) algorithm. -d3.layout.cluster = function() { - var hierarchy = d3.layout.hierarchy().sort(null).value(null), - separation = d3_layout_treeSeparation, - size = [1, 1]; // width, height - - function cluster(d, i) { - var nodes = hierarchy.call(this, d, i), - root = nodes[0], - previousNode, - x = 0, - kx, - ky; - - // First walk, computing the initial x & y values. - d3_layout_treeVisitAfter(root, function(node) { - if (node.children) { - node.x = d3_layout_clusterX(node.children); - node.y = d3_layout_clusterY(node.children); - } else { - node.x = previousNode ? x += separation(node, previousNode) : 0; - node.y = 0; - previousNode = node; - } - }); - - // Compute the left-most, right-most, and depth-most nodes for extents. - var left = d3_layout_clusterLeft(root), - right = d3_layout_clusterRight(root), - x0 = left.x - separation(left, right) / 2, - x1 = right.x + separation(right, left) / 2; - - // Second walk, normalizing x & y to the desired size. - d3_layout_treeVisitAfter(root, function(node) { - node.x = (node.x - x0) / (x1 - x0) * size[0]; - node.y = (1 - node.y / root.y) * size[1]; - }); - - return nodes; - } - - cluster.separation = function(x) { - if (!arguments.length) return separation; - separation = x; - return cluster; - }; - - cluster.size = function(x) { - if (!arguments.length) return size; - size = x; - return cluster; - }; - - return d3_layout_hierarchyRebind(cluster, hierarchy); -}; - -function d3_layout_clusterY(children) { - return 1 + d3.max(children, function(child) { - return child.y; - }); -} - -function d3_layout_clusterX(children) { - return children.reduce(function(x, child) { - return x + child.x; - }, 0) / children.length; -} - -function d3_layout_clusterLeft(node) { - var children = node.children; - return children ? d3_layout_clusterLeft(children[0]) : node; -} - -function d3_layout_clusterRight(node) { - var children = node.children; - return children ? d3_layout_clusterRight(children[children.length - 1]) : node; -} -// Node-link tree diagram using the Reingold-Tilford "tidy" algorithm -d3.layout.tree = function() { - var hierarchy = d3.layout.hierarchy().sort(null).value(null), - separation = d3_layout_treeSeparation, - size = [1, 1]; // width, height - - function tree(d, i) { - var nodes = hierarchy.call(this, d, i), - root = nodes[0]; - - function firstWalk(node, previousSibling) { - var children = node.children, - layout = node._tree; - if (children && (n = children.length)) { - var n, - firstChild = children[0], - previousChild, - ancestor = firstChild, - child, - i = -1; - while (++i < n) { - child = children[i]; - firstWalk(child, previousChild); - ancestor = apportion(child, previousChild, ancestor); - previousChild = child; - } - d3_layout_treeShift(node); - var midpoint = .5 * (firstChild._tree.prelim + child._tree.prelim); - if (previousSibling) { - layout.prelim = previousSibling._tree.prelim + separation(node, previousSibling); - layout.mod = layout.prelim - midpoint; - } else { - layout.prelim = midpoint; - } - } else { - if (previousSibling) { - layout.prelim = previousSibling._tree.prelim + separation(node, previousSibling); - } - } - } - - function secondWalk(node, x) { - node.x = node._tree.prelim + x; - var children = node.children; - if (children) { - var i = -1, - n = children.length; - x += node._tree.mod; - while (++i < n) { - secondWalk(children[i], x); - } - } - } - - function apportion(node, previousSibling, ancestor) { - if (previousSibling) { - var vip = node, - vop = node, - vim = previousSibling, - vom = node.parent.children[0], - sip = vip._tree.mod, - sop = vop._tree.mod, - sim = vim._tree.mod, - som = vom._tree.mod, - shift; - while (vim = d3_layout_treeRight(vim), vip = d3_layout_treeLeft(vip), vim && vip) { - vom = d3_layout_treeLeft(vom); - vop = d3_layout_treeRight(vop); - vop._tree.ancestor = node; - shift = vim._tree.prelim + sim - vip._tree.prelim - sip + separation(vim, vip); - if (shift > 0) { - d3_layout_treeMove(d3_layout_treeAncestor(vim, node, ancestor), node, shift); - sip += shift; - sop += shift; - } - sim += vim._tree.mod; - sip += vip._tree.mod; - som += vom._tree.mod; - sop += vop._tree.mod; - } - if (vim && !d3_layout_treeRight(vop)) { - vop._tree.thread = vim; - vop._tree.mod += sim - sop; - } - if (vip && !d3_layout_treeLeft(vom)) { - vom._tree.thread = vip; - vom._tree.mod += sip - som; - ancestor = node; - } - } - return ancestor; - } - - // Initialize temporary layout variables. - d3_layout_treeVisitAfter(root, function(node, previousSibling) { - node._tree = { - ancestor: node, - prelim: 0, - mod: 0, - change: 0, - shift: 0, - number: previousSibling ? previousSibling._tree.number + 1 : 0 - }; - }); - - // Compute the layout using Buchheim et al.'s algorithm. - firstWalk(root); - secondWalk(root, -root._tree.prelim); - - // Compute the left-most, right-most, and depth-most nodes for extents. - var left = d3_layout_treeSearch(root, d3_layout_treeLeftmost), - right = d3_layout_treeSearch(root, d3_layout_treeRightmost), - deep = d3_layout_treeSearch(root, d3_layout_treeDeepest), - x0 = left.x - separation(left, right) / 2, - x1 = right.x + separation(right, left) / 2, - y1 = deep.depth || 1; - - // Clear temporary layout variables; transform x and y. - d3_layout_treeVisitAfter(root, function(node) { - node.x = (node.x - x0) / (x1 - x0) * size[0]; - node.y = node.depth / y1 * size[1]; - delete node._tree; - }); - - return nodes; - } - - tree.separation = function(x) { - if (!arguments.length) return separation; - separation = x; - return tree; - }; - - tree.size = function(x) { - if (!arguments.length) return size; - size = x; - return tree; - }; - - return d3_layout_hierarchyRebind(tree, hierarchy); -}; - -function d3_layout_treeSeparation(a, b) { - return a.parent == b.parent ? 1 : 2; -} - -// function d3_layout_treeSeparationRadial(a, b) { -// return (a.parent == b.parent ? 1 : 2) / a.depth; -// } - -function d3_layout_treeLeft(node) { - return node.children ? node.children[0] : node._tree.thread; -} - -function d3_layout_treeRight(node) { - return node.children ? node.children[node.children.length - 1] : node._tree.thread; -} - -function d3_layout_treeSearch(node, compare) { - var children = node.children; - if (children) { - var child, - n = children.length, - i = -1; - while (++i < n) { - if (compare(child = d3_layout_treeSearch(children[i], compare), node) > 0) { - node = child; - } - } - } - return node; -} - -function d3_layout_treeRightmost(a, b) { - return a.x - b.x; -} - -function d3_layout_treeLeftmost(a, b) { - return b.x - a.x; -} - -function d3_layout_treeDeepest(a, b) { - return a.depth - b.depth; -} - -function d3_layout_treeVisitAfter(node, callback) { - function visit(node, previousSibling) { - var children = node.children; - if (children) { - var child, - previousChild = null, - i = -1, - n = children.length; - while (++i < n) { - child = children[i]; - visit(child, previousChild); - previousChild = child; - } - } - callback(node, previousSibling); - } - visit(node, null); -} - -function d3_layout_treeShift(node) { - var shift = 0, - change = 0, - children = node.children, - i = children.length, - child; - while (--i >= 0) { - child = children[i]._tree; - child.prelim += shift; - child.mod += shift; - shift += child.shift + (change += child.change); - } -} - -function d3_layout_treeMove(ancestor, node, shift) { - ancestor = ancestor._tree; - node = node._tree; - var change = shift / (node.number - ancestor.number); - ancestor.change += change; - node.change -= change; - node.shift += shift; - node.prelim += shift; - node.mod += shift; -} - -function d3_layout_treeAncestor(vim, node, ancestor) { - return vim._tree.ancestor.parent == node.parent - ? vim._tree.ancestor - : ancestor; -} -// Squarified Treemaps by Mark Bruls, Kees Huizing, and Jarke J. van Wijk -// Modified to support a target aspect ratio by Jeff Heer -d3.layout.treemap = function() { - var hierarchy = d3.layout.hierarchy(), - round = Math.round, - size = [1, 1], // width, height - padding = null, - pad = d3_layout_treemapPadNull, - sticky = false, - stickies, - ratio = 0.5 * (1 + Math.sqrt(5)); // golden ratio - - // Compute the area for each child based on value & scale. - function scale(children, k) { - var i = -1, - n = children.length, - child, - area; - while (++i < n) { - area = (child = children[i]).value * (k < 0 ? 0 : k); - child.area = isNaN(area) || area <= 0 ? 0 : area; - } - } - - // Recursively arranges the specified node's children into squarified rows. - function squarify(node) { - if (!node.children) return; - var rect = pad(node), - row = [], - children = node.children.slice(), // copy-on-write - child, - best = Infinity, // the best row score so far - score, // the current row score - u = Math.min(rect.dx, rect.dy), // initial orientation - n; - scale(children, rect.dx * rect.dy / node.value); - row.area = 0; - while ((n = children.length) > 0) { - row.push(child = children[n - 1]); - row.area += child.area; - if ((score = worst(row, u)) <= best) { // continue with this orientation - children.pop(); - best = score; - } else { // abort, and try a different orientation - row.area -= row.pop().area; - position(row, u, rect, false); - u = Math.min(rect.dx, rect.dy); - row.length = row.area = 0; - best = Infinity; - } - } - if (row.length) { - position(row, u, rect, true); - row.length = row.area = 0; - } - node.children.forEach(squarify); - } - - // Recursively resizes the specified node's children into existing rows. - // Preserves the existing layout! - function stickify(node) { - if (!node.children) return; - var rect = pad(node), - children = node.children.slice(), // copy-on-write - child, - row = []; - scale(children, rect.dx * rect.dy / node.value); - row.area = 0; - while (child = children.pop()) { - row.push(child); - row.area += child.area; - if (child.z != null) { - position(row, child.z ? rect.dx : rect.dy, rect, !children.length); - row.length = row.area = 0; - } - } - node.children.forEach(stickify); - } - - // Computes the score for the specified row, as the worst aspect ratio. - function worst(row, u) { - var s = row.area, - r, - rmax = 0, - rmin = Infinity, - i = -1, - n = row.length; - while (++i < n) { - if (!(r = row[i].area)) continue; - if (r < rmin) rmin = r; - if (r > rmax) rmax = r; - } - s *= s; - u *= u; - return s - ? Math.max((u * rmax * ratio) / s, s / (u * rmin * ratio)) - : Infinity; - } - - // Positions the specified row of nodes. Modifies `rect`. - function position(row, u, rect, flush) { - var i = -1, - n = row.length, - x = rect.x, - y = rect.y, - v = u ? round(row.area / u) : 0, - o; - if (u == rect.dx) { // horizontal subdivision - if (flush || v > rect.dy) v = v ? rect.dy : 0; // over+underflow - while (++i < n) { - o = row[i]; - o.x = x; - o.y = y; - o.dy = v; - x += o.dx = v ? round(o.area / v) : 0; - } - o.z = true; - o.dx += rect.x + rect.dx - x; // rounding error - rect.y += v; - rect.dy -= v; - } else { // vertical subdivision - if (flush || v > rect.dx) v = v ? rect.dx : 0; // over+underflow - while (++i < n) { - o = row[i]; - o.x = x; - o.y = y; - o.dx = v; - y += o.dy = v ? round(o.area / v) : 0; - } - o.z = false; - o.dy += rect.y + rect.dy - y; // rounding error - rect.x += v; - rect.dx -= v; - } - } - - function treemap(d) { - var nodes = stickies || hierarchy(d), - root = nodes[0]; - root.x = 0; - root.y = 0; - root.dx = size[0]; - root.dy = size[1]; - if (stickies) hierarchy.revalue(root); - scale([root], root.dx * root.dy / root.value); - (stickies ? stickify : squarify)(root); - if (sticky) stickies = nodes; - return nodes; - } - - treemap.size = function(x) { - if (!arguments.length) return size; - size = x; - return treemap; - }; - - treemap.padding = function(x) { - if (!arguments.length) return padding; - - function padFunction(node) { - var p = x.call(treemap, node, node.depth); - return p == null - ? d3_layout_treemapPadNull(node) - : d3_layout_treemapPad(node, typeof p === "number" ? [p, p, p, p] : p); - } - - function padConstant(node) { - return d3_layout_treemapPad(node, x); - } - - var type; - pad = (padding = x) == null ? d3_layout_treemapPadNull - : (type = typeof x) === "function" ? padFunction - : type === "number" ? (x = [x, x, x, x], padConstant) - : padConstant; - return treemap; - }; - - treemap.round = function(x) { - if (!arguments.length) return round != Number; - round = x ? Math.round : Number; - return treemap; - }; - - treemap.sticky = function(x) { - if (!arguments.length) return sticky; - sticky = x; - stickies = null; - return treemap; - }; - - treemap.ratio = function(x) { - if (!arguments.length) return ratio; - ratio = x; - return treemap; - }; - - return d3_layout_hierarchyRebind(treemap, hierarchy); -}; - -function d3_layout_treemapPadNull(node) { - return {x: node.x, y: node.y, dx: node.dx, dy: node.dy}; -} - -function d3_layout_treemapPad(node, padding) { - var x = node.x + padding[3], - y = node.y + padding[0], - dx = node.dx - padding[1] - padding[3], - dy = node.dy - padding[0] - padding[2]; - if (dx < 0) { x += dx / 2; dx = 0; } - if (dy < 0) { y += dy / 2; dy = 0; } - return {x: x, y: y, dx: dx, dy: dy}; -} -})(); diff --git a/rtd_phosphonetx/source/html/demoapp/d3.time.js b/rtd_phosphonetx/source/html/demoapp/d3.time.js deleted file mode 100644 index e1c0831c88e2984fbabc189a5347238bde72abb2..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/html/demoapp/d3.time.js +++ /dev/null @@ -1,692 +0,0 @@ -(function(){d3.time = {}; - -var d3_time = Date; -d3.time.format = function(template) { - var n = template.length; - - function format(date) { - var string = [], - i = -1, - j = 0, - c, - f; - while (++i < n) { - if (template.charCodeAt(i) == 37) { - string.push( - template.substring(j, i), - (f = d3_time_formats[c = template.charAt(++i)]) - ? f(date) : c); - j = i + 1; - } - } - string.push(template.substring(j, i)); - return string.join(""); - } - - format.parse = function(string) { - var date = new d3_time(1900, 0, 1), - i = d3_time_parse(date, template, string, 0); - if (i != string.length) return null; - if (date.hour12) { - var hours = date.getHours() % 12; - date.setHours(date.hour12pm ? hours + 12 : hours); - } - delete date.hour12; - delete date.hour12pm; - return date; - }; - - format.toString = function() { - return template; - }; - - return format; -}; - -function d3_time_parse(date, template, string, j) { - var c, - p, - i = 0, - n = template.length, - m = string.length; - while (i < n) { - if (j >= m) return -1; - c = template.charCodeAt(i++); - if (c == 37) { - p = d3_time_parsers[template.charAt(i++)]; - if (!p || ((j = p(date, string, j)) < 0)) return -1; - } else if (c != string.charCodeAt(j++)) { - return -1; - } - } - return j; -} - -var d3_time_zfill2 = d3.format("02d"), - d3_time_zfill3 = d3.format("03d"), - d3_time_zfill4 = d3.format("04d"), - d3_time_sfill2 = d3.format("2d"); - -var d3_time_formats = { - a: function(d) { return d3_time_weekdays[d.getDay()].substring(0, 3); }, - A: function(d) { return d3_time_weekdays[d.getDay()]; }, - b: function(d) { return d3_time_months[d.getMonth()].substring(0, 3); }, - B: function(d) { return d3_time_months[d.getMonth()]; }, - c: d3.time.format("%a %b %e %H:%M:%S %Y"), - d: function(d) { return d3_time_zfill2(d.getDate()); }, - e: function(d) { return d3_time_sfill2(d.getDate()); }, - H: function(d) { return d3_time_zfill2(d.getHours()); }, - I: function(d) { return d3_time_zfill2(d.getHours() % 12 || 12); }, - j: d3_time_dayOfYear, - L: function(d) { return d3_time_zfill3(d.getMilliseconds()); }, - m: function(d) { return d3_time_zfill2(d.getMonth() + 1); }, - M: function(d) { return d3_time_zfill2(d.getMinutes()); }, - p: function(d) { return d.getHours() >= 12 ? "PM" : "AM"; }, - S: function(d) { return d3_time_zfill2(d.getSeconds()); }, - U: d3_time_weekNumberSunday, - w: function(d) { return d.getDay(); }, - W: d3_time_weekNumberMonday, - x: d3.time.format("%m/%d/%y"), - X: d3.time.format("%H:%M:%S"), - y: function(d) { return d3_time_zfill2(d.getFullYear() % 100); }, - Y: function(d) { return d3_time_zfill4(d.getFullYear() % 10000); }, - Z: d3_time_zone, - "%": function(d) { return "%"; } -}; - -var d3_time_parsers = { - a: d3_time_parseWeekdayAbbrev, - A: d3_time_parseWeekday, - b: d3_time_parseMonthAbbrev, - B: d3_time_parseMonth, - c: d3_time_parseLocaleFull, - d: d3_time_parseDay, - e: d3_time_parseDay, - H: d3_time_parseHour24, - I: d3_time_parseHour12, - // j: function(d, s, i) { /*TODO day of year [001,366] */ return i; }, - L: d3_time_parseMilliseconds, - m: d3_time_parseMonthNumber, - M: d3_time_parseMinutes, - p: d3_time_parseAmPm, - S: d3_time_parseSeconds, - // U: function(d, s, i) { /*TODO week number (sunday) [00,53] */ return i; }, - // w: function(d, s, i) { /*TODO weekday [0,6] */ return i; }, - // W: function(d, s, i) { /*TODO week number (monday) [00,53] */ return i; }, - x: d3_time_parseLocaleDate, - X: d3_time_parseLocaleTime, - y: d3_time_parseYear, - Y: d3_time_parseFullYear - // , - // Z: function(d, s, i) { /*TODO time zone */ return i; }, - // "%": function(d, s, i) { /*TODO literal % */ return i; } -}; - -// Note: weekday is validated, but does not set the date. -function d3_time_parseWeekdayAbbrev(date, string, i) { - return string.substring(i, i += 3).toLowerCase() in d3_time_weekdayAbbrevLookup ? i : -1; -} - -var d3_time_weekdayAbbrevLookup = { - sun: 3, - mon: 3, - tue: 3, - wed: 3, - thu: 3, - fri: 3, - sat: 3 -}; - -// Note: weekday is validated, but does not set the date. -function d3_time_parseWeekday(date, string, i) { - d3_time_weekdayRe.lastIndex = 0; - var n = d3_time_weekdayRe.exec(string.substring(i, i + 10)); - return n ? i += n[0].length : -1; -} - -var d3_time_weekdayRe = /^(?:Sunday|Monday|Tuesday|Wednesday|Thursday|Friday|Saturday)/ig; - -var d3_time_weekdays = [ - "Sunday", - "Monday", - "Tuesday", - "Wednesday", - "Thursday", - "Friday", - "Saturday" -]; - -function d3_time_parseMonthAbbrev(date, string, i) { - var n = d3_time_monthAbbrevLookup[string.substring(i, i += 3).toLowerCase()]; - return n == null ? -1 : (date.setMonth(n), i); -} - -var d3_time_monthAbbrevLookup = { - jan: 0, - feb: 1, - mar: 2, - apr: 3, - may: 4, - jun: 5, - jul: 6, - aug: 7, - sep: 8, - oct: 9, - nov: 10, - dec: 11 -}; - -function d3_time_parseMonth(date, string, i) { - d3_time_monthRe.lastIndex = 0; - var n = d3_time_monthRe.exec(string.substring(i, i + 12)); - return n ? (date.setMonth(d3_time_monthLookup[n[0].toLowerCase()]), i += n[0].length) : -1; -} - -var d3_time_monthRe = /^(?:January|February|March|April|May|June|July|August|September|October|November|December)/ig; - -var d3_time_monthLookup = { - january: 0, - february: 1, - march: 2, - april: 3, - may: 4, - june: 5, - july: 6, - august: 7, - september: 8, - october: 9, - november: 10, - december: 11 -}; - -var d3_time_months = [ - "January", - "February", - "March", - "April", - "May", - "June", - "July", - "August", - "September", - "October", - "November", - "December" -]; - -function d3_time_parseLocaleFull(date, string, i) { - return d3_time_parse(date, d3_time_formats.c.toString(), string, i); -} - -function d3_time_parseLocaleDate(date, string, i) { - return d3_time_parse(date, d3_time_formats.x.toString(), string, i); -} - -function d3_time_parseLocaleTime(date, string, i) { - return d3_time_parse(date, d3_time_formats.X.toString(), string, i); -} - -function d3_time_parseFullYear(date, string, i) { - d3_time_numberRe.lastIndex = 0; - var n = d3_time_numberRe.exec(string.substring(i, i + 4)); - return n ? (date.setFullYear(n[0]), i += n[0].length) : -1; -} - -function d3_time_parseYear(date, string, i) { - d3_time_numberRe.lastIndex = 0; - var n = d3_time_numberRe.exec(string.substring(i, i + 2)); - return n ? (date.setFullYear(d3_time_century() + +n[0]), i += n[0].length) : -1; -} - -function d3_time_century() { - return ~~(new Date().getFullYear() / 1000) * 1000; -} - -function d3_time_parseMonthNumber(date, string, i) { - d3_time_numberRe.lastIndex = 0; - var n = d3_time_numberRe.exec(string.substring(i, i + 2)); - return n ? (date.setMonth(n[0] - 1), i += n[0].length) : -1; -} - -function d3_time_parseDay(date, string, i) { - d3_time_numberRe.lastIndex = 0; - var n = d3_time_numberRe.exec(string.substring(i, i + 2)); - return n ? (date.setDate(+n[0]), i += n[0].length) : -1; -} - -// Note: we don't validate that the hour is in the range [0,23]. -function d3_time_parseHour24(date, string, i) { - d3_time_numberRe.lastIndex = 0; - var n = d3_time_numberRe.exec(string.substring(i, i + 2)); - return n ? (date.setHours(+n[0]), i += n[0].length) : -1; -} - -// Note: we don't validate that the hour is in the range [1,12]. -function d3_time_parseHour12(date, string, i) { - date.hour12 = true; - return d3_time_parseHour24(date, string, i); -} - -function d3_time_parseMinutes(date, string, i) { - d3_time_numberRe.lastIndex = 0; - var n = d3_time_numberRe.exec(string.substring(i, i + 2)); - return n ? (date.setMinutes(+n[0]), i += n[0].length) : -1; -} - -function d3_time_parseSeconds(date, string, i) { - d3_time_numberRe.lastIndex = 0; - var n = d3_time_numberRe.exec(string.substring(i, i + 2)); - return n ? (date.setSeconds(+n[0]), i += n[0].length) : -1; -} - -function d3_time_parseMilliseconds(date, string, i) { - d3_time_numberRe.lastIndex = 0; - var n = d3_time_numberRe.exec(string.substring(i, i + 3)); - return n ? (date.setMilliseconds(+n[0]), i += n[0].length) : -1; -} - -// Note: we don't look at the next directive. -var d3_time_numberRe = /\s*\d+/; - -function d3_time_parseAmPm(date, string, i) { - var n = d3_time_amPmLookup[string.substring(i, i += 2).toLowerCase()]; - return n == null ? -1 : (date.hour12pm = n, i); -} - -var d3_time_amPmLookup = { - am: 0, - pm: 1 -}; - -function d3_time_year(d) { - return new d3_time(d.getFullYear(), 0, 1); -} - -function d3_time_daysElapsed(d0, d1) { - return ~~((d1 - d0) / 864e5 - (d1.getTimezoneOffset() - d0.getTimezoneOffset()) / 1440); -} - -function d3_time_dayOfYear(d) { - return d3_time_zfill3(1 + d3_time_daysElapsed(d3_time_year(d), d)); -} - -function d3_time_weekNumberSunday(d) { - var d0 = d3_time_year(d); - return d3_time_zfill2(~~((d3_time_daysElapsed(d0, d) + d0.getDay()) / 7)); -} - -function d3_time_weekNumberMonday(d) { - var d0 = d3_time_year(d); - return d3_time_zfill2(~~((d3_time_daysElapsed(d0, d) + (d0.getDay() + 6) % 7) / 7)); -} - -// TODO table of time zone offset names? -function d3_time_zone(d) { - var z = d.getTimezoneOffset(), - zs = z > 0 ? "-" : "+", - zh = ~~(Math.abs(z) / 60), - zm = Math.abs(z) % 60; - return zs + d3_time_zfill2(zh) + d3_time_zfill2(zm); -} -d3.time.format.utc = function(template) { - var local = d3.time.format(template); - - function format(date) { - try { - d3_time = d3_time_format_utc; - var utc = new d3_time(); - utc._ = date; - return local(utc); - } finally { - d3_time = Date; - } - } - - format.parse = function(string) { - try { - d3_time = d3_time_format_utc; - var date = local.parse(string); - return date && date._; - } finally { - d3_time = Date; - } - }; - - format.toString = local.toString; - - return format; -}; - -function d3_time_format_utc() { - this._ = new Date(Date.UTC.apply(this, arguments)); -} - -d3_time_format_utc.prototype = { - getDate: function() { return this._.getUTCDate(); }, - getDay: function() { return this._.getUTCDay(); }, - getFullYear: function() { return this._.getUTCFullYear(); }, - getHours: function() { return this._.getUTCHours(); }, - getMilliseconds: function() { return this._.getUTCMilliseconds(); }, - getMinutes: function() { return this._.getUTCMinutes(); }, - getMonth: function() { return this._.getUTCMonth(); }, - getSeconds: function() { return this._.getUTCSeconds(); }, - getTimezoneOffset: function() { return 0; }, - valueOf: function() { return this._.getTime(); }, - setDate: function(x) { this._.setUTCDate(x); }, - setDay: function(x) { this._.setUTCDay(x); }, - setFullYear: function(x) { this._.setUTCFullYear(x); }, - setHours: function(x) { this._.setUTCHours(x); }, - setMilliseconds: function(x) { this._.setUTCMilliseconds(x); }, - setMinutes: function(x) { this._.setUTCMinutes(x); }, - setMonth: function(x) { this._.setUTCMonth(x); }, - setSeconds: function(x) { this._.setUTCSeconds(x); } -}; -var d3_time_formatIso = d3.time.format.utc("%Y-%m-%dT%H:%M:%S.%LZ"); - -d3.time.format.iso = Date.prototype.toISOString ? d3_time_formatIsoNative : d3_time_formatIso; - -function d3_time_formatIsoNative(date) { - return date.toISOString(); -} - -d3_time_formatIsoNative.parse = function(string) { - return new Date(string); -}; - -d3_time_formatIsoNative.toString = d3_time_formatIso.toString; -function d3_time_range(floor, step, number) { - return function(t0, t1, dt) { - var time = floor(t0), times = []; - if (time < t0) step(time); - if (dt > 1) { - while (time < t1) { - var date = new Date(+time); - if (!(number(date) % dt)) times.push(date); - step(time); - } - } else { - while (time < t1) times.push(new Date(+time)), step(time); - } - return times; - }; -} -d3.time.second = function(date) { - return new Date(~~(date / 1e3) * 1e3); -}; - -d3.time.second.utc = d3.time.second; -d3.time.seconds = d3_time_range(d3.time.second, function(date) { - date.setTime(date.getTime() + 1e3); -}, function(date) { - return date.getSeconds(); -}); - -d3.time.seconds.utc = d3.time.seconds; -d3.time.minute = function(date) { - return new Date(~~(date / 6e4) * 6e4); -}; - -d3.time.minute.utc = d3.time.minute;d3.time.minutes = d3_time_range(d3.time.minute, d3_time_minutesStep, function(date) { - return date.getMinutes(); -}); - -d3.time.minutes.utc = d3_time_range(d3.time.minute, d3_time_minutesStep, function(date) { - return date.getUTCMinutes(); -}); - -function d3_time_minutesStep(date) { - date.setTime(date.getTime() + 6e4); // assumes no leap seconds -} -d3.time.hour = function(date) { - var offset = date.getTimezoneOffset() / 60; - return new Date((~~(date / 36e5 - offset) + offset) * 36e5); -}; - -d3.time.hour.utc = function(date) { - return new Date(~~(date / 36e5) * 36e5); -}; -d3.time.hours = d3_time_range(d3.time.hour, d3_time_hoursStep, function(date) { - return date.getHours(); -}); - -d3.time.hours.utc = d3_time_range(d3.time.hour.utc, d3_time_hoursStep, function(date) { - return date.getUTCHours(); -}); - -function d3_time_hoursStep(date) { - date.setTime(date.getTime() + 36e5); -} -d3.time.day = function(date) { - return new Date(date.getFullYear(), date.getMonth(), date.getDate()); -}; - -d3.time.day.utc = function(date) { - return new Date(~~(date / 864e5) * 864e5); -}; -d3.time.days = d3_time_range(d3.time.day, function(date) { - date.setDate(date.getDate() + 1); -}, function(date) { - return date.getDate() - 1; -}); - -d3.time.days.utc = d3_time_range(d3.time.day.utc, function(date) { - date.setUTCDate(date.getUTCDate() + 1); -}, function(date) { - return date.getUTCDate() - 1; -}); -d3.time.week = function(date) { - (date = d3.time.day(date)).setDate(date.getDate() - date.getDay()); - return date; -}; - -d3.time.week.utc = function(date) { - (date = d3.time.day.utc(date)).setUTCDate(date.getUTCDate() - date.getUTCDay()); - return date; -}; -d3.time.weeks = d3_time_range(d3.time.week, function(date) { - date.setDate(date.getDate() + 7); -}, function(date) { - return ~~((date - new Date(date.getFullYear(), 0, 1)) / 6048e5); -}); - -d3.time.weeks.utc = d3_time_range(d3.time.week.utc, function(date) { - date.setUTCDate(date.getUTCDate() + 7); -}, function(date) { - return ~~((date - Date.UTC(date.getUTCFullYear(), 0, 1)) / 6048e5); -}); -d3.time.month = function(date) { - return new Date(date.getFullYear(), date.getMonth(), 1); -}; - -d3.time.month.utc = function(date) { - return new Date(Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), 1)); -}; -d3.time.months = d3_time_range(d3.time.month, function(date) { - date.setMonth(date.getMonth() + 1); -}, function(date) { - return date.getMonth(); -}); - -d3.time.months.utc = d3_time_range(d3.time.month.utc, function(date) { - date.setUTCMonth(date.getUTCMonth() + 1); -}, function(date) { - return date.getUTCMonth(); -}); -d3.time.year = function(date) { - return new Date(date.getFullYear(), 0, 1); -}; - -d3.time.year.utc = function(date) { - return new Date(Date.UTC(date.getUTCFullYear(), 0, 1)); -}; -d3.time.years = d3_time_range(d3.time.year, function(date) { - date.setFullYear(date.getFullYear() + 1); -}, function(date) { - return date.getFullYear(); -}); - -d3.time.years.utc = d3_time_range(d3.time.year.utc, function(date) { - date.setUTCFullYear(date.getUTCFullYear() + 1); -}, function(date) { - return date.getUTCFullYear(); -}); -// TODO nice -function d3_time_scale(linear, methods, format) { - - function scale(x) { - return linear(x); - } - - scale.invert = function(x) { - return d3_time_scaleDate(linear.invert(x)); - }; - - scale.domain = function(x) { - if (!arguments.length) return linear.domain().map(d3_time_scaleDate); - linear.domain(x); - return scale; - }; - - scale.ticks = function(m, k) { - var extent = d3_time_scaleExtent(scale.domain()); - if (typeof m !== "function") { - var span = extent[1] - extent[0], - target = span / m, - i = d3.bisect(d3_time_scaleSteps, target, 1, d3_time_scaleSteps.length - 1); - if (Math.log(target / d3_time_scaleSteps[i - 1]) < Math.log(d3_time_scaleSteps[i] / target)) --i; - m = methods[i]; - k = m[1]; - m = m[0]; - } - return m(extent[0], extent[1], k); - }; - - scale.tickFormat = function() { - return format; - }; - - scale.copy = function() { - return d3_time_scale(linear.copy(), methods, format); - }; - - // TOOD expose d3_scale_linear_rebind? - scale.range = d3.rebind(scale, linear.range); - scale.rangeRound = d3.rebind(scale, linear.rangeRound); - scale.interpolate = d3.rebind(scale, linear.interpolate); - scale.clamp = d3.rebind(scale, linear.clamp); - - return scale; -} - -// TODO expose d3_scaleExtent? -function d3_time_scaleExtent(domain) { - var start = domain[0], stop = domain[domain.length - 1]; - return start < stop ? [start, stop] : [stop, start]; -} - -function d3_time_scaleDate(t) { - return new Date(t); -} - -function d3_time_scaleFormat(formats) { - return function(date) { - var i = formats.length - 1, f = formats[i]; - while (!f[1](date)) f = formats[--i]; - return f[0](date); - }; -} - -var d3_time_scaleSteps = [ - 1e3, // 1-second - 5e3, // 5-second - 15e3, // 15-second - 3e4, // 30-second - 6e4, // 1-minute - 3e5, // 5-minute - 9e5, // 15-minute - 18e5, // 30-minute - 36e5, // 1-hour - 108e5, // 3-hour - 216e5, // 6-hour - 432e5, // 12-hour - 864e5, // 1-day - 1728e5, // 2-day - 6048e5, // 1-week - 1728e6, // 1-month - 7776e6, // 3-month - 31536e6 // 1-year -]; - -var d3_time_scaleLocalMethods = [ - [d3.time.seconds, 1], - [d3.time.seconds, 5], - [d3.time.seconds, 15], - [d3.time.seconds, 30], - [d3.time.minutes, 1], - [d3.time.minutes, 5], - [d3.time.minutes, 15], - [d3.time.minutes, 30], - [d3.time.hours, 1], - [d3.time.hours, 3], - [d3.time.hours, 6], - [d3.time.hours, 12], - [d3.time.days, 1], - [d3.time.days, 2], - [d3.time.weeks, 1], - [d3.time.months, 1], - [d3.time.months, 3], - [d3.time.years, 1] -]; - -var d3_time_scaleLocalFormats = [ - [d3.time.format("%Y"), function(d) { return true; }], - [d3.time.format("%B"), function(d) { return d.getMonth(); }], - [d3.time.format("%b %d"), function(d) { return d.getDate() != 1; }], - [d3.time.format("%a %d"), function(d) { return d.getDay() && d.getDate() != 1; }], - [d3.time.format("%I %p"), function(d) { return d.getHours(); }], - [d3.time.format("%I:%M"), function(d) { return d.getMinutes(); }], - [d3.time.format(":%S"), function(d) { return d.getSeconds() || d.getMilliseconds(); }] -]; - -var d3_time_scaleLocalFormat = d3_time_scaleFormat(d3_time_scaleLocalFormats); - -d3.time.scale = function() { - return d3_time_scale(d3.scale.linear(), d3_time_scaleLocalMethods, d3_time_scaleLocalFormat); -}; -var d3_time_scaleUTCMethods = [ - [d3.time.seconds.utc, 1], - [d3.time.seconds.utc, 5], - [d3.time.seconds.utc, 15], - [d3.time.seconds.utc, 30], - [d3.time.minutes.utc, 1], - [d3.time.minutes.utc, 5], - [d3.time.minutes.utc, 15], - [d3.time.minutes.utc, 30], - [d3.time.hours.utc, 1], - [d3.time.hours.utc, 3], - [d3.time.hours.utc, 6], - [d3.time.hours.utc, 12], - [d3.time.days.utc, 1], - [d3.time.days.utc, 2], - [d3.time.weeks.utc, 1], - [d3.time.months.utc, 1], - [d3.time.months.utc, 3], - [d3.time.years.utc, 1] -]; - -var d3_time_scaleUTCFormats = [ - [d3.time.format.utc("%Y"), function(d) { return true; }], - [d3.time.format.utc("%B"), function(d) { return d.getUTCMonth(); }], - [d3.time.format.utc("%b %d"), function(d) { return d.getUTCDate() != 1; }], - [d3.time.format.utc("%a %d"), function(d) { return d.getUTCDay() && d.getUTCDate() != 1; }], - [d3.time.format.utc("%I %p"), function(d) { return d.getUTCHours(); }], - [d3.time.format.utc("%I:%M"), function(d) { return d.getUTCMinutes(); }], - [d3.time.format.utc(":%S"), function(d) { return d.getUTCSeconds() || d.getUTCMilliseconds(); }] -]; - -var d3_time_scaleUTCFormat = d3_time_scaleFormat(d3_time_scaleUTCFormats); - -d3.time.scale.utc = function() { - return d3_time_scale(d3.scale.linear(), d3_time_scaleUTCMethods, d3_time_scaleUTCFormat); -}; -})(); diff --git a/rtd_phosphonetx/source/html/demoapp/images/openBIS_Logo.png b/rtd_phosphonetx/source/html/demoapp/images/openBIS_Logo.png deleted file mode 100644 index 87ae5e81899908f3968ea230205322dc19ff4ee5..0000000000000000000000000000000000000000 Binary files a/rtd_phosphonetx/source/html/demoapp/images/openBIS_Logo.png and /dev/null differ diff --git a/rtd_phosphonetx/source/html/demoapp/images/openBIS_Logo.svg b/rtd_phosphonetx/source/html/demoapp/images/openBIS_Logo.svg deleted file mode 100644 index 70ac6c77f2774a5a5e8f6875e3c8ae1acb8e952a..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/html/demoapp/images/openBIS_Logo.svg +++ /dev/null @@ -1,68 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 15.0.2, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - width="400.023px" height="174.566px" viewBox="0 0 400.023 174.566" enable-background="new 0 0 400.023 174.566" - xml:space="preserve"> -<g id="Layer_1"> - <g> - <text transform="matrix(1 0 0 1 46.4854 154.2764)"><tspan x="0" y="0" fill="#010101" font-family="'HelveticaNeue-Bold'" font-size="93.505" letter-spacing="-4">open</tspan><tspan x="204.679" y="0" fill="#231F20" font-family="'HelveticaNeue'" font-size="93.505">BIS</tspan></text> - <rect x="204.234" y="158.748" fill="none" width="192.64" height="14.936"/> - <text transform="matrix(1 0 0 1 204.2329 169.876)" fill="#010101" font-family="'HelveticaNeue'" font-size="15.5842">Biology Information System</text> - <g> - <g> - <g> - <g> - <polygon fill="#068172" points="125.213,81.967 141.416,98.167 147.252,92.333 131.053,76.132 125.213,76.132 "/> - </g> - <g> - <g> - <polygon fill="#068172" points="120.206,81.967 104.005,98.167 98.168,92.333 114.368,76.132 120.206,76.132 "/> - </g> - <g> - <polygon fill="#068172" points="120.206,65.286 104.005,49.084 98.168,54.92 114.368,71.12 120.206,71.12 "/> - </g> - </g> - </g> - <g> - <polygon fill="#068172" points="125.213,65.286 141.416,49.084 147.252,54.92 131.053,71.12 125.213,71.12 "/> - </g> - </g> - <g> - <g> - <polygon fill="#A4A4A4" points="76.131,16.201 92.331,0 98.168,5.836 81.969,22.036 76.13,22.036 "/> - </g> - <g> - <g> - <polygon fill="#ADACAF" points="76.131,32.882 92.331,49.084 98.168,43.247 81.969,27.048 76.13,27.048 "/> - </g> - <g> - <g> - <polygon fill="#ADACAF" points="71.122,32.882 54.921,49.084 49.084,43.247 65.283,27.048 71.123,27.048 "/> - </g> - <g> - <polygon fill="#ADACAF" points="71.122,16.201 54.921,0 49.084,5.836 65.283,22.036 71.123,22.036 "/> - </g> - </g> - </g> - </g> - <g> - <g> - <polygon fill="#ADACAF" points="27.046,65.286 43.247,49.084 49.083,54.92 32.884,71.12 27.045,71.12 "/> - </g> - <g> - <polygon fill="#ADACAF" points="27.046,81.967 43.247,98.167 49.083,92.333 32.884,76.132 27.045,76.132 "/> - </g> - <g> - <polygon fill="#ADACAF" points="22.038,81.967 5.837,98.167 0,92.333 16.199,76.132 22.038,76.132 "/> - </g> - <g> - <polygon fill="#ADACAF" points="22.038,65.286 5.837,49.084 0,54.92 16.199,71.12 22.038,71.12 "/> - </g> - </g> - </g> - </g> -</g> -<g id="Layer_2"> -</g> -</svg> diff --git a/rtd_phosphonetx/source/html/demoapp/openbis-demo-app.html b/rtd_phosphonetx/source/html/demoapp/openbis-demo-app.html deleted file mode 100644 index fde4a9f6ce2360a8e70b3d23de69c0ece64f01d0..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/html/demoapp/openbis-demo-app.html +++ /dev/null @@ -1,94 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> -<html> -<head> - <title>openBIS Proteomics Demo Web App</title> - <link type="text/css" rel="stylesheet" href="body-style.css" /> - <link type="text/css" rel="stylesheet" href="button.css" /> - <link type="text/css" rel="stylesheet" href="tree.css" /> - <script type="text/javascript" src="d3.js"></script> - <script type="text/javascript" src="d3.layout.js"></script> - <script type="text/javascript" src="d3.time.js"></script> - <script type="text/javascript" src="/openbis/resources/js/jquery.js"></script> - <script type="text/javascript" src="/openbis/resources/js/openbis.js"></script> - <script type="text/javascript" src="proteomics-demo.js"></script> - <!-- To speed development, cache the requests --> - <!-- <script type="text/javascript" src="/openbis/resources/js/openbis-request-cache.js"></script> --> -<script> - -/// The openbisServer we use for our data -//var baseURL = 'https://openbis-phosphonetx.ethz.ch' -var baseURL = 'http://localhost:8888' -var openbisUrl = baseURL + '/openbis-test-proteomics'; -openbisServer = new openbis(baseURL + '/openbis/openbis', baseURL + '/datastore_server'); - - - -$(document).ready(function() { - $('#main').hide(); - - var username = $("#username").value; - if(username == null || username.length==0) { - $("#username").focus(); - } else { - $("#login-button").focus(); - } - - $('#logout-button').click(function() { - openbisServer.logout(function(data) { - $("#login-form-div").show(); - $("#main").hide(); - $("#username").focus(); - }); - clearTable(); - }); - - $('#query-button').click(function() { - var parameters = { "protein" : $.trim($('#protein').val()), - "space" : $.trim($('#space').val())}; - queryForResults(parameters); - }); - - $('#login-form').submit(function() { - openbisServer.login( $.trim($('#username').val()), $.trim($('#password').val()), function(data) { enterApp(data) }) - }); - - openbisServer.ifRestoredSessionActive(function(data) { enterApp(data) }); - - // Make the ENTER key the default button - $("login-form input").keypress(function (e) { - if ((e.which && e.which == 13) || (e.keyCode && e.keyCode == 13)) { - $('button[type=submit].default').click(); - return false; - } else { - return true; - } - }); -}); - -</script> - -</head> -<body> - <img id="openbis-logo" src="images/openBIS_Logo.png" alt="openBIS" style="position: absolute; right: 10px; height: 100px;"/> - <div id="login-form-div"> - <h1>openBIS Proteomics Demo Web App</h1> - <form id="login-form" action="javascript:"> - <input id="username" type="text" required="required"> - <input id="password" type="password" required="required"> - <button class="login-button" id="login-button" type="submit">Login</button> - </form> - </div> - - <div id="main"> - <button id="logout-button">Logout</button> - <form id="query-form" action="javascript:"> - <table> - <tr><td>Space</td><td><input id="space" type="text" required="required"></td></tr> - <tr><td>Protein</td><td><input id="protein" type="text" required="required"></td></tr> - <tr><td></td><td style="text-align: right"><button class="query-button" id="query-button" type="submit">Search</button></td></tr> - </table> - </form> - <div id="waiting" style="display: none;">Please, wait while loading data.</div> - </div> -</body> -</html> diff --git a/rtd_phosphonetx/source/html/demoapp/proteomics-demo.js b/rtd_phosphonetx/source/html/demoapp/proteomics-demo.js deleted file mode 100644 index abda7882c1b7baea19f136727575ca3a18713963..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/html/demoapp/proteomics-demo.js +++ /dev/null @@ -1,225 +0,0 @@ -/// How much horizontal space do the inspectors take -var inspectorsWidth = 100; - -/// A helper function for drawing the lines between nodes -var diagonal = d3.svg.diagonal().projection(function(d) { return [d.y, d.x] }); - -/// The model for the visualization -var model = null; - -/// The visualization, referenced by functions that display content -var vis; - -var didCreateVis = false; - -var indexOfLinkedColumn = 3; - -/** - * Create the DOM elements to store the visualization (tree + inspectors) - */ -function createVis() -{ - if (didCreateVis) return; - - // Create a div to house the tree visualization and the inspectors - vis = d3.select("#main").append("div").attr("id", "vis"); - - didCreateVis = true; -} - -function displayReturnedResults(data) -{ - $("#waiting").hide(); - - if (data.error) { - console.log(data.error); - vis.append("p").text("Could not retrieve data."); - return; - } - - displayResultsAsGraph(createDataModel(data)); -} - -function displayResultsAsGraph(data) -{ - clearVis(); - if (data.length == 0) - { - vis.append("p").text("Nothing found."); - return; - } - - var delayStep = 20, - xOffset = 70, - yOffset = 40, - xStep = 200, - yStep = 30, - xLabel = -30, - yLabel = 18, - columnNames = ['Biological Experiment', 'Biological Sample', 'MS Injection Sample', 'Search Experiment', 'Protein']; - - var graph = vis.selectAll("svg").data([data]).enter().append("svg:svg") - .attr("width", $(window).width() - 50) - .attr("height", $(window).height() - 50); - - var g = graph.selectAll("g").data(function(d) { return d; }) - .enter().append("svg:g") - .attr("transform", function(d,i) { return "translate(" + (xOffset + i * xStep) + ", " - + yOffset + ")"; }); - - g.append("svg:text") - .text(function(d,i) { return columnNames[i]; }) - .attr("class", "columnHeader") - .attr("text-anchor", "middle") - .attr("x", 0) - .attr("y", -10); - - g.selectAll("path").data(function(d) { return d[1]; }) - .enter().append("svg:path") - .attr("class", "line") - .transition().delay(function(d,i) { return i * delayStep; }) - .attr("d", function(d,i) { - var y0 = d[0] * yStep; - var y1 = d[1] * yStep; - return "M0," + y0 - + "Q" + xStep/4 + "," + y0 + "," + xStep/2 + "," + (y0+y1)/2 - + "L" + xStep/2 + "," + (y0+y1)/2 - + "Q" + 3*xStep/4 + "," + y1 + "," + xStep + "," + y1 - + "L" + xStep + "," + y1; - }) - - var node = g.selectAll("g").data(function(d) { return d[0]; }) - .enter().append("svg:g") - .attr("class", "node") - .attr("transform", function(d,i) { return "translate(0, " + (i * yStep) + ")"; }); - - node.append("svg:circle") - .transition().delay(function(d,i) { return i * delayStep; }) - .attr("r", 5); - - node.append("svg:text") - .on("click", function(d) { if (d.level == indexOfLinkedColumn) { - window.open(openbisUrl + "/?#entity=EXPERIMENT&permId=" + d.permId, '_blank'); - } - }) - .transition().delay(function(d,i) { return i * delayStep; }) - .text(function(d) { return d.label; }) - .attr("class", function(d) { return d.level == indexOfLinkedColumn ? "linked" : "notLinked";}) - .attr("text-anchor", "left") - .attr("x", xLabel) - .attr("y", yLabel) -} - - -function Node(level, label, permId) { - this.level = level; - this.label = label; - this.permId = permId; -} - - -function createDataModel(tableModel) -{ - var rows = tableModel.result.rows - var maps = []; - var permIds = {}; - - for (n = 0; n < rows.length; n++) - { - row = rows[n]; - permIds[row[indexOfLinkedColumn].value] = row[4].value; - var accessionNumber = row[5].value; - var splitted = accessionNumber.split("|"); - if (splitted.length > 1) - { - accessionNumber = splitted[1]; - } - row[5].value = accessionNumber + ": " + row[6].value; // concatenate accession number with description - row.splice(6, 1); // remove description - row.splice(4, 1); // remove search experiment perm id - for (i = 0; i < row.length; i++) { - map = maps[i]; - if (map == null) { - map = {}; - maps[i] = map; - } - cell = row[i].value; - links = map[cell]; - if (links == null) { - links = {}; - map[cell] = links; - } - if (i < row.length - 1) { - links[row[i + 1].value] = 0; - } - } - } - var data = []; - for (i = 0; i < maps.length; i++) { - var map = maps[i]; - var elements = []; - for (element in map) { - var permId = null; - if (i == indexOfLinkedColumn) - { - permId = permIds[element]; - } - elements.push(new Node(i, element, permId)); - } - elements.sort(); - var indexMap = {}; - for (j = 0; j < elements.length; j++) { - indexMap[elements[j].label] = j; - } - data.push([elements, [], indexMap]); - } - - for (i = 0; i < maps.length - 1; i++) { - var map = maps[i]; - var from = data[i][0]; - var links = data[i][1]; - var indexMap = data[i + 1][2]; - for (j = 0; j < from.length; j++) { - element = from[j]; - linkedElements = map[element.label]; - for (linkedElement in linkedElements) { - links.push([j, indexMap[linkedElement]]); - } - } - } - - return data; -} - -function clearVis() -{ - $('#vis > *').remove(); -} - -/** - * Request samples matching some criteria from the server and show them in the Page. - */ -function queryForResults(parameters) -{ - $("#waiting").show(); - openbisServer.createReportFromAggregationService("DSS1", "demo-proteomics-aggregation", parameters, displayReturnedResults); -// openbisServer.createReportFromAggregationService("STANDARD", "demo-proteomics-aggregation", parameters, displayReturnedResults); -} - - -function enterApp(data) -{ - if(data.result == null) - { - alert("Login or password incorrect"); - $("#username").focus(); - return; - } - - $("#login-form-div").hide(); - $("#main").show(); - - $('#openbis-logo').height(30); - - createVis(); -} \ No newline at end of file diff --git a/rtd_phosphonetx/source/html/demoapp/tree.css b/rtd_phosphonetx/source/html/demoapp/tree.css deleted file mode 100644 index 2d8808b86a6463a3acf29f784c853cc97f0105a8..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/html/demoapp/tree.css +++ /dev/null @@ -1,36 +0,0 @@ -.node circle { - fill: #fff; - stroke: #444444; - stroke-width: 1.5px; -} - -.columnHeader { - font: 16px; - font-weight: bold; -} - -.link { - fill: none; - stroke: #ccc; - stroke-width: 1.5px; - z-index: -1; -} - -.line { - fill: none; - stroke: steelblue; - stroke-width: 1px; -} - -.node { - font: 12px "Verdana", sans-serif; - z-index: 1; - cursor: pointer; - position: relative; - left: -15px; -} - - -.linked:hover { - font-weight: bold; -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/dss/proteomics/server/plugins/APMSReport.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/dss/proteomics/server/plugins/APMSReport.java deleted file mode 100644 index 48e9d481b7103e5ed92d496324a37e7e64f187b5..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/dss/proteomics/server/plugins/APMSReport.java +++ /dev/null @@ -1,559 +0,0 @@ -/* - * Copyright 2011 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.dss.proteomics.server.plugins; - -import java.io.File; -import java.io.FileReader; -import java.io.IOException; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.Comparator; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; -import java.util.Properties; -import java.util.Set; - -import javax.activation.DataHandler; -import javax.mail.util.ByteArrayDataSource; - -import org.apache.commons.io.IOUtils; - -import com.csvreader.CsvReader; - -import ch.rinn.restrictions.Private; -import ch.systemsx.cisd.base.exceptions.CheckedExceptionTunnel; -import ch.systemsx.cisd.common.exceptions.EnvironmentFailureException; -import ch.systemsx.cisd.common.exceptions.Status; -import ch.systemsx.cisd.common.exceptions.UserFailureException; -import ch.systemsx.cisd.common.mail.EMailAddress; -import ch.systemsx.cisd.common.string.Template; -import ch.systemsx.cisd.openbis.dss.generic.server.plugins.standard.AbstractTableModelReportingPlugin; -import ch.systemsx.cisd.openbis.dss.generic.shared.DataSetProcessingContext; -import ch.systemsx.cisd.openbis.dss.generic.shared.IDataSetDirectoryProvider; -import ch.systemsx.cisd.openbis.dss.generic.shared.IEncapsulatedOpenBISService; -import ch.systemsx.cisd.openbis.dss.generic.shared.IProcessingPluginTask; -import ch.systemsx.cisd.openbis.dss.generic.shared.ProcessingStatus; -import ch.systemsx.cisd.openbis.dss.generic.shared.ServiceProvider; -import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DoubleTableCell; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IEntityProperty; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ISerializableComparable; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ListSampleCriteria; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Material; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.StringTableCell; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModel; -import ch.systemsx.cisd.openbis.generic.shared.dto.DatasetDescription; -import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.SampleIdentifier; -import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.SampleIdentifierFactory; -import ch.systemsx.cisd.openbis.generic.shared.util.SimpleTableModelBuilder; - -/** - * Creates an APMS report from proteins.csv - * - * @author Franz-Josef Elmer - */ -public class APMSReport extends AbstractTableModelReportingPlugin implements IProcessingPluginTask -{ - private static final class Header - { - private final boolean abundanceHeader; - - private final String header; - - private String biologicalSample; - - private String protein; - - Header(String header, String newHeader) - { - abundanceHeader = newHeader != null; - this.header = abundanceHeader ? newHeader : header; - } - - public final String getBiologicalSample() - { - return biologicalSample; - } - - public final void setBiologicalSample(String biologicalSample) - { - this.biologicalSample = biologicalSample; - } - - public final String getProtein() - { - return protein; - } - - public final void setProtein(String protein) - { - this.protein = protein; - } - - public final String getHeader() - { - return header; - } - - public final boolean isAbundanceHeader() - { - return abundanceHeader; - } - - @Override - public String toString() - { - return abundanceHeader ? header + " [" + biologicalSample + ", " + protein + ']' - : header; - } - } - - private static final class Row - { - private final String[] values; - - private final Map<String, Integer> columnIndexMap; - - Row(String[] values, Map<String, Integer> columnIndexMap) - { - this.values = values; - this.columnIndexMap = columnIndexMap; - } - - public String getValue(String column) - { - Integer index = columnIndexMap.get(column); - return index == null ? "" : values[index]; - } - - @Override - public String toString() - { - return Arrays.asList(values).toString(); - } - } - - private static final class Table - { - private final List<Header> headers; - - private final Map<String, Integer> columnIndexMap = new HashMap<String, Integer>(); - - private final List<Row> rows = new ArrayList<Row>(); - - Table(List<Header> headers) - { - this.headers = headers; - for (int i = 0; i < headers.size(); i++) - { - columnIndexMap.put(headers.get(i).getHeader(), i); - } - } - - void add(String[] row) - { - rows.add(new Row(row, columnIndexMap)); - } - - public final List<Header> getHeaders() - { - return headers; - } - - public final List<Row> getRows() - { - return rows; - } - } - - private static final long serialVersionUID = 1L; - - @Private - static final String PROTEIN_FILE_NAME = "proteins.csv"; - - private static final String PROTEIN_PROPERTY_CODE_KEY = "protein-property-code"; - - @Private - static final String DEFAULT_PROTEIN_PROPERTY_CODE = "PROTEIN"; - - private static final Template E_MAIL_CONTENT_TEMPLATE = - new Template( - "Dear User\n\n" - + "Enclosed you will find the Protein APMS report file for experiment ${experiment-identifier}.\n" - + "Data Set: ${data-set}"); - - private final String proteinPropertyCode; - - private IEncapsulatedOpenBISService service; - - public APMSReport(Properties properties, File storeRoot) - { - super(properties, storeRoot); - proteinPropertyCode = - properties.getProperty(PROTEIN_PROPERTY_CODE_KEY, DEFAULT_PROTEIN_PROPERTY_CODE); - } - - @Override - public TableModel createReport(List<DatasetDescription> datasets, - DataSetProcessingContext context) - { - if (datasets.size() != 1) - { - throw new UserFailureException("Chosen plugin works with exactly one data set. " - + datasets.size() + " data sets selected."); - } - return createTableModel(datasets.get(0), context.getDirectoryProvider()); - } - - @Override - public ProcessingStatus process(List<DatasetDescription> datasets, - DataSetProcessingContext context) - { - ProcessingStatus status = new ProcessingStatus(); - for (DatasetDescription datasetDescription : datasets) - { - try - { - process(datasetDescription, context); - status.addDatasetStatus(datasetDescription, Status.OK); - } catch (Exception ex) - { - status.addDatasetStatus(datasetDescription, - Status.createError("Exception occured: " + ex)); - operationLog.error("Exception occured while processing " + datasetDescription, ex); - } - } - return status; - } - - private void process(DatasetDescription datasetDescription, DataSetProcessingContext context) - { - try - { - TableModel table = - createTableModel(datasetDescription, context.getDirectoryProvider()); - String tableAsString = convertTableToCsvString(table); - String experimentIdentifier = - datasetDescription.getSpaceCode() + '/' + datasetDescription.getProjectCode() - + '/' + datasetDescription.getExperimentCode(); - Template template = E_MAIL_CONTENT_TEMPLATE.createFreshCopy(); - template.bind("experiment-identifier", experimentIdentifier); - template.bind("data-set", datasetDescription.getDataSetCode()); - ByteArrayDataSource dataSource = new ByteArrayDataSource(tableAsString, "text/plain"); - context.getMailClient().sendEmailMessageWithAttachment("Protein APMS Report", - template.createText(), - datasetDescription.getExperimentCode() + "-APMS-report.txt", - new DataHandler(dataSource), null, null, - new EMailAddress(context.getUserEmailOrNull())); - - } catch (IOException ex) - { - throw CheckedExceptionTunnel.wrapIfNecessary(ex); - } - } - - private TableModel createTableModel(DatasetDescription datasetDescription, - IDataSetDirectoryProvider directoryProvider) - { - File proteinFile = getProteinFile(datasetDescription, directoryProvider); - Table table = readTable(proteinFile); - addHeaderMetaData(table); - SimpleTableModelBuilder builder = new SimpleTableModelBuilder(); - builder.addHeader("Sample ID"); - builder.addHeader("Bait"); - builder.addHeader("Prey"); - builder.addHeader("freq of obs"); - builder.addHeader("avg MS1 intensities (normalized for the bait)"); - builder.addHeader("STDV MS1 intensity"); - List<Entry<String, List<Header>>> groups = calculateAbundanceColumnGroups(table); - List<Row> rows = table.getRows(); - for (int i = 0; i < rows.size(); i++) - { - Row row = rows.get(i); - addRowsTo(builder, row, i, groups); - } - return builder.getTableModel(); - } - - private List<Entry<String, List<Header>>> calculateAbundanceColumnGroups(Table table) - { - List<Header> headers = table.getHeaders(); - Map<String, List<Header>> abundanceColumnHeaders = new HashMap<String, List<Header>>(); - for (Header header : headers) - { - if (header.isAbundanceHeader()) - { - String biologicalSample = header.getBiologicalSample(); - List<Header> list = abundanceColumnHeaders.get(biologicalSample); - if (list == null) - { - list = new ArrayList<Header>(); - abundanceColumnHeaders.put(biologicalSample, list); - } - list.add(header); - } - } - Set<Entry<String, List<Header>>> entrySet = abundanceColumnHeaders.entrySet(); - List<Entry<String, List<Header>>> entryList = - new ArrayList<Map.Entry<String, List<Header>>>(entrySet); - Collections.sort(entryList, new Comparator<Entry<String, List<Header>>>() - { - @Override - public int compare(Entry<String, List<Header>> e1, Entry<String, List<Header>> e2) - { - String key1 = e1.getKey(); - String key2 = e2.getKey(); - if (key1 != null && key2 != null) - { - return key1.compareTo(key2); - } - return key1 == null ? (key2 == null ? 0 : 1) : -1; - } - }); - return entryList; - } - - private void addRowsTo(SimpleTableModelBuilder builder, Row row, int i, - List<Entry<String, List<Header>>> groups) - { - String identifiedProtein = row.getValue("protein"); - for (Entry<String, List<Header>> group : groups) - { - String biologicalSample = group.getKey(); - List<Header> headers = group.getValue(); - String protein = null; - double countNonZeroAbundances = 0; - double sum = 0; - double sum2 = 0; - for (Header header : headers) - { - if (biologicalSample != null && protein == null) - { - protein = header.getProtein(); - } - String value = row.getValue(header.getHeader()); - try - { - double abundance = Double.parseDouble(value); - sum += abundance; - sum2 += abundance * abundance; - if (abundance > 0) - { - countNonZeroAbundances++; - } - } catch (NumberFormatException ex) - { - throw new UserFailureException((i + 5) + ". row has an invalid value (" + value - + ") for column " + header.getHeader() + ": " + row); - } - } - double averagedAbundance = sum / headers.size(); - double abundanceStandardDeviation = - Math.sqrt(Math.max(0, sum2 / headers.size() - averagedAbundance - * averagedAbundance)); - double frequencyOfObservation = countNonZeroAbundances / headers.size(); - StringTableCell biologicalSampleCell = StringTableCell.wrap(biologicalSample); - StringTableCell proteinCell = StringTableCell.wrap(protein); - StringTableCell identifiedProteinCell = new StringTableCell(identifiedProtein); - DoubleTableCell freqOfObsvCell = new DoubleTableCell(frequencyOfObservation); - DoubleTableCell abundanceCell = new DoubleTableCell(averagedAbundance); - DoubleTableCell abundanceStdvCell = new DoubleTableCell(abundanceStandardDeviation); - builder.addRow(Arrays.<ISerializableComparable> asList(biologicalSampleCell, - proteinCell, identifiedProteinCell, freqOfObsvCell, abundanceCell, - abundanceStdvCell)); - } - } - - private void addHeaderMetaData(Table table) - { - List<Header> headers = table.getHeaders(); - for (Header header : headers) - { - if (header.isAbundanceHeader()) - { - SampleIdentifier sampleIdentifier = - SampleIdentifierFactory.parse("/MS_DATA/" - + header.getHeader().toUpperCase()); - Sample sample = getService().tryGetSampleWithExperiment(sampleIdentifier); - if (sample == null) - { - throw new UserFailureException("Unknown sample: " + sampleIdentifier); - } - List<Sample> parents = - getService().listSamples( - ListSampleCriteria.createForChild(new TechId(sample.getId()))); - if (parents.size() != 1) - { - throw new UserFailureException("Exactly one parent sample expected for " - + sample.getIdentifier() + " instead of " + parents.size()); - } - Sample biologicalSample = parents.get(0); - header.setBiologicalSample(biologicalSample.getCode()); - String protein = tryToFindProteinProperty(biologicalSample); - if (protein != null) - { - header.setProtein(protein); - } - } - } - } - - private String tryToFindProteinProperty(Sample sample) - { - List<IEntityProperty> sampleProperties = sample.getProperties(); - for (IEntityProperty property : sampleProperties) - { - if (property.getPropertyType().getCode().equalsIgnoreCase(proteinPropertyCode)) - { - Material material = property.getMaterial(); - if (material != null) - { - return material.getCode(); - } - return property.tryGetAsString(); - } - } - List<Sample> parents = - getService().listSamples( - ListSampleCriteria.createForChild(new TechId(sample.getId()))); - for (Sample parent : parents) - { - String proteinProperty = tryToFindProteinProperty(parent); - if (proteinProperty != null) - { - return proteinProperty; - } - } - return null; - } - - private Table readTable(File file) - { - FileReader reader = null; - try - { - reader = new FileReader(file); - CsvReader csvReader = new CsvReader(reader); - csvReader.readRecord(); - csvReader.readRecord(); - csvReader.readRecord(); - Map<String, String> map = createAbundanceColumnMap(csvReader.getRawRecord()); - csvReader.readRecord(); - String[] columnHeaders = csvReader.getValues(); - List<Header> headers = new ArrayList<Header>(); - for (int i = 0; i < columnHeaders.length; i++) - { - String header = columnHeaders[i]; - String newHeader = map.get(header); - headers.add(new Header(header, newHeader)); - } - Table table = new Table(headers); - while (csvReader.readRecord()) - { - table.add(csvReader.getValues()); - } - return table; - } catch (IOException ex) - { - throw CheckedExceptionTunnel.wrapIfNecessary(ex); - } finally - { - IOUtils.closeQuietly(reader); - } - } - - private Map<String, String> createAbundanceColumnMap(String abundanceColumnMappingDescription) - { - int indexOfFirstColon = abundanceColumnMappingDescription.indexOf(':'); - if (indexOfFirstColon < 0) - { - throw new UserFailureException("Missing ':' in third line: " - + abundanceColumnMappingDescription); - } - String[] terms = - abundanceColumnMappingDescription.substring(indexOfFirstColon + 1).split(","); - Map<String, String> map = new HashMap<String, String>(); - for (String term : terms) - { - int indexOfColon = term.indexOf(':'); - if (indexOfColon < 0) - { - throw new UserFailureException("Missing ':' in mapping definition: " + term); - } - String abundanceColumn = "abundance_" + term.substring(0, indexOfColon).trim(); - String fileName = term.substring(indexOfColon + 1).trim(); - int lastIndexOfSlash = fileName.lastIndexOf('/'); - if (lastIndexOfSlash >= 0) - { - fileName = fileName.substring(lastIndexOfSlash + 1); - } - int lastIndexOfDot = fileName.lastIndexOf('.'); - if (lastIndexOfDot >= 0) - { - fileName = fileName.substring(0, lastIndexOfDot); - } - map.put(abundanceColumn, fileName); - } - return map; - } - - private File getProteinFile(DatasetDescription datasetDescription, - IDataSetDirectoryProvider directoryProvider) - { - @SuppressWarnings("deprecation") - File dataSetDir = getDataSubDir(directoryProvider, datasetDescription); - if (dataSetDir.isDirectory() == false) - { - throw new EnvironmentFailureException("Data set folder is not a directory: " - + dataSetDir); - } - File[] files = dataSetDir.listFiles(); - if (files.length == 0) - { - throw new EnvironmentFailureException("Empty data set folder: " + dataSetDir); - } - File proteinFile = new File(files[0], PROTEIN_FILE_NAME); - if (proteinFile.exists() == false) - { - throw new UserFailureException("File " + PROTEIN_FILE_NAME + " missing."); - } - if (proteinFile.isFile() == false) - { - throw new UserFailureException("File " + PROTEIN_FILE_NAME + " is a directory."); - } - return proteinFile; - } - - private IEncapsulatedOpenBISService getService() - { - if (service == null) - { - service = ServiceProvider.getOpenBISService(); - } - return service; - } - - // for tests - void setService(IEncapsulatedOpenBISService service) - { - this.service = service; - } -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/dss/proteomics/server/plugins/DataSetCopier.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/dss/proteomics/server/plugins/DataSetCopier.java deleted file mode 100644 index 35ea9750c0542ac054600961bcdc3344d76ab3be..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/dss/proteomics/server/plugins/DataSetCopier.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright 2010 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.dss.proteomics.server.plugins; - -import static ch.systemsx.cisd.openbis.dss.generic.server.plugins.standard.DataSetCopier.DESTINATION_KEY; - -import java.io.File; -import java.util.Properties; - -import ch.rinn.restrictions.Private; -import ch.systemsx.cisd.openbis.dss.generic.server.plugins.standard.AbstractDropboxProcessingPlugin; -import ch.systemsx.cisd.openbis.dss.generic.server.plugins.standard.IPathCopierFactory; -import ch.systemsx.cisd.openbis.dss.generic.server.plugins.standard.ISshCommandExecutorFactory; -import ch.systemsx.cisd.openbis.dss.generic.server.plugins.standard.RsyncCopierFactory; -import ch.systemsx.cisd.openbis.dss.generic.server.plugins.standard.SshCommandExecutorFactory; -import ch.systemsx.cisd.openbis.dss.generic.shared.DataSetProcessingContext; -import ch.systemsx.cisd.openbis.generic.shared.dto.DatasetDescription; - -/** - * @author Franz-Josef Elmer - */ -public class DataSetCopier extends AbstractDropboxProcessingPlugin -{ - private static final long serialVersionUID = 1L; - - public DataSetCopier(Properties properties, File storeRoot) - { - this(properties, storeRoot, new RsyncCopierFactory(), new SshCommandExecutorFactory()); - } - - @Private - DataSetCopier(Properties properties, File storeRoot, IPathCopierFactory pathCopierFactory, - ISshCommandExecutorFactory sshCommandExecutorFactory) - { - super(properties, storeRoot, new LocalAndRemoteCopier(properties, pathCopierFactory, - sshCommandExecutorFactory)); - } - - @Override - protected String getProcessingDescription(DatasetDescription dataset, - DataSetProcessingContext context) - { - return "Copy to " + properties.getProperty(DESTINATION_KEY); - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/dss/proteomics/server/plugins/LocalAndRemoteCopier.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/dss/proteomics/server/plugins/LocalAndRemoteCopier.java deleted file mode 100644 index 6bdf93807219f7d2ea090fa543d9761565c0ce10..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/dss/proteomics/server/plugins/LocalAndRemoteCopier.java +++ /dev/null @@ -1,191 +0,0 @@ -/* - * Copyright 2010 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.dss.proteomics.server.plugins; - -import java.io.File; -import java.io.Serializable; -import java.util.Map; -import java.util.Properties; - -import org.apache.log4j.Logger; - -import ch.rinn.restrictions.Private; -import ch.systemsx.cisd.common.exceptions.ConfigurationFailureException; -import ch.systemsx.cisd.common.exceptions.ExceptionWithStatus; -import ch.systemsx.cisd.common.exceptions.Status; -import ch.systemsx.cisd.common.filesystem.BooleanStatus; -import ch.systemsx.cisd.common.filesystem.FileOperations; -import ch.systemsx.cisd.common.filesystem.FileUtilities; -import ch.systemsx.cisd.common.filesystem.HostAwareFile; -import ch.systemsx.cisd.common.filesystem.IPathCopier; -import ch.systemsx.cisd.common.filesystem.highwatermark.HostAwareFileWithHighwaterMark; -import ch.systemsx.cisd.common.filesystem.ssh.ISshCommandExecutor; -import ch.systemsx.cisd.common.logging.LogCategory; -import ch.systemsx.cisd.common.logging.LogFactory; -import ch.systemsx.cisd.common.properties.PropertyUtils; -import ch.systemsx.cisd.openbis.dss.generic.server.IDataSetFileOperationsExecutor; -import ch.systemsx.cisd.openbis.dss.generic.server.LocalDataSetFileOperationsExcecutor; -import ch.systemsx.cisd.openbis.dss.generic.server.RemoteDataSetFileOperationsExecutor; -import ch.systemsx.cisd.openbis.dss.generic.server.plugins.standard.Copier; -import ch.systemsx.cisd.openbis.dss.generic.server.plugins.standard.DataSetCopier; -import ch.systemsx.cisd.openbis.dss.generic.server.plugins.standard.IPathCopierFactory; -import ch.systemsx.cisd.openbis.dss.generic.server.plugins.standard.ISshCommandExecutorFactory; -import ch.systemsx.cisd.openbis.dss.generic.shared.IPostRegistrationDatasetHandler; -import ch.systemsx.cisd.openbis.dss.generic.shared.dto.DataSetInformation; -import ch.systemsx.cisd.openbis.dss.generic.shared.utils.RSyncConfig; - -/** - * @author Franz-Josef Elmer - */ -class LocalAndRemoteCopier implements Serializable, IPostRegistrationDatasetHandler -{ - - @Private - static final String MARKER_FILE_PREFIX = "marker-file-prefix"; - - @Private - static final String SAMPLE_UNKNOWN = "sample-unknown"; - - private static final long serialVersionUID = 1L; - - final static Logger operationLog = LogFactory.getLogger(LogCategory.OPERATION, - LocalAndRemoteCopier.class); - - private final Properties properties; - - private final IPathCopierFactory pathCopierFactory; - - private final ISshCommandExecutorFactory sshCommandExecutorFactory; - - private transient IDataSetFileOperationsExecutor executor; - - private transient String destination; - - private String markerFilePrefix; - - LocalAndRemoteCopier(Properties properties, IPathCopierFactory pathCopierFactory, - ISshCommandExecutorFactory sshCommandExecutorFactory) - { - this.properties = properties; - this.pathCopierFactory = pathCopierFactory; - this.sshCommandExecutorFactory = sshCommandExecutorFactory; - markerFilePrefix = properties.getProperty(MARKER_FILE_PREFIX); - if (markerFilePrefix != null && markerFilePrefix.length() == 0) - { - throw new ConfigurationFailureException("marker-file-prefix is an empty string."); - } - init(); - } - - private void init() - { - String hostFile = - PropertyUtils.getMandatoryProperty(properties, DataSetCopier.DESTINATION_KEY); - HostAwareFile hostAwareFile = HostAwareFileWithHighwaterMark.create(hostFile, -1); - String hostOrNull = hostAwareFile.tryGetHost(); - destination = hostAwareFile.getPath(); - if (hostOrNull == null) - { - File sshExecutable = null; // don't use ssh locally - File rsyncExecutable = Copier.getExecutable(properties, DataSetCopier.RSYNC_EXEC); - IPathCopier copier = - pathCopierFactory.create(rsyncExecutable, sshExecutable, - DataSetCopier.SSH_TIMEOUT_MILLIS, RSyncConfig.getInstance().getAdditionalCommandLineOptions()); - copier.check(); - String rsyncModule = hostAwareFile.tryGetRsyncModule(); - String rsyncPasswordFile = - properties.getProperty(DataSetCopier.RSYNC_PASSWORD_FILE_KEY); - executor = - new LocalDataSetFileOperationsExcecutor( - FileOperations.getMonitoredInstanceForCurrentThread(), copier, - rsyncModule, rsyncPasswordFile); - } else - { - File sshExecutable = Copier.getExecutable(properties, DataSetCopier.SSH_EXEC); - File rsyncExecutable = Copier.getExecutable(properties, DataSetCopier.RSYNC_EXEC); - File gfindExecutable = Copier.getExecutable(properties, DataSetCopier.GFIND_EXEC); - IPathCopier copier = - pathCopierFactory.create(rsyncExecutable, sshExecutable, - DataSetCopier.SSH_TIMEOUT_MILLIS, RSyncConfig.getInstance().getAdditionalCommandLineOptions()); - copier.check(); - String rsyncModule = hostAwareFile.tryGetRsyncModule(); - String rsyncPasswordFile = - properties.getProperty(DataSetCopier.RSYNC_PASSWORD_FILE_KEY); - FileUtilities.checkPathCopier(copier, hostOrNull, null, rsyncModule, rsyncPasswordFile, - DataSetCopier.SSH_TIMEOUT_MILLIS); - ISshCommandExecutor sshCommandExecutor = - sshCommandExecutorFactory.create(sshExecutable, hostOrNull); - executor = - new RemoteDataSetFileOperationsExecutor(sshCommandExecutor, copier, - gfindExecutable, hostOrNull, rsyncModule, rsyncPasswordFile, - DataSetCopier.SSH_TIMEOUT_MILLIS); - } - } - - @Override - public void undoLastOperation() - { - } - - /** - * Copies specified data file/folder to destination specified in constructor. The name of the file/folder at the destination is defined by the - * data set code. - */ - @Override - public Status handle(File originalData, DataSetInformation dataSetInformation, - Map<String, String> parameterBindings) - { - if (destination == null) - { - init(); - } - try - { - final File destinationLocalFile = new File(destination); - String target = dataSetInformation.getDataSetCode(); - File targetFolder = new File(destinationLocalFile, target); - deleteTargetFolder(targetFolder); - executor.copyDataSetToDestination(originalData, destinationLocalFile); - executor.renameTo(targetFolder, new File(destination, originalData.getName())); - if (markerFilePrefix != null) - { - executor.createMarkerFile(new File(destination, markerFilePrefix + target)); - } - return Status.OK; - - } catch (ExceptionWithStatus ex) - { - return ex.getStatus(); - } - } - - private void deleteTargetFolder(File targetFolder) - { - BooleanStatus targetExists = executor.exists(targetFolder); - if (targetExists.isError()) - { - operationLog.error("Could not check existence of '" + targetFolder + "': " - + targetExists.tryGetMessage()); - throw new ExceptionWithStatus(Status.createError("couldn't check existence")); - } - if (targetExists.isSuccess()) - { - executor.deleteFolder(targetFolder); - } - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/AbstractDataSetInfoExtractorWithService.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/AbstractDataSetInfoExtractorWithService.java deleted file mode 100644 index 07158f3b1702bd38ed7e9aed6a5405ad3f4d7e34..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/AbstractDataSetInfoExtractorWithService.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright 2010 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.etlserver.proteomics; - -import ch.systemsx.cisd.etlserver.IDataSetInfoExtractor; -import ch.systemsx.cisd.openbis.dss.generic.shared.IEncapsulatedOpenBISService; - -/** - * @author Franz-Josef Elmer - */ -abstract class AbstractDataSetInfoExtractorWithService implements IDataSetInfoExtractor -{ - protected final IEncapsulatedOpenBISService service; - - protected AbstractDataSetInfoExtractorWithService(IEncapsulatedOpenBISService service) - { - this.service = service; - - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/AbstractHandler.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/AbstractHandler.java deleted file mode 100644 index fdf05fc0585bf5f2fe9a63b52094bcca8c1070cb..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/AbstractHandler.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.etlserver.proteomics; - -/** - * Abstract super class of classes using {@link IProtDAO}. - * - * @author Franz-Josef Elmer - */ -abstract class AbstractHandler -{ - protected final IProtDAO dao; - - AbstractHandler(IProtDAO dao) - { - this.dao = dao; - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/AbstractSampleHandler.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/AbstractSampleHandler.java deleted file mode 100644 index 9f102974f9af7fa579dc0006f3c7d7ae61e4208b..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/AbstractSampleHandler.java +++ /dev/null @@ -1,146 +0,0 @@ -/* - * Copyright 2011 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.etlserver.proteomics; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import ch.rinn.restrictions.Private; -import ch.systemsx.cisd.openbis.dss.generic.shared.IEncapsulatedOpenBISService; -import ch.systemsx.cisd.openbis.etlserver.proteomics.dto.Experiment; -import ch.systemsx.cisd.openbis.etlserver.proteomics.dto.Sample; -import ch.systemsx.cisd.openbis.generic.shared.dto.ListSamplesByPropertyCriteria; -import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.ExperimentIdentifier; -import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.SampleIdentifier; -import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.SampleIdentifierFactory; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.CommonConstants; - -/** - * Abstract super class of classes getting or creating {@link Sample} instances. - * - * @author Franz-Josef Elmer - */ -abstract class AbstractSampleHandler extends AbstractHandler -{ - @Private - static final String MZXML_FILENAME = "MZXML_FILENAME"; - - protected static final class SampleOrError - { - Sample sample; - - String error; - } - - protected final IEncapsulatedOpenBISService openbisService; - - protected final ExperimentIdentifier experimentIdentifier; - - private final Experiment experiment; - - private final Map<String, SampleOrError> samplesOrErrors = new HashMap<String, SampleOrError>(); - - private final String delimiter; - - private final boolean restrictedSampleResolving; - - AbstractSampleHandler(IEncapsulatedOpenBISService openbisService, IProtDAO dao, - ExperimentIdentifier experimentIdentifier, Experiment experiment, String delimiter, - boolean restrictedSampleResolving) - { - super(dao); - this.openbisService = openbisService; - this.experimentIdentifier = experimentIdentifier; - this.experiment = experiment; - this.delimiter = delimiter; - this.restrictedSampleResolving = restrictedSampleResolving; - } - - protected SampleOrError getOrCreateSampleOrError(String sampleNameAndMore) - { - int indexOfDelimiter = sampleNameAndMore.indexOf(delimiter); - String sampleName; - if (indexOfDelimiter < 0) - { - sampleName = sampleNameAndMore; - } else - { - sampleName = sampleNameAndMore.substring(0, indexOfDelimiter); - } - SampleOrError sampleOrError = samplesOrErrors.get(sampleName); - if (sampleOrError == null) - { - // first we look for a sample in space MS_DATA - SampleIdentifier sampleIdentifier = - SampleIdentifierFactory.parse(sampleName, "/" + CommonConstants.MS_DATA_SPACE); - String sampleCode = sampleIdentifier.getSampleCode(); - ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample sample = - openbisService.tryGetSampleWithExperiment(sampleIdentifier); - sampleOrError = new SampleOrError(); - if (sample != null) - { - sampleOrError.sample = getOrCreateSample(sample.getPermId()); - } else if (restrictedSampleResolving == false) - { - // second we look for a sample in same space as search experiment with - // a property specified by 'sampleName' - String spaceCode = experimentIdentifier.getSpaceCode(); - List<ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample> list = - openbisService.listSamplesByCriteria(new ListSamplesByPropertyCriteria( - MZXML_FILENAME, sampleName, spaceCode, null)); - if (list == null || list.size() == 0) - { - sampleOrError.error = "an unidentified sample: " + sampleName; - } else if (list.size() > 1) - { - sampleOrError.error = - "a not uniquely specified sample (" + list.size() - + " samples are found): " + sampleName; - } else - { - sample = list.get(0); - sampleOrError.sample = getOrCreateSample(sample.getPermId()); - } - } else - { - sampleOrError.error = "Couldn't resolve sample: " + sampleIdentifier; - } - if (sample != null) - { - handleSample(sampleCode, sample); - } - samplesOrErrors.put(sampleName, sampleOrError); - } - return sampleOrError; - } - - private Sample getOrCreateSample(String samplePermID) - { - Sample sample = dao.tryToGetSampleByPermID(samplePermID); - if (sample == null) - { - sample = new Sample(); - sample.setPermID(samplePermID); - sample.setId(dao.createSample(experiment.getId(), samplePermID)); - } - return sample; - } - - protected abstract void handleSample(String parameterName, - ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample sample); -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/AbundanceHandler.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/AbundanceHandler.java deleted file mode 100644 index 38b3223a0ae9b31727762709f7ea5665ff6a230e..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/AbundanceHandler.java +++ /dev/null @@ -1,91 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.etlserver.proteomics; - -import ch.systemsx.cisd.common.exceptions.UserFailureException; -import ch.systemsx.cisd.openbis.dss.generic.shared.IEncapsulatedOpenBISService; -import ch.systemsx.cisd.openbis.etlserver.proteomics.dto.Experiment; -import ch.systemsx.cisd.openbis.etlserver.proteomics.dto.Parameter; -import ch.systemsx.cisd.openbis.etlserver.proteomics.dto.Sample; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewSample; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SampleType; -import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.ExperimentIdentifier; -import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.SampleIdentifier; -import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.SpaceIdentifier; - -/** - * Handler of {@link Parameter} objects of type 'abundance'. - * - * @author Franz-Josef Elmer - */ -class AbundanceHandler extends AbstractSampleHandler -{ - private final SampleType sampleType; - - AbundanceHandler(IEncapsulatedOpenBISService openbisService, IProtDAO dao, - ExperimentIdentifier experimentIdentifier, Experiment experiment, String delimiter, - boolean restrictedSampleResolving) - { - super(openbisService, dao, experimentIdentifier, experiment, delimiter, - restrictedSampleResolving); - sampleType = new SampleType(); - sampleType.setCode(Constants.SEARCH_SAMPLE_TYPE); - } - - void addAbundancesToDatabase(Parameter parameter, long proteinID, String proteinName) - { - Sample sample = getOrCreateSample(parameter.getName(), proteinName); - try - { - double abundance = Double.parseDouble(parameter.getValue()); - dao.createAbundance(proteinID, sample.getId(), abundance); - } catch (NumberFormatException ex) - { - throw new UserFailureException("Abundance of sample '" + parameter.getName() - + "' of protein '" + proteinName + "' is not a number: " + parameter.getValue()); - } - } - - private Sample getOrCreateSample(String parameterName, String proteinName) - { - SampleOrError sampleOrError = getOrCreateSampleOrError(parameterName); - if (sampleOrError.error != null) - { - throw new UserFailureException("Protein '" + proteinName - + "' has an abundance value for " + sampleOrError.error); - } - return sampleOrError.sample; - } - - @Override - @SuppressWarnings("deprecation") - protected void handleSample(String parameterName, - ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample sample) - { - NewSample searchSample = new NewSample(); - searchSample.setSampleType(sampleType); - SpaceIdentifier spaceIdentifier = - new SpaceIdentifier(experimentIdentifier.getSpaceCode()); - SampleIdentifier identifier = - new SampleIdentifier(spaceIdentifier, parameterName + "_" - + experimentIdentifier.getExperimentCode()); - searchSample.setIdentifier(identifier.toString()); - searchSample.setExperimentIdentifier(experimentIdentifier.toString()); - searchSample.setParentIdentifier(sample.getIdentifier()); - openbisService.registerSample(searchSample, null); - } -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/Constants.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/Constants.java deleted file mode 100644 index b41a7e317822a257fe925c9b7b9e41427c76cf69..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/Constants.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.etlserver.proteomics; - -/** - * @author Franz-Josef Elmer - */ -public class Constants -{ - public static final String NAMESPACE = "http://regis-web.systemsbiology.net/protXML"; - - public static final String SEARCH_SAMPLE_TYPE = "SEARCH"; -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/DataSetInfoExtractorForMSInjection.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/DataSetInfoExtractorForMSInjection.java deleted file mode 100644 index a593abbdd80e360c46549809f4fe1f4e31270711..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/DataSetInfoExtractorForMSInjection.java +++ /dev/null @@ -1,237 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.etlserver.proteomics; - -import java.io.File; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; -import java.util.Properties; -import java.util.Set; - -import org.apache.log4j.Logger; - -import ch.systemsx.cisd.common.exceptions.EnvironmentFailureException; -import ch.systemsx.cisd.common.exceptions.UserFailureException; -import ch.systemsx.cisd.common.logging.LogCategory; -import ch.systemsx.cisd.common.logging.LogFactory; -import ch.systemsx.cisd.common.properties.PropertyUtils; -import ch.systemsx.cisd.openbis.dss.generic.shared.IEncapsulatedOpenBISService; -import ch.systemsx.cisd.openbis.dss.generic.shared.ServiceProvider; -import ch.systemsx.cisd.openbis.dss.generic.shared.dto.DataSetInformation; -import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.AbstractExternalData; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSetType; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Experiment; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IEntityProperty; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewAttachment; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewExperiment; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewSample; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SampleType; -import ch.systemsx.cisd.openbis.generic.shared.dto.NewProperty; -import ch.systemsx.cisd.openbis.generic.shared.dto.SampleUpdatesDTO; -import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.ExperimentIdentifier; -import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.SampleIdentifier; -import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.SampleIdentifierFactory; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.CommonConstants; - -/** - * Data set info extractor for MS injection data sets. Information is extracted from a properties file (ms-injection.properties) which is expected t - * be a part of the data set. As a side effect a corresponding sample of type MS_INJECTION is created with the properties of this file. - * - * @author Franz-Josef Elmer - */ -public class DataSetInfoExtractorForMSInjection extends AbstractDataSetInfoExtractorWithService -{ - private final static Logger operationLog = LogFactory.getLogger(LogCategory.OPERATION, - DataSetInfoExtractorForMSInjection.class); - - static final String MS_INJECTION_PROPERTIES_FILE = "ms-injection.properties"; - - static final String DATA_SET_PROPERTIES_FILE = "data-set.properties"; - - static final String PROJECT_CODE_KEY = "PROJECT_CODE"; - - static final String EXPERIMENT_CODE_KEY = "EXPERIMENT_CODE"; - - static final String SAMPLE_CODE_KEY = "SAMPLE_CODE"; - - static final String BIOLOGICAL_SAMPLE_IDENTIFIER_KEY = "BIOLOGICAL_SAMPLE_IDENTIFIER"; - - static final String USER_KEY = "USER"; - - static final String DATA_SET_TYPE_KEY = "DATA_SET_TYPE"; - - static final String FILE_TYPE_KEY = "FILE_TYPE"; - - static final String PARENT_TYPE_KEY = "PARENT_TYPE"; - - static final String EXPERIMENT_TYPE_CODE = "MS_INJECT"; - - public DataSetInfoExtractorForMSInjection(Properties properties) - { - this(ServiceProvider.getOpenBISService()); - } - - DataSetInfoExtractorForMSInjection(IEncapsulatedOpenBISService service) - { - super(service); - } - - @Override - public DataSetInformation getDataSetInformation(File incomingDataSetPath, - IEncapsulatedOpenBISService openbisService) throws UserFailureException, - EnvironmentFailureException - { - Properties sampleProperties = - Util.loadPropertiesFile(incomingDataSetPath, MS_INJECTION_PROPERTIES_FILE); - DataSetInformation info = new DataSetInformation(); - info.setSpaceCode(CommonConstants.MS_DATA_SPACE); - info.setSampleCode(PropertyUtils.getMandatoryProperty(sampleProperties, SAMPLE_CODE_KEY)); - SampleIdentifier sampleIdentifier = info.getSampleIdentifier(); - ExperimentIdentifier experimentIdentifier = getExperimentIdentifier(sampleProperties); - getOrCreateExperiment(experimentIdentifier); - info.setExperimentIdentifier(experimentIdentifier); - long sampleID = - registerOrUpdateSample(sampleIdentifier, experimentIdentifier, sampleProperties); - - Properties dataSetProperties = - Util.loadPropertiesFile(incomingDataSetPath, DATA_SET_PROPERTIES_FILE); - String dataSetTypeCode = - PropertyUtils.getMandatoryProperty(dataSetProperties, DATA_SET_TYPE_KEY); - String parentTypeOrNull = dataSetProperties.getProperty(PARENT_TYPE_KEY); - dataSetProperties.remove(DATA_SET_TYPE_KEY); - dataSetProperties.remove(FILE_TYPE_KEY); - dataSetProperties.remove(PARENT_TYPE_KEY); - setDataSetPropertiesFor(info, dataSetProperties, dataSetTypeCode); - if (parentTypeOrNull != null) - { - List<AbstractExternalData> dataSets = service.listDataSetsBySampleID(sampleID, false); - AbstractExternalData youngestDataSet = null; - for (AbstractExternalData dataSet : dataSets) - { - if (dataSet.getDataSetType().getCode().equals(parentTypeOrNull)) - { - if (youngestDataSet == null || timeStamp(youngestDataSet) < timeStamp(dataSet)) - { - youngestDataSet = dataSet; - } - } - } - if (youngestDataSet != null) - { - info.setParentDataSetCodes(Arrays.asList(youngestDataSet.getCode())); - } - } - return info; - } - - private long registerOrUpdateSample(SampleIdentifier sampleIdentifier, - ExperimentIdentifier experimentIdentifier, Properties properties) - { - SampleType sampleType = service.getSampleType(CommonConstants.MS_INJECTION_SAMPLE_TYPE_CODE); - Sample sample = service.tryGetSampleWithExperiment(sampleIdentifier); - String biologicalSampleIdentifier = tryToGetBiologicalSampleIdentifier(properties); - if (sample == null) - { - NewSample newSample = new NewSample(); - newSample.setSampleType(sampleType); - newSample.setExperimentIdentifier(experimentIdentifier.toString()); - newSample.setIdentifier(sampleIdentifier.toString()); - if (biologicalSampleIdentifier != null) - { - newSample.setParents(biologicalSampleIdentifier); - } - IEntityProperty[] sampleProperties = Util.getAndCheckProperties(properties, sampleType); - newSample.setProperties(sampleProperties); - return service.registerSample(newSample, properties.getProperty(USER_KEY)); - } else - { - TechId sampleID = new TechId(sample.getId()); - List<IEntityProperty> propertiesList = - Util.getProperties(properties, sampleType, new ArrayList<String>()); - Set<NewAttachment> emptySet = Collections.<NewAttachment> emptySet(); - int version = sample.getVersion(); - service.updateSample(new SampleUpdatesDTO(sampleID, propertiesList, - experimentIdentifier, null, emptySet, version, sampleIdentifier, null, - biologicalSampleIdentifier == null ? null : new String[] - { biologicalSampleIdentifier })); - return sample.getId(); - } - } - - private String tryToGetBiologicalSampleIdentifier(Properties properties) - { - String biologicalSampleIdentifier = - properties.getProperty(BIOLOGICAL_SAMPLE_IDENTIFIER_KEY); - if (biologicalSampleIdentifier != null) - { - Sample bioSample = - service.tryGetSampleWithExperiment(SampleIdentifierFactory - .parse(biologicalSampleIdentifier)); - if (bioSample == null) - { - // ignore biological sample if it does not exist. - biologicalSampleIdentifier = null; - operationLog.warn("Property " + BIOLOGICAL_SAMPLE_IDENTIFIER_KEY - + " will be ignored because the specified biological sample " - + biologicalSampleIdentifier + " does not exist."); - } - } - return biologicalSampleIdentifier; - } - - private long timeStamp(AbstractExternalData dataSet) - { - return dataSet.getRegistrationDate().getTime(); - } - - private void setDataSetPropertiesFor(DataSetInformation info, Properties dataSetProperties, - String dataSetTypeCode) - { - DataSetType dataSetType = service.getDataSetType(dataSetTypeCode).getDataSetType(); - IEntityProperty[] props = Util.getAndCheckProperties(dataSetProperties, dataSetType); - List<NewProperty> properties = new ArrayList<NewProperty>(); - for (IEntityProperty p : props) - { - properties.add(new NewProperty(p.getPropertyType().getCode(), p.tryGetAsString())); - } - info.setDataSetProperties(properties); - } - - private long getOrCreateExperiment(ExperimentIdentifier identifier) - { - Experiment experiment = service.tryGetExperiment(identifier); - if (experiment == null) - { - return service.registerExperiment(new NewExperiment(identifier.toString(), - EXPERIMENT_TYPE_CODE)); - } - return experiment.getId(); - } - - private ExperimentIdentifier getExperimentIdentifier(Properties msInjectionProperties) - { - String projectCode = - PropertyUtils.getMandatoryProperty(msInjectionProperties, PROJECT_CODE_KEY); - String experimentCode = - PropertyUtils.getMandatoryProperty(msInjectionProperties, EXPERIMENT_CODE_KEY); - return new ExperimentIdentifier(CommonConstants.MS_DATA_SPACE, projectCode, experimentCode); - } -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/DataSetInfoExtractorForProteinResults.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/DataSetInfoExtractorForProteinResults.java deleted file mode 100644 index 4e0c8e6a8fcc3001f6a6e9037f8e732fb2feaf40..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/DataSetInfoExtractorForProteinResults.java +++ /dev/null @@ -1,241 +0,0 @@ -/* - * Copyright 2010 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.etlserver.proteomics; - -import java.io.File; -import java.util.ArrayList; -import java.util.List; -import java.util.Properties; - -import org.apache.commons.io.FileUtils; -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import ch.rinn.restrictions.Private; -import ch.systemsx.cisd.common.exceptions.EnvironmentFailureException; -import ch.systemsx.cisd.common.exceptions.UserFailureException; -import ch.systemsx.cisd.common.filesystem.FileUtilities; -import ch.systemsx.cisd.common.io.PropertyIOUtils; -import ch.systemsx.cisd.common.logging.LogCategory; -import ch.systemsx.cisd.common.logging.LogFactory; -import ch.systemsx.cisd.common.properties.PropertyUtils; -import ch.systemsx.cisd.openbis.dss.generic.shared.IEncapsulatedOpenBISService; -import ch.systemsx.cisd.openbis.dss.generic.shared.ServiceProvider; -import ch.systemsx.cisd.openbis.dss.generic.shared.dto.DataSetInformation; -import ch.systemsx.cisd.openbis.etlserver.proteomics.dto.ParentDataSetCodes; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.AbstractExternalData; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityKind; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Experiment; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExperimentType; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewExperiment; -import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.ExperimentIdentifier; -import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.ExperimentIdentifierFactory; -import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.ProjectIdentifier; - -/** - * @author Franz-Josef Elmer - */ -public class DataSetInfoExtractorForProteinResults extends AbstractDataSetInfoExtractorWithService -{ - private static final Logger operationLog = - LogFactory.getLogger(LogCategory.OPERATION, DataSetInfoExtractorForProteinResults.class); - - static final String NOT_PROCESSED_PROPERTY = "NOT_PROCESSED"; - - @Private - static final String PROT_XML_SIZE_THRESHOLD = "prot-xml-size-threshold-in-MB"; - - private static final int DEFAULT_PROT_XML_SIZE_THRESHOLD = 256; - - @Private - static final String EXPERIMENT_TYPE_CODE_KEY = "experiment-type-code"; - - @Private - static final String EXPERIMENT_CODE_KEY = "experiment-code"; - - @Private - static final String EXPERIMENT_PROPERTIES_FILE_NAME_KEY = "experiment-properties-file-name"; - - @Private - static final String DEFAULT_EXPERIMENT_TYPE_CODE = "MS_SEARCH"; - - @Private - static final String SEPARATOR_KEY = "separator"; - - @Private - static final String DEFAULT_SEPARATOR = "&"; - - @Private - static final String DEFAULT_EXPERIMENT_PROPERTIES_FILE_NAME = "search.properties"; - - static final String PARENT_DATA_SET_CODES = "parent-data-set-codes"; - - static final String EXPERIMENT_IDENTIFIER_KEY = "base-experiment"; - - private final String separator; - - private final String experimentPropertiesFileName; - - private final String experimentTypeCode; - - private final long protXmlSizeThreshold; - - public DataSetInfoExtractorForProteinResults(Properties properties) - { - this(properties, ServiceProvider.getOpenBISService()); - } - - DataSetInfoExtractorForProteinResults(Properties properties, IEncapsulatedOpenBISService service) - { - super(service); - separator = properties.getProperty(SEPARATOR_KEY, DEFAULT_SEPARATOR); - experimentPropertiesFileName = - properties.getProperty(EXPERIMENT_PROPERTIES_FILE_NAME_KEY, - DEFAULT_EXPERIMENT_PROPERTIES_FILE_NAME); - experimentTypeCode = - properties.getProperty(EXPERIMENT_TYPE_CODE_KEY, DEFAULT_EXPERIMENT_TYPE_CODE); - protXmlSizeThreshold = PropertyUtils.getInt(properties, PROT_XML_SIZE_THRESHOLD, - DEFAULT_PROT_XML_SIZE_THRESHOLD) * FileUtils.ONE_MB; - } - - @Override - public DataSetInformation getDataSetInformation(File incomingDataSetPath, - IEncapsulatedOpenBISService openbisService) throws UserFailureException, - EnvironmentFailureException - { - String name = incomingDataSetPath.getName(); - String[] items = StringUtils.splitByWholeSeparator(name, separator); - if (items.length < 2) - { - throw new UserFailureException( - "The name of the data set should have at least two parts separated by '" - + separator + "': " + name); - } - ProjectIdentifier projectIdentifier = new ProjectIdentifier(items[0], items[1]); - Properties properties = - loadSearchProperties(new File(incomingDataSetPath, experimentPropertiesFileName)); - String experimentCode = properties.getProperty(EXPERIMENT_CODE_KEY); - if (experimentCode == null) - { - experimentCode = service.generateCodes("E", EntityKind.EXPERIMENT, 1).get(0); - } - ExperimentIdentifier experimentIdentifier = - new ExperimentIdentifier(projectIdentifier, experimentCode); - NewExperiment experiment = - new NewExperiment(experimentIdentifier.toString(), experimentTypeCode); - ExperimentType experimentType = service.getExperimentType(experimentTypeCode); - File protXMLFile = Util.tryGetProtXMLFile(incomingDataSetPath); - if (protXMLFile == null) - { - throw new UserFailureException("No *prot.xml file found in data set '" + incomingDataSetPath + "'."); - } - long fileSize = protXMLFile.length(); - if (fileSize > protXmlSizeThreshold) - { - String reason = "Size of prot.xml file " + protXMLFile.getName() + " is with " - + FileUtilities.byteCountToDisplaySize(fileSize) + " too large. Maximum size is " - + FileUtilities.byteCountToDisplaySize(protXmlSizeThreshold); - operationLog.warn(reason); - properties.setProperty(NOT_PROCESSED_PROPERTY, reason); - } - - experiment.setProperties(Util.getAndCheckProperties(properties, experimentType)); - DataSetInformation info = new DataSetInformation(); - info.setExperimentIdentifier(experimentIdentifier); - String parentDataSetCodesOrNull = getProperty(properties, PARENT_DATA_SET_CODES); - String baseExperimentIdentifier = getProperty(properties, EXPERIMENT_IDENTIFIER_KEY); - ParentDataSetCodes parentDataSetCodes = - getParentDataSetCodes(parentDataSetCodesOrNull, baseExperimentIdentifier, service); - if (parentDataSetCodes.getErrorMessage() == null) - { - info.setParentDataSetCodes(parentDataSetCodes.getDataSetCodes()); - } else - { - throw new UserFailureException(parentDataSetCodes.getErrorMessage()); - } - service.registerExperiment(experiment); - return info; - } - - /** - * Returns data set codes either from the first argument or if <code>null</code> from the data sets of the specified experiment. - */ - static ParentDataSetCodes getParentDataSetCodes(String parentDataSetCodesOrNull, - String baseExperimentIdentifier, IEncapsulatedOpenBISService service) - { - List<AbstractExternalData> parentDataSets = new ArrayList<AbstractExternalData>(); - StringBuilder builder = new StringBuilder(); - if (parentDataSetCodesOrNull != null) - { - for (String code : StringUtils.split(parentDataSetCodesOrNull, ", ")) - { - AbstractExternalData dataSet = service.tryGetDataSet(code); - if (dataSet != null) - { - parentDataSets.add(dataSet); - } else - { - builder.append(builder.length() == 0 ? "Unknown data sets: " : ", "); - builder.append(code); - } - } - } else if (baseExperimentIdentifier != null) - { - ExperimentIdentifier identifier = - new ExperimentIdentifierFactory(baseExperimentIdentifier).createIdentifier(); - Experiment baseExperiment = service.tryGetExperiment(identifier); - if (baseExperiment != null) - { - parentDataSets.addAll(service.listDataSetsByExperimentID(baseExperiment.getId())); - } else - { - builder.append("Unkown experiment ").append(baseExperimentIdentifier); - } - } - List<String> parentDataSetCodes = new ArrayList<String>(); - for (AbstractExternalData dataSet : parentDataSets) - { - parentDataSetCodes.add(dataSet.getCode()); - } - String errorMessage = builder.length() > 0 ? builder.toString() : null; - return new ParentDataSetCodes(parentDataSetCodes, errorMessage); - } - - private String getProperty(Properties properties, String key) - { - String property = properties.getProperty(key); - if (property == null) - { - property = properties.getProperty(key.toUpperCase()); - } - return property; - } - - private Properties loadSearchProperties(File propertiesFile) - { - Properties properties; - if (propertiesFile.exists() == false) - { - properties = new Properties(); - } else - { - properties = PropertyIOUtils.loadProperties(propertiesFile); - } - return properties; - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/DatabaseVersionHolder.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/DatabaseVersionHolder.java deleted file mode 100644 index b4499699df4ac8eccd7fd681130f9bb4ef720dad..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/DatabaseVersionHolder.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2012 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.etlserver.proteomics; - -import ch.systemsx.cisd.openbis.dss.generic.shared.IDatabaseVersionHolder; - -/** - * Holds the version of the proteomics database. - * - * @author Franz-Josef Elmer - */ -public class DatabaseVersionHolder implements IDatabaseVersionHolder -{ - @Override - public String getDatabaseVersion() - { - return "005"; // changed in S124 - } -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/IProtDAO.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/IProtDAO.java deleted file mode 100644 index 6b5a3982f5b5f3379a46480aa0df8e36f9e8a8dc..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/IProtDAO.java +++ /dev/null @@ -1,105 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.etlserver.proteomics; - -import java.util.List; - -import net.lemnik.eodsql.BaseQuery; -import net.lemnik.eodsql.Select; -import net.lemnik.eodsql.Update; - -import ch.systemsx.cisd.openbis.etlserver.proteomics.dto.Database; -import ch.systemsx.cisd.openbis.etlserver.proteomics.dto.Experiment; -import ch.systemsx.cisd.openbis.etlserver.proteomics.dto.ProteinReference; -import ch.systemsx.cisd.openbis.etlserver.proteomics.dto.Sample; -import ch.systemsx.cisd.openbis.etlserver.proteomics.dto.Sequence; - -/** - * @author Franz-Josef Elmer - */ -public interface IProtDAO extends BaseQuery -{ - @Select("select * from experiments where perm_id = ?{1}") - public Experiment tryToGetExperimentByPermID(String permID); - - @Select("insert into experiments (perm_id) values (?{1}) returning id") - public long createExperiment(String experimentPermID); - - @Select("select * from samples where perm_id = ?{1}") - public Sample tryToGetSampleByPermID(String permID); - - @Select("insert into samples (expe_id, perm_id) values (?{1}, ?{2}) returning id") - public long createSample(long experimentID, String samplePermID); - - @Select("select * from databases where name_and_version = ?{1}") - public Database tryToGetDatabaseByName(String name); - - @Select("insert into databases (name_and_version) values (?{1}) returning id") - public long createDatabase(String databaseName); - - @Select("select * from data_sets where perm_id = ?{1}") - public ch.systemsx.cisd.openbis.etlserver.proteomics.dto.DataSet tryToGetDataSetByPermID( - String permID); - - @Select("insert into data_sets (expe_id, perm_id, db_id) values (?{1}, ?{2}, ?{3}) returning id") - public long createDataSet(long experimentID, String dataSetPermID, - long databaseID); - - @Update("insert into probability_fdr_mappings (dase_id, probability, false_discovery_rate) " - + "values (?{1}, ?{2}, ?{3})") - public void createProbabilityToFDRMapping(long dataSetID, double probability, - double falseDiscoveryRate); - - @Select("insert into proteins (dase_id, probability) values (?{1}, ?{2}) returning id") - public long createProtein(long dataSetID, double probability); - - @Select("insert into peptides (prot_id, sequence, charge) values (?{1}, ?{2}, ?{3}) returning id") - public long createPeptide(long proteinID, String sequence, int charge); - - @Select("insert into modified_peptides (pept_id, nterm_mass, cterm_mass) values (?{1}, ?{2}, ?{3}) returning id") - public long createModifiedPeptide(long peptideID, double nTermMass, double cTermMass); - - @Select("insert into modifications (mope_id, pos, mass) values (?{1}, ?{2}, ?{3}) returning id") - public long createModification(long modPeptideID, int position, double mass); - - @Select("select * from protein_references where accession_number = ?{1}") - public ProteinReference tryToGetProteinReference(String accessionNumber); - - @Select("insert into protein_references (accession_number, description) values (?{1}, ?{2}) returning id") - public long createProteinReference(String accessionNumber, String description); - - @Update("update protein_references set description = ?{2} where id = ?{1}") - public void updateProteinReferenceDescription(long proteinReferenceID, String description); - - @Select("select * from sequences where prre_id = ?{1} and db_id = ?{2}") - public List<Sequence> tryToGetSequencesByReferenceAndDatabase(long referenceID, long databaseID); - - @Select("insert into sequences (db_id, prre_id, amino_acid_sequence, checksum) " - + "values (?{1.databaseID}, ?{1.proteinReferenceID}, ?{1.sequence}, ?{1.checksum}) " - + "returning id") - public long createSequence(Sequence sequence); - - @Update("insert into identified_proteins (prot_id, sequ_id, coverage, is_primary) values (?{1}, ?{2}, ?{3}, ?{4})") - public void createIdentifiedProtein(long proteinID, long sequenceID, double coverage, boolean primary); - - @Update("insert into abundances (prot_id, samp_id, value) values (?{1}, ?{2}, ?{3})") - public void createAbundance(long proteinID, long sampleID, double value); - - @Update("insert into modification_fractions (modi_id, samp_id, fraction) values (?{1}, ?{2}, ?{3})") - public void createModificationFraction(long modID, long sampleID, double fraction); - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/ModificationFraction.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/ModificationFraction.java deleted file mode 100644 index ac20660201b65bd1752f8a1937a1861329654c72..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/ModificationFraction.java +++ /dev/null @@ -1,86 +0,0 @@ -/* - * Copyright 2011 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.etlserver.proteomics; - -import ch.systemsx.cisd.openbis.etlserver.proteomics.dto.AminoAcidMass; - -/** - * Data class keeping data extracted from a peptide <parameter> element of type 'modification'. - * - * @author Franz-Josef Elmer - */ -final class ModificationFraction -{ - private final String sample; - - private final double fraction; - - private final AminoAcidMass aminoAcidMass; - - ModificationFraction(String sample, String value) - { - this.sample = sample; - String[] parts = value.split(":"); - if (parts.length != 3) - { - throw exception(value, "Three parts separated by ':' expected."); - } - aminoAcidMass = new AminoAcidMass(); - try - { - aminoAcidMass.setPosition(Integer.parseInt(parts[0])); - } catch (NumberFormatException ex) - { - throw exception(value, "Position part isn't an integer number: " + parts[0]); - } - try - { - aminoAcidMass.setMass(Double.parseDouble(parts[1])); - } catch (NumberFormatException ex) - { - throw exception(value, "Mass part isn't a floating-point number: " + parts[1]); - } - try - { - fraction = Double.parseDouble(parts[2]); - } catch (NumberFormatException ex) - { - throw exception(value, "Fraction part isn't a floating-point number: " + parts[2]); - } - } - - private IllegalArgumentException exception(String value, String message) - { - return new IllegalArgumentException("Peptide parameter value [" + value - + "] for sample '" + sample + "' is invalid: " + message); - } - - public String getSample() - { - return sample; - } - - public AminoAcidMass getAminoAcidMass() - { - return aminoAcidMass; - } - - public double getFraction() - { - return fraction; - } -} \ No newline at end of file diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/ModificationFractionHandler.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/ModificationFractionHandler.java deleted file mode 100644 index 4927baaebda70fd19ab41a4e46d83d0f747a65dd..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/ModificationFractionHandler.java +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright 2011 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.etlserver.proteomics; - -import java.util.List; - -import ch.systemsx.cisd.common.exceptions.UserFailureException; -import ch.systemsx.cisd.openbis.dss.generic.shared.IEncapsulatedOpenBISService; -import ch.systemsx.cisd.openbis.etlserver.proteomics.dto.Experiment; -import ch.systemsx.cisd.openbis.etlserver.proteomics.dto.Sample; -import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.ExperimentIdentifier; - -/** - * Handler of modification fractions. - * - * @author Franz-Josef Elmer - */ -class ModificationFractionHandler extends AbstractSampleHandler -{ - public ModificationFractionHandler(IEncapsulatedOpenBISService openbisService, IProtDAO dao, - ExperimentIdentifier experimentIdentifier, Experiment experiment, String delimiter, - boolean restrictedSampleResolving) - { - super(openbisService, dao, experimentIdentifier, experiment, delimiter, - restrictedSampleResolving); - } - - @Override - protected void handleSample(String parameterName, - ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample sample) - { - // Do nothing - } - - public void addModificationFractions(String peptideSequence, long modID, - List<ModificationFraction> modificationFractions) - { - for (ModificationFraction modificationFraction : modificationFractions) - { - Sample sample = getOrCreateSample(modificationFraction.getSample(), peptideSequence); - double fraction = modificationFraction.getFraction(); - dao.createModificationFraction(modID, sample.getId(), fraction); - } - } - - private Sample getOrCreateSample(String sampleName, String peptideSequence) - { - SampleOrError sampleOrError = getOrCreateSampleOrError(sampleName); - if (sampleOrError.error != null) - { - throw new UserFailureException("Protein '" + peptideSequence - + "' has modification for " + sampleOrError.error); - } - return sampleOrError.sample; - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/ProtXMLLoader.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/ProtXMLLoader.java deleted file mode 100644 index 91ea63764a7b23494f15e17a52b0b77d201b85cf..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/ProtXMLLoader.java +++ /dev/null @@ -1,93 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.etlserver.proteomics; - -import java.io.File; -import java.io.FileReader; -import java.io.IOException; -import java.io.InputStream; - -import javax.xml.bind.JAXBContext; -import javax.xml.bind.Unmarshaller; -import javax.xml.bind.UnmarshallerHandler; - -import org.xml.sax.EntityResolver; -import org.xml.sax.InputSource; -import org.xml.sax.SAXException; - -import ch.systemsx.cisd.base.exceptions.CheckedExceptionTunnel; -import ch.systemsx.cisd.common.xml.XMLInfraStructure; -import ch.systemsx.cisd.openbis.etlserver.proteomics.dto.ProteinProphetDetails; -import ch.systemsx.cisd.openbis.etlserver.proteomics.dto.ProteinSummary; - -/** - * Loader of protXML file. - * - * @author Franz-Josef Elmer - */ -class ProtXMLLoader -{ - private final Unmarshaller unmarshaller; - - private final XMLInfraStructure xmlInfraStructure; - - ProtXMLLoader(boolean validating) - { - try - { - JAXBContext context = - JAXBContext.newInstance(ProteinSummary.class, ProteinProphetDetails.class); - unmarshaller = context.createUnmarshaller(); - xmlInfraStructure = new XMLInfraStructure(validating); - xmlInfraStructure.setEntityResolver(new EntityResolver() - { - @Override - public InputSource resolveEntity(String publicId, String systemId) throws SAXException, - IOException - { - String schemaVersion = systemId.substring(systemId.lastIndexOf('/')); - String resource = "/" + ProtXMLLoader.class.getPackage().getName().replace('.', '/') + schemaVersion; - InputStream inputStream = ProtXMLLoader.class.getResourceAsStream(resource); - return inputStream == null ? null : new InputSource(inputStream); - } - }); - - } catch (Exception ex) - { - throw CheckedExceptionTunnel.wrapIfNecessary(ex); - } - } - - ProteinSummary readProtXML(File dataSet) - { - try - { - UnmarshallerHandler unmarshallerHandler = unmarshaller.getUnmarshallerHandler(); - xmlInfraStructure.parse(new FileReader(dataSet), unmarshallerHandler); - Object object = unmarshallerHandler.getResult(); - if (object instanceof ProteinSummary == false) - { - throw new IllegalArgumentException("Wrong type: " + object); - } - return (ProteinSummary) object; - } catch (Exception ex) - { - throw CheckedExceptionTunnel.wrapIfNecessary(ex); - } - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/ProtXMLUploader.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/ProtXMLUploader.java deleted file mode 100644 index ae8432153ce23fc04e0e45e341eb31cbb6093dd5..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/ProtXMLUploader.java +++ /dev/null @@ -1,189 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.etlserver.proteomics; - -import java.io.File; -import java.sql.Connection; -import java.sql.SQLException; -import java.util.List; -import java.util.Properties; - -import javax.sql.DataSource; - -import org.apache.log4j.Logger; - -import ch.systemsx.cisd.base.exceptions.CheckedExceptionTunnel; -import ch.systemsx.cisd.common.logging.LogCategory; -import ch.systemsx.cisd.common.logging.LogFactory; -import ch.systemsx.cisd.common.properties.PropertyUtils; -import ch.systemsx.cisd.dbmigration.DatabaseConfigurationContext; -import ch.systemsx.cisd.etlserver.IDataSetUploader; -import ch.systemsx.cisd.openbis.dss.generic.shared.IEncapsulatedOpenBISService; -import ch.systemsx.cisd.openbis.dss.generic.shared.dto.DataSetInformation; -import ch.systemsx.cisd.openbis.etlserver.proteomics.dto.ProteinSummary; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Experiment; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IEntityProperty; - -/** - * @author Franz-Josef Elmer - */ -public class ProtXMLUploader implements IDataSetUploader -{ - private static final String VALIDATING_XML = "validating-xml"; - - private static final String ASSUMING_EXTENDED_PROT_XML = "assuming-extended-prot-xml"; - - private static final String MS_INJECTION_SAMPLE_DELIMITER = "delimiter_for_sample_resolving"; - - private static final String RESTRICTED_SAMPLE_RESOLVING = "restricted_sample_resolving"; - - private static final String DATABASE_ENGINE = "database.engine"; - - private static final String DATABASE_URL_HOST_PART = "database.url-host-part"; - - private static final String DATABASE_BASIC_NAME = "database.basic-name"; - - private static final String DATABASE_KIND = "database.kind"; - - private static final String DATABASE_OWNER = "database.owner"; - - private static final String DATABASE_PASSWORD = "database.password"; - - private static final Logger operationLog = - LogFactory.getLogger(LogCategory.OPERATION, ProtXMLUploader.class); - - private static DataSource createDataSource(Properties properties) - { - DatabaseConfigurationContext context = new DatabaseConfigurationContext(); - context.setDatabaseEngineCode(properties.getProperty(DATABASE_ENGINE, "postgresql")); - context.setUrlHostPart(properties.getProperty(DATABASE_URL_HOST_PART, "")); - context.setBasicDatabaseName(properties.getProperty(DATABASE_BASIC_NAME, "proteomics")); - context.setDatabaseKind(PropertyUtils.getMandatoryProperty(properties, DATABASE_KIND)); - context.setOwner(properties.getProperty(DATABASE_OWNER, "")); - context.setPassword(properties.getProperty(DATABASE_PASSWORD, "")); - return context.getDataSource(); - } - - private final ProtXMLLoader loader; - - private final IEncapsulatedOpenBISService openbisService; - - private final DataSource dataSource; - - private final boolean assumingExtendedProtXML; - - private final String msInjectionSampleDelimiter; - - private final boolean restrictedSampleResolving; - - private ResultDataSetUploader currentResultDataSetUploader; - - public ProtXMLUploader(Properties properties, IEncapsulatedOpenBISService openbisService) - { - dataSource = createDataSource(properties); - this.openbisService = openbisService; - assumingExtendedProtXML = PropertyUtils.getBoolean(properties, ASSUMING_EXTENDED_PROT_XML, false); - msInjectionSampleDelimiter = properties.getProperty(MS_INJECTION_SAMPLE_DELIMITER, "~"); - restrictedSampleResolving = PropertyUtils.getBoolean(properties, RESTRICTED_SAMPLE_RESOLVING, true); - loader = new ProtXMLLoader(PropertyUtils.getBoolean(properties, VALIDATING_XML, false)); - } - - @Override - public void upload(File dataSet, DataSetInformation dataSetInformation) - { - Experiment experiment = dataSetInformation.tryToGetExperiment(); - if (experiment != null) - { - List<IEntityProperty> properties = experiment.getProperties(); - for (IEntityProperty property : properties) - { - if (property.getPropertyType().getCode().equals(DataSetInfoExtractorForProteinResults.NOT_PROCESSED_PROPERTY)) - { - return; - } - } - } - long time = System.currentTimeMillis(); - File protXMLFile = Util.tryGetProtXMLFile(dataSet); - ProteinSummary summary = loader.readProtXML(protXMLFile); - if (operationLog.isInfoEnabled()) - { - operationLog.info(summary.getProteinGroups().size() - + " protein groups are successfully read from '" + protXMLFile + "' in " - + (System.currentTimeMillis() - time) + " msec"); - } - time = System.currentTimeMillis(); - if (currentResultDataSetUploader != null) - { - throw new IllegalStateException( - "The previous transaction has been neither commited nor rollbacked."); - } - currentResultDataSetUploader = createUploader(); - currentResultDataSetUploader.upload(dataSetInformation, summary); - if (operationLog.isInfoEnabled()) - { - operationLog.info("Feeding result database took " + (System.currentTimeMillis() - time) - + " msec."); - } - } - - @Override - public void commit() - { - try - { - if (currentResultDataSetUploader != null) - { - currentResultDataSetUploader.commit(); - } - } finally - { - currentResultDataSetUploader = null; - } - } - - @Override - public void rollback() - { - try - { - if (currentResultDataSetUploader != null) - { - currentResultDataSetUploader.rollback(); - } - } finally - { - currentResultDataSetUploader = null; - } - } - - protected ResultDataSetUploader createUploader() - { - Connection connection; - try - { - connection = dataSource.getConnection(); - connection.setAutoCommit(false); - } catch (SQLException ex) - { - throw CheckedExceptionTunnel.wrapIfNecessary(ex); - } - return new ResultDataSetUploader(connection, openbisService, assumingExtendedProtXML, - msInjectionSampleDelimiter, restrictedSampleResolving); - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/ProteinDescription.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/ProteinDescription.java deleted file mode 100644 index 3b7db8761f1958f21a11293dbc70c2f1a85f8285..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/ProteinDescription.java +++ /dev/null @@ -1,132 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.etlserver.proteomics; - -import ch.systemsx.cisd.common.exceptions.UserFailureException; -import ch.systemsx.cisd.openbis.etlserver.proteomics.dto.ProteinAnnotation; - -final class ProteinDescription -{ - static final String DESCRIPTION_KEY = "DE"; - - static final String SEQUENCE_KEY = "SEQ"; - - static String createKeyValuePair(String key, String value) - { - return "\\" + key + "=" + value; - } - - private String accessionNumber; - - private String description; - - private String sequence; - - public ProteinDescription(ProteinAnnotation annotation, long proteinID, - boolean assumingExtendedProtXML) - { - String proteinDescription = annotation.getDescription(); - String[] items = proteinDescription.split("\\\\"); - accessionNumber = tryToGetAccessionNumber(items); - description = tryToGetValue(items, DESCRIPTION_KEY); - sequence = tryToGetValue(items, SEQUENCE_KEY); - if (sequence == null) - { - if (assumingExtendedProtXML) - { - throw new UserFailureException( - "Can not find a amino-acid sequence in following protein description: " - + proteinDescription); - } else - { - sequence = ""; - accessionNumber = getAccessionNumber(annotation, proteinID); - } - } - if (description == null && assumingExtendedProtXML == false) - { - description = proteinDescription; - } - } - - private String getAccessionNumber(ProteinAnnotation annotation, long proteinID) - { - if (annotation.getSwissprotName() != null) - { - return "sp|" + annotation.getSwissprotName(); - } - if (annotation.getTremblName() != null) - { - return "tr|" + annotation.getTremblName(); - } - if (annotation.getIpiName() != null) - { - return "ipi|" + annotation.getIpiName(); - } - if (annotation.getEnsemblName() != null) - { - return "ens|" + annotation.getEnsemblName(); - } - if (annotation.getRefseqName() != null) - { - return "rs|" + annotation.getRefseqName(); - } - if (annotation.getLocusLinkName() != null) - { - return "ll|" + annotation.getLocusLinkName(); - } - if (annotation.getFlybase() != null) - { - return "fb|" + annotation.getFlybase(); - } - return "unknown|" + proteinID; - } - - public final String getAccessionNumber() - { - return accessionNumber; - } - - public final String getDescription() - { - return description; - } - - public final String getSequence() - { - return sequence; - } - - private String tryToGetAccessionNumber(String[] items) - { - return items == null || items.length == 0 ? null : items[0].trim(); - } - - private String tryToGetValue(String[] items, String key) - { - for (String item : items) - { - int indexOfEqualSign = item.indexOf('='); - if (indexOfEqualSign > 0 - && item.substring(0, indexOfEqualSign).trim().equalsIgnoreCase(key)) - { - return item.substring(indexOfEqualSign + 1).trim(); - } - } - return null; - } -} \ No newline at end of file diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/ProteinResultDataSetParentLinkingTask.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/ProteinResultDataSetParentLinkingTask.java deleted file mode 100644 index eca1c23c62f239b71bfc0b1106d6a01a4bea41ad..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/ProteinResultDataSetParentLinkingTask.java +++ /dev/null @@ -1,181 +0,0 @@ -/* - * Copyright 2011 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.etlserver.proteomics; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Properties; - -import org.apache.log4j.Logger; - -import ch.systemsx.cisd.common.logging.LogCategory; -import ch.systemsx.cisd.common.logging.LogFactory; -import ch.systemsx.cisd.common.maintenance.IMaintenanceTask; -import ch.systemsx.cisd.openbis.dss.generic.shared.IEncapsulatedOpenBISService; -import ch.systemsx.cisd.openbis.dss.generic.shared.ServiceProvider; -import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.PhysicalDataSet; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSetBatchUpdateDetails; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Experiment; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.AbstractExternalData; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IEntityProperty; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewExperiment; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewMaterial; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewMetaproject; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewProject; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewSample; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewSpace; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Project; -import ch.systemsx.cisd.openbis.generic.shared.dto.AtomicEntityOperationDetails; -import ch.systemsx.cisd.openbis.generic.shared.dto.DataSetBatchUpdatesDTO; -import ch.systemsx.cisd.openbis.generic.shared.dto.ExperimentUpdatesDTO; -import ch.systemsx.cisd.openbis.generic.shared.dto.MaterialUpdateDTO; -import ch.systemsx.cisd.openbis.generic.shared.dto.MetaprojectUpdatesDTO; -import ch.systemsx.cisd.openbis.generic.shared.dto.NewExternalData; -import ch.systemsx.cisd.openbis.generic.shared.dto.ProjectUpdatesDTO; -import ch.systemsx.cisd.openbis.generic.shared.dto.SampleUpdatesDTO; -import ch.systemsx.cisd.openbis.generic.shared.dto.VocabularyUpdatesDTO; -import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.ExperimentIdentifierFactory; -import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.ProjectIdentifier; - -/** - * @author Franz-Josef Elmer - */ -public class ProteinResultDataSetParentLinkingTask implements IMaintenanceTask -{ - private static final String PARENT_DATA_SET_CODES_KEY = - DataSetInfoExtractorForProteinResults.PARENT_DATA_SET_CODES.toUpperCase(); - - private static final String BASE_EXPERIMENT_KEY = - DataSetInfoExtractorForProteinResults.EXPERIMENT_IDENTIFIER_KEY.toUpperCase(); - - private static final Logger operationLog = LogFactory.getLogger(LogCategory.OPERATION, - ProteinResultDataSetParentLinkingTask.class); - - private final IEncapsulatedOpenBISService service; - - public ProteinResultDataSetParentLinkingTask() - { - this(ServiceProvider.getOpenBISService()); - } - - ProteinResultDataSetParentLinkingTask(IEncapsulatedOpenBISService service) - { - this.service = service; - - } - - @Override - public void setUp(String pluginName, Properties properties) - { - } - - @Override - public void execute() - { - List<DataSetBatchUpdatesDTO> dataSetUpdates = new ArrayList<DataSetBatchUpdatesDTO>(); - List<Project> projects = service.listProjects(); - for (Project project : projects) - { - List<Experiment> experiments = - service.listExperiments(new ProjectIdentifier(project.getSpace().getCode(), - project.getCode())); - for (Experiment experiment : experiments) - { - Map<String, IEntityProperty> propertiesMap = getPropertiesMap(experiment); - String baseExperimentIdentifier = - tryGetProperty(propertiesMap, BASE_EXPERIMENT_KEY); - String parentDataSetCodes = - tryGetProperty(propertiesMap, PARENT_DATA_SET_CODES_KEY); - List<String> codes = - DataSetInfoExtractorForProteinResults.getParentDataSetCodes( - parentDataSetCodes, baseExperimentIdentifier, service) - .getDataSetCodes(); - if (codes.isEmpty()) - { - continue; - } - List<AbstractExternalData> dataSets = - service.listDataSetsByExperimentID(experiment.getId()); - if (dataSets.isEmpty()) - { - continue; - } - for (AbstractExternalData ds : dataSets) - { - if (ds instanceof PhysicalDataSet == false) - { - continue; - } - PhysicalDataSet dataSet = (PhysicalDataSet) ds; - DataSetBatchUpdatesDTO update = new DataSetBatchUpdatesDTO(); - update.setDatasetId(new TechId(dataSet.getId())); - update.setVersion(dataSet.getVersion()); - update.setExperimentIdentifierOrNull(ExperimentIdentifierFactory.parse(dataSet - .getExperiment().getIdentifier())); - update.setFileFormatTypeCode(dataSet.getFileFormatType().getCode()); - update.setProperties(dataSet.getProperties()); - - // All we want to do is update the parents - update.setDatasetCode(dataSet.getCode()); - update.setModifiedParentDatasetCodesOrNull(codes.toArray(new String[0])); - DataSetBatchUpdateDetails details = new DataSetBatchUpdateDetails(); - details.setParentsUpdateRequested(true); - - operationLog.info("Parent data set links of data set " + dataSet.getCode() - + " from experiment " + experiment.getIdentifier() - + " will be updated."); - dataSetUpdates.add(update); - } - } - } - service.performEntityOperations(new AtomicEntityOperationDetails(null, null, Collections - .<NewSpace> emptyList(), Collections.<NewProject> emptyList(), Collections - .<ProjectUpdatesDTO> emptyList(), Collections.<NewExperiment> emptyList(), - Collections.<ExperimentUpdatesDTO> emptyList(), - Collections.<SampleUpdatesDTO> emptyList(), Collections.<NewSample> emptyList(), - Collections.<String, List<NewMaterial>> emptyMap(), Collections - .<MaterialUpdateDTO> emptyList(), - Collections.<NewExternalData> emptyList(), dataSetUpdates, Collections - .<NewMetaproject> emptyList(), Collections - .<MetaprojectUpdatesDTO> emptyList(), Collections - .<VocabularyUpdatesDTO> emptyList())); - operationLog.info("Parent data set links for " + dataSetUpdates.size() - + " data sets have been updated."); - } - - private Map<String, IEntityProperty> getPropertiesMap(Experiment experiment) - { - List<IEntityProperty> properties = experiment.getProperties(); - Map<String, IEntityProperty> propertiesMap = new HashMap<String, IEntityProperty>(); - for (IEntityProperty property : properties) - { - propertiesMap.put(property.getPropertyType().getCode(), property); - } - return propertiesMap; - } - - private String tryGetProperty(Map<String, IEntityProperty> propertiesMap, String key) - { - IEntityProperty property = propertiesMap.get(key); - return property == null ? null : property.tryGetAsString(); - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/ResultDataSetUploader.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/ResultDataSetUploader.java deleted file mode 100644 index 06bec5bded049762551ad49ced3dbf6d0b2367ff..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/ResultDataSetUploader.java +++ /dev/null @@ -1,477 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.etlserver.proteomics; - -import java.sql.Connection; -import java.sql.SQLException; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; -import java.util.Set; - -import org.apache.commons.lang3.StringUtils; - -import ch.systemsx.cisd.base.exceptions.CheckedExceptionTunnel; -import ch.systemsx.cisd.common.exceptions.UserFailureException; -import ch.systemsx.cisd.openbis.dss.generic.shared.IEncapsulatedOpenBISService; -import ch.systemsx.cisd.openbis.dss.generic.shared.dto.DataSetInformation; -import ch.systemsx.cisd.openbis.etlserver.proteomics.dto.AminoAcidMass; -import ch.systemsx.cisd.openbis.etlserver.proteomics.dto.AnnotatedProtein; -import ch.systemsx.cisd.openbis.etlserver.proteomics.dto.DataSet; -import ch.systemsx.cisd.openbis.etlserver.proteomics.dto.Database; -import ch.systemsx.cisd.openbis.etlserver.proteomics.dto.Experiment; -import ch.systemsx.cisd.openbis.etlserver.proteomics.dto.Parameter; -import ch.systemsx.cisd.openbis.etlserver.proteomics.dto.Peptide; -import ch.systemsx.cisd.openbis.etlserver.proteomics.dto.PeptideModification; -import ch.systemsx.cisd.openbis.etlserver.proteomics.dto.Protein; -import ch.systemsx.cisd.openbis.etlserver.proteomics.dto.ProteinAnnotation; -import ch.systemsx.cisd.openbis.etlserver.proteomics.dto.ProteinGroup; -import ch.systemsx.cisd.openbis.etlserver.proteomics.dto.ProteinProphetDetails; -import ch.systemsx.cisd.openbis.etlserver.proteomics.dto.ProteinReference; -import ch.systemsx.cisd.openbis.etlserver.proteomics.dto.ProteinSummary; -import ch.systemsx.cisd.openbis.etlserver.proteomics.dto.ProteinSummaryDataFilter; -import ch.systemsx.cisd.openbis.etlserver.proteomics.dto.Sample; -import ch.systemsx.cisd.openbis.etlserver.proteomics.dto.Sequence; -import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.ExperimentIdentifier; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.ProbabilityToFDRCalculator; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.Occurrence; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.OccurrenceUtil; -import net.lemnik.eodsql.QueryTool; - -/** - * @author Franz-Josef Elmer - */ -class ResultDataSetUploader extends AbstractHandler -{ - private static final double MAX_FALSE_DISCOVERY_RATE = 0.1; - - static final String PARAMETER_TYPE_ABUNDANCE = "abundance"; - - static final String PARAMETER_TYPE_MODIFICATION = "modification"; - - private final Connection connection; - - private final IEncapsulatedOpenBISService openbisService; - - private final StringBuffer errorMessages; - - private final boolean assumingExtendedProtXML; - - private final String delimiter; - - private final boolean restrictedSampleResolving; - - ResultDataSetUploader(Connection connection, IEncapsulatedOpenBISService openbisService, - boolean assumingExtendedProtXML, String delimiter, - boolean restrictedSampleResolving) - { - this(QueryTool.getQuery(connection, IProtDAO.class), connection, openbisService, - assumingExtendedProtXML, delimiter, restrictedSampleResolving); - } - - ResultDataSetUploader(IProtDAO dao, Connection connection, - IEncapsulatedOpenBISService openbisService, boolean assumingExtendedProtXML, - String delimiter, boolean restrictedSampleResolving) - { - super(dao); - this.connection = connection; - this.openbisService = openbisService; - this.assumingExtendedProtXML = assumingExtendedProtXML; - this.delimiter = delimiter; - this.restrictedSampleResolving = restrictedSampleResolving; - this.errorMessages = new StringBuffer(); - } - - void upload(DataSetInformation dataSetInfo, ProteinSummary summary) - { - try - { - Experiment experiment = - getOrCreateExperiment(dataSetInfo.tryToGetExperiment().getPermId()); - ExperimentIdentifier experimentIdentifier = dataSetInfo.getExperimentIdentifier(); - String referenceDatabase = summary.getSummaryHeader().getReferenceDatabase(); - Database database = getOrGreateDatabase(referenceDatabase); - DataSet ds = - getOrCreateDataSet(experiment, database, dataSetInfo.getDataSetCode()); - addToDatabase(ds, experiment, experimentIdentifier, summary); - } catch (Throwable throwable) - { - try - { - connection.rollback(); - } catch (SQLException ex) - { - } - throw CheckedExceptionTunnel.wrapIfNecessary(throwable); - } - if (errorMessages.length() != 0) - { - rollback(); - throw UserFailureException.fromTemplate( - "Following errors occurred while uploading protein information" - + " to the dataset database from the dataset '%s': %s" + " ", - dataSetInfo.getDataSetCode(), errorMessages.toString()); - } - } - - /** the uploader should not be used after calling this method */ - public void rollback() - { - try - { - if (connection.isClosed() == false) - { - connection.rollback(); - connection.close(); - } - } catch (SQLException ex) - { - throw CheckedExceptionTunnel.wrapIfNecessary(ex); - } - } - - /** the uploader should not be used after calling this method */ - public void commit() - { - try - { - connection.commit(); - connection.close(); - } catch (SQLException ex) - { - throw CheckedExceptionTunnel.wrapIfNecessary(ex); - } - } - - private Database getOrGreateDatabase(String databaseNameAndVersion) - { - int indexOfLastSlash = databaseNameAndVersion.lastIndexOf('/'); - String nameOrVersion; - if (indexOfLastSlash < 0) - { - nameOrVersion = databaseNameAndVersion; - } else - { - nameOrVersion = databaseNameAndVersion.substring(indexOfLastSlash + 1); - } - Database database = dao.tryToGetDatabaseByName(nameOrVersion); - if (database == null) - { - database = new Database(); - database.setNameAndVersion(nameOrVersion); - database.setId(dao.createDatabase(database.getNameAndVersion())); - } - return database; - } - - private DataSet getOrCreateDataSet(Experiment experiment, Database database, - String dataSetPermID) - { - DataSet dataSet = dao.tryToGetDataSetByPermID(dataSetPermID); - if (dataSet == null) - { - dataSet = new DataSet(); - dataSet.setPermID(dataSetPermID); - long experimentID = experiment.getId(); - dataSet.setExperimentID(experimentID); - long databaseID = database.getId(); - dataSet.setDatabaseID(databaseID); - dataSet.setId(dao.createDataSet(experimentID, dataSetPermID, databaseID)); - } - return dataSet; - } - - private Experiment getOrCreateExperiment(String experimentPermID) - { - Experiment experiment = dao.tryToGetExperimentByPermID(experimentPermID); - if (experiment == null) - { - experiment = new Experiment(); - experiment.setPermID(experimentPermID); - experiment.setId(dao.createExperiment(experimentPermID)); - } - return experiment; - } - - private void addToDatabase(DataSet dataSet, Experiment experiment, - ExperimentIdentifier experimentIdentifier, ProteinSummary summary) - { - long dataSetID = dataSet.getId(); - Long databaseID = dataSet.getDatabaseID(); - AbundanceHandler abundanceHandler = - new AbundanceHandler(openbisService, dao, experimentIdentifier, experiment, - delimiter, restrictedSampleResolving); - ModificationFractionHandler modificationFractionHandler = - new ModificationFractionHandler(openbisService, dao, experimentIdentifier, - experiment, delimiter, restrictedSampleResolving); - ProbabilityToFDRCalculator calculator = createProbabilityToFDRMapping(dataSetID, summary); - List<ProteinGroup> proteinGroups = summary.getProteinGroups(); - for (ProteinGroup proteinGroup : proteinGroups) - { - for (Protein protein : proteinGroup.getProteins()) - { - try - { - double fdr = calculator.calculateFDR(protein.getProbability()); - if (Double.isNaN(fdr) || fdr <= MAX_FALSE_DISCOVERY_RATE) - { - addProtein(protein, dataSetID, databaseID, abundanceHandler, - modificationFractionHandler); - } - } catch (Exception e) - { - logException(e, "protein", protein.getName()); - } - } - } - } - - private void logException(Exception e, String objectType, String instanceDescription) - { - StringBuffer sb = new StringBuffer(); - sb.append("Cannot load following '"); - sb.append(objectType); - sb.append("': "); - sb.append(instanceDescription); - sb.append(" because of the following exception: "); - String message = e.getMessage(); - sb.append(message == null ? e.toString() : message); - sb.append("\n"); - errorMessages.append(sb.toString()); - } - - private void addProtein(Protein protein, long dataSetID, Long databaseID, - AbundanceHandler abundanceHandler, - ModificationFractionHandler modificationFractionHandler) - { - long proteinID = dao.createProtein(dataSetID, protein.getProbability()); - for (Parameter parameter : protein.getParameters()) - { - if (PARAMETER_TYPE_ABUNDANCE.equals(parameter.getType())) - { - abundanceHandler.addAbundancesToDatabase(parameter, proteinID, protein.getName()); - } - } - List<Peptide> peptides = protein.getPeptides(); - Set<String> peptideSequences = new HashSet<String>(); - for (Peptide peptide : peptides) - { - try - { - addPeptide(proteinID, peptide, modificationFractionHandler); - peptideSequences.add(peptide.getSequence()); - } catch (Exception e) - { - logException(e, "peptide", peptide.getSequence().toString()); - } - } - createIdentifiedProtein(proteinID, peptideSequences, databaseID, protein.getAnnotation(), true); - for (AnnotatedProtein annotatedProtein : protein.getIndistinguishableProteins()) - { - createIdentifiedProtein(proteinID, peptideSequences, databaseID, annotatedProtein.getAnnotation(), false); - } - } - - private void addPeptide(long proteinID, Peptide peptide, - ModificationFractionHandler modificationFractionHandler) - { - String peptideSequence = peptide.getSequence(); - int charge = peptide.getCharge(); - long peptideID = dao.createPeptide(proteinID, peptideSequence, charge); - List<PeptideModification> modifications = peptide.getModifications(); - for (PeptideModification modification : modifications) - { - try - { - addPeptideModification(peptideID, modification); - } catch (Exception e) - { - logException(e, "modification", modification.toString()); - } - } - List<ModificationFraction> modificationFractions = extractModificationFractions(peptide); - if (modificationFractions.isEmpty()) - { - return; - } - long modPeptideID = dao.createModifiedPeptide(peptideID, 0, 0); - Map<AminoAcidMass, List<ModificationFraction>> map = - groupByPositionAndMass(modificationFractions); - Set<Entry<AminoAcidMass, List<ModificationFraction>>> entrySet = map.entrySet(); - for (Entry<AminoAcidMass, List<ModificationFraction>> entry : entrySet) - { - AminoAcidMass positionAndMass = entry.getKey(); - long modID = createModification(modPeptideID, positionAndMass); - List<ModificationFraction> list = entry.getValue(); - modificationFractionHandler.addModificationFractions(peptideSequence, modID, list); - } - } - - private Map<AminoAcidMass, List<ModificationFraction>> groupByPositionAndMass( - List<ModificationFraction> modificationFractions) - { - Map<AminoAcidMass, List<ModificationFraction>> result = - new HashMap<AminoAcidMass, List<ModificationFraction>>(); - for (ModificationFraction modificationFraction : modificationFractions) - { - AminoAcidMass positionAndMass = modificationFraction.getAminoAcidMass(); - List<ModificationFraction> list = result.get(positionAndMass); - if (list == null) - { - list = new ArrayList<ModificationFraction>(); - result.put(positionAndMass, list); - } - list.add(modificationFraction); - } - return result; - } - - private List<ModificationFraction> extractModificationFractions(Peptide peptide) - { - List<ModificationFraction> result = new ArrayList<ModificationFraction>(); - for (Parameter parameter : peptide.getParameters()) - { - if (PARAMETER_TYPE_MODIFICATION.equals(parameter.getType())) - { - result.add(new ModificationFraction(parameter.getName(), parameter.getValue())); - } - } - return result; - } - - private void addPeptideModification(long peptideID, PeptideModification modification) - { - double ntermMass = modification.getNTermMass(); - double ctermMass = modification.getCTermMass(); - long modPeptideID = dao.createModifiedPeptide(peptideID, ntermMass, ctermMass); - List<AminoAcidMass> aminoAcidMasses = modification.getAminoAcidMasses(); - for (AminoAcidMass aminoAcidMass : aminoAcidMasses) - { - createModification(modPeptideID, aminoAcidMass); - } - } - - private long createModification(long modPeptideID, AminoAcidMass aminoAcidMass) - { - return dao.createModification(modPeptideID, aminoAcidMass.getPosition(), - aminoAcidMass.getMass()); - } - - private void createIdentifiedProtein(long proteinID, Set<String> peptideSequences, - Long databaseID, ProteinAnnotation annotation, boolean primary) - { - ProteinDescription protDesc = - new ProteinDescription(annotation, proteinID, assumingExtendedProtXML); - String accessionNumber = protDesc.getAccessionNumber(); - String description = protDesc.getDescription(); - ProteinReference proteinReference = dao.tryToGetProteinReference(accessionNumber); - if (proteinReference == null) - { - proteinReference = new ProteinReference(); - proteinReference.setId(dao.createProteinReference(accessionNumber, description)); - } else if (StringUtils.equals(description, proteinReference.getDescription()) == false) - { - dao.updateProteinReferenceDescription(proteinReference.getId(), description); - } - Sequence sequence = - tryFindSequence(proteinReference.getId(), databaseID, protDesc.getSequence()); - if (sequence == null) - { - sequence = new Sequence(protDesc.getSequence()); - sequence.setDatabaseID(databaseID); - sequence.setProteinReferenceID(proteinReference.getId()); - sequence.setId(dao.createSequence(sequence)); - } - double coverage = calculateCoverage(sequence.getSequence(), peptideSequences); - dao.createIdentifiedProtein(proteinID, sequence.getId(), coverage, primary); - } - - private double calculateCoverage(String aminoAcidSequence, Set<String> peptideSequences) - { - List<Occurrence> list = OccurrenceUtil.getCoverage(aminoAcidSequence, peptideSequences); - int sumPeptides = 0; - for (Occurrence occurrence : list) - { - sumPeptides += occurrence.getWord().length(); - } - return sumPeptides / (double) aminoAcidSequence.length(); - } - - private Sequence tryFindSequence(long referenceID, Long databaseID, String sequence) - { - List<Sequence> sequences = - dao.tryToGetSequencesByReferenceAndDatabase(referenceID, databaseID); - if (sequences == null || sequences.isEmpty()) - { - return null; - } - for (Sequence foundSequence : sequences) - { - if (sequence.equals(foundSequence.getSequence())) - { - return foundSequence; - } - } - return null; - } - - private ProbabilityToFDRCalculator createProbabilityToFDRMapping(long dataSetID, ProteinSummary summary) - { - ProbabilityToFDRCalculator calculator = new ProbabilityToFDRCalculator(); - Object[] s = summary.getSummaryHeader().getProgramDetails().getSummary(); - if (s != null) - { - for (Object object : s) - { - if (object instanceof ProteinProphetDetails) - { - ProteinProphetDetails details = (ProteinProphetDetails) object; - List<ProteinSummaryDataFilter> filters = details.getDataFilters(); - for (ProteinSummaryDataFilter proteinSummaryDataFilter : filters) - { - double probability = proteinSummaryDataFilter.getMinProbability(); - double fdr = proteinSummaryDataFilter.getFalsePositiveErrorRate(); - calculator.add(probability, fdr); - calculator.init(); - dao.createProbabilityToFDRMapping(dataSetID, probability, fdr); - } - return calculator; - } - } - } - if (assumingExtendedProtXML == false) - { - return calculator; - } - throw new UserFailureException("Missing Protein Prophet details."); - } - - protected Sample getOrCreateSample(Experiment experiment, String samplePermID) - { - Sample sample = dao.tryToGetSampleByPermID(samplePermID); - if (sample == null) - { - sample = new Sample(); - sample.setPermID(samplePermID); - sample.setId(dao.createSample(experiment.getId(), samplePermID)); - } - return sample; - } -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/StorageProcessorWithResultDataSetUploader.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/StorageProcessorWithResultDataSetUploader.java deleted file mode 100644 index 876f138a525846824a45a345313fbc1a94cff76d..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/StorageProcessorWithResultDataSetUploader.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.etlserver.proteomics; - -import java.io.File; -import java.util.Properties; - -import ch.systemsx.cisd.etlserver.AbstractStrorageProcessorWithUploader; -import ch.systemsx.cisd.openbis.dss.generic.shared.ServiceProvider; - -/** - * @author Franz-Josef Elmer - */ -public class StorageProcessorWithResultDataSetUploader extends AbstractStrorageProcessorWithUploader -{ - - public StorageProcessorWithResultDataSetUploader(Properties properties) - { - super(properties, new ProtXMLUploader(properties, ServiceProvider.getOpenBISService())); - } - - @Override - protected void logDataSetFileError(File incomingDataSetDirectory, Throwable exception) - { - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/TypeExtractorForMSInjection.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/TypeExtractorForMSInjection.java deleted file mode 100644 index 25cc23e08acdcecd45b7c8b5db3f86615e78e882..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/TypeExtractorForMSInjection.java +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Copyright 2010 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.etlserver.proteomics; - -import static ch.systemsx.cisd.openbis.etlserver.proteomics.DataSetInfoExtractorForMSInjection.DATA_SET_PROPERTIES_FILE; -import static ch.systemsx.cisd.openbis.etlserver.proteomics.DataSetInfoExtractorForMSInjection.DATA_SET_TYPE_KEY; -import static ch.systemsx.cisd.openbis.etlserver.proteomics.DataSetInfoExtractorForMSInjection.FILE_TYPE_KEY; - -import java.io.File; -import java.util.Properties; - -import ch.systemsx.cisd.common.properties.PropertyUtils; -import ch.systemsx.cisd.etlserver.ITypeExtractor; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSetType; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.FileFormatType; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.LocatorType; - -/** - * @author Franz-Josef Elmer - */ -public class TypeExtractorForMSInjection implements ITypeExtractor -{ - private static final LocatorType LOCATOR_TYPE = new LocatorType(LocatorType.DEFAULT_LOCATOR_TYPE_CODE); - - public TypeExtractorForMSInjection(Properties properties) - { - } - - @Override - public DataSetType getDataSetType(File incomingDataSetPath) - { - Properties properties = loadProperties(incomingDataSetPath); - return new DataSetType(PropertyUtils.getMandatoryProperty(properties, DATA_SET_TYPE_KEY)); - } - - @Override - public FileFormatType getFileFormatType(File incomingDataSetPath) - { - Properties properties = loadProperties(incomingDataSetPath); - return new FileFormatType(PropertyUtils.getMandatoryProperty(properties, FILE_TYPE_KEY)); - } - - @Override - public LocatorType getLocatorType(File incomingDataSetPath) - { - return LOCATOR_TYPE; - } - - @Override - public String getProcessorType(File incomingDataSetPath) - { - return null; - } - - @Override - public boolean isMeasuredData(File incomingDataSetPath) - { - return true; - } - - private Properties loadProperties(File incomingDataSetPath) - { - return Util.loadPropertiesFile(incomingDataSetPath, DATA_SET_PROPERTIES_FILE); - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/Util.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/Util.java deleted file mode 100644 index 564c0196f4d43992ecba55087608b128227105c9..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/Util.java +++ /dev/null @@ -1,128 +0,0 @@ -/* - * Copyright 2010 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.etlserver.proteomics; - -import java.io.File; -import java.util.ArrayList; -import java.util.List; -import java.util.Properties; - -import ch.systemsx.cisd.common.exceptions.UserFailureException; -import ch.systemsx.cisd.common.io.PropertyIOUtils; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityProperty; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityType; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityTypePropertyType; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IEntityProperty; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.PropertyType; - -/** - * @author Franz-Josef Elmer - */ -class Util -{ - private Util() - { - } - - /** - * Tries to return the prot.xml file in the specified data set. - * - * @return <code>null</code> if non found. - */ - static File tryGetProtXMLFile(File dataSet) - { - if (dataSet.isDirectory() == false) - { - return dataSet; - } - File[] files = dataSet.listFiles(); - for (File file : files) - { - if (file.getName().endsWith("prot.xml")) - { - return file; - } - } - return null; - } - - /** - * Returns an array of all entity properties defined by the specified entity type for which values are found in the specified {@link Properties} - * object. - * - * @throws UserFailureException if at least one mandatory property were missed. - */ - static IEntityProperty[] getAndCheckProperties(Properties properties, EntityType entityType) - { - List<String> missingMandatoryProperties = new ArrayList<String>(); - List<IEntityProperty> sampleProperties = - getProperties(properties, entityType, missingMandatoryProperties); - if (missingMandatoryProperties.isEmpty() == false) - { - throw new UserFailureException("The following mandatory properties are missed: " - + missingMandatoryProperties); - } - return sampleProperties.toArray(new IEntityProperty[sampleProperties.size()]); - } - - /** - * Turns specified properties into a list of {@link IEntityProperty} instances in accordance to the property types assigned to the specified - * entity type. Keys of missing mandatory properties are added to the specified list. - */ - static List<IEntityProperty> getProperties(Properties properties, - EntityType entityType, List<String> missingMandatoryProperties) - { - List<IEntityProperty> sampleProperties = new ArrayList<IEntityProperty>(); - List<? extends EntityTypePropertyType<?>> sampleTypePropertyTypes = entityType.getAssignedPropertyTypes(); - for (EntityTypePropertyType<?> entityTypePropertyType : sampleTypePropertyTypes) - { - boolean mandatory = entityTypePropertyType.isMandatory(); - PropertyType propertyType = entityTypePropertyType.getPropertyType(); - String key = propertyType.getCode(); - String value = properties.getProperty(key); - if (value == null) - { - if (mandatory) - { - missingMandatoryProperties.add(key); - } - } else - { - EntityProperty property = new EntityProperty(); - property.setPropertyType(propertyType); - property.setValue(value); - sampleProperties.add(property); - } - } - return sampleProperties; - } - - static Properties loadPropertiesFile(File incomingDataSetDirectory, String propertiesFileName) - { - File propertiesFile = new File(incomingDataSetDirectory, propertiesFileName); - if (propertiesFile.exists() == false) - { - throw new UserFailureException("Missing properties file '" + propertiesFileName + "'."); - } - if (propertiesFile.isFile() == false) - { - throw new UserFailureException("Properties file '" + propertiesFileName - + "' is a folder."); - } - return PropertyIOUtils.loadProperties(propertiesFile); - } -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/dto/ASAPRatioPValue.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/dto/ASAPRatioPValue.java deleted file mode 100644 index 6c7181a9a233b2c75525040bb40f08a6bf57068c..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/dto/ASAPRatioPValue.java +++ /dev/null @@ -1,117 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.etlserver.proteomics.dto; - -import javax.xml.bind.annotation.XmlAttribute; -import javax.xml.bind.annotation.XmlRootElement; -import javax.xml.bind.annotation.XmlType; - -import ch.systemsx.cisd.openbis.etlserver.proteomics.Constants; - -/** - * @author Franz-Josef Elmer - */ -@XmlRootElement(name = "ASAPRatio_pvalue", namespace = Constants.NAMESPACE) -@XmlType -public class ASAPRatioPValue -{ - private double adjustedRatioMean; - - private double adjustedRatioStandardDeviation; - - private double adjustedHeavyToLisghtRatioMean; - - private double adjustedHeavyToLisghtRatioStandardDeviation; - - private double pValue; - - private double decimalPValue; - - public ASAPRatioPValue() - { - System.out.println("ASAPRatioPValue.ASAPRatioPValue()"); - } - - @XmlAttribute(name = "adj_ratio_mean", required = true) - public final double getAdjustedRatioMean() - { - return adjustedRatioMean; - } - - public final void setAdjustedRatioMean(double adjustedRatioMean) - { - System.out.println("ASAPRatioPValue.setAdjustedRatioMean(" + adjustedRatioMean + ")"); - this.adjustedRatioMean = adjustedRatioMean; - } - - @XmlAttribute(name = "adj_ratio_standard_dev", required = true) - public final double getAdjustedRatioStandardDeviation() - { - return adjustedRatioStandardDeviation; - } - - public final void setAdjustedRatioStandardDeviation(double adjustedRatioStandardDeviation) - { - this.adjustedRatioStandardDeviation = adjustedRatioStandardDeviation; - } - - @XmlAttribute(name = "heavy2light_adj_ratio_mean") - public final double getAdjustedHeavyToLisghtRatioMean() - { - return adjustedHeavyToLisghtRatioMean; - } - - public final void setAdjustedHeavyToLisghtRatioMean(double adjustedHeavyToLisghtRatioMean) - { - this.adjustedHeavyToLisghtRatioMean = adjustedHeavyToLisghtRatioMean; - } - - @XmlAttribute(name = "heavy2light_adj_ratio_standard_dev") - public final double getAdjustedHeavyToLisghtRatioStandardDeviation() - { - return adjustedHeavyToLisghtRatioStandardDeviation; - } - - public final void setAdjustedHeavyToLisghtRatioStandardDeviation( - double adjustedHeavyToLisghtRatioStandardDeviation) - { - this.adjustedHeavyToLisghtRatioStandardDeviation = adjustedHeavyToLisghtRatioStandardDeviation; - } - - @XmlAttribute(name = "pvalue") - public final double getPValue() - { - return pValue; - } - - public final void setPValue(double value) - { - pValue = value; - } - - @XmlAttribute(name = "decimal_pvalue") - public final double getDecimalPValue() - { - return decimalPValue; - } - - public final void setDecimalPValue(double decimalPValue) - { - this.decimalPValue = decimalPValue; - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/dto/AbstractDTOWithID.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/dto/AbstractDTOWithID.java deleted file mode 100644 index a1d9fbf02e3842286f9db4d2bfb69e7e55dc6231..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/dto/AbstractDTOWithID.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.etlserver.proteomics.dto; - -import net.lemnik.eodsql.AutoGeneratedKeys; - -/** - * @author Franz-Josef Elmer - */ -abstract class AbstractDTOWithID -{ - @AutoGeneratedKeys - private long id; - - public final long getId() - { - return id; - } - - public final void setId(long id) - { - this.id = id; - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/dto/AbstractDTOWithIDAndPermID.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/dto/AbstractDTOWithIDAndPermID.java deleted file mode 100644 index 206520bd52af65db0216c4013128347aabf25fcc..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/dto/AbstractDTOWithIDAndPermID.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.etlserver.proteomics.dto; - -import net.lemnik.eodsql.ResultColumn; - -/** - * @author Franz-Josef Elmer - */ -abstract class AbstractDTOWithIDAndPermID extends AbstractDTOWithID -{ - @ResultColumn("perm_id") - private String permID; - - public final String getPermID() - { - return permID; - } - - public final void setPermID(String permID) - { - this.permID = permID; - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/dto/AminoAcidMass.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/dto/AminoAcidMass.java deleted file mode 100644 index b2ab23450f4bbb74e4e3d15eeb23e1cf383d35d5..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/dto/AminoAcidMass.java +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.etlserver.proteomics.dto; - -import javax.xml.bind.annotation.XmlAttribute; - -/** - * @author Franz-Josef Elmer - */ -public class AminoAcidMass -{ - private int position; - - private double mass; - - @XmlAttribute(name = "position", required = true) - public final int getPosition() - { - return position; - } - - public final void setPosition(int position) - { - this.position = position; - } - - @XmlAttribute(name = "mass", required = true) - public final double getMass() - { - return mass; - } - - public final void setMass(double mass) - { - this.mass = mass; - } - - @Override - public boolean equals(Object obj) - { - if (obj == this) - { - return true; - } - if (obj instanceof AminoAcidMass == false) - { - return false; - } - AminoAcidMass that = (AminoAcidMass) obj; - return this.position == that.position && this.mass == that.mass; - } - - @Override - public int hashCode() - { - return (int) (37 * position + mass); - } - - @Override - public String toString() - { - return mass + "@" + position; - } -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/dto/AnnotatedProtein.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/dto/AnnotatedProtein.java deleted file mode 100644 index 2266b73c96544a02bd273b28b497657952e2ab27..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/dto/AnnotatedProtein.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.etlserver.proteomics.dto; - -import javax.xml.bind.annotation.XmlAttribute; -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlType; - -import ch.systemsx.cisd.openbis.etlserver.proteomics.Constants; - -/** - * @author Franz-Josef Elmer - */ -@XmlType -public class AnnotatedProtein -{ - protected String name; - - protected ProteinAnnotation annotation; - - @XmlAttribute(name = "protein_name", required = true) - public final String getName() - { - return name; - } - - public final void setName(String name) - { - this.name = name; - } - - @XmlElement(name = "annotation", namespace = Constants.NAMESPACE) - public final ProteinAnnotation getAnnotation() - { - return annotation; - } - - public final void setAnnotation(ProteinAnnotation annotation) - { - this.annotation = annotation; - } - - @Override - public String toString() - { - return annotation == null ? name : name + "[" + annotation.getDescription() + "]"; - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/dto/DataSet.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/dto/DataSet.java deleted file mode 100644 index 778efdb293b7172fe3301f818b7960d762df23f5..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/dto/DataSet.java +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.etlserver.proteomics.dto; - -import net.lemnik.eodsql.ResultColumn; - -/** - * @author Franz-Josef Elmer - */ -public class DataSet extends AbstractDTOWithIDAndPermID -{ - @ResultColumn("samp_id") - private Long sampleID; - - @ResultColumn("expe_id") - private Long experimentID; - - @ResultColumn("db_id") - private Long databaseID; - - public final Long getSampleID() - { - return sampleID; - } - - public final void setSampleID(Long sampleID) - { - this.sampleID = sampleID; - } - - public final Long getExperimentID() - { - return experimentID; - } - - public final void setExperimentID(Long experimentID) - { - this.experimentID = experimentID; - } - - public final Long getDatabaseID() - { - return databaseID; - } - - public final void setDatabaseID(Long databaseID) - { - this.databaseID = databaseID; - } -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/dto/Database.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/dto/Database.java deleted file mode 100644 index 1b16ff40284b8f09eda87b91750f29e105ad2c91..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/dto/Database.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.etlserver.proteomics.dto; - -import net.lemnik.eodsql.ResultColumn; - -/** - * @author Franz-Josef Elmer - */ -public class Database extends AbstractDTOWithID -{ - @ResultColumn("name_and_version") - private String nameAndVersion; - - public final String getNameAndVersion() - { - return nameAndVersion; - } - - public final void setNameAndVersion(String nameAndVersion) - { - this.nameAndVersion = nameAndVersion; - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/dto/Experiment.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/dto/Experiment.java deleted file mode 100644 index 0959e186f88dd500d9d05616a2a434c524915c63..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/dto/Experiment.java +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.etlserver.proteomics.dto; - -/** - * @author Franz-Josef Elmer - */ -public class Experiment extends AbstractDTOWithIDAndPermID -{ - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/dto/ModificationType.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/dto/ModificationType.java deleted file mode 100644 index b78ea4b891601331962abab542aff3f419a9d822..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/dto/ModificationType.java +++ /dev/null @@ -1,95 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.etlserver.proteomics.dto; - -import net.lemnik.eodsql.ResultColumn; - -/** - * @author Franz-Josef Elmer - */ -public class ModificationType extends AbstractDTOWithID -{ - private String code; - - @ResultColumn("amino_acid") - private String aminoAcid; - - private double mass; - - @ResultColumn("mass_tolerance") - private double massTolerance; - - public final String getCode() - { - return code; - } - - public final void setCode(String code) - { - this.code = code; - } - - public final String getAminoAcid() - { - return aminoAcid; - } - - public final void setAminoAcid(String aminoAcid) - { - this.aminoAcid = aminoAcid; - } - - public final double getMass() - { - return mass; - } - - public final void setMass(double mass) - { - this.mass = mass; - } - - public final double getMassTolerance() - { - return massTolerance; - } - - public final void setMassTolerance(double deltaMass) - { - this.massTolerance = deltaMass; - } - - public boolean matches(char aminoAcidSymbol, double m) - { - if (m < mass - massTolerance) - { - return false; - } - if (m > mass + massTolerance) - { - return false; - } - return aminoAcid == null || (aminoAcid.length() == 1 && aminoAcid.charAt(0) == aminoAcidSymbol); - } - - @Override - public String toString() - { - return code + "=(" + aminoAcid + ":" + mass + "\u00b1" + massTolerance + ")"; - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/dto/Parameter.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/dto/Parameter.java deleted file mode 100644 index 92187d45081918723a1a25816d72406e223356b4..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/dto/Parameter.java +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.etlserver.proteomics.dto; - -import javax.xml.bind.annotation.XmlAttribute; -import javax.xml.bind.annotation.XmlType; - -/** - * @author Franz-Josef Elmer - */ -@XmlType -public class Parameter -{ - private String name; - - private String value; - - private String type; - - @XmlAttribute(name = "name", required = true) - public final String getName() - { - return name; - } - - public final void setName(String name) - { - this.name = name; - } - - @XmlAttribute(name = "value", required = true) - public final String getValue() - { - return value; - } - - public final void setValue(String value) - { - this.value = value; - } - - @XmlAttribute(name = "type") - public final String getType() - { - return type; - } - - public final void setType(String type) - { - this.type = type; - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/dto/ParentDataSetCodes.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/dto/ParentDataSetCodes.java deleted file mode 100644 index 5e013d48f5f7ff7650f59030ff2d17efe484b1c3..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/dto/ParentDataSetCodes.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright 2011 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.etlserver.proteomics.dto; - -import java.util.List; - -/** - * Data transfer object which contains a list of data set codes and an optional error message. - * - * @author Franz-Josef Elmer - */ -public class ParentDataSetCodes -{ - private final List<String> dataSetCodes; - - private final String errorMessage; - - public ParentDataSetCodes(List<String> dataSetCodes, String errorMessage) - { - super(); - this.dataSetCodes = dataSetCodes; - this.errorMessage = errorMessage; - } - - public List<String> getDataSetCodes() - { - return dataSetCodes; - } - - public String getErrorMessage() - { - return errorMessage; - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/dto/Peptide.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/dto/Peptide.java deleted file mode 100644 index cea00ffdf206e7a670fffa66316666d1dcc27ca9..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/dto/Peptide.java +++ /dev/null @@ -1,132 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.etlserver.proteomics.dto; - -import java.util.ArrayList; -import java.util.List; - -import javax.xml.bind.annotation.XmlAttribute; -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlType; - -import ch.systemsx.cisd.openbis.etlserver.proteomics.Constants; - -/** - * @author Franz-Josef Elmer - */ -@XmlType -public class Peptide -{ - private String sequence; - - private int charge; - - private double initialProbability; - - private double weight; - - private List<Parameter> parameters = new ArrayList<Parameter>(); - - private List<PeptideModification> modifications = new ArrayList<PeptideModification>(); - - @XmlAttribute(name = "peptide_sequence", required = true) - public final String getSequence() - { - return sequence; - } - - public final void setSequence(String sequence) - { - this.sequence = sequence; - } - - @XmlAttribute(name = "charge", required = true) - public final int getCharge() - { - return charge; - } - - public final void setCharge(int charge) - { - this.charge = charge; - } - - @XmlAttribute(name = "initial_probability", required = true) - public final double getInitialProbability() - { - return initialProbability; - } - - public final void setInitialProbability(double initialProbability) - { - this.initialProbability = initialProbability; - } - - @XmlAttribute(name = "weight") - public final double getWeight() - { - return weight; - } - - public final void setWeight(double weight) - { - this.weight = weight; - } - - @XmlElement(name = "modification_info", namespace = Constants.NAMESPACE) - public final List<PeptideModification> getModifications() - { - return modifications; - } - - public final void setModifications(List<PeptideModification> modifications) - { - this.modifications = modifications; - } - - @XmlElement(name = "parameter", namespace = Constants.NAMESPACE) - public final List<Parameter> getParameters() - { - return parameters; - } - - public final void setParameters(List<Parameter> parameters) - { - this.parameters = parameters; - } - - @Override - public String toString() - { - StringBuilder builder = new StringBuilder(); - builder.append(sequence); - if (charge > 0) - { - builder.append("("); - for (int i = 0; i < charge; i++) - { - builder.append('+'); - } - builder.append(")"); - } - builder.append("[initialProbability=").append(initialProbability); - builder.append(", weight=").append(weight); - builder.append("]"); - return builder.toString(); - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/dto/PeptideModification.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/dto/PeptideModification.java deleted file mode 100644 index 6f7f414d3b82a78f579dcb12e94668a1db6454a1..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/dto/PeptideModification.java +++ /dev/null @@ -1,109 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.etlserver.proteomics.dto; - -import java.util.List; - -import javax.xml.bind.annotation.XmlAttribute; -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlType; - -import ch.systemsx.cisd.openbis.etlserver.proteomics.Constants; - -/** - * @author Franz-Josef Elmer - */ -@XmlType -public class PeptideModification -{ - private String modifiedPeptide; - - private double nTermMass; - - private double cTermMass; - - private List<AminoAcidMass> aminoAcidMasses; - - @XmlAttribute(name = "modified_peptide") - public final String getModifiedPeptide() - { - return modifiedPeptide; - } - - public final void setModifiedPeptide(String modifiedPeptide) - { - this.modifiedPeptide = modifiedPeptide; - } - - @XmlAttribute(name = "mod_nterm_mass") - public final double getNTermMass() - { - return nTermMass; - } - - public final void setNTermMass(double termMass) - { - nTermMass = termMass; - } - - @XmlAttribute(name = "mod_cterm_mass") - public final double getCTermMass() - { - return cTermMass; - } - - public final void setCTermMass(double termMass) - { - cTermMass = termMass; - } - - @XmlElement(name = "mod_aminoacid_mass", namespace = Constants.NAMESPACE) - public final List<AminoAcidMass> getAminoAcidMasses() - { - return aminoAcidMasses; - } - - public final void setAminoAcidMasses(List<AminoAcidMass> aminoAcidMasses) - { - this.aminoAcidMasses = aminoAcidMasses; - } - - @Override - public String toString() - { - StringBuilder builder = new StringBuilder(); - builder.append("Modification[modifiedPeptide=").append(modifiedPeptide); - builder.append(", nTermMass=").append(nTermMass); - builder.append(", cTermMass=").append(cTermMass); - builder.append("]"); - if (aminoAcidMasses != null && aminoAcidMasses.isEmpty() == false) - { - builder.append("("); - for (int i = 0; i < aminoAcidMasses.size(); i++) - { - if (i > 0) - { - builder.append(", "); - } - builder.append(aminoAcidMasses.get(i)); - } - builder.append(")"); - } - return builder.toString(); - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/dto/ProgramDetails.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/dto/ProgramDetails.java deleted file mode 100644 index 0832a9bd9f5e7060cedb2de74d10fec63629dee4..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/dto/ProgramDetails.java +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.etlserver.proteomics.dto; - -import java.util.Date; - -import javax.xml.bind.annotation.XmlAnyElement; -import javax.xml.bind.annotation.XmlAttribute; -import javax.xml.bind.annotation.XmlType; - -/** - * @author Franz-Josef Elmer - */ -@XmlType -public class ProgramDetails -{ - private String analysis; - - private Date timestamp; - - private String version; - - private Object[] summary; - - @XmlAttribute(name = "analysis", required = true) - public final String getAnalysis() - { - return analysis; - } - - public final void setAnalysis(String analysis) - { - this.analysis = analysis; - } - - // @XmlAttribute(name = "time", required = true) - public final Date getTimestamp() - { - return timestamp; - } - - public final void setTimestamp(Date timestamp) - { - this.timestamp = timestamp; - } - - @XmlAttribute(name = "version") - public final String getVersion() - { - return version; - } - - public final void setVersion(String version) - { - this.version = version; - } - - @XmlAnyElement(lax = true) - public final Object[] getSummary() - { - return summary; - } - - public final void setSummary(Object[] summary) - { - this.summary = summary; - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/dto/Protein.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/dto/Protein.java deleted file mode 100644 index 436f04e05866b3d97ccd746667a990220d1ac1ab..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/dto/Protein.java +++ /dev/null @@ -1,232 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.etlserver.proteomics.dto; - -import java.util.ArrayList; -import java.util.List; - -import javax.xml.bind.annotation.XmlAttribute; -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlType; - -import ch.systemsx.cisd.openbis.etlserver.proteomics.Constants; - -/** - * @author Franz-Josef Elmer - */ -@XmlType -public class Protein extends AnnotatedProtein -{ - private double probability; - - private double coverage; - - private int numberOfIndistinguishableProteins; - - private String uniqueStrippedPeptides; - - private String groupSiblingID; - - private int totalNumberOfPeptides; - - private String subsumingProtein; - - private String fractionOfCorrectPeptideIdentifications; - - private List<Parameter> parameters = new ArrayList<Parameter>(); - - private List<AnnotatedProtein> indistinguishableProteins = new ArrayList<AnnotatedProtein>(); - - private List<Peptide> peptides; - - @XmlAttribute(name = "probability", required = true) - public final double getProbability() - { - return probability; - } - - public final void setProbability(double probability) - { - this.probability = probability; - } - - @XmlAttribute(name = "percent_coverage") - public final double getCoverage() - { - return coverage; - } - - public final void setCoverage(double coverage) - { - this.coverage = coverage; - } - - @XmlAttribute(name = "n_indistinguishable_proteins", required = true) - public final int getNumberOfIndistinguishableProteins() - { - return numberOfIndistinguishableProteins; - } - - public final void setNumberOfIndistinguishableProteins(int numberOfIndistinguishableProteins) - { - this.numberOfIndistinguishableProteins = numberOfIndistinguishableProteins; - } - - @XmlAttribute(name = "unique_stripped_peptides") - public final String getUniqueStrippedPeptides() - { - return uniqueStrippedPeptides; - } - - public final void setUniqueStrippedPeptides(String uniqueStrippedPeptides) - { - this.uniqueStrippedPeptides = uniqueStrippedPeptides; - } - - @XmlAttribute(name = "group_sibling_id", required = true) - public final String getGroupSiblingID() - { - return groupSiblingID; - } - - public final void setGroupSiblingID(String groupSiblingID) - { - this.groupSiblingID = groupSiblingID; - } - - @XmlAttribute(name = "total_number_peptides") - public final int getTotalNumberOfPeptides() - { - return totalNumberOfPeptides; - } - - public final void setTotalNumberOfPeptides(int totalNumberOfPeptides) - { - this.totalNumberOfPeptides = totalNumberOfPeptides; - } - - @XmlAttribute(name = "subsuming_protein_entry") - public final String getSubsumingProtein() - { - return subsumingProtein; - } - - public final void setSubsumingProtein(String subsumingProtein) - { - this.subsumingProtein = subsumingProtein; - } - - @XmlAttribute(name = "pct_spectrum_ids") - public final String getFractionOfCorrectPeptideIdentifications() - { - return fractionOfCorrectPeptideIdentifications; - } - - public final void setFractionOfCorrectPeptideIdentifications(String fractionOfCorrectPeptideIdentifications) - { - this.fractionOfCorrectPeptideIdentifications = fractionOfCorrectPeptideIdentifications; - } - - @XmlElement(name = "parameter", namespace = Constants.NAMESPACE) - public final List<Parameter> getParameters() - { - return parameters; - } - - public final void setParameters(List<Parameter> parameters) - { - this.parameters = parameters; - } - - @XmlElement(name = "indistinguishable_protein", namespace = Constants.NAMESPACE) - public final List<AnnotatedProtein> getIndistinguishableProteins() - { - return indistinguishableProteins; - } - - public final void setIndistinguishableProteins(List<AnnotatedProtein> indistinguishableProteins) - { - this.indistinguishableProteins = indistinguishableProteins; - } - - @XmlElement(name = "peptide", namespace = Constants.NAMESPACE) - public final List<Peptide> getPeptides() - { - return peptides; - } - - public final void setPeptides(List<Peptide> peptides) - { - this.peptides = peptides; - } - - @Override - public String toString() - { - StringBuilder builder = new StringBuilder(); - builder.append(name).append("[probability=").append(probability); - builder.append(", coverage=").append(coverage); - builder.append(", indistinguishableProteins=").append(numberOfIndistinguishableProteins); - if (uniqueStrippedPeptides != null) - { - builder.append(", uniqueStrippedPeptides=").append(uniqueStrippedPeptides); - } - builder.append(", groupSiblingID=").append(groupSiblingID); - if (totalNumberOfPeptides > 0) - { - builder.append(", totalNumberOfPeptides=").append(totalNumberOfPeptides); - } - if (subsumingProtein != null) - { - builder.append(", subsumingProtein=").append(subsumingProtein); - } - if (fractionOfCorrectPeptideIdentifications != null) - { - builder.append(", fractionOfCorrectPeptideIdentifications=").append(fractionOfCorrectPeptideIdentifications); - } - builder.append("]"); - if (annotation != null) - { - builder.append("\n ").append(annotation); - } - if (indistinguishableProteins != null && indistinguishableProteins.isEmpty() == false) - { - builder.append("\n indistinguishable proteins:"); - for (AnnotatedProtein protein : indistinguishableProteins) - { - builder.append("\n ").append(protein); - } - } - if (peptides != null && peptides.isEmpty() == false) - { - builder.append("\n peptides:"); - for (Peptide peptide : peptides) - { - builder.append("\n ").append(peptide); - List<PeptideModification> modifications = peptide.getModifications(); - if (modifications != null && modifications.isEmpty() == false) - { - for (PeptideModification modification : modifications) - { - builder.append("\n ").append(modification); - } - } - } - } - return builder.toString(); - } -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/dto/ProteinAnnotation.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/dto/ProteinAnnotation.java deleted file mode 100644 index 06c1344ae699c4f3ecc82c457da48be43341c3b5..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/dto/ProteinAnnotation.java +++ /dev/null @@ -1,145 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.etlserver.proteomics.dto; - -import javax.xml.bind.annotation.XmlAttribute; -import javax.xml.bind.annotation.XmlType; - -/** - * @author Franz-Josef Elmer - */ -@XmlType -public class ProteinAnnotation -{ - private String description; - - private String ipiName; - - private String refseqName; - - private String swissprotName; - - private String ensemblName; - - private String tremblName; - - private String locusLinkName; - - private String flybase; - - @XmlAttribute(name = "protein_description", required = true) - public final String getDescription() - { - return description; - } - - public final void setDescription(String description) - { - this.description = description; - } - - @XmlAttribute(name = "ipi_name") - public final String getIpiName() - { - return ipiName; - } - - public final void setIpiName(String ipiName) - { - this.ipiName = ipiName; - } - - @XmlAttribute(name = "refseq_name") - public final String getRefseqName() - { - return refseqName; - } - - public final void setRefseqName(String refseqName) - { - this.refseqName = refseqName; - } - - @XmlAttribute(name = "swissprot_name") - public final String getSwissprotName() - { - return swissprotName; - } - - public final void setSwissprotName(String swissprotName) - { - this.swissprotName = swissprotName; - } - - @XmlAttribute(name = "ensembl_name") - public final String getEnsemblName() - { - return ensemblName; - } - - public final void setEnsemblName(String ensembleName) - { - this.ensemblName = ensembleName; - } - - @XmlAttribute(name = "trembl_name") - public final String getTremblName() - { - return tremblName; - } - - public final void setTremblName(String tremblName) - { - this.tremblName = tremblName; - } - - @XmlAttribute(name = "locus_link_name") - public final String getLocusLinkName() - { - return locusLinkName; - } - - public final void setLocusLinkName(String locusLinkName) - { - this.locusLinkName = locusLinkName; - } - - @XmlAttribute(name = "flybase") - public final String getFlybase() - { - return flybase; - } - - public final void setFlybase(String flybase) - { - this.flybase = flybase; - } - - @Override - public String toString() - { - StringBuilder builder = new StringBuilder(); - builder.append("Annotation[description=").append(description); - if (ipiName != null) - { - builder.append(", ipiName=").append(ipiName); - } - builder.append("]"); - return builder.toString(); - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/dto/ProteinGroup.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/dto/ProteinGroup.java deleted file mode 100644 index 24e0e05ea9a410b713439574b2f4987546044cb0..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/dto/ProteinGroup.java +++ /dev/null @@ -1,105 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.etlserver.proteomics.dto; - -import java.util.List; - -import javax.xml.bind.annotation.XmlAttribute; -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlType; - -import ch.systemsx.cisd.openbis.etlserver.proteomics.Constants; - -/** - * @author Franz-Josef Elmer - */ -@XmlType -public class ProteinGroup -{ - private String groupNumber; - - private String pseudoName; - - private double probability; - - private List<Protein> proteins; - - @XmlAttribute(name = "group_number", required = true) - public final String getGroupNumber() - { - return groupNumber; - } - - public final void setGroupNumber(String groupNumber) - { - this.groupNumber = groupNumber; - } - - @XmlAttribute(name = "pseudo_name") - public final String getPseudoName() - { - return pseudoName; - } - - public final void setPseudoName(String pseudoName) - { - this.pseudoName = pseudoName; - } - - @XmlAttribute(name = "probability", required = true) - public final double getProbability() - { - return probability; - } - - public final void setProbability(double probability) - { - this.probability = probability; - } - - @XmlElement(name = "protein", namespace = Constants.NAMESPACE) - public final List<Protein> getProteins() - { - return proteins; - } - - public final void setProteins(List<Protein> proteins) - { - this.proteins = proteins; - } - - @Override - public String toString() - { - StringBuilder builder = new StringBuilder(); - builder.append("PG[number=").append(groupNumber); - if (pseudoName != null) - { - builder.append(", pseudoName=").append(pseudoName); - } - builder.append(", probability=").append(probability).append("]"); - if (proteins != null && proteins.size() > 0) - { - for (Protein protein : proteins) - { - builder.append("\n ").append(protein); - } - } - return builder.toString(); - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/dto/ProteinProphetDetails.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/dto/ProteinProphetDetails.java deleted file mode 100644 index cc8727dc7f81e33d9ec9494924e8d34fdda99069..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/dto/ProteinProphetDetails.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.etlserver.proteomics.dto; - -import java.util.List; - -import javax.xml.bind.annotation.XmlAttribute; -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlRootElement; -import javax.xml.bind.annotation.XmlType; - -import ch.systemsx.cisd.openbis.etlserver.proteomics.Constants; - -/** - * @author Franz-Josef Elmer - */ -@XmlRootElement(name = "proteinprophet_details", namespace = Constants.NAMESPACE) -@XmlType -public class ProteinProphetDetails -{ - private String occamFlag; - - private List<ProteinSummaryDataFilter> dataFilters; - - @XmlAttribute(name = "occam_flag", required = true) - public final String getOccamFlag() - { - return occamFlag; - } - - public final void setOccamFlag(String occamFlag) - { - this.occamFlag = occamFlag; - } - - @XmlElement(name = "protein_summary_data_filter", namespace = Constants.NAMESPACE) - public final List<ProteinSummaryDataFilter> getDataFilters() - { - return dataFilters; - } - - public final void setDataFilters(List<ProteinSummaryDataFilter> dataFilters) - { - this.dataFilters = dataFilters; - } - - @Override - public String toString() - { - return "ProteinProphet[occamFlag=" + occamFlag + "]"; - } -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/dto/ProteinReference.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/dto/ProteinReference.java deleted file mode 100644 index 9a3f56fe1bfa40676bf6dbed44e40c0dbcf82085..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/dto/ProteinReference.java +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.etlserver.proteomics.dto; - -import net.lemnik.eodsql.ResultColumn; - -/** - * @author Franz-Josef Elmer - */ -public class ProteinReference extends AbstractDTOWithID -{ - @ResultColumn("accession_number") - private String accessionNumber; - - @ResultColumn("description") - private String description; - - public final String getAccessionNumber() - { - return accessionNumber; - } - - public final void setAccessionNumber(String accessionNumber) - { - this.accessionNumber = accessionNumber; - } - - public final String getDescription() - { - return description; - } - - public final void setDescription(String description) - { - this.description = description; - } -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/dto/ProteinSummary.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/dto/ProteinSummary.java deleted file mode 100644 index 55a8526b0e6cce9598445bf007c23e40c6ac09d6..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/dto/ProteinSummary.java +++ /dev/null @@ -1,74 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.etlserver.proteomics.dto; - -import java.util.List; - -import javax.xml.bind.annotation.XmlAttribute; -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlRootElement; -import javax.xml.bind.annotation.XmlType; - -import ch.systemsx.cisd.openbis.etlserver.proteomics.Constants; - -/** - * @author Franz-Josef Elmer - */ -@XmlRootElement(name = "protein_summary", namespace = Constants.NAMESPACE) -@XmlType -public class ProteinSummary -{ - private String summaryXML; - - private ProteinSummaryHeader summaryHeader; - - private List<ProteinGroup> proteinGroups; - - @XmlAttribute(name = "summary_xml") - public final String getSummaryXML() - { - return summaryXML; - } - - public final void setSummaryXML(String summaryXML) - { - this.summaryXML = summaryXML; - } - - @XmlElement(name = "protein_summary_header", namespace = Constants.NAMESPACE) - public final ProteinSummaryHeader getSummaryHeader() - { - return summaryHeader; - } - - public final void setSummaryHeader(ProteinSummaryHeader summaryHeader) - { - this.summaryHeader = summaryHeader; - } - - @XmlElement(name = "protein_group", namespace = Constants.NAMESPACE) - public final List<ProteinGroup> getProteinGroups() - { - return proteinGroups; - } - - public final void setProteinGroups(List<ProteinGroup> proteinGroups) - { - this.proteinGroups = proteinGroups; - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/dto/ProteinSummaryDataFilter.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/dto/ProteinSummaryDataFilter.java deleted file mode 100644 index db809b28390369f89a21f35773eea0f24da5dab3..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/dto/ProteinSummaryDataFilter.java +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.etlserver.proteomics.dto; - -import javax.xml.bind.annotation.XmlAttribute; -import javax.xml.bind.annotation.XmlType; - -/** - * Protein Phrophet section with the mapping between probability and FDR (False Discovery Rate). - * - * @author Franz-Josef Elmer - */ -@XmlType -public class ProteinSummaryDataFilter -{ - private double minProbability; - - private double sensitivity; - - private double falsePositiveErrorRate; - - @XmlAttribute(name = "min_probability", required = true) - public final double getMinProbability() - { - return minProbability; - } - - public final void setMinProbability(double minProbability) - { - this.minProbability = minProbability; - } - - @XmlAttribute(name = "sensitivity", required = true) - public final double getSensitivity() - { - return sensitivity; - } - - public final void setSensitivity(double sensitivity) - { - this.sensitivity = sensitivity; - } - - @XmlAttribute(name = "false_positive_error_rate", required = true) - public final double getFalsePositiveErrorRate() - { - return falsePositiveErrorRate; - } - - public final void setFalsePositiveErrorRate(double falsePositiveErrorRate) - { - this.falsePositiveErrorRate = falsePositiveErrorRate; - } -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/dto/ProteinSummaryHeader.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/dto/ProteinSummaryHeader.java deleted file mode 100644 index 216543fd617c6cbdf65bca3400c8b000f21683f6..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/dto/ProteinSummaryHeader.java +++ /dev/null @@ -1,267 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.etlserver.proteomics.dto; - -import javax.xml.bind.annotation.XmlAttribute; -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlType; - -import ch.systemsx.cisd.openbis.etlserver.proteomics.Constants; - -/** - * @author Franz-Josef Elmer - */ -@XmlType -public class ProteinSummaryHeader -{ - private String referenceDatabase; - - private String winReferenceDatabase; - - private String residueSubstitutions; - - private String organism; - - private String sourceFiles; - - private String sourceFilesAlternative; - - private String winSourceFiles; - - private String sourceFileType; - - private double minimumPeptideProbability; - - private double minimumPeptideWeight; - - private double numberOfPredictedCorrectProteins; - - private int numberOfInput1Spectra; - - private int numberOfInput2Spectra; - - private int numberOfInput3Spectra; - - private double minimumInitialPeptideProbability; - - private double totalEstimatedNumberOfCorrectPeptideAssignments; - - private String sampleEnzyme; - - private ProgramDetails programDetails; - - @XmlAttribute(name = "reference_database", required = true) - public final String getReferenceDatabase() - { - return referenceDatabase; - } - - public final void setReferenceDatabase(String referenceDatabase) - { - this.referenceDatabase = referenceDatabase; - } - - @XmlAttribute(name = "win-cyg_reference_database") - public final String getWinReferenceDatabase() - { - return winReferenceDatabase; - } - - public final void setWinReferenceDatabase(String winReferenceDatabase) - { - this.winReferenceDatabase = winReferenceDatabase; - } - - @XmlAttribute(name = "residue_substitution_list") - public final String getResidueSubstitutions() - { - return residueSubstitutions; - } - - public final void setResidueSubstitutions(String residueSubstitutions) - { - this.residueSubstitutions = residueSubstitutions; - } - - @XmlAttribute(name = "organism") - public final String getOrganism() - { - return organism; - } - - public final void setOrganism(String organism) - { - this.organism = organism; - } - - @XmlAttribute(name = "source_files", required = true) - public final String getSourceFiles() - { - return sourceFiles; - } - - public final void setSourceFiles(String sourceFiles) - { - this.sourceFiles = sourceFiles; - } - - @XmlAttribute(name = "win-cyg_source_files") - public final String getWinSourceFiles() - { - return winSourceFiles; - } - - public final void setWinSourceFiles(String winSourceFiles) - { - this.winSourceFiles = winSourceFiles; - } - - @XmlAttribute(name = "source_files_alt", required = true) - public final String getSourceFilesAlternative() - { - return sourceFilesAlternative; - } - - public final void setSourceFilesAlternative(String sourceFilesAlternative) - { - this.sourceFilesAlternative = sourceFilesAlternative; - } - - @XmlAttribute(name = "source_file_xtn") - public final String getSourceFileType() - { - return sourceFileType; - } - - public final void setSourceFileType(String sourceFileType) - { - this.sourceFileType = sourceFileType; - } - - @XmlAttribute(name = "min_peptide_probability", required = true) - public final double getMinimumPeptideProbability() - { - return minimumPeptideProbability; - } - - public final void setMinimumPeptideProbability(double minimumPeptideProbability) - { - this.minimumPeptideProbability = minimumPeptideProbability; - } - - @XmlAttribute(name = "min_peptide_weight", required = true) - public final double getMinimumPeptideWeight() - { - return minimumPeptideWeight; - } - - public final void setMinimumPeptideWeight(double minimumPeptideWeight) - { - this.minimumPeptideWeight = minimumPeptideWeight; - } - - @XmlAttribute(name = "num_predicted_correct_prots", required = true) - public final double getNumberOfPredictedCorrectProteins() - { - return numberOfPredictedCorrectProteins; - } - - public final void setNumberOfPredictedCorrectProteins(double numberOfPredictedCorrectProteins) - { - this.numberOfPredictedCorrectProteins = numberOfPredictedCorrectProteins; - } - - @XmlAttribute(name = "num_input_1_spectra", required = true) - public final int getNumberOfInput1Spectra() - { - return numberOfInput1Spectra; - } - - public final void setNumberOfInput1Spectra(int numberOfInput1Spectra) - { - this.numberOfInput1Spectra = numberOfInput1Spectra; - } - - @XmlAttribute(name = "num_input_2_spectra", required = true) - public final int getNumberOfInput2Spectra() - { - return numberOfInput2Spectra; - } - - public final void setNumberOfInput2Spectra(int numberOfInput2Spectra) - { - this.numberOfInput2Spectra = numberOfInput2Spectra; - } - - @XmlAttribute(name = "num_input_3_spectra", required = true) - public final int getNumberOfInput3Spectra() - { - return numberOfInput3Spectra; - } - - public final void setNumberOfInput3Spectra(int numberOfInput3Spectra) - { - this.numberOfInput3Spectra = numberOfInput3Spectra; - } - - @XmlAttribute(name = "initial_min_peptide_prob", required = true) - public final double getMinimumInitialPeptideProbability() - { - return minimumInitialPeptideProbability; - } - - public final void setMinimumInitialPeptideProbability(double minimumInitialPeptideProbability) - { - this.minimumInitialPeptideProbability = minimumInitialPeptideProbability; - } - - @XmlAttribute(name = "total_no_spectrum_ids") - public final double getTotalEstimatedNumberOfCorrectPeptideAssignments() - { - return totalEstimatedNumberOfCorrectPeptideAssignments; - } - - public final void setTotalEstimatedNumberOfCorrectPeptideAssignments( - double totalEstimatedNumberOfCorrectPeptideAssignments) - { - this.totalEstimatedNumberOfCorrectPeptideAssignments = - totalEstimatedNumberOfCorrectPeptideAssignments; - } - - @XmlAttribute(name = "sample_enzyme", required = true) - public final String getSampleEnzyme() - { - return sampleEnzyme; - } - - public final void setSampleEnzyme(String sampleEnzyme) - { - this.sampleEnzyme = sampleEnzyme; - } - - @XmlElement(name = "program_details", namespace = Constants.NAMESPACE) - public final ProgramDetails getProgramDetails() - { - return programDetails; - } - - public final void setProgramDetails(ProgramDetails programDetails) - { - this.programDetails = programDetails; - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/dto/Sample.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/dto/Sample.java deleted file mode 100644 index debe7356ee5ea7d12ee8a588c84aa9286da89403..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/dto/Sample.java +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.etlserver.proteomics.dto; - -import net.lemnik.eodsql.ResultColumn; - -/** - * @author Franz-Josef Elmer - */ -public class Sample extends AbstractDTOWithIDAndPermID -{ - @ResultColumn("expe_id") - private Long experimentID; - - public final Long getExperimentID() - { - return experimentID; - } - - public final void setExperimentID(Long experimentID) - { - this.experimentID = experimentID; - } -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/dto/Sequence.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/dto/Sequence.java deleted file mode 100644 index 0be82ad08a693bfa4ab2e7c757e6a926fab59cba..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/dto/Sequence.java +++ /dev/null @@ -1,124 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.etlserver.proteomics.dto; - -import net.lemnik.eodsql.ResultColumn; - -/** - * @author Franz-Josef Elmer - */ -public class Sequence extends AbstractDTOWithID -{ - @ResultColumn("database_id") - private long databaseID; - - @ResultColumn("protein_reference_id") - private long proteinReferenceID; - - @ResultColumn("amino_acid_sequence") - private String sequence; - - private String checksum; - - // Used by eodsql - @SuppressWarnings("unused") - private Sequence() - { - } - - public Sequence(String sequence) - { - setSequence(sequence); - calculateChecksum(); - } - - public final long getDatabaseID() - { - return databaseID; - } - - public final void setDatabaseID(long databaseID) - { - this.databaseID = databaseID; - } - - public final long getProteinReferenceID() - { - return proteinReferenceID; - } - - public final void setProteinReferenceID(long proteinDescriptionID) - { - this.proteinReferenceID = proteinDescriptionID; - } - - public final String getSequence() - { - return sequence; - } - - public final void setSequence(String sequence) - { - this.sequence = sequence; - } - - public void calculateChecksum() - { - if (sequence != null) - { - setChecksum(Integer.toHexString(sequence.hashCode())); - } - } - - public final String getChecksum() - { - return checksum; - } - - public final void setChecksum(String checksum) - { - this.checksum = checksum; - } - - @Override - public boolean equals(Object obj) - { - if (obj == this) - { - return true; - } - if (obj instanceof Sequence == false) - { - return false; - } - return ((Sequence) obj).toString().equals(toString()); - } - - @Override - public int hashCode() - { - return toString().hashCode(); - } - - @Override - public String toString() - { - return getDatabaseID() + "-" + getProteinReferenceID() + ":" + sequence - + "[" + checksum + "]"; - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/protXML_v3.xsd b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/protXML_v3.xsd deleted file mode 100644 index 06037477473d95eefdafa001f1f8c52779713e63..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/protXML_v3.xsd +++ /dev/null @@ -1,816 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- edited with XMLSPY v2004 rel. 4 U (http://www.xmlspy.com) by Wei Yan (Institute for Systems Biology) --> -<!--W3C Schema generated by XMLSPY v2004 rel. 4 U (http://www.xmlspy.com)--> -<xs:schema targetNamespace="http://regis-web.systemsbiology.net/protXML" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://regis-web.systemsbiology.net/protXML" xmlns:protx="http://regis-web.systemsbiology.net/protXML" elementFormDefault="qualified"> - <xs:element name="ASAPRatio_pvalue"> - <xs:annotation> - <xs:documentation>Results of ASAPRatio pvalue analysis (adjusting ASAPRatio ratios for offset of dataset, and determining whether ratios are significantly different from chance values originating from 1:1 proteins)</xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:attribute name="adj_ratio_mean" type="xs:double" use="required"> - <xs:annotation> - <xs:documentation>Ratio adjusted for dataset mean value</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="adj_ratio_standard_dev" type="xs:double" use="required"> - <xs:annotation> - <xs:documentation>Error adjusted for dataset mean value</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="heavy2light_adj_ratio_mean" type="xs:double"> - <xs:annotation> - <xs:documentation>Heavy2light ratio adjusted for dataset mean value</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="heavy2light_adj_ratio_standard_dev" type="xs:double"> - <xs:annotation> - <xs:documentation>Heavy2light error adjusted for dataset mean value</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="pvalue" type="xs:double"> - <xs:annotation> - <xs:documentation>pvalue (probability of ratio due by chance to 1:1 protein)</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="decimal_pvalue" type="xs:double"> - <xs:annotation> - <xs:documentation>decimal representation of pvalue</xs:documentation> - </xs:annotation> - </xs:attribute> - </xs:complexType> - </xs:element> - <xs:element name="ASAPRatio"> - <xs:annotation> - <xs:documentation>Results of ASAPRatio quantitation of protein</xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:sequence> - <xs:element name="ASAP_Seq" minOccurs="0" maxOccurs="unbounded"> - <xs:complexType> - <xs:sequence> - <xs:element name="ASAP_Peak" maxOccurs="unbounded"> - <xs:complexType> - <xs:sequence> - <xs:element name="ASAP_Dta" maxOccurs="unbounded"> - <xs:complexType> - <xs:attribute name="peptide_index" type="xs:string" use="required"/> - <xs:attribute name="include" type="xs:string" use="required"/> - </xs:complexType> - </xs:element> - </xs:sequence> - <xs:attribute name="status" type="xs:string" use="required"/> - <xs:attribute name="include" type="xs:string" use="required"/> - <xs:attribute name="datanum" type="xs:nonNegativeInteger" use="required"/> - <xs:attribute name="ratio_mean" type="xs:double" use="required"/> - <xs:attribute name="ratio_standard_dev" type="xs:double" use="required"/> - <xs:attribute name="weight" type="xs:double" use="required"/> - <xs:attribute name="peptide_binary_ind" type="xs:string" use="required"/> - </xs:complexType> - </xs:element> - </xs:sequence> - <xs:attribute name="status" type="xs:string" use="required"/> - <xs:attribute name="include" type="xs:string" use="required"/> - <xs:attribute name="datanum" type="xs:nonNegativeInteger" use="required"/> - <xs:attribute name="ratio_mean" type="xs:double" use="required"/> - <xs:attribute name="ratio_standard_dev" type="xs:double" use="required"/> - <xs:attribute name="weight" type="xs:double" use="required"/> - <xs:attribute name="light_sequence" type="xs:string" use="required"/> - </xs:complexType> - </xs:element> - </xs:sequence> - <xs:attribute name="ratio_mean" type="xs:double" use="required"/> - <xs:attribute name="ratio_standard_dev" type="xs:double" use="required"/> - <xs:attribute name="ratio_number_peptides" type="xs:nonNegativeInteger" use="required"/> - <xs:attribute name="heavy2light_ratio_mean" type="xs:double"/> - <xs:attribute name="heavy2light_ratio_standard_dev" type="xs:double"/> - <xs:attribute name="description" type="xs:string"/> - <xs:attribute name="status" type="xs:string"/> - <xs:attribute name="peptide_inds" type="xs:string"/> - </xs:complexType> - </xs:element> - <xs:element name="protein_summary"> - <xs:complexType> - <xs:sequence> - <xs:element name="protein_summary_header"> - <xs:complexType> - <xs:sequence> - <xs:element name="program_details"> - <xs:complexType> - <xs:sequence> - <xs:any namespace="##any" processContents="lax" minOccurs="0"> - <xs:annotation> - <xs:documentation>Wildcard for summary info customized for a particular analysis used to infer protein identifications</xs:documentation> - </xs:annotation> - </xs:any> - </xs:sequence> - <xs:attribute name="analysis" type="xs:string" use="required"> - <xs:annotation> - <xs:documentation>Name of analysis used for protein identifications</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="time" type="xs:dateTime" use="required"> - <xs:annotation> - <xs:documentation>Time of analysis</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="version" type="xs:string"/> - </xs:complexType> - </xs:element> - </xs:sequence> - <xs:attribute name="reference_database" type="xs:string" use="required"> - <xs:annotation> - <xs:documentation>full path database name</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="win-cyg_reference_database" type="xs:string"> - <xs:annotation> - <xs:documentation>windows full path database</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="residue_substitution_list" type="xs:string"> - <xs:annotation> - <xs:documentation>residues considered equivalent when comparing peptides</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="organism" type="xs:string"> - <xs:annotation> - <xs:documentation>sample organism (used for annotation purposes)</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="source_files" type="xs:string" use="required"> - <xs:annotation> - <xs:documentation>input pepXML files</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="source_files_alt" type="xs:string" use="required"/> - <xs:attribute name="win-cyg_source_files" type="xs:string"> - <xs:annotation> - <xs:documentation>windows pepXML file names</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="source_file_xtn" type="xs:string"> - <xs:annotation> - <xs:documentation>file type (if not pepXML)</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="min_peptide_probability" type="xs:double" use="required"> - <xs:annotation> - <xs:documentation>minimum adjusted peptide probability contributing to protein probability</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="min_peptide_weight" type="xs:double" use="required"> - <xs:annotation> - <xs:documentation>minimum peptide weight contributing to protein probability</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="num_predicted_correct_prots" type="xs:double" use="required"> - <xs:annotation> - <xs:documentation>total number of predicted correct protein ids (sum of probabilities)</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="num_input_1_spectra" type="xs:integer" use="required"> - <xs:annotation> - <xs:documentation>number of spectra from 1+ precursor ions</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="num_input_2_spectra" type="xs:integer" use="required"> - <xs:annotation> - <xs:documentation>number of spectra from 2+ precursor ions</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="num_input_3_spectra" type="xs:integer" use="required"> - <xs:annotation> - <xs:documentation>number of spectra from 3+ precursor ions</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="initial_min_peptide_prob" type="xs:double" use="required"> - <xs:annotation> - <xs:documentation>minimum initial peptide probability to contribute to analysis</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="total_no_spectrum_ids" type="xs:double"> - <xs:annotation> - <xs:documentation>total estimated number of correct peptide assignments in dataset</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="sample_enzyme" type="xs:string" use="required"> - <xs:annotation> - <xs:documentation>enzyme applied to sample prior to MS/MS</xs:documentation> - </xs:annotation> - </xs:attribute> - </xs:complexType> - </xs:element> - <xs:element name="analysis_summary" minOccurs="0" maxOccurs="unbounded"> - <xs:complexType> - <xs:sequence> - <xs:any namespace="##any" processContents="lax" minOccurs="0"> - <xs:annotation> - <xs:documentation>time of analysis</xs:documentation> - </xs:annotation> - </xs:any> - </xs:sequence> - <xs:attribute name="analysis" type="xs:string" use="required"> - <xs:annotation> - <xs:documentation>name of protein-level analysis</xs:documentation> - </xs:annotation> - </xs:attribute> - - <xs:attribute name="time" type="xs:dateTime" use="required"> - <xs:annotation> - <xs:documentation>time of analysis</xs:documentation> - </xs:annotation> - </xs:attribute> - - <xs:attribute name="id" type="xs:nonNegativeInteger" use="required"> - <xs:annotation> - <xs:documentation>unique id corresponding with analysis_result elements</xs:documentation> - </xs:annotation> - </xs:attribute> - - - </xs:complexType> - </xs:element> - <xs:element name="dataset_derivation"> - <xs:annotation> - <xs:documentation>Source and filtering criteria used to generate dataset</xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:sequence minOccurs="0" maxOccurs="unbounded"> - <xs:element name="data_filter"> - <xs:complexType> - <xs:attribute name="number" type="xs:string" use="required"> - <xs:annotation> - <xs:documentation>generation number (0 is root)</xs:documentation> - </xs:annotation> - </xs:attribute> - - <xs:attribute name="parent_file" type="xs:string" use="required"> - <xs:annotation> - <xs:documentation>File from which derived</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="windows_parent" type="xs:string"/> - <xs:attribute name="description" type="xs:string" use="required"> - <xs:annotation> - <xs:documentation>filtering criteria applied to data</xs:documentation> - </xs:annotation> - </xs:attribute> - </xs:complexType> - </xs:element> - </xs:sequence> - <xs:attribute name="generation_no" type="xs:string" use="required"> - <xs:annotation> - <xs:documentation>number preceding filter generations</xs:documentation> - </xs:annotation> - </xs:attribute> - </xs:complexType> - </xs:element> - <xs:element name="protein_group" maxOccurs="unbounded"> - <xs:complexType> - <xs:sequence> - <xs:element name="protein" maxOccurs="unbounded"> - <xs:complexType> - <xs:sequence> - <xs:element name="parameter" minOccurs="0" maxOccurs="unbounded"> - <xs:complexType> - <xs:simpleContent> - <xs:extension base="xs:anySimpleType"> - <xs:attribute name="name" type="xs:string" use="required"/> - <xs:attribute name="value" type="xs:anySimpleType" use="required"/> - <xs:attribute name="type" type="xs:anySimpleType"/> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - </xs:element> - <xs:element name="analysis_result" minOccurs="0" maxOccurs="unbounded"> - <xs:complexType> - <xs:sequence> - <xs:any namespace="##any" processContents="lax"> - <xs:annotation> - <xs:documentation>wildcard to be substituted with element storing analysis-specific result info</xs:documentation> - </xs:annotation> - </xs:any> - - </xs:sequence> - <xs:attribute name="analysis" type="xs:string" use="required"> - <xs:annotation> - <xs:documentation>name of protein level analysis</xs:documentation> - </xs:annotation> - </xs:attribute> - - <xs:attribute name="id" type="xs:nonNegativeInteger" default="1"> - <xs:annotation> - <xs:documentation>unique identifier to analysis_summary element</xs:documentation> - </xs:annotation> - </xs:attribute> - - </xs:complexType> - </xs:element> - <xs:element name="annotation" minOccurs="0"> - <xs:complexType> - <xs:attribute name="protein_description" type="xs:string" use="required"/> - <xs:attribute name="ipi_name" type="xs:string"/> - <xs:attribute name="refseq_name" type="xs:string"/> - <xs:attribute name="swissprot_name" type="xs:string"/> - <xs:attribute name="ensembl_name" type="xs:string"/> - <xs:attribute name="trembl_name" type="xs:string"/> - <xs:attribute name="locus_link_name" type="xs:string"/> - <xs:attribute name="flybase" type="xs:string"/> - </xs:complexType> - </xs:element> - <xs:element name="indistinguishable_protein" minOccurs="0" maxOccurs="unbounded"> - <xs:annotation> - <xs:documentation>other protein sharing corresponding peptides</xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:sequence> - <xs:element name="annotation" minOccurs="0"> - <xs:annotation> - <xs:documentation>protein description</xs:documentation> - </xs:annotation> - - <xs:complexType> - <xs:attribute name="protein_description" type="xs:string" use="required"> - <xs:annotation> - <xs:documentation>description</xs:documentation> - </xs:annotation> - </xs:attribute> - - <xs:attribute name="ipi_name" type="xs:string"/> - <xs:attribute name="refseq_name" type="xs:string"/> - <xs:attribute name="swissprot_name" type="xs:string"/> - <xs:attribute name="ensembl_name" type="xs:string"/> - <xs:attribute name="trembl_name" type="xs:string"/> - <xs:attribute name="locus_link_name" type="xs:string"/> - <xs:attribute name="flybase" type="xs:string"/> - </xs:complexType> - </xs:element> - </xs:sequence> - <xs:attribute name="protein_name" type="xs:string" use="required"/> - </xs:complexType> - </xs:element> - <xs:element name="peptide" maxOccurs="unbounded"> - <xs:complexType> - <xs:sequence> - <xs:element name="parameter" minOccurs="0" maxOccurs="unbounded"> - <xs:complexType> - <xs:simpleContent> - <xs:extension base="xs:anySimpleType"> - <xs:attribute name="name" type="xs:string" use="required"/> - <xs:attribute name="value" type="xs:anySimpleType" use="required"/> - <xs:attribute name="type" type="xs:anySimpleType"/> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - </xs:element> - <xs:element name="modification_info" minOccurs="0" maxOccurs="unbounded"> - <xs:complexType> - <xs:sequence> - <xs:element name="mod_aminoacid_mass" minOccurs="0" maxOccurs="unbounded"> - <xs:complexType> - <xs:attribute name="position" type="xs:string" use="required"/> - <xs:attribute name="mass" type="xs:string" use="required"/> - </xs:complexType> - </xs:element> - </xs:sequence> - <xs:attribute name="mod_nterm_mass" type="xs:string"/> - <xs:attribute name="mod_cterm_mass" type="xs:string"/> - <xs:attribute name="modified_peptide" type="xs:string"/> - </xs:complexType> - </xs:element> - <xs:element name="peptide_parent_protein" minOccurs="0" maxOccurs="unbounded"> - <xs:complexType> - <xs:attribute name="protein_name" type="xs:string" use="required"/> - </xs:complexType> - </xs:element> - <xs:element name="indistinguishable_peptide" minOccurs="0" maxOccurs="unbounded"> - <xs:complexType> - <xs:sequence> - <xs:element name="modification_info" minOccurs="0" maxOccurs="unbounded"> - <xs:complexType> - <xs:sequence> - <xs:element name="mod_aminoacid_mass" minOccurs="0" maxOccurs="unbounded"> - <xs:complexType> - <xs:attribute name="position" type="xs:string" use="required"/> - <xs:attribute name="mass" type="xs:string" use="required"/> - </xs:complexType> - </xs:element> - </xs:sequence> - <xs:attribute name="mod_nterm_mass" type="xs:string"/> - <xs:attribute name="mod_cterm_mass" type="xs:string"/> - <xs:attribute name="modified_peptide" type="xs:string"/> - </xs:complexType> - </xs:element> - </xs:sequence> - <xs:attribute name="peptide_sequence" type="xs:string" use="required"/> - </xs:complexType> - </xs:element> - </xs:sequence> - <xs:attribute name="peptide_sequence" type="xs:string" use="required"> - <xs:annotation> - <xs:documentation>unmodified aa sequence</xs:documentation> - </xs:annotation> - </xs:attribute> - - <xs:attribute name="charge" type="xs:positiveInteger" use="required"> - <xs:annotation> - <xs:documentation>precursor ion charge</xs:documentation> - </xs:annotation> - </xs:attribute> - - <xs:attribute name="initial_probability" type="xs:double" use="required"> - <xs:annotation> - <xs:documentation>prior to nsp adjustment</xs:documentation> - </xs:annotation> - </xs:attribute> - - <xs:attribute name="nsp_adjusted_probability" type="xs:double" use="optional"> - <xs:annotation> - <xs:documentation>after nsp adjustment</xs:documentation> - </xs:annotation> - </xs:attribute> - - <xs:attribute name="peptide_group_designator" type="xs:string"> - <xs:annotation> - <xs:documentation>link to spectra with other precursor ion charges assigned to same peptide</xs:documentation> - </xs:annotation> - </xs:attribute> - - <xs:attribute name="weight" type="xs:double" default="1.0"/> - <xs:attribute name="is_nondegenerate_evidence" type="xs:string" use="required"> - <xs:annotation> - <xs:documentation>confidence that peptide corresponds with this protein (rather than others in which it occurs)</xs:documentation> - </xs:annotation> - </xs:attribute> - - <xs:attribute name="n_enzymatic_termini" type="xs:nonNegativeInteger" use="required"> - <xs:annotation> - <xs:documentation>number of termini consistent with proteolytic cleavage</xs:documentation> - </xs:annotation> - </xs:attribute> - - <xs:attribute name="n_sibling_peptides" type="xs:double"> - <xs:annotation> - <xs:documentation>estimated number of sibling peptides (other identified peptides corresponding to same protein)</xs:documentation> - </xs:annotation> - </xs:attribute> - - <xs:attribute name="n_sibling_peptides_bin" type="xs:integer" default="0"> - <xs:annotation> - <xs:documentation>discretized nsp value</xs:documentation> - </xs:annotation> - </xs:attribute> - - <xs:attribute name="n_instances" type="xs:integer" use="required"> - <xs:annotation> - <xs:documentation>number of times peptide assigned to spectrum of precursor ion charge in dataset</xs:documentation> - </xs:annotation> - </xs:attribute> - - <xs:attribute name="calc_neutral_pep_mass" type="xs:double"/> - <xs:attribute name="is_contributing_evidence" type="xs:string" use="required"/> - </xs:complexType> - </xs:element> - </xs:sequence> - <xs:attribute name="protein_name" type="xs:string" use="required"> - <xs:annotation> - <xs:documentation>database protein name</xs:documentation> - </xs:annotation> - </xs:attribute> - - <xs:attribute name="probability" type="xs:double" use="required"> - <xs:annotation> - <xs:documentation>confidence of protein id</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="percent_coverage" type="xs:double"> - <xs:annotation> - <xs:documentation>percent of protein sequence covered by corresponding peptides</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="n_indistinguishable_proteins" type="xs:integer" use="required"> - <xs:annotation> - <xs:documentation>number of proteins with identical corresponding peptides</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="unique_stripped_peptides" type="xs:string"/> - <xs:attribute name="group_sibling_id" type="xs:string" use="required"> - <xs:annotation> - <xs:documentation>protein group id</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="total_number_peptides" type="xs:integer"> - <xs:annotation> - <xs:documentation>total number of corresponding peptides that contributed to protein probability</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="subsuming_protein_entry" type="xs:string"> - <xs:annotation> - <xs:documentation>name of portein containing all corresponding peptides, and more</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="pct_spectrum_ids" type="xs:string"> - <xs:annotation> - <xs:documentation>fraction of correct dataset peptide identifications corresponding to protein</xs:documentation> - </xs:annotation> - </xs:attribute> - </xs:complexType> - <xs:unique name="unique_result_analysis_id"> - <xs:annotation> - <xs:documentation>can only have one analysis/id combination within each protein element</xs:documentation> - </xs:annotation> - - <xs:selector xpath="./protx:analysis_result"/> - <xs:field xpath="@analysis"/> - <xs:field xpath="@id"/> - </xs:unique> - </xs:element> - </xs:sequence> - <xs:attribute name="group_number" type="xs:string" use="required"> - <xs:annotation> - <xs:documentation>index</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="pseudo_name" type="xs:string"/> - <xs:attribute name="probability" type="xs:double" use="required"> - <xs:annotation> - <xs:documentation>group probability (taking contributions from all group member proteins)</xs:documentation> - </xs:annotation> - </xs:attribute> - </xs:complexType> - <xs:unique name="unique_group_sibling_id"> - <xs:annotation> - <xs:documentation>Each group_sibling_id must be unique within a protein group</xs:documentation> - </xs:annotation> - <xs:selector xpath="./protx:protein"/> - <xs:field xpath="@group_sibling_id"/> - </xs:unique> - - </xs:element> - </xs:sequence> - <xs:attribute name="summary_xml" type="xs:string"/> - </xs:complexType> - <xs:key name="summary_analysis_id"> - <xs:selector xpath="./protx:analysis_summary"/> - <xs:field xpath="@analysis"/> - <xs:field xpath="@id"/> - </xs:key> - <xs:keyref name="result_analysis_id" refer="summary_analysis_id"> - <xs:annotation> - <xs:documentation>analysis and id must correspond with those fields in an analysis_summary element</xs:documentation> - </xs:annotation> - <xs:selector xpath="./protx:protein_group/protx:protein/protx:analysis_result"/> - <xs:field xpath="@analysis"/> - <xs:field xpath="@id"/> - </xs:keyref> - <xs:unique name="unique_group_number"> - <xs:annotation> - <xs:documentation>Requires group numbers be unique for entire dataset</xs:documentation> - </xs:annotation> - <xs:selector xpath="./protx:protein_group"/> - <xs:field xpath="@group_number"/> - </xs:unique> - </xs:element> - <xs:element name="proteinprophet_details"> - <xs:annotation> - <xs:documentation>ProteinProphet analysis details</xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:sequence> - <xs:element name="nsp_information"> - <xs:annotation> - <xs:documentation>learned distributions of estimated number of sibling peptides</xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:sequence> - <xs:element name="nsp_distribution" maxOccurs="unbounded"> - <xs:annotation> - <xs:documentation>histogram slice of estimated number of sibling peptides</xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:attribute name="bin_no" type="xs:integer" use="required"> - <xs:annotation> - <xs:documentation>discretized bin number</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="nsp_lower_bound_incl" type="xs:double" use="required"> - <xs:annotation> - <xs:documentation>lower bound nsp value (inclusive)</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="nsp_upper_bound_excl" type="xs:string" use="required"> - <xs:annotation> - <xs:documentation>upper bound nsp value (exclusive)</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="pos_freq" type="xs:double" use="required"> - <xs:annotation> - <xs:documentation>fraction of correct peptides in bin</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="neg_freq" type="xs:double" use="required"> - <xs:annotation> - <xs:documentation>fraction of incorrect peptides in bin</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="pos_to_neg_ratio" type="xs:double" use="required"> - <xs:annotation> - <xs:documentation>fraction of correct / fraction of incorrect</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="alt_pos_to_neg_ratio" type="xs:double"> - <xs:annotation> - <xs:documentation>pos_to_neg_ratio of preceding bin (if greater than that of current bin)</xs:documentation> - </xs:annotation> - </xs:attribute> - </xs:complexType> - </xs:element> - </xs:sequence> - <xs:attribute name="neighboring_bin_smoothing" type="xs:string" use="required"/> - </xs:complexType> - </xs:element> - <xs:element name="protein_summary_data_filter" maxOccurs="unbounded"> - <xs:annotation> - <xs:documentation>predicted error/sensitivity for filtering at minimum probability</xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:attribute name="min_probability" type="xs:double" use="required"> - <xs:annotation> - <xs:documentation>filter setting</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="sensitivity" type="xs:double" use="required"> - <xs:annotation> - <xs:documentation>predicted sensitivity (fraction of correct results passing filter)</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="false_positive_error_rate" type="xs:double" use="required"> - <xs:annotation> - <xs:documentation>predicted error rate (fraction of results passing filter than are incorrect)</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="predicted_num_correct" type="xs:double"> - <xs:annotation> - <xs:documentation>predicted number of correct results passing filter</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="predicted_num_incorrect" type="xs:double"> - <xs:annotation> - <xs:documentation>predicted number of incorrect results passing filter</xs:documentation> - </xs:annotation> - </xs:attribute> - </xs:complexType> - </xs:element> - </xs:sequence> - <xs:attribute name="occam_flag" type="xs:string" use="required"> - <xs:annotation> - <xs:documentation>whether or not occams razor was used to apportion peptides corresponding to multiple proteins</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="groups_flag" type="xs:string" use="required"> - <xs:annotation> - <xs:documentation>whether or not related proteins are organized together in common protein groups</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="degen_flag" type="xs:string" use="required"> - <xs:annotation> - <xs:documentation>whether or not all proteins corresponding to each identified peptide were used in analysis</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="nsp_flag" type="xs:string" use="required"> - <xs:annotation> - <xs:documentation>whether or not peptide probabilities were adjusted for estimated number of sibling peptides</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="initial_peptide_wt_iters" type="xs:string" use="required"> - <xs:annotation> - <xs:documentation>proteinprophet number of initial iterations to compute peptide weights</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="nsp_distribution_iters" type="xs:string" use="required"> - <xs:annotation> - <xs:documentation>proteinprophet number of interations used to compute nsp distributions</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="final_peptide_wt_iters" type="xs:string" use="required"> - <xs:annotation> - <xs:documentation>proteinprophet number of final interations used to compute final peptide weights</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="run_options" type="xs:string"> - <xs:annotation> - <xs:documentation>special run options</xs:documentation> - </xs:annotation> - </xs:attribute> - </xs:complexType> - </xs:element> - <xs:element name="XPress_analysis_summary"> - <xs:complexType> - <xs:attribute name="min_peptide_probability" type="xs:double" use="required"/> - <xs:attribute name="min_peptide_weight" type="xs:double" use="required"/> - <xs:attribute name="min_protein_probability" type="xs:double" use="required"/> - <xs:attribute name="reference_isotope" type="xs:string"/> - </xs:complexType> - </xs:element> - <xs:element name="ASAP_prot_analysis_summary"> - <xs:complexType> - <xs:attribute name="version" type="xs:string"/> - <xs:attribute name="binary_ref_files" type="xs:string"/> - <xs:attribute name="min_peptide_probability" type="xs:double" use="required"/> - <xs:attribute name="min_peptide_weight" type="xs:double" use="required"/> - <xs:attribute name="min_protein_probability" type="xs:double" use="required"/> - <xs:attribute name="reference_isotope" type="xs:string"/> - </xs:complexType> - </xs:element> - <xs:element name="ASAP_pvalue_analysis_summary"> - <xs:complexType> - <xs:attribute name="asapratio_id" type="xs:nonNegativeInteger" default="1"/> - <xs:attribute name="background_ratio_mean" type="xs:double" use="required"/> - <xs:attribute name="background_ratio_stdev" type="xs:double" use="required"/> - <xs:attribute name="background_fitting_error" type="xs:double" use="required"/> - <xs:attribute name="analysis_distribution_file" type="xs:string" use="required"/> - <xs:attribute name="full_analysis_distr_file" type="xs:string"/> - <xs:attribute name="asap_prot_id" type="xs:nonNegativeInteger" default="1"/> - </xs:complexType> - </xs:element> - - - <xs:simpleType name="positiveInt"> - <xs:restriction base="xs:unsignedInt"> - <xs:minInclusive value="1"/> - </xs:restriction> - </xs:simpleType> - <xs:element name="libra_result"> - <xs:complexType> - <xs:sequence> - <xs:element name="intensity" maxOccurs="unbounded"> - <xs:complexType> - <xs:attribute name="mz" type="xs:float" use="required"/> - <xs:attribute name="ratio" type="xs:float" use="required"/> - <xs:attribute name="error" type="xs:float" use="required"/> - </xs:complexType> - </xs:element> - </xs:sequence> - <xs:attribute name="number" type="xs:nonNegativeInteger" use="required"/> - </xs:complexType> - <xs:unique name="libra_result_channel_index"> - <xs:selector xpath="."/> - <xs:field xpath="@channel"/> - </xs:unique> - - - </xs:element> - <xs:element name="libra_summary"> - <xs:complexType> - <xs:sequence> - <xs:element name="fragment_masses" maxOccurs="unbounded"> - <xs:complexType> - <xs:attribute name="channel" type="positiveInt" use="required"/> - <xs:attribute name="mz" type="xs:float" use="required"/> - </xs:complexType> - </xs:element> - <xs:element name="isotopic_contributions" minOccurs="0"> - <xs:complexType> - <xs:sequence> - <xs:element name="contributing_channel" maxOccurs="unbounded"> - <xs:complexType> - <xs:sequence> - <xs:element name="affected_channel" maxOccurs="unbounded"> - <xs:complexType> - <xs:attribute name="channel" type="positiveInt" use="required"/> - <xs:attribute name="correction" type="xs:float" use="required"/> - </xs:complexType> - </xs:element> - </xs:sequence> - <xs:attribute name="channel" type="positiveInt" use="required"/> - </xs:complexType> - </xs:element> - </xs:sequence> - </xs:complexType> - </xs:element> - </xs:sequence> - <xs:attribute name="mass_tolerance" type="xs:float" use="required"/> - <xs:attribute name="centroiding_preference" type="xs:int" use="required"/> - <xs:attribute name="normalization" type="xs:int" use="required"/> - <xs:attribute name="output_type" type="xs:int" use="required"/> - <xs:attribute name="channel_code" type="xs:string"/> - <xs:attribute name="min_pep_prob" type="xs:float" use="required"/> - <xs:attribute name="min_pep_wt" type="xs:float" use="required"/> - <xs:attribute name="min_prot_prob" type="xs:float" use="required"/> - </xs:complexType> - - <xs:key name="libra_channel_index"> - <xs:selector xpath="./protx:fragment_masses"/> - <xs:field xpath="@channel"/> - </xs:key> - <xs:keyref name="libra_contr_channel_index_ref" refer="libra_channel_index"> - <xs:selector xpath="./protx:isotopic_contributions/protx:contributing_channel"/> - <xs:field xpath="@channel"/> - </xs:keyref> - <xs:keyref name="libra_aff_channel_index_ref" refer="libra_channel_index"> - <xs:selector xpath="./protx:isotopic_contributions/protx:contributing_channel/protx:affected_channel"/> - <xs:field xpath="@channel"/> - </xs:keyref> - - </xs:element> -</xs:schema> \ No newline at end of file diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/protXML_v4.xsd b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/protXML_v4.xsd deleted file mode 100644 index 26809f124c270cd961ca49ad2ee42c191614668d..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/protXML_v4.xsd +++ /dev/null @@ -1,820 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- edited with XMLSPY v2004 rel. 4 U (http://www.xmlspy.com) by Wei Yan (Institute for Systems Biology) --> -<!--W3C Schema generated by XMLSPY v2004 rel. 4 U (http://www.xmlspy.com)--> -<xs:schema targetNamespace="http://regis-web.systemsbiology.net/protXML" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://regis-web.systemsbiology.net/protXML" xmlns:protx="http://regis-web.systemsbiology.net/protXML" elementFormDefault="qualified"> - <xs:element name="ASAPRatio_pvalue"> - <xs:annotation> - <xs:documentation>Results of ASAPRatio pvalue analysis (adjusting ASAPRatio ratios for offset of dataset, and determining whether ratios are significantly different from chance values originating from 1:1 proteins)</xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:attribute name="adj_ratio_mean" type="xs:double" use="required"> - <xs:annotation> - <xs:documentation>Ratio adjusted for dataset mean value</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="adj_ratio_standard_dev" type="xs:double" use="required"> - <xs:annotation> - <xs:documentation>Error adjusted for dataset mean value</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="heavy2light_adj_ratio_mean" type="xs:double"> - <xs:annotation> - <xs:documentation>Heavy2light ratio adjusted for dataset mean value</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="heavy2light_adj_ratio_standard_dev" type="xs:double"> - <xs:annotation> - <xs:documentation>Heavy2light error adjusted for dataset mean value</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="pvalue" type="xs:double"> - <xs:annotation> - <xs:documentation>pvalue (probability of ratio due by chance to 1:1 protein)</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="decimal_pvalue" type="xs:double"> - <xs:annotation> - <xs:documentation>decimal representation of pvalue</xs:documentation> - </xs:annotation> - </xs:attribute> - </xs:complexType> - </xs:element> - <xs:element name="ASAPRatio"> - <xs:annotation> - <xs:documentation>Results of ASAPRatio quantitation of protein</xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:sequence> - <xs:element name="ASAP_Seq" minOccurs="0" maxOccurs="unbounded"> - <xs:complexType> - <xs:sequence> - <xs:element name="ASAP_Peak" maxOccurs="unbounded"> - <xs:complexType> - <xs:sequence> - <xs:element name="ASAP_Dta" maxOccurs="unbounded"> - <xs:complexType> - <xs:attribute name="peptide_index" type="xs:string" use="required"/> - <xs:attribute name="include" type="xs:string" use="required"/> - </xs:complexType> - </xs:element> - </xs:sequence> - <xs:attribute name="status" type="xs:string" use="required"/> - <xs:attribute name="include" type="xs:string" use="required"/> - <xs:attribute name="datanum" type="xs:nonNegativeInteger" use="required"/> - <xs:attribute name="ratio_mean" type="xs:double" use="required"/> - <xs:attribute name="ratio_standard_dev" type="xs:double" use="required"/> - <xs:attribute name="heavy2light_ratio_mean" type="xs:double" use="required"/> - <xs:attribute name="heavy2light_ratio_standard_dev" type="xs:double" use="required"/> - <xs:attribute name="weight" type="xs:double" use="required"/> - <xs:attribute name="peptide_binary_ind" type="xs:string" use="required"/> - </xs:complexType> - </xs:element> - </xs:sequence> - <xs:attribute name="status" type="xs:string" use="required"/> - <xs:attribute name="include" type="xs:string" use="required"/> - <xs:attribute name="datanum" type="xs:nonNegativeInteger" use="required"/> - <xs:attribute name="ratio_mean" type="xs:double" use="required"/> - <xs:attribute name="ratio_standard_dev" type="xs:double" use="required"/> - <xs:attribute name="heavy2light_ratio_mean" type="xs:double" use="required"/> - <xs:attribute name="heavy2light_ratio_standard_dev" type="xs:double" use="required"/> - <xs:attribute name="weight" type="xs:double" use="required"/> - <xs:attribute name="light_sequence" type="xs:string" use="required"/> - </xs:complexType> - </xs:element> - </xs:sequence> - <xs:attribute name="ratio_mean" type="xs:double" use="required"/> - <xs:attribute name="ratio_standard_dev" type="xs:double" use="required"/> - <xs:attribute name="ratio_number_peptides" type="xs:nonNegativeInteger" use="required"/> - <xs:attribute name="heavy2light_ratio_mean" type="xs:double"/> - <xs:attribute name="heavy2light_ratio_standard_dev" type="xs:double"/> - <xs:attribute name="description" type="xs:string"/> - <xs:attribute name="status" type="xs:string"/> - <xs:attribute name="peptide_inds" type="xs:string"/> - </xs:complexType> - </xs:element> - <xs:element name="protein_summary"> - <xs:complexType> - <xs:sequence> - <xs:element name="protein_summary_header"> - <xs:complexType> - <xs:sequence> - <xs:element name="program_details"> - <xs:complexType> - <xs:sequence> - <xs:any namespace="##any" processContents="lax" minOccurs="0"> - <xs:annotation> - <xs:documentation>Wildcard for summary info customized for a particular analysis used to infer protein identifications</xs:documentation> - </xs:annotation> - </xs:any> - </xs:sequence> - <xs:attribute name="analysis" type="xs:string" use="required"> - <xs:annotation> - <xs:documentation>Name of analysis used for protein identifications</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="time" type="xs:dateTime" use="required"> - <xs:annotation> - <xs:documentation>Time of analysis</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="version" type="xs:string"/> - </xs:complexType> - </xs:element> - </xs:sequence> - <xs:attribute name="reference_database" type="xs:string" use="required"> - <xs:annotation> - <xs:documentation>full path database name</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="win-cyg_reference_database" type="xs:string"> - <xs:annotation> - <xs:documentation>windows full path database</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="residue_substitution_list" type="xs:string"> - <xs:annotation> - <xs:documentation>residues considered equivalent when comparing peptides</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="organism" type="xs:string"> - <xs:annotation> - <xs:documentation>sample organism (used for annotation purposes)</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="source_files" type="xs:string" use="required"> - <xs:annotation> - <xs:documentation>input pepXML files</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="source_files_alt" type="xs:string" use="required"/> - <xs:attribute name="win-cyg_source_files" type="xs:string"> - <xs:annotation> - <xs:documentation>windows pepXML file names</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="source_file_xtn" type="xs:string"> - <xs:annotation> - <xs:documentation>file type (if not pepXML)</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="min_peptide_probability" type="xs:double" use="required"> - <xs:annotation> - <xs:documentation>minimum adjusted peptide probability contributing to protein probability</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="min_peptide_weight" type="xs:double" use="required"> - <xs:annotation> - <xs:documentation>minimum peptide weight contributing to protein probability</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="num_predicted_correct_prots" type="xs:double" use="required"> - <xs:annotation> - <xs:documentation>total number of predicted correct protein ids (sum of probabilities)</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="num_input_1_spectra" type="xs:integer" use="required"> - <xs:annotation> - <xs:documentation>number of spectra from 1+ precursor ions</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="num_input_2_spectra" type="xs:integer" use="required"> - <xs:annotation> - <xs:documentation>number of spectra from 2+ precursor ions</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="num_input_3_spectra" type="xs:integer" use="required"> - <xs:annotation> - <xs:documentation>number of spectra from 3+ precursor ions</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="initial_min_peptide_prob" type="xs:double" use="required"> - <xs:annotation> - <xs:documentation>minimum initial peptide probability to contribute to analysis</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="total_no_spectrum_ids" type="xs:double"> - <xs:annotation> - <xs:documentation>total estimated number of correct peptide assignments in dataset</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="sample_enzyme" type="xs:string" use="required"> - <xs:annotation> - <xs:documentation>enzyme applied to sample prior to MS/MS</xs:documentation> - </xs:annotation> - </xs:attribute> - </xs:complexType> - </xs:element> - <xs:element name="analysis_summary" minOccurs="0" maxOccurs="unbounded"> - <xs:complexType> - <xs:sequence> - <xs:any namespace="##any" processContents="lax" minOccurs="0"> - <xs:annotation> - <xs:documentation>time of analysis</xs:documentation> - </xs:annotation> - </xs:any> - </xs:sequence> - <xs:attribute name="analysis" type="xs:string" use="required"> - <xs:annotation> - <xs:documentation>name of protein-level analysis</xs:documentation> - </xs:annotation> - </xs:attribute> - - <xs:attribute name="time" type="xs:dateTime" use="required"> - <xs:annotation> - <xs:documentation>time of analysis</xs:documentation> - </xs:annotation> - </xs:attribute> - - <xs:attribute name="id" type="xs:nonNegativeInteger" use="required"> - <xs:annotation> - <xs:documentation>unique id corresponding with analysis_result elements</xs:documentation> - </xs:annotation> - </xs:attribute> - - - </xs:complexType> - </xs:element> - <xs:element name="dataset_derivation"> - <xs:annotation> - <xs:documentation>Source and filtering criteria used to generate dataset</xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:sequence minOccurs="0" maxOccurs="unbounded"> - <xs:element name="data_filter"> - <xs:complexType> - <xs:attribute name="number" type="xs:string" use="required"> - <xs:annotation> - <xs:documentation>generation number (0 is root)</xs:documentation> - </xs:annotation> - </xs:attribute> - - <xs:attribute name="parent_file" type="xs:string" use="required"> - <xs:annotation> - <xs:documentation>File from which derived</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="windows_parent" type="xs:string"/> - <xs:attribute name="description" type="xs:string" use="required"> - <xs:annotation> - <xs:documentation>filtering criteria applied to data</xs:documentation> - </xs:annotation> - </xs:attribute> - </xs:complexType> - </xs:element> - </xs:sequence> - <xs:attribute name="generation_no" type="xs:string" use="required"> - <xs:annotation> - <xs:documentation>number preceding filter generations</xs:documentation> - </xs:annotation> - </xs:attribute> - </xs:complexType> - </xs:element> - <xs:element name="protein_group" maxOccurs="unbounded"> - <xs:complexType> - <xs:sequence> - <xs:element name="protein" maxOccurs="unbounded"> - <xs:complexType> - <xs:sequence> - <xs:element name="parameter" minOccurs="0" maxOccurs="unbounded"> - <xs:complexType> - <xs:simpleContent> - <xs:extension base="xs:anySimpleType"> - <xs:attribute name="name" type="xs:string" use="required"/> - <xs:attribute name="value" type="xs:anySimpleType" use="required"/> - <xs:attribute name="type" type="xs:anySimpleType"/> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - </xs:element> - <xs:element name="analysis_result" minOccurs="0" maxOccurs="unbounded"> - <xs:complexType> - <xs:sequence> - <xs:any namespace="##any" processContents="lax"> - <xs:annotation> - <xs:documentation>wildcard to be substituted with element storing analysis-specific result info</xs:documentation> - </xs:annotation> - </xs:any> - - </xs:sequence> - <xs:attribute name="analysis" type="xs:string" use="required"> - <xs:annotation> - <xs:documentation>name of protein level analysis</xs:documentation> - </xs:annotation> - </xs:attribute> - - <xs:attribute name="id" type="xs:nonNegativeInteger" default="1"> - <xs:annotation> - <xs:documentation>unique identifier to analysis_summary element</xs:documentation> - </xs:annotation> - </xs:attribute> - - </xs:complexType> - </xs:element> - <xs:element name="annotation" minOccurs="0"> - <xs:complexType> - <xs:attribute name="protein_description" type="xs:string" use="required"/> - <xs:attribute name="ipi_name" type="xs:string"/> - <xs:attribute name="refseq_name" type="xs:string"/> - <xs:attribute name="swissprot_name" type="xs:string"/> - <xs:attribute name="ensembl_name" type="xs:string"/> - <xs:attribute name="trembl_name" type="xs:string"/> - <xs:attribute name="locus_link_name" type="xs:string"/> - <xs:attribute name="flybase" type="xs:string"/> - </xs:complexType> - </xs:element> - <xs:element name="indistinguishable_protein" minOccurs="0" maxOccurs="unbounded"> - <xs:annotation> - <xs:documentation>other protein sharing corresponding peptides</xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:sequence> - <xs:element name="annotation" minOccurs="0"> - <xs:annotation> - <xs:documentation>protein description</xs:documentation> - </xs:annotation> - - <xs:complexType> - <xs:attribute name="protein_description" type="xs:string" use="required"> - <xs:annotation> - <xs:documentation>description</xs:documentation> - </xs:annotation> - </xs:attribute> - - <xs:attribute name="ipi_name" type="xs:string"/> - <xs:attribute name="refseq_name" type="xs:string"/> - <xs:attribute name="swissprot_name" type="xs:string"/> - <xs:attribute name="ensembl_name" type="xs:string"/> - <xs:attribute name="trembl_name" type="xs:string"/> - <xs:attribute name="locus_link_name" type="xs:string"/> - <xs:attribute name="flybase" type="xs:string"/> - </xs:complexType> - </xs:element> - </xs:sequence> - <xs:attribute name="protein_name" type="xs:string" use="required"/> - </xs:complexType> - </xs:element> - <xs:element name="peptide" maxOccurs="unbounded"> - <xs:complexType> - <xs:sequence> - <xs:element name="parameter" minOccurs="0" maxOccurs="unbounded"> - <xs:complexType> - <xs:simpleContent> - <xs:extension base="xs:anySimpleType"> - <xs:attribute name="name" type="xs:string" use="required"/> - <xs:attribute name="value" type="xs:anySimpleType" use="required"/> - <xs:attribute name="type" type="xs:anySimpleType"/> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - </xs:element> - <xs:element name="modification_info" minOccurs="0" maxOccurs="unbounded"> - <xs:complexType> - <xs:sequence> - <xs:element name="mod_aminoacid_mass" minOccurs="0" maxOccurs="unbounded"> - <xs:complexType> - <xs:attribute name="position" type="xs:string" use="required"/> - <xs:attribute name="mass" type="xs:string" use="required"/> - </xs:complexType> - </xs:element> - </xs:sequence> - <xs:attribute name="mod_nterm_mass" type="xs:string"/> - <xs:attribute name="mod_cterm_mass" type="xs:string"/> - <xs:attribute name="modified_peptide" type="xs:string"/> - </xs:complexType> - </xs:element> - <xs:element name="peptide_parent_protein" minOccurs="0" maxOccurs="unbounded"> - <xs:complexType> - <xs:attribute name="protein_name" type="xs:string" use="required"/> - </xs:complexType> - </xs:element> - <xs:element name="indistinguishable_peptide" minOccurs="0" maxOccurs="unbounded"> - <xs:complexType> - <xs:sequence> - <xs:element name="modification_info" minOccurs="0" maxOccurs="unbounded"> - <xs:complexType> - <xs:sequence> - <xs:element name="mod_aminoacid_mass" minOccurs="0" maxOccurs="unbounded"> - <xs:complexType> - <xs:attribute name="position" type="xs:string" use="required"/> - <xs:attribute name="mass" type="xs:string" use="required"/> - </xs:complexType> - </xs:element> - </xs:sequence> - <xs:attribute name="mod_nterm_mass" type="xs:string"/> - <xs:attribute name="mod_cterm_mass" type="xs:string"/> - <xs:attribute name="modified_peptide" type="xs:string"/> - </xs:complexType> - </xs:element> - </xs:sequence> - <xs:attribute name="peptide_sequence" type="xs:string" use="required"/> - </xs:complexType> - </xs:element> - </xs:sequence> - <xs:attribute name="peptide_sequence" type="xs:string" use="required"> - <xs:annotation> - <xs:documentation>unmodified aa sequence</xs:documentation> - </xs:annotation> - </xs:attribute> - - <xs:attribute name="charge" type="xs:positiveInteger" use="required"> - <xs:annotation> - <xs:documentation>precursor ion charge</xs:documentation> - </xs:annotation> - </xs:attribute> - - <xs:attribute name="initial_probability" type="xs:double" use="required"> - <xs:annotation> - <xs:documentation>prior to nsp adjustment</xs:documentation> - </xs:annotation> - </xs:attribute> - - <xs:attribute name="nsp_adjusted_probability" type="xs:double" use="optional"> - <xs:annotation> - <xs:documentation>after nsp adjustment</xs:documentation> - </xs:annotation> - </xs:attribute> - - <xs:attribute name="peptide_group_designator" type="xs:string"> - <xs:annotation> - <xs:documentation>link to spectra with other precursor ion charges assigned to same peptide</xs:documentation> - </xs:annotation> - </xs:attribute> - - <xs:attribute name="weight" type="xs:double" default="1.0"/> - <xs:attribute name="is_nondegenerate_evidence" type="xs:string" use="required"> - <xs:annotation> - <xs:documentation>confidence that peptide corresponds with this protein (rather than others in which it occurs)</xs:documentation> - </xs:annotation> - </xs:attribute> - - <xs:attribute name="n_enzymatic_termini" type="xs:nonNegativeInteger" use="required"> - <xs:annotation> - <xs:documentation>number of termini consistent with proteolytic cleavage</xs:documentation> - </xs:annotation> - </xs:attribute> - - <xs:attribute name="n_sibling_peptides" type="xs:double"> - <xs:annotation> - <xs:documentation>estimated number of sibling peptides (other identified peptides corresponding to same protein)</xs:documentation> - </xs:annotation> - </xs:attribute> - - <xs:attribute name="n_sibling_peptides_bin" type="xs:integer" default="0"> - <xs:annotation> - <xs:documentation>discretized nsp value</xs:documentation> - </xs:annotation> - </xs:attribute> - - <xs:attribute name="n_instances" type="xs:integer" use="required"> - <xs:annotation> - <xs:documentation>number of times peptide assigned to spectrum of precursor ion charge in dataset</xs:documentation> - </xs:annotation> - </xs:attribute> - - <xs:attribute name="calc_neutral_pep_mass" type="xs:double"/> - <xs:attribute name="is_contributing_evidence" type="xs:string" use="required"/> - </xs:complexType> - </xs:element> - </xs:sequence> - <xs:attribute name="protein_name" type="xs:string" use="required"> - <xs:annotation> - <xs:documentation>database protein name</xs:documentation> - </xs:annotation> - </xs:attribute> - - <xs:attribute name="probability" type="xs:double" use="required"> - <xs:annotation> - <xs:documentation>confidence of protein id</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="percent_coverage" type="xs:double"> - <xs:annotation> - <xs:documentation>percent of protein sequence covered by corresponding peptides</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="n_indistinguishable_proteins" type="xs:integer" use="required"> - <xs:annotation> - <xs:documentation>number of proteins with identical corresponding peptides</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="unique_stripped_peptides" type="xs:string"/> - <xs:attribute name="group_sibling_id" type="xs:string" use="required"> - <xs:annotation> - <xs:documentation>protein group id</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="total_number_peptides" type="xs:integer"> - <xs:annotation> - <xs:documentation>total number of corresponding peptides that contributed to protein probability</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="subsuming_protein_entry" type="xs:string"> - <xs:annotation> - <xs:documentation>name of portein containing all corresponding peptides, and more</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="pct_spectrum_ids" type="xs:string"> - <xs:annotation> - <xs:documentation>fraction of correct dataset peptide identifications corresponding to protein</xs:documentation> - </xs:annotation> - </xs:attribute> - </xs:complexType> - <xs:unique name="unique_result_analysis_id"> - <xs:annotation> - <xs:documentation>can only have one analysis/id combination within each protein element</xs:documentation> - </xs:annotation> - - <xs:selector xpath="./protx:analysis_result"/> - <xs:field xpath="@analysis"/> - <xs:field xpath="@id"/> - </xs:unique> - </xs:element> - </xs:sequence> - <xs:attribute name="group_number" type="xs:string" use="required"> - <xs:annotation> - <xs:documentation>index</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="pseudo_name" type="xs:string"/> - <xs:attribute name="probability" type="xs:double" use="required"> - <xs:annotation> - <xs:documentation>group probability (taking contributions from all group member proteins)</xs:documentation> - </xs:annotation> - </xs:attribute> - </xs:complexType> - <xs:unique name="unique_group_sibling_id"> - <xs:annotation> - <xs:documentation>Each group_sibling_id must be unique within a protein group</xs:documentation> - </xs:annotation> - <xs:selector xpath="./protx:protein"/> - <xs:field xpath="@group_sibling_id"/> - </xs:unique> - - </xs:element> - </xs:sequence> - <xs:attribute name="summary_xml" type="xs:string"/> - </xs:complexType> - <xs:key name="summary_analysis_id"> - <xs:selector xpath="./protx:analysis_summary"/> - <xs:field xpath="@analysis"/> - <xs:field xpath="@id"/> - </xs:key> - <xs:keyref name="result_analysis_id" refer="summary_analysis_id"> - <xs:annotation> - <xs:documentation>analysis and id must correspond with those fields in an analysis_summary element</xs:documentation> - </xs:annotation> - <xs:selector xpath="./protx:protein_group/protx:protein/protx:analysis_result"/> - <xs:field xpath="@analysis"/> - <xs:field xpath="@id"/> - </xs:keyref> - <xs:unique name="unique_group_number"> - <xs:annotation> - <xs:documentation>Requires group numbers be unique for entire dataset</xs:documentation> - </xs:annotation> - <xs:selector xpath="./protx:protein_group"/> - <xs:field xpath="@group_number"/> - </xs:unique> - </xs:element> - <xs:element name="proteinprophet_details"> - <xs:annotation> - <xs:documentation>ProteinProphet analysis details</xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:sequence> - <xs:element name="nsp_information"> - <xs:annotation> - <xs:documentation>learned distributions of estimated number of sibling peptides</xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:sequence> - <xs:element name="nsp_distribution" maxOccurs="unbounded"> - <xs:annotation> - <xs:documentation>histogram slice of estimated number of sibling peptides</xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:attribute name="bin_no" type="xs:integer" use="required"> - <xs:annotation> - <xs:documentation>discretized bin number</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="nsp_lower_bound_incl" type="xs:double" use="required"> - <xs:annotation> - <xs:documentation>lower bound nsp value (inclusive)</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="nsp_upper_bound_excl" type="xs:string" use="required"> - <xs:annotation> - <xs:documentation>upper bound nsp value (exclusive)</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="pos_freq" type="xs:double" use="required"> - <xs:annotation> - <xs:documentation>fraction of correct peptides in bin</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="neg_freq" type="xs:double" use="required"> - <xs:annotation> - <xs:documentation>fraction of incorrect peptides in bin</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="pos_to_neg_ratio" type="xs:double" use="required"> - <xs:annotation> - <xs:documentation>fraction of correct / fraction of incorrect</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="alt_pos_to_neg_ratio" type="xs:double"> - <xs:annotation> - <xs:documentation>pos_to_neg_ratio of preceding bin (if greater than that of current bin)</xs:documentation> - </xs:annotation> - </xs:attribute> - </xs:complexType> - </xs:element> - </xs:sequence> - <xs:attribute name="neighboring_bin_smoothing" type="xs:string" use="required"/> - </xs:complexType> - </xs:element> - <xs:element name="protein_summary_data_filter" maxOccurs="unbounded"> - <xs:annotation> - <xs:documentation>predicted error/sensitivity for filtering at minimum probability</xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:attribute name="min_probability" type="xs:double" use="required"> - <xs:annotation> - <xs:documentation>filter setting</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="sensitivity" type="xs:double" use="required"> - <xs:annotation> - <xs:documentation>predicted sensitivity (fraction of correct results passing filter)</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="false_positive_error_rate" type="xs:double" use="required"> - <xs:annotation> - <xs:documentation>predicted error rate (fraction of results passing filter than are incorrect)</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="predicted_num_correct" type="xs:double"> - <xs:annotation> - <xs:documentation>predicted number of correct results passing filter</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="predicted_num_incorrect" type="xs:double"> - <xs:annotation> - <xs:documentation>predicted number of incorrect results passing filter</xs:documentation> - </xs:annotation> - </xs:attribute> - </xs:complexType> - </xs:element> - </xs:sequence> - <xs:attribute name="occam_flag" type="xs:string" use="required"> - <xs:annotation> - <xs:documentation>whether or not occams razor was used to apportion peptides corresponding to multiple proteins</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="groups_flag" type="xs:string" use="required"> - <xs:annotation> - <xs:documentation>whether or not related proteins are organized together in common protein groups</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="degen_flag" type="xs:string" use="required"> - <xs:annotation> - <xs:documentation>whether or not all proteins corresponding to each identified peptide were used in analysis</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="nsp_flag" type="xs:string" use="required"> - <xs:annotation> - <xs:documentation>whether or not peptide probabilities were adjusted for estimated number of sibling peptides</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="initial_peptide_wt_iters" type="xs:string" use="required"> - <xs:annotation> - <xs:documentation>proteinprophet number of initial iterations to compute peptide weights</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="nsp_distribution_iters" type="xs:string" use="required"> - <xs:annotation> - <xs:documentation>proteinprophet number of interations used to compute nsp distributions</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="final_peptide_wt_iters" type="xs:string" use="required"> - <xs:annotation> - <xs:documentation>proteinprophet number of final interations used to compute final peptide weights</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="run_options" type="xs:string"> - <xs:annotation> - <xs:documentation>special run options</xs:documentation> - </xs:annotation> - </xs:attribute> - </xs:complexType> - </xs:element> - <xs:element name="XPress_analysis_summary"> - <xs:complexType> - <xs:attribute name="min_peptide_probability" type="xs:double" use="required"/> - <xs:attribute name="min_peptide_weight" type="xs:double" use="required"/> - <xs:attribute name="min_protein_probability" type="xs:double" use="required"/> - <xs:attribute name="reference_isotope" type="xs:string"/> - </xs:complexType> - </xs:element> - <xs:element name="ASAP_prot_analysis_summary"> - <xs:complexType> - <xs:attribute name="version" type="xs:string"/> - <xs:attribute name="binary_ref_files" type="xs:string"/> - <xs:attribute name="min_peptide_probability" type="xs:double" use="required"/> - <xs:attribute name="min_peptide_weight" type="xs:double" use="required"/> - <xs:attribute name="min_protein_probability" type="xs:double" use="required"/> - <xs:attribute name="reference_isotope" type="xs:string"/> - </xs:complexType> - </xs:element> - <xs:element name="ASAP_pvalue_analysis_summary"> - <xs:complexType> - <xs:attribute name="asapratio_id" type="xs:nonNegativeInteger" default="1"/> - <xs:attribute name="background_ratio_mean" type="xs:double" use="required"/> - <xs:attribute name="background_ratio_stdev" type="xs:double" use="required"/> - <xs:attribute name="background_fitting_error" type="xs:double" use="required"/> - <xs:attribute name="analysis_distribution_file" type="xs:string" use="required"/> - <xs:attribute name="full_analysis_distr_file" type="xs:string"/> - <xs:attribute name="asap_prot_id" type="xs:nonNegativeInteger" default="1"/> - </xs:complexType> - </xs:element> - - - <xs:simpleType name="positiveInt"> - <xs:restriction base="xs:unsignedInt"> - <xs:minInclusive value="1"/> - </xs:restriction> - </xs:simpleType> - <xs:element name="libra_result"> - <xs:complexType> - <xs:sequence> - <xs:element name="intensity" maxOccurs="unbounded"> - <xs:complexType> - <xs:attribute name="mz" type="xs:float" use="required"/> - <xs:attribute name="ratio" type="xs:float" use="required"/> - <xs:attribute name="error" type="xs:float" use="required"/> - </xs:complexType> - </xs:element> - </xs:sequence> - <xs:attribute name="number" type="xs:nonNegativeInteger" use="required"/> - </xs:complexType> - <xs:unique name="libra_result_channel_index"> - <xs:selector xpath="."/> - <xs:field xpath="@channel"/> - </xs:unique> - - - </xs:element> - <xs:element name="libra_summary"> - <xs:complexType> - <xs:sequence> - <xs:element name="fragment_masses" maxOccurs="unbounded"> - <xs:complexType> - <xs:attribute name="channel" type="positiveInt" use="required"/> - <xs:attribute name="mz" type="xs:float" use="required"/> - </xs:complexType> - </xs:element> - <xs:element name="isotopic_contributions" minOccurs="0"> - <xs:complexType> - <xs:sequence> - <xs:element name="contributing_channel" maxOccurs="unbounded"> - <xs:complexType> - <xs:sequence> - <xs:element name="affected_channel" maxOccurs="unbounded"> - <xs:complexType> - <xs:attribute name="channel" type="positiveInt" use="required"/> - <xs:attribute name="correction" type="xs:float" use="required"/> - </xs:complexType> - </xs:element> - </xs:sequence> - <xs:attribute name="channel" type="positiveInt" use="required"/> - </xs:complexType> - </xs:element> - </xs:sequence> - </xs:complexType> - </xs:element> - </xs:sequence> - <xs:attribute name="mass_tolerance" type="xs:float" use="required"/> - <xs:attribute name="centroiding_preference" type="xs:int" use="required"/> - <xs:attribute name="normalization" type="xs:int" use="required"/> - <xs:attribute name="output_type" type="xs:int" use="required"/> - <xs:attribute name="channel_code" type="xs:string"/> - <xs:attribute name="min_pep_prob" type="xs:float" use="required"/> - <xs:attribute name="min_pep_wt" type="xs:float" use="required"/> - <xs:attribute name="min_prot_prob" type="xs:float" use="required"/> - </xs:complexType> - - <xs:key name="libra_channel_index"> - <xs:selector xpath="./protx:fragment_masses"/> - <xs:field xpath="@channel"/> - </xs:key> - <xs:keyref name="libra_contr_channel_index_ref" refer="libra_channel_index"> - <xs:selector xpath="./protx:isotopic_contributions/protx:contributing_channel"/> - <xs:field xpath="@channel"/> - </xs:keyref> - <xs:keyref name="libra_aff_channel_index_ref" refer="libra_channel_index"> - <xs:selector xpath="./protx:isotopic_contributions/protx:contributing_channel/protx:affected_channel"/> - <xs:field xpath="@channel"/> - </xs:keyref> - - </xs:element> -</xs:schema> \ No newline at end of file diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/protXML_v5.xsd b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/protXML_v5.xsd deleted file mode 100644 index 28d1a5eaaf371807abb517ee569945ad0f800d52..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/protXML_v5.xsd +++ /dev/null @@ -1,934 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- edited with XMLSPY v2004 rel. 4 U (http://www.xmlspy.com) by Wei Yan (Institute for Systems Biology) --> -<!--W3C Schema generated by XMLSPY v2004 rel. 4 U (http://www.xmlspy.com)--> -<xs:schema targetNamespace="http://regis-web.systemsbiology.net/protXML" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://regis-web.systemsbiology.net/protXML" xmlns:protx="http://regis-web.systemsbiology.net/protXML" elementFormDefault="qualified"> - <xs:element name="ASAPRatio_pvalue"> - <xs:annotation> - <xs:documentation>Results of ASAPRatio pvalue analysis (adjusting ASAPRatio ratios for offset of dataset, and determining whether ratios are significantly different from chance values originating from 1:1 proteins)</xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:attribute name="adj_ratio_mean" type="xs:double" use="required"> - <xs:annotation> - <xs:documentation>Ratio adjusted for dataset mean value</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="adj_ratio_standard_dev" type="xs:double" use="required"> - <xs:annotation> - <xs:documentation>Error adjusted for dataset mean value</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="heavy2light_adj_ratio_mean" type="xs:double"> - <xs:annotation> - <xs:documentation>Heavy2light ratio adjusted for dataset mean value</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="heavy2light_adj_ratio_standard_dev" type="xs:double"> - <xs:annotation> - <xs:documentation>Heavy2light error adjusted for dataset mean value</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="pvalue" type="xs:double"> - <xs:annotation> - <xs:documentation>pvalue (probability of ratio due by chance to 1:1 protein)</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="decimal_pvalue" type="xs:double"> - <xs:annotation> - <xs:documentation>decimal representation of pvalue</xs:documentation> - </xs:annotation> - </xs:attribute> - </xs:complexType> - </xs:element> - <xs:element name="ASAPRatio"> - <xs:annotation> - <xs:documentation>Results of ASAPRatio quantitation of protein</xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:sequence> - <xs:element name="ASAP_Seq" minOccurs="0" maxOccurs="unbounded"> - <xs:complexType> - <xs:sequence> - <xs:element name="ASAP_Peak" maxOccurs="unbounded"> - <xs:complexType> - <xs:sequence> - <xs:element name="ASAP_Dta" maxOccurs="unbounded"> - <xs:complexType> - <xs:attribute name="peptide_index" type="xs:string" use="required"/> - <xs:attribute name="include" type="xs:string" use="required"/> - </xs:complexType> - </xs:element> - </xs:sequence> - <xs:attribute name="status" type="xs:string" use="required"/> - <xs:attribute name="include" type="xs:string" use="required"/> - <xs:attribute name="datanum" type="xs:nonNegativeInteger" use="required"/> - <xs:attribute name="ratio_mean" type="xs:double" use="required"/> - <xs:attribute name="ratio_standard_dev" type="xs:double" use="required"/> - <xs:attribute name="heavy2light_ratio_mean" type="xs:double" use="required"/> - <xs:attribute name="heavy2light_ratio_standard_dev" type="xs:double" use="required"/> - <xs:attribute name="weight" type="xs:double" use="required"/> - <xs:attribute name="peptide_binary_ind" type="xs:string" use="required"/> - </xs:complexType> - </xs:element> - </xs:sequence> - <xs:attribute name="status" type="xs:string" use="required"/> - <xs:attribute name="include" type="xs:string" use="required"/> - <xs:attribute name="datanum" type="xs:nonNegativeInteger" use="required"/> - <xs:attribute name="ratio_mean" type="xs:double" use="required"/> - <xs:attribute name="ratio_standard_dev" type="xs:double" use="required"/> - <xs:attribute name="heavy2light_ratio_mean" type="xs:double" use="required"/> - <xs:attribute name="heavy2light_ratio_standard_dev" type="xs:double" use="required"/> - <xs:attribute name="weight" type="xs:double" use="required"/> - <xs:attribute name="light_sequence" type="xs:string" use="required"/> - </xs:complexType> - </xs:element> - </xs:sequence> - <xs:attribute name="ratio_mean" type="xs:double" use="required"/> - <xs:attribute name="ratio_standard_dev" type="xs:double" use="required"/> - <xs:attribute name="ratio_number_peptides" type="xs:nonNegativeInteger" use="required"/> - <xs:attribute name="heavy2light_ratio_mean" type="xs:double"/> - <xs:attribute name="heavy2light_ratio_standard_dev" type="xs:double"/> - <xs:attribute name="description" type="xs:string"/> - <xs:attribute name="status" type="xs:string"/> - <xs:attribute name="peptide_inds" type="xs:string"/> - </xs:complexType> - </xs:element> - <xs:element name="protein_summary"> - <xs:complexType> - <xs:sequence> - <xs:element name="protein_summary_header"> - <xs:complexType> - <xs:sequence> - <xs:element name="program_details"> - <xs:complexType> - <xs:sequence> - <xs:any namespace="##any" processContents="lax" minOccurs="0"> - <xs:annotation> - <xs:documentation>Wildcard for summary info customized for a particular analysis used to infer protein identifications</xs:documentation> - </xs:annotation> - </xs:any> - </xs:sequence> - <xs:attribute name="analysis" type="xs:string" use="required"> - <xs:annotation> - <xs:documentation>Name of analysis used for protein identifications</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="time" type="xs:dateTime" use="required"> - <xs:annotation> - <xs:documentation>Time of analysis</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="version" type="xs:string"/> - </xs:complexType> - </xs:element> - </xs:sequence> - <xs:attribute name="reference_database" type="xs:string" use="required"> - <xs:annotation> - <xs:documentation>full path database name</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="win-cyg_reference_database" type="xs:string"> - <xs:annotation> - <xs:documentation>windows full path database</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="residue_substitution_list" type="xs:string"> - <xs:annotation> - <xs:documentation>residues considered equivalent when comparing peptides</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="organism" type="xs:string"> - <xs:annotation> - <xs:documentation>sample organism (used for annotation purposes)</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="source_files" type="xs:string" use="required"> - <xs:annotation> - <xs:documentation>input pepXML files</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="source_files_alt" type="xs:string" use="required"/> - <xs:attribute name="win-cyg_source_files" type="xs:string"> - <xs:annotation> - <xs:documentation>windows pepXML file names</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="source_file_xtn" type="xs:string"> - <xs:annotation> - <xs:documentation>file type (if not pepXML)</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="min_peptide_probability" type="xs:double" use="required"> - <xs:annotation> - <xs:documentation>minimum adjusted peptide probability contributing to protein probability</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="min_peptide_weight" type="xs:double" use="required"> - <xs:annotation> - <xs:documentation>minimum peptide weight contributing to protein probability</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="num_predicted_correct_prots" type="xs:double" use="required"> - <xs:annotation> - <xs:documentation>total number of predicted correct protein ids (sum of probabilities)</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="num_input_1_spectra" type="xs:integer" use="required"> - <xs:annotation> - <xs:documentation>number of spectra from 1+ precursor ions</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="num_input_2_spectra" type="xs:integer" use="required"> - <xs:annotation> - <xs:documentation>number of spectra from 2+ precursor ions</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="num_input_3_spectra" type="xs:integer" use="required"> - <xs:annotation> - <xs:documentation>number of spectra from 3+ precursor ions</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="num_input_4_spectra" type="xs:integer" use="required"> - <xs:annotation> - <xs:documentation>number of spectra from 4+ precursor ions</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="num_input_5_spectra" type="xs:integer" use="required"> - <xs:annotation> - <xs:documentation>number of spectra from 5+ precursor ions</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="initial_min_peptide_prob" type="xs:double" use="required"> - <xs:annotation> - <xs:documentation>minimum initial peptide probability to contribute to analysis</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="total_no_spectrum_ids" type="xs:double"> - <xs:annotation> - <xs:documentation>total estimated number of correct peptide assignments in dataset</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="sample_enzyme" type="xs:string" use="required"> - <xs:annotation> - <xs:documentation>enzyme applied to sample prior to MS/MS</xs:documentation> - </xs:annotation> - </xs:attribute> - </xs:complexType> - </xs:element> - <xs:element name="analysis_summary" minOccurs="0" maxOccurs="unbounded"> - <xs:complexType> - <xs:sequence> - <xs:any namespace="##any" processContents="lax" minOccurs="0"> - <xs:annotation> - <xs:documentation>time of analysis</xs:documentation> - </xs:annotation> - </xs:any> - </xs:sequence> - <xs:attribute name="analysis" type="xs:string" use="required"> - <xs:annotation> - <xs:documentation>name of protein-level analysis</xs:documentation> - </xs:annotation> - </xs:attribute> - - <xs:attribute name="time" type="xs:dateTime" use="required"> - <xs:annotation> - <xs:documentation>time of analysis</xs:documentation> - </xs:annotation> - </xs:attribute> - - <xs:attribute name="id" type="xs:nonNegativeInteger" use="required"> - <xs:annotation> - <xs:documentation>unique id corresponding with analysis_result elements</xs:documentation> - </xs:annotation> - </xs:attribute> - - - </xs:complexType> - </xs:element> - <xs:element name="dataset_derivation"> - <xs:annotation> - <xs:documentation>Source and filtering criteria used to generate dataset</xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:sequence minOccurs="0" maxOccurs="unbounded"> - <xs:element name="data_filter"> - <xs:complexType> - <xs:attribute name="number" type="xs:string" use="required"> - <xs:annotation> - <xs:documentation>generation number (0 is root)</xs:documentation> - </xs:annotation> - </xs:attribute> - - <xs:attribute name="parent_file" type="xs:string" use="required"> - <xs:annotation> - <xs:documentation>File from which derived</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="windows_parent" type="xs:string"/> - <xs:attribute name="description" type="xs:string" use="required"> - <xs:annotation> - <xs:documentation>filtering criteria applied to data</xs:documentation> - </xs:annotation> - </xs:attribute> - </xs:complexType> - </xs:element> - </xs:sequence> - <xs:attribute name="generation_no" type="xs:string" use="required"> - <xs:annotation> - <xs:documentation>number preceding filter generations</xs:documentation> - </xs:annotation> - </xs:attribute> - </xs:complexType> - </xs:element> - <xs:element name="protein_group" maxOccurs="unbounded"> - <xs:complexType> - <xs:sequence> - <xs:element name="protein" maxOccurs="unbounded"> - <xs:complexType> - <xs:sequence> - <!-- note: nameValueType defined below --> - <xs:element name="parameter" type="nameValueType" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="analysis_result" minOccurs="0" maxOccurs="unbounded"> - <xs:complexType> - <xs:sequence> - <xs:any namespace="##any" processContents="lax"> - <xs:annotation> - <xs:documentation>wildcard to be substituted with element storing analysis-specific result info</xs:documentation> - </xs:annotation> - </xs:any> - - </xs:sequence> - <xs:attribute name="analysis" type="xs:string" use="required"> - <xs:annotation> - <xs:documentation>name of protein level analysis</xs:documentation> - </xs:annotation> - </xs:attribute> - - <xs:attribute name="id" type="xs:nonNegativeInteger" default="1"> - <xs:annotation> - <xs:documentation>unique identifier to analysis_summary element</xs:documentation> - </xs:annotation> - </xs:attribute> - - </xs:complexType> - </xs:element> - <xs:element name="annotation" minOccurs="0"> - <xs:complexType> - <xs:attribute name="protein_description" type="xs:string" use="required"/> - <xs:attribute name="ipi_name" type="xs:string"/> - <xs:attribute name="refseq_name" type="xs:string"/> - <xs:attribute name="swissprot_name" type="xs:string"/> - <xs:attribute name="ensembl_name" type="xs:string"/> - <xs:attribute name="trembl_name" type="xs:string"/> - <xs:attribute name="locus_link_name" type="xs:string"/> - <xs:attribute name="flybase" type="xs:string"/> - </xs:complexType> - </xs:element> - <xs:element name="indistinguishable_protein" minOccurs="0" maxOccurs="unbounded"> - <xs:annotation> - <xs:documentation>other protein sharing corresponding peptides</xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:sequence> - <!-- note: nameValueType defined below --> - <xs:element name="parameter" type="nameValueType" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="annotation" minOccurs="0"> - <xs:annotation> - <xs:documentation>protein description</xs:documentation> - </xs:annotation> - - <xs:complexType> - <xs:attribute name="protein_description" type="xs:string" use="required"> - <xs:annotation> - <xs:documentation>description</xs:documentation> - </xs:annotation> - </xs:attribute> - - <xs:attribute name="ipi_name" type="xs:string"/> - <xs:attribute name="refseq_name" type="xs:string"/> - <xs:attribute name="swissprot_name" type="xs:string"/> - <xs:attribute name="ensembl_name" type="xs:string"/> - <xs:attribute name="trembl_name" type="xs:string"/> - <xs:attribute name="locus_link_name" type="xs:string"/> - <xs:attribute name="flybase" type="xs:string"/> - </xs:complexType> - </xs:element> - </xs:sequence> - <xs:attribute name="protein_name" type="xs:string" use="required"/> - </xs:complexType> - </xs:element> - <xs:element name="peptide" maxOccurs="unbounded"> - <xs:complexType> - <xs:sequence> - <xs:element name="parameter" minOccurs="0" maxOccurs="unbounded"> - <xs:complexType> - <xs:simpleContent> - <xs:extension base="xs:anySimpleType"> - <xs:attribute name="name" type="xs:string" use="required"/> - <xs:attribute name="value" type="xs:anySimpleType" use="required"/> - <xs:attribute name="type" type="xs:anySimpleType"/> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - </xs:element> - <xs:element name="modification_info" minOccurs="0" maxOccurs="unbounded"> - <xs:complexType> - <xs:sequence> - <xs:element name="mod_aminoacid_mass" minOccurs="0" maxOccurs="unbounded"> - <xs:complexType> - <xs:attribute name="position" type="xs:string" use="required"/> - <xs:attribute name="mass" type="xs:string" use="required"/> - </xs:complexType> - </xs:element> - </xs:sequence> - <xs:attribute name="mod_nterm_mass" type="xs:string"/> - <xs:attribute name="mod_cterm_mass" type="xs:string"/> - <xs:attribute name="modified_peptide" type="xs:string"/> - </xs:complexType> - </xs:element> - <xs:element name="peptide_parent_protein" minOccurs="0" maxOccurs="unbounded"> - <xs:complexType> - <xs:attribute name="protein_name" type="xs:string" use="required"/> - </xs:complexType> - </xs:element> - <xs:element name="indistinguishable_peptide" minOccurs="0" maxOccurs="unbounded"> - <xs:complexType> - <xs:sequence> - <xs:element name="modification_info" minOccurs="0" maxOccurs="unbounded"> - <xs:complexType> - <xs:sequence> - <xs:element name="mod_aminoacid_mass" minOccurs="0" maxOccurs="unbounded"> - <xs:complexType> - <xs:attribute name="position" type="xs:string" use="required"/> - <xs:attribute name="mass" type="xs:string" use="required"/> - </xs:complexType> - </xs:element> - </xs:sequence> - <xs:attribute name="mod_nterm_mass" type="xs:string"/> - <xs:attribute name="mod_cterm_mass" type="xs:string"/> - <xs:attribute name="modified_peptide" type="xs:string"/> - </xs:complexType> - </xs:element> - </xs:sequence> - <xs:attribute name="peptide_sequence" type="xs:string" use="required"/> - </xs:complexType> - </xs:element> - </xs:sequence> - <xs:attribute name="peptide_sequence" type="xs:string" use="required"> - <xs:annotation> - <xs:documentation>unmodified aa sequence</xs:documentation> - </xs:annotation> - </xs:attribute> - - <xs:attribute name="charge" type="xs:positiveInteger" use="required"> - <xs:annotation> - <xs:documentation>precursor ion charge</xs:documentation> - </xs:annotation> - </xs:attribute> - - <xs:attribute name="initial_probability" type="xs:double" use="required"> - <xs:annotation> - <xs:documentation>prior to nsp adjustment</xs:documentation> - </xs:annotation> - </xs:attribute> - - <xs:attribute name="nsp_adjusted_probability" type="xs:double" use="optional"> - <xs:annotation> - <xs:documentation>after nsp adjustment</xs:documentation> - </xs:annotation> - </xs:attribute> - - <xs:attribute name="ni_adjusted_probability" type="xs:double" use="optional"> - <xs:annotation> - <xs:documentation>after ni adjustment</xs:documentation> - </xs:annotation> - </xs:attribute> - - <xs:attribute name="exp_sibling_ion_instances" type="xs:double" use="optional"> - <xs:annotation> - <xs:documentation>expected sibling ion instances</xs:documentation> - </xs:annotation> - </xs:attribute> - - <xs:attribute name="exp_sibling_ion_bin" type="xs:double" use="optional"> - <xs:annotation> - <xs:documentation>expected sibling ion bin</xs:documentation> - </xs:annotation> - </xs:attribute> - - <xs:attribute name="exp_tot_instances" type="xs:double" use="optional"> - <xs:annotation> - <xs:documentation>expected total instances</xs:documentation> - </xs:annotation> - </xs:attribute> - - <xs:attribute name="peptide_group_designator" type="xs:string"> - <xs:annotation> - <xs:documentation>link to spectra with other precursor ion charges assigned to same peptide</xs:documentation> - </xs:annotation> - </xs:attribute> - - <xs:attribute name="weight" type="xs:double" default="1.0"/> - <xs:attribute name="is_nondegenerate_evidence" type="xs:string" use="required"> - <xs:annotation> - <xs:documentation>confidence that peptide corresponds with this protein (rather than others in which it occurs)</xs:documentation> - </xs:annotation> - </xs:attribute> - - <xs:attribute name="n_enzymatic_termini" type="xs:nonNegativeInteger" use="required"> - <xs:annotation> - <xs:documentation>number of termini consistent with proteolytic cleavage</xs:documentation> - </xs:annotation> - </xs:attribute> - - <xs:attribute name="n_sibling_peptides" type="xs:double"> - <xs:annotation> - <xs:documentation>estimated number of sibling peptides (other identified peptides corresponding to same protein)</xs:documentation> - </xs:annotation> - </xs:attribute> - - <xs:attribute name="n_sibling_peptides_bin" type="xs:integer" default="0"> - <xs:annotation> - <xs:documentation>discretized nsp value</xs:documentation> - </xs:annotation> - </xs:attribute> - - <xs:attribute name="n_instances" type="xs:integer" use="required"> - <xs:annotation> - <xs:documentation>number of times peptide assigned to spectrum of precursor ion charge in dataset</xs:documentation> - </xs:annotation> - </xs:attribute> - - <xs:attribute name="calc_neutral_pep_mass" type="xs:double"/> - <xs:attribute name="is_contributing_evidence" type="xs:string" use="required"/> - </xs:complexType> - </xs:element> - </xs:sequence> - <xs:attribute name="protein_name" type="xs:string" use="required"> - <xs:annotation> - <xs:documentation>database protein name</xs:documentation> - </xs:annotation> - </xs:attribute> - - <xs:attribute name="probability" type="xs:double" use="required"> - <xs:annotation> - <xs:documentation>confidence of protein id</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="percent_coverage" type="xs:double"> - <xs:annotation> - <xs:documentation>percent of protein sequence covered by corresponding peptides</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="n_indistinguishable_proteins" type="xs:integer" use="required"> - <xs:annotation> - <xs:documentation>number of proteins with identical corresponding peptides</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="unique_stripped_peptides" type="xs:string"/> - <xs:attribute name="group_sibling_id" type="xs:string" use="required"> - <xs:annotation> - <xs:documentation>protein group id</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="total_number_peptides" type="xs:integer"> - <xs:annotation> - <xs:documentation>total number of corresponding peptides that contributed to protein probability</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="subsuming_protein_entry" type="xs:string"> - <xs:annotation> - <xs:documentation>name of portein containing all corresponding peptides, and more</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="pct_spectrum_ids" type="xs:string"> - <xs:annotation> - <xs:documentation>fraction of correct dataset peptide identifications corresponding to protein</xs:documentation> - </xs:annotation> - </xs:attribute> - </xs:complexType> - <xs:unique name="unique_result_analysis_id"> - <xs:annotation> - <xs:documentation>can only have one analysis/id combination within each protein element</xs:documentation> - </xs:annotation> - - <xs:selector xpath="./protx:analysis_result"/> - <xs:field xpath="@analysis"/> - <xs:field xpath="@id"/> - </xs:unique> - </xs:element> - </xs:sequence> - <xs:attribute name="group_number" type="xs:string" use="required"> - <xs:annotation> - <xs:documentation>index</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="pseudo_name" type="xs:string"/> - <xs:attribute name="probability" type="xs:double" use="required"> - <xs:annotation> - <xs:documentation>group probability (taking contributions from all group member proteins)</xs:documentation> - </xs:annotation> - </xs:attribute> - </xs:complexType> - <xs:unique name="unique_group_sibling_id"> - <xs:annotation> - <xs:documentation>Each group_sibling_id must be unique within a protein group</xs:documentation> - </xs:annotation> - <xs:selector xpath="./protx:protein"/> - <xs:field xpath="@group_sibling_id"/> - </xs:unique> - - </xs:element> - </xs:sequence> - <xs:attribute name="summary_xml" type="xs:string"/> - </xs:complexType> - <xs:key name="summary_analysis_id"> - <xs:selector xpath="./protx:analysis_summary"/> - <xs:field xpath="@analysis"/> - <xs:field xpath="@id"/> - </xs:key> - <xs:keyref name="result_analysis_id" refer="summary_analysis_id"> - <xs:annotation> - <xs:documentation>analysis and id must correspond with those fields in an analysis_summary element</xs:documentation> - </xs:annotation> - <xs:selector xpath="./protx:protein_group/protx:protein/protx:analysis_result"/> - <xs:field xpath="@analysis"/> - <xs:field xpath="@id"/> - </xs:keyref> - <xs:unique name="unique_group_number"> - <xs:annotation> - <xs:documentation>Requires group numbers be unique for entire dataset</xs:documentation> - </xs:annotation> - <xs:selector xpath="./protx:protein_group"/> - <xs:field xpath="@group_number"/> - </xs:unique> - </xs:element> - <xs:element name="proteinprophet_details"> - <xs:annotation> - <xs:documentation>ProteinProphet analysis details</xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:sequence> - <xs:element name="nsp_information"> - <xs:annotation> - <xs:documentation>learned distributions of estimated number of sibling peptides</xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:sequence> - <xs:element name="nsp_distribution" maxOccurs="unbounded"> - <xs:annotation> - <xs:documentation>histogram slice of estimated number of sibling peptides</xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:attribute name="bin_no" type="xs:integer" use="required"> - <xs:annotation> - <xs:documentation>discretized bin number</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="nsp_lower_bound_incl" type="xs:double" use="optional"> - <xs:annotation> - <xs:documentation>lower bound nsp value (inclusive)</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="nsp_upper_bound_excl" type="xs:string" use="optional"> - <xs:annotation> - <xs:documentation>upper bound nsp value (exclusive)</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="nsp_lower_bound_excl" type="xs:double" use="optional"> - <xs:annotation> - <xs:documentation>lower bound nsp value (exclusive)</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="nsp_upper_bound_incl" type="xs:string" use="optional"> - <xs:annotation> - <xs:documentation>upper bound nsp value (inclusive)</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="pos_freq" type="xs:double" use="required"> - <xs:annotation> - <xs:documentation>fraction of correct peptides in bin</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="neg_freq" type="xs:double" use="required"> - <xs:annotation> - <xs:documentation>fraction of incorrect peptides in bin</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="pos_to_neg_ratio" type="xs:double" use="required"> - <xs:annotation> - <xs:documentation>fraction of correct / fraction of incorrect</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="alt_pos_to_neg_ratio" type="xs:double"> - <xs:annotation> - <xs:documentation>pos_to_neg_ratio of preceding bin (if greater than that of current bin)</xs:documentation> - </xs:annotation> - </xs:attribute> - </xs:complexType> - </xs:element> - </xs:sequence> - <xs:attribute name="neighboring_bin_smoothing" type="xs:string" use="required"/> - </xs:complexType> - </xs:element> - <xs:element name="ni_information"> - <xs:annotation> - <xs:documentation>learned distributions of estimated number of peptide instances ("number of instances")</xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:sequence> - <xs:element name="ni_distribution" maxOccurs="unbounded"> - <xs:annotation> - <xs:documentation>histogram slice of estimated number of sibling peptides</xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:attribute name="bin_no" type="xs:integer" use="required"> - <xs:annotation> - <xs:documentation>discretized bin number</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="ni_lower_bound_incl" type="xs:double" use="optional"> - <xs:annotation> - <xs:documentation>lower bound nsp value (inclusive)</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="ni_upper_bound_excl" type="xs:string" use="optional"> - <xs:annotation> - <xs:documentation>upper bound nsp value (exclusive)</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="ni_lower_bound_excl" type="xs:double" use="optional"> - <xs:annotation> - <xs:documentation>lower bound nsp value (exclusive)</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="ni_upper_bound_incl" type="xs:string" use="optional"> - <xs:annotation> - <xs:documentation>upper bound nsp value (inclusive)</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="pos_freq" type="xs:double" use="required"> - <xs:annotation> - <xs:documentation>fraction of correct peptides in bin</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="neg_freq" type="xs:double" use="required"> - <xs:annotation> - <xs:documentation>fraction of incorrect peptides in bin</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="pos_to_neg_ratio" type="xs:double" use="required"> - <xs:annotation> - <xs:documentation>fraction of correct / fraction of incorrect</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="alt_pos_to_neg_ratio" type="xs:double"> - <xs:annotation> - <xs:documentation>pos_to_neg_ratio of preceding bin (if greater than that of current bin)</xs:documentation> - </xs:annotation> - </xs:attribute> - </xs:complexType> - </xs:element> - </xs:sequence> - <!-- - <xs:attribute name="neighboring_bin_smoothing" type="xs:string" use="required"/> - --> - </xs:complexType> - </xs:element> - <xs:element name="protein_summary_data_filter" maxOccurs="unbounded"> - <xs:annotation> - <xs:documentation>predicted error/sensitivity for filtering at minimum probability</xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:attribute name="min_probability" type="xs:double" use="required"> - <xs:annotation> - <xs:documentation>filter setting</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="sensitivity" type="xs:double" use="required"> - <xs:annotation> - <xs:documentation>predicted sensitivity (fraction of correct results passing filter)</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="false_positive_error_rate" type="xs:double" use="required"> - <xs:annotation> - <xs:documentation>predicted error rate (fraction of results passing filter than are incorrect)</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="predicted_num_correct" type="xs:double"> - <xs:annotation> - <xs:documentation>predicted number of correct results passing filter</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="predicted_num_incorrect" type="xs:double"> - <xs:annotation> - <xs:documentation>predicted number of incorrect results passing filter</xs:documentation> - </xs:annotation> - </xs:attribute> - </xs:complexType> - </xs:element> - </xs:sequence> - <xs:attribute name="occam_flag" type="xs:string" use="required"> - <xs:annotation> - <xs:documentation>whether or not occams razor was used to apportion peptides corresponding to multiple proteins</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="groups_flag" type="xs:string" use="required"> - <xs:annotation> - <xs:documentation>whether or not related proteins are organized together in common protein groups</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="degen_flag" type="xs:string" use="required"> - <xs:annotation> - <xs:documentation>whether or not all proteins corresponding to each identified peptide were used in analysis</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="nsp_flag" type="xs:string" use="required"> - <xs:annotation> - <xs:documentation>whether or not peptide probabilities were adjusted for estimated number of sibling peptides</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="initial_peptide_wt_iters" type="xs:string" use="required"> - <xs:annotation> - <xs:documentation>proteinprophet number of initial iterations to compute peptide weights</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="nsp_distribution_iters" type="xs:string" use="required"> - <xs:annotation> - <xs:documentation>proteinprophet number of interations used to compute nsp distributions</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="final_peptide_wt_iters" type="xs:string" use="required"> - <xs:annotation> - <xs:documentation>proteinprophet number of final interations used to compute final peptide weights</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="run_options" type="xs:string"> - <xs:annotation> - <xs:documentation>special run options</xs:documentation> - </xs:annotation> - </xs:attribute> - </xs:complexType> - </xs:element> - <xs:element name="XPress_analysis_summary"> - <xs:complexType> - <xs:attribute name="min_peptide_probability" type="xs:double" use="required"/> - <xs:attribute name="min_peptide_weight" type="xs:double" use="required"/> - <xs:attribute name="min_protein_probability" type="xs:double" use="required"/> - <xs:attribute name="reference_isotope" type="xs:string"/> - </xs:complexType> - </xs:element> - <xs:element name="ASAP_prot_analysis_summary"> - <xs:complexType> - <xs:attribute name="version" type="xs:string"/> - <xs:attribute name="binary_ref_files" type="xs:string"/> - <xs:attribute name="min_peptide_probability" type="xs:double" use="required"/> - <xs:attribute name="min_peptide_weight" type="xs:double" use="required"/> - <xs:attribute name="min_protein_probability" type="xs:double" use="required"/> - <xs:attribute name="reference_isotope" type="xs:string"/> - </xs:complexType> - </xs:element> - <xs:element name="ASAP_pvalue_analysis_summary"> - <xs:complexType> - <xs:attribute name="asapratio_id" type="xs:nonNegativeInteger" default="1"/> - <xs:attribute name="background_ratio_mean" type="xs:double" use="required"/> - <xs:attribute name="background_ratio_stdev" type="xs:double" use="required"/> - <xs:attribute name="background_fitting_error" type="xs:double" use="required"/> - <xs:attribute name="analysis_distribution_file" type="xs:string" use="required"/> - <xs:attribute name="full_analysis_distr_file" type="xs:string"/> - <xs:attribute name="asap_prot_id" type="xs:nonNegativeInteger" default="1"/> - </xs:complexType> - </xs:element> - - - <xs:simpleType name="positiveInt"> - <xs:restriction base="xs:unsignedInt"> - <xs:minInclusive value="1"/> - </xs:restriction> - </xs:simpleType> - <xs:element name="libra_result"> - <xs:complexType> - <xs:sequence> - <xs:element name="intensity" maxOccurs="unbounded"> - <xs:complexType> - <xs:attribute name="mz" type="xs:float" use="required"/> - <xs:attribute name="ratio" type="xs:float" use="required"/> - <xs:attribute name="error" type="xs:float" use="required"/> - </xs:complexType> - </xs:element> - </xs:sequence> - <xs:attribute name="number" type="xs:nonNegativeInteger" use="required"/> - </xs:complexType> - <xs:unique name="libra_result_channel_index"> - <xs:selector xpath="."/> - <xs:field xpath="@channel"/> - </xs:unique> - - - </xs:element> - <xs:element name="libra_summary"> - <xs:complexType> - <xs:sequence> - <xs:element name="fragment_masses" maxOccurs="unbounded"> - <xs:complexType> - <xs:attribute name="channel" type="positiveInt" use="required"/> - <xs:attribute name="mz" type="xs:float" use="required"/> - </xs:complexType> - </xs:element> - <xs:element name="isotopic_contributions" minOccurs="0"> - <xs:complexType> - <xs:sequence> - <xs:element name="contributing_channel" maxOccurs="unbounded"> - <xs:complexType> - <xs:sequence> - <xs:element name="affected_channel" maxOccurs="unbounded"> - <xs:complexType> - <xs:attribute name="channel" type="positiveInt" use="required"/> - <xs:attribute name="correction" type="xs:float" use="required"/> - </xs:complexType> - </xs:element> - </xs:sequence> - <xs:attribute name="channel" type="positiveInt" use="required"/> - </xs:complexType> - </xs:element> - </xs:sequence> - </xs:complexType> - </xs:element> - </xs:sequence> - <xs:attribute name="mass_tolerance" type="xs:float" use="required"/> - <xs:attribute name="centroiding_preference" type="xs:int" use="required"/> - <xs:attribute name="normalization" type="xs:int" use="required"/> - <xs:attribute name="output_type" type="xs:int" use="required"/> - <xs:attribute name="channel_code" type="xs:string"/> - <xs:attribute name="min_pep_prob" type="xs:float" use="required"/> - <xs:attribute name="min_pep_wt" type="xs:float" use="required"/> - <xs:attribute name="min_prot_prob" type="xs:float" use="required"/> - </xs:complexType> - - <xs:key name="libra_channel_index"> - <xs:selector xpath="./protx:fragment_masses"/> - <xs:field xpath="@channel"/> - </xs:key> - <xs:keyref name="libra_contr_channel_index_ref" refer="libra_channel_index"> - <xs:selector xpath="./protx:isotopic_contributions/protx:contributing_channel"/> - <xs:field xpath="@channel"/> - </xs:keyref> - <xs:keyref name="libra_aff_channel_index_ref" refer="libra_channel_index"> - <xs:selector xpath="./protx:isotopic_contributions/protx:contributing_channel/protx:affected_channel"/> - <xs:field xpath="@channel"/> - </xs:keyref> - - </xs:element> - - <!-- a loosely-defined, general-purpose type used in the "parameter" element, defined above --> - <xs:complexType name="nameValueType"> - <xs:simpleContent> - <xs:extension base="xs:anySimpleType"> - <xs:attribute name="name" type="xs:string" use="required"/> - <xs:attribute name="value" type="xs:anySimpleType" use="required"/> - <xs:attribute name="type" type="xs:anySimpleType"/> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - - -</xs:schema> \ No newline at end of file diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/BuildAndEnvironmentInfo.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/BuildAndEnvironmentInfo.java deleted file mode 100644 index 816e57b8fd76a757acc08bd168be33bc03a34049..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/BuildAndEnvironmentInfo.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics; - -import ch.systemsx.cisd.base.utilities.AbstractBuildAndEnvironmentInfo; - -/** - * The build and environment information for PhosphoNetX. - * - * @author Franz-Josef Elmer - */ -public class BuildAndEnvironmentInfo extends AbstractBuildAndEnvironmentInfo -{ - private final static String BASE = "rtd_phosphonetx"; - - public final static BuildAndEnvironmentInfo INSTANCE = new BuildAndEnvironmentInfo(); - - private BuildAndEnvironmentInfo() - { - super(BASE); - } - - /** - * Shows build and environment information on the console. - */ - public static void main(String[] args) - { - System.out.println(INSTANCE); - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/OpenBIS.gwt.xml b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/OpenBIS.gwt.xml deleted file mode 100644 index 338a32080d03d7466bf81320a77a85e385503c8e..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/OpenBIS.gwt.xml +++ /dev/null @@ -1,14 +0,0 @@ -<module> - <inherits name='ch.systemsx.cisd.openbis.OpenBIS-without-entry-point'/> - - <!-- - // Application entry point - --> - <entry-point class='ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.application.PhosphoNetXClient' /> - - <script src="proteomics-dictionary.js"/> - <public path="client/web/public"/> - <source path="client/web/client"/> - <source path="shared/basic" /> - -</module> \ No newline at end of file diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/OpenBISFirefox.gwt.xml b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/OpenBISFirefox.gwt.xml deleted file mode 100644 index 28984f69c44d02e5dca193cfd9d233ed90b49b67..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/OpenBISFirefox.gwt.xml +++ /dev/null @@ -1,13 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE module PUBLIC "-//Google Inc.//DTD Google Web Toolkit 1.7.1//EN" "http://google-web-toolkit.googlecode.com/svn/tags/1.7.1/distro-source/core/src/gwt-module.dtd"> -<module rename-to="ch.systemsx.cisd.openbis.plugin.proteomics.OpenBIS"> - <inherits name='ch.systemsx.cisd.openbis.OpenBIS-without-entry-point' /> - <set-property name="user.agent" value="gecko1_8" /> - - <entry-point class='ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.application.PhosphoNetXClient' /> - - <script src="proteomics-dictionary.js" /> - <public path="client/web/public" /> - <source path="client/web/client" /> - <source path="shared/basic" /> -</module> diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/OpenBISSafari.gwt.xml b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/OpenBISSafari.gwt.xml deleted file mode 100644 index 4f39114f92af58c9cea79975e0c8d34dce9ae9d0..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/OpenBISSafari.gwt.xml +++ /dev/null @@ -1,13 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE module PUBLIC "-//Google Inc.//DTD Google Web Toolkit 1.7.1//EN" "http://google-web-toolkit.googlecode.com/svn/tags/1.7.1/distro-source/core/src/gwt-module.dtd"> -<module rename-to="ch.systemsx.cisd.openbis.plugin.proteomics.OpenBIS"> - <inherits name='ch.systemsx.cisd.openbis.OpenBIS-without-entry-point' /> - <set-property name="user.agent" value="safari" /> - - <entry-point class='ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.application.PhosphoNetXClient' /> - - <script src="proteomics-dictionary.js" /> - <public path="client/web/public" /> - <source path="client/web/client" /> - <source path="shared/basic" /> -</module> diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/api/v1/FacadeFactory.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/api/v1/FacadeFactory.java deleted file mode 100644 index 686fe98b7853ce6e5da5845daf66ed6770e7523f..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/api/v1/FacadeFactory.java +++ /dev/null @@ -1,103 +0,0 @@ -/* - * Copyright 2010 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.client.api.v1; - -import ch.systemsx.cisd.openbis.common.api.client.ServiceFinder; -import ch.systemsx.cisd.common.api.retry.RetryCaller; -import ch.systemsx.cisd.common.api.retry.RetryProxyFactory; -import ch.systemsx.cisd.openbis.generic.shared.api.v1.IGeneralInformationService; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.api.v1.IProteomicsDataService; - -/** - * Factory of {@link IProteomicsDataApiFacade}. - * - * @author Franz-Josef Elmer - */ -public class FacadeFactory -{ - private static final ServiceFinder SERVICE_FINDER = new ServiceFinder("openbis", - IProteomicsDataService.SERVER_URL); - - private static final ServiceFinder GENERIC_INFO_SERVICE_FINDER = new ServiceFinder("openbis", - IGeneralInformationService.SERVICE_URL); - - /** - * Creates a facade for specified server URL, user Id, and password. - */ - public static IProteomicsDataApiFacade create(final String serverURL, final String userID, - final String password) - { - RetryCaller<IProteomicsDataApiFacade, RuntimeException> caller = - new RetryCaller<IProteomicsDataApiFacade, RuntimeException>() - { - @Override - protected IProteomicsDataApiFacade call() - { - IGeneralInformationService infoService = - createGenericInfoService(serverURL); - IProteomicsDataService service = createService(serverURL); - String sessionToken = - infoService.tryToAuthenticateForAllServices(userID, password); - if (sessionToken == null) - { - throw new IllegalArgumentException("User " + userID - + " couldn't be authenticated"); - } - - IProteomicsDataApiFacade facade = - new ProteomicsDataApiFacade(service, infoService, sessionToken); - return RetryProxyFactory.createProxy(facade); - } - }; - return caller.callWithRetry(); - } - - /** - * Creates a facade for specified url and sessionToken. - */ - public static IProteomicsDataApiFacade create(final String serverURL, final String sessionToken) - { - RetryCaller<IProteomicsDataApiFacade, RuntimeException> caller = - new RetryCaller<IProteomicsDataApiFacade, RuntimeException>() - { - @Override - protected IProteomicsDataApiFacade call() - { - IProteomicsDataService service = createService(serverURL); - IGeneralInformationService infoService = - createGenericInfoService(serverURL); - - IProteomicsDataApiFacade facade = - new ProteomicsDataApiFacade(service, infoService, sessionToken); - return RetryProxyFactory.createProxy(facade); - } - }; - return caller.callWithRetry(); - } - - private static IProteomicsDataService createService(String serverURL) - { - return SERVICE_FINDER.createService(IProteomicsDataService.class, serverURL); - } - - private static IGeneralInformationService createGenericInfoService(String serverURL) - { - return GENERIC_INFO_SERVICE_FINDER.createService(IGeneralInformationService.class, - serverURL); - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/api/v1/IProteomicsDataApiFacade.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/api/v1/IProteomicsDataApiFacade.java deleted file mode 100644 index 3a2e13a77e1123a9c17fe54c6b50384677642479..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/api/v1/IProteomicsDataApiFacade.java +++ /dev/null @@ -1,117 +0,0 @@ -/* - * Copyright 2010 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.client.api.v1; - -import java.util.List; - -import ch.systemsx.cisd.common.api.retry.Retry; -import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.Project; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.api.v1.dto.DataSet; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.api.v1.dto.DataStoreServerProcessingPluginInfo; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.api.v1.dto.Experiment; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.api.v1.dto.MsInjectionDataInfo; - -/** - * Facade for openBIS proteomics data service to be used by a proteomics pipeline server like p-grade. - * - * @author Franz-Josef Elmer - */ -public interface IProteomicsDataApiFacade -{ - /** - * Return the session token for the logged-in user. - */ - @Retry - public String getSessionToken(); - - /** - * Returns all samples of type MS_INJECTION in space MS_DATA which have a parent sample which the specified user is allow to read. - */ - @Retry - public List<MsInjectionDataInfo> listRawDataSamples(String userID); - - /** - * Returns all samples of type MS_INJECTION in space MS_DATA which have a parent sample. - */ - @Retry - public List<MsInjectionDataInfo> listAllRawDataSamples(String userID); - - /** - * Lists all processing plugins on DSS. - */ - @Retry - public List<DataStoreServerProcessingPluginInfo> listDataStoreServerProcessingPluginInfos(); - - /** - * Processes the data sets of specified samples by the DSS processing plug-in of specified key for the specified user. Only the most recent data - * sets of specified type are processed. - */ - @Deprecated - public void processingRawData(String userID, String dataSetProcessingKey, - long[] rawDataSampleIDs, String dataSetType); - - /** - * Processes the specified data sets by the DSS processing plug-in of specified key for the specified user. Implementations should check that the - * specified user is allowed to read specified data sets. - */ - public void processDataSets(String userID, String dataSetProcessingKey, List<String> dataSetCodes); - - /** - * Returns all projects where the specified user has USER access rights. - */ - @Retry - public List<Project> listProjects(String userID); - - /** - * Returns all experiments of type <tt>MS_SEARCH</tt> which the specified user is allowed to read. - */ - @Retry - public List<Experiment> listSearchExperiments(String userID); - - /** - * Returns all experiments of specified type which the specified user is allowed to read. - */ - @Retry - public List<Experiment> listExperiments(String sessionToken, String userID, String experimentTypeCode); - - /** - * Returns all data sets of specified experiment which the specified user is allowed to read. - */ - @Retry - public List<DataSet> listDataSetsByExperiment(String userID, long experimentID); - - /** - * Processes the data sets of specified experiments of type <tt>MS_SEARCH</tt> by the DSS processing plug-in of specified key for the specified - * user. It will be checked if the experiments are of search experiments and if the user has USER access rights. - */ - @Deprecated - public void processSearchData(String userID, String dataSetProcessingKey, - long[] searchExperimentIDs); - - /** - * Processes the data sets of specified experiments by the DSS processing plug-in of specified key for the specified user. It will be checked if - * the experiments are of specified type and if the user has USER access rights. - */ - public void processProteinResultDataSets(String sessionToken, String userID, - String dataSetProcessingKey, String experimentTypeCode, long[] experimentIDs); - - /** - * Logs current user out. - */ - public void logout(); - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/api/v1/ProteomicsDataApiFacade.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/api/v1/ProteomicsDataApiFacade.java deleted file mode 100644 index f80f15696857ea7baf404a07586ccd1f02949e13..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/api/v1/ProteomicsDataApiFacade.java +++ /dev/null @@ -1,168 +0,0 @@ -/* - * Copyright 2010 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.client.api.v1; - -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.Set; - -import ch.systemsx.cisd.openbis.generic.shared.api.v1.IGeneralInformationService; -import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.Project; -import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.Role; -import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.SpaceWithProjectsAndRoleAssignments; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.api.v1.IProteomicsDataService; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.api.v1.dto.DataSet; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.api.v1.dto.DataStoreServerProcessingPluginInfo; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.api.v1.dto.Experiment; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.api.v1.dto.MsInjectionDataInfo; - -/** - * @author Franz-Josef Elmer - */ -class ProteomicsDataApiFacade implements IProteomicsDataApiFacade -{ - private static final String USER_ROLE_SET = "SPACE_USER"; - - private final IProteomicsDataService service; - - private final IGeneralInformationService generalInfoService; - - private final String sessionToken; - - ProteomicsDataApiFacade(IProteomicsDataService service, - IGeneralInformationService generalInfoService, String sessionToken) - { - this.service = service; - this.generalInfoService = generalInfoService; - this.sessionToken = sessionToken; - } - - @Override - public String getSessionToken() - { - return sessionToken; - } - - @Override - public List<DataStoreServerProcessingPluginInfo> listDataStoreServerProcessingPluginInfos() - { - return service.listDataStoreServerProcessingPluginInfos(sessionToken); - } - - @Override - public List<MsInjectionDataInfo> listRawDataSamples(String userID) - { - return service.listRawDataSamples(sessionToken, userID); - } - - @Override - public List<MsInjectionDataInfo> listAllRawDataSamples(String userID) - { - return service.listAllRawDataSamples(sessionToken, userID); - } - - @Override - @SuppressWarnings("deprecation") - public void processingRawData(String userID, String dataSetProcessingKey, - long[] rawDataSampleIDs, String dataSetType) - { - service.processingRawData(sessionToken, userID, dataSetProcessingKey, rawDataSampleIDs, - dataSetType); - } - - @Override - public void processDataSets(String userID, String dataSetProcessingKey, - List<String> dataSetCodes) - { - service.processDataSets(sessionToken, userID, dataSetProcessingKey, dataSetCodes); - } - - @Override - public List<Project> listProjects(String userID) - { - Map<String, Set<Role>> namedRoleSets = generalInfoService.listNamedRoleSets(sessionToken); - Set<Role> allowedRoles = namedRoleSets.get(USER_ROLE_SET); - if (allowedRoles == null) - { - throw new IllegalStateException("Role set " + USER_ROLE_SET + " not known."); - } - - List<SpaceWithProjectsAndRoleAssignments> spaces = - generalInfoService.listSpacesWithProjectsAndRoleAssignments(sessionToken, null); - List<Project> projects = new ArrayList<Project>(); - for (SpaceWithProjectsAndRoleAssignments space : spaces) - { - Set<Role> roles = space.getRoles(userID); - roles.retainAll(allowedRoles); - if (roles.isEmpty() == false) - { - for (ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.Project project : space - .getProjects()) - { - projects.add(new Project(project.getId(), project.getPermId(), space.getCode(), - project.getCode(), project.getDescription())); - } - } - } - return projects; - } - - @Override - @SuppressWarnings("deprecation") - public List<Experiment> listSearchExperiments(String userID) - { - return service.listSearchExperiments(sessionToken, userID); - } - - @Override - public List<Experiment> listExperiments(@SuppressWarnings("hiding") String sessionToken, - String userID, String experimentTypeCode) - { - return service.listExperiments(sessionToken, userID, experimentTypeCode); - } - - @Override - public List<DataSet> listDataSetsByExperiment(String userID, long experimentID) - { - return service.listDataSetsByExperiment(sessionToken, userID, experimentID); - } - - @Override - @SuppressWarnings("deprecation") - public void processSearchData(String userID, String dataSetProcessingKey, - long[] searchExperimentIDs) - { - service.processSearchData(sessionToken, userID, dataSetProcessingKey, searchExperimentIDs); - } - - @Override - public void processProteinResultDataSets(@SuppressWarnings("hiding") String sessionToken, - String userID, String dataSetProcessingKey, String experimentTypeCode, - long[] experimentIDs) - { - service.processProteinResultDataSets(sessionToken, userID, dataSetProcessingKey, - experimentTypeCode, experimentIDs); - } - - @Override - public void logout() - { - generalInfoService.logout(sessionToken); - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/api/v1/ProteomicsDataApiTest.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/api/v1/ProteomicsDataApiTest.java deleted file mode 100644 index 548725f59ccbf85ced641da9588ee057447d3b71..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/api/v1/ProteomicsDataApiTest.java +++ /dev/null @@ -1,130 +0,0 @@ -/* - * Copyright 2010 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.client.api.v1; - -import java.util.Date; -import java.util.List; -import java.util.Map; -import java.util.Set; - -import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.Project; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.api.v1.dto.DataSet; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.api.v1.dto.DataStoreServerProcessingPluginInfo; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.api.v1.dto.Experiment; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.api.v1.dto.MsInjectionDataInfo; - -/** - * Example of usage of Proteomics Data API. - * - * @author Franz-Josef Elmer - */ -public class ProteomicsDataApiTest -{ - @SuppressWarnings("deprecation") - public static void main(String[] args) - { - if (args.length != 4) - { - System.err.println("Usage: <openbis-server-url> <login id> <password> <user id>"); - return; - } - - String serverURL = args[0]; - String loginID = args[1]; - String password = args[2]; - String userID = args[3]; - IProteomicsDataApiFacade facade = FacadeFactory.create(serverURL, loginID, password); - - System.out.println("MS_INJECTION samples:"); - List<MsInjectionDataInfo> rawDataSamples = facade.listRawDataSamples(userID); - for (MsInjectionDataInfo info : rawDataSamples) - { - Map<String, Date> latestDataSets = info.getLatestDataSetRegistrationDates(); - if (latestDataSets.isEmpty() == false) - { - System.out.println(" " + info.getMsInjectionSampleCode() + " -> " - + info.getBiologicalSampleIdentifier() + " -> " - + info.getBiologicalExperimentIdentifier()); - Experiment experiment = info.getBiologicalExperiment(); - if (experiment != null) - { - System.out.println(" biological experiment: " + experiment.getCode() + " " - + experiment.getProperties()); - } - System.out.println(" latest data sets: " - + info.getLatestDataSetRegistrationDates()); - Set<DataSet> dataSets = info.getDataSets(); - for (DataSet dataSet : dataSets) - { - print(dataSet, " "); - } - } - } - - System.out.println("DSS processing plugins:"); - List<DataStoreServerProcessingPluginInfo> infos = - facade.listDataStoreServerProcessingPluginInfos(); - String dataSetProcessingKey = null; - for (DataStoreServerProcessingPluginInfo info : infos) - { - System.out.println(" key:" + info.getKey() + ", label:'" + info.getLabel() - + "', data set types:" + info.getDatasetTypeCodes()); - if (info.getDatasetTypeCodes().contains("PROT_RESULT")) - { - dataSetProcessingKey = info.getKey(); - } - } - - System.out.println("Projects:"); - List<Project> projects = facade.listProjects(userID); - for (Project project : projects) - { - System.out.println(project); - } - - System.out.println("Search Experiments:"); - List<Experiment> experiments = facade.listSearchExperiments(userID); - long[] ids = new long[experiments.size()]; - for (int i = 0; i < experiments.size(); i++) - { - Experiment experiment = experiments.get(i); - System.out.println(experiment.getSpaceCode() + "/" + experiment.getProjectCode() + "/" - + experiment.getCode() + " [" + experiment.getId() + ", " - + experiment.getRegistrationDate() + "] " + experiment.getProperties()); - ids[i] = experiment.getId(); - } - - if (dataSetProcessingKey != null) - { - System.out.println("Process search data of " + ids.length + " experiments"); - facade.processSearchData(userID, dataSetProcessingKey, ids); - } - - facade.logout(); - } - - private static void print(DataSet dataSet, String indentation) - { - System.out.println(indentation + dataSet.getCode() + " " + dataSet.getType() + " " - + dataSet.getRegistrationDate() + " " + dataSet.getProperties()); - Set<DataSet> children = dataSet.getChildren(); - for (DataSet child : children) - { - print(child, indentation + " "); - } - } -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/api/v1/package.html b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/api/v1/package.html deleted file mode 100644 index 4dd85ccc62485056fe423b3fe82c5e3954239a2b..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/api/v1/package.html +++ /dev/null @@ -1,5 +0,0 @@ -<html> -<body> -Proteomics Data API Facade -</body> -</html> \ No newline at end of file diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/Constants.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/Constants.java deleted file mode 100644 index e547f038f5eb15119d7f1d8b96dd6271e5b3efa4..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/Constants.java +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright 2010 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client; - -/** - * Constants used by client and server of Web presentation layer. - * - * @author Franz-Josef Elmer - */ -public class Constants -{ - - public static final String TECHNOLOGY_NAME = "proteomics"; - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/IPhosphoNetXClientService.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/IPhosphoNetXClientService.java deleted file mode 100644 index aeba0b11e815dafc445434f1d429835df61e572b..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/IPhosphoNetXClientService.java +++ /dev/null @@ -1,119 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client; - -import java.util.List; - -import ch.systemsx.cisd.openbis.generic.client.web.client.IClientService; -import ch.systemsx.cisd.openbis.generic.client.web.client.dto.DefaultResultSetConfig; -import ch.systemsx.cisd.openbis.generic.client.web.client.dto.IResultSetConfig; -import ch.systemsx.cisd.openbis.generic.client.web.client.dto.TableExportCriteria; -import ch.systemsx.cisd.openbis.generic.client.web.client.dto.TypedTableResultSet; -import ch.systemsx.cisd.openbis.generic.client.web.client.exception.UserFailureException; -import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewSample; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModelRowWithObject; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Vocabulary; -import ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.dto.ListProteinByExperimentAndReferenceCriteria; -import ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.dto.ListProteinByExperimentCriteria; -import ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.dto.ListProteinSequenceCriteria; -import ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.dto.ListProteinSummaryByExperimentCriteria; -import ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.dto.ListSampleAbundanceByProteinCriteria; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.AbundanceColumnDefinition; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.DataSetProtein; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.ProteinByExperiment; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.ProteinInfo; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.ProteinRelatedSample; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.ProteinSequence; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.ProteinSummary; - -/** - * * Service interface for the PhosphoNetX GWT client. - * <p> - * Each method should declare throwing {@link UserFailureException}. The authorization framework can throw it when the user has insufficient - * privileges. If it is not marked, the GWT client will report unexpected exception. - * </p> - * - * @author Franz-Josef Elmer - */ -public interface IPhosphoNetXClientService extends IClientService -{ - public TypedTableResultSet<Sample> listParentlessMsInjectionSamples( - DefaultResultSetConfig<String, TableModelRowWithObject<Sample>> criteria) - throws UserFailureException; - - public TypedTableResultSet<Sample> listBiologicalSamples( - DefaultResultSetConfig<String, TableModelRowWithObject<Sample>> criteria) - throws UserFailureException; - - public void linkSamples(Sample parentSample, List<Sample> childSamples) throws UserFailureException; - - public void createAndLinkSamples(NewSample newBiologicalSample, - List<Sample> msInjectionSamples) throws UserFailureException; - - public Vocabulary getTreatmentTypeVocabulary() throws UserFailureException; - - public List<AbundanceColumnDefinition> getAbundanceColumnDefinitionsForProteinByExperiment( - TechId experimentID, String treatmentTypeOrNull) throws UserFailureException; - - public TypedTableResultSet<ProteinInfo> listProteinsByExperiment(ListProteinByExperimentCriteria criteria) - throws UserFailureException; - - public String prepareExportProteins(TableExportCriteria<TableModelRowWithObject<ProteinInfo>> exportCriteria) - throws UserFailureException; - - public TypedTableResultSet<ProteinSummary> listProteinSummariesByExperiment( - ListProteinSummaryByExperimentCriteria criteria) throws UserFailureException; - - public String prepareExportProteinSummary(TableExportCriteria<TableModelRowWithObject<ProteinSummary>> exportCriteria) - throws UserFailureException; - - public ProteinByExperiment getProteinByExperiment(TechId experimentID, TechId proteinReferenceID) - throws UserFailureException; - - public TypedTableResultSet<ProteinSequence> listSequencesByProteinReference( - ListProteinSequenceCriteria criteria) throws UserFailureException; - - public String prepareExportProteinSequences( - TableExportCriteria<TableModelRowWithObject<ProteinSequence>> exportCriteria) - throws UserFailureException; - - public TypedTableResultSet<DataSetProtein> listProteinsByExperimentAndReference( - ListProteinByExperimentAndReferenceCriteria criteria) throws UserFailureException; - - public String prepareExportDataSetProteins( - TableExportCriteria<TableModelRowWithObject<DataSetProtein>> exportCriteria) - throws UserFailureException; - - public TypedTableResultSet<ProteinRelatedSample> listProteinRelatedSamplesByProtein( - ListSampleAbundanceByProteinCriteria criteria) throws UserFailureException; - - public String prepareExportProteinRelatedSamples( - TableExportCriteria<TableModelRowWithObject<ProteinRelatedSample>> exportCriteria) - throws UserFailureException; - - public TypedTableResultSet<Sample> listRawDataSamples( - IResultSetConfig<String, TableModelRowWithObject<Sample>> criteria) throws UserFailureException; - - public String prepareExportRawDataSamples(TableExportCriteria<TableModelRowWithObject<Sample>> exportCriteria) - throws UserFailureException; - - public void processRawData(String dataSetProcessingKey, long[] rawDataSampleIDs, - String dataSetType) throws UserFailureException; - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/IPhosphoNetXClientServiceAsync.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/IPhosphoNetXClientServiceAsync.java deleted file mode 100644 index 7640def96dfeb382bbf48a454582cacbb16326e4..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/IPhosphoNetXClientServiceAsync.java +++ /dev/null @@ -1,137 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client; - -import java.util.List; - -import com.google.gwt.user.client.rpc.AsyncCallback; - -import ch.systemsx.cisd.openbis.generic.client.web.client.IClientServiceAsync; -import ch.systemsx.cisd.openbis.generic.client.web.client.dto.DefaultResultSetConfig; -import ch.systemsx.cisd.openbis.generic.client.web.client.dto.IResultSetConfig; -import ch.systemsx.cisd.openbis.generic.client.web.client.dto.TableExportCriteria; -import ch.systemsx.cisd.openbis.generic.client.web.client.dto.TypedTableResultSet; -import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewSample; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModelRowWithObject; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Vocabulary; -import ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.dto.ListProteinByExperimentAndReferenceCriteria; -import ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.dto.ListProteinByExperimentCriteria; -import ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.dto.ListProteinSequenceCriteria; -import ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.dto.ListProteinSummaryByExperimentCriteria; -import ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.dto.ListSampleAbundanceByProteinCriteria; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.AbundanceColumnDefinition; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.DataSetProtein; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.ProteinByExperiment; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.ProteinInfo; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.ProteinRelatedSample; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.ProteinSequence; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.ProteinSummary; - -/** - * @author Franz-Josef Elmer - */ -public interface IPhosphoNetXClientServiceAsync extends IClientServiceAsync -{ - /** @see IPhosphoNetXClientService#listParentlessMsInjectionSamples(DefaultResultSetConfig) */ - public void listParentlessMsInjectionSamples( - DefaultResultSetConfig<String, TableModelRowWithObject<Sample>> criteria, - AsyncCallback<TypedTableResultSet<Sample>> callback); - - /** @see IPhosphoNetXClientService#listBiologicalSamples(DefaultResultSetConfig) */ - public void listBiologicalSamples( - DefaultResultSetConfig<String, TableModelRowWithObject<Sample>> criteria, - AsyncCallback<TypedTableResultSet<Sample>> callback); - - /** @see IPhosphoNetXClientService#linkSamples(Sample, List) */ - public void linkSamples(Sample parentSample, List<Sample> childSamples, AsyncCallback<Void> callback); - - /** @see IPhosphoNetXClientService#createAndLinkSamples(NewSample, List) */ - public void createAndLinkSamples(NewSample newBiologicalSample, - List<Sample> msInjectionSamples, AsyncCallback<Void> callback); - - /** @see IPhosphoNetXClientService#getTreatmentTypeVocabulary() */ - public void getTreatmentTypeVocabulary(AsyncCallback<Vocabulary> callback); - - /** - * @see IPhosphoNetXClientService#getAbundanceColumnDefinitionsForProteinByExperiment(TechId, String) - */ - public void getAbundanceColumnDefinitionsForProteinByExperiment(TechId experimentID, - String treatmentTypeOrNull, - AsyncCallback<List<AbundanceColumnDefinition>> callback); - - /** @see IPhosphoNetXClientService#listProteinsByExperiment(ListProteinByExperimentCriteria) */ - public void listProteinsByExperiment(ListProteinByExperimentCriteria criteria, - AsyncCallback<TypedTableResultSet<ProteinInfo>> callback); - - /** @see IPhosphoNetXClientService#prepareExportProteins(TableExportCriteria) */ - public void prepareExportProteins( - TableExportCriteria<TableModelRowWithObject<ProteinInfo>> exportCriteria, - AsyncCallback<String> callback); - - /** @see IPhosphoNetXClientService#listProteinSummariesByExperiment(ListProteinSummaryByExperimentCriteria) */ - public void listProteinSummariesByExperiment(ListProteinSummaryByExperimentCriteria criteria, - AsyncCallback<TypedTableResultSet<ProteinSummary>> callback); - - /** @see IPhosphoNetXClientService#prepareExportProteinSummary(TableExportCriteria) */ - public void prepareExportProteinSummary( - TableExportCriteria<TableModelRowWithObject<ProteinSummary>> exportCriteria, - AsyncCallback<String> callback); - - /** @see IPhosphoNetXClientService#getProteinByExperiment(TechId, TechId) */ - public void getProteinByExperiment(TechId experimentID, TechId proteinReferenceID, - AsyncCallback<ProteinByExperiment> callback); - - /** @see IPhosphoNetXClientService#listSequencesByProteinReference(ListProteinSequenceCriteria) */ - public void listSequencesByProteinReference(ListProteinSequenceCriteria criteria, - AsyncCallback<TypedTableResultSet<ProteinSequence>> callback); - - /** @see IPhosphoNetXClientService#prepareExportProteinSequences(TableExportCriteria) */ - public void prepareExportProteinSequences( - TableExportCriteria<TableModelRowWithObject<ProteinSequence>> exportCriteria, - AsyncCallback<String> callback); - - /** @see IPhosphoNetXClientService#listProteinsByExperimentAndReference(ListProteinByExperimentAndReferenceCriteria) */ - public void listProteinsByExperimentAndReference( - ListProteinByExperimentAndReferenceCriteria criteria, - AsyncCallback<TypedTableResultSet<DataSetProtein>> callback); - - /** @see IPhosphoNetXClientService#prepareExportDataSetProteins(TableExportCriteria) */ - public void prepareExportDataSetProteins(TableExportCriteria<TableModelRowWithObject<DataSetProtein>> exportCriteria, - AsyncCallback<String> callback); - - /** @see IPhosphoNetXClientService#listProteinRelatedSamplesByProtein(ListSampleAbundanceByProteinCriteria) */ - public void listProteinRelatedSamplesByProtein(ListSampleAbundanceByProteinCriteria criteria, - AsyncCallback<TypedTableResultSet<ProteinRelatedSample>> callback); - - /** @see IPhosphoNetXClientService#prepareExportProteinRelatedSamples(TableExportCriteria) */ - public void prepareExportProteinRelatedSamples( - TableExportCriteria<TableModelRowWithObject<ProteinRelatedSample>> exportCriteria, - AsyncCallback<String> callback); - - /** @see IPhosphoNetXClientService#listRawDataSamples(IResultSetConfig) */ - public void listRawDataSamples(IResultSetConfig<String, TableModelRowWithObject<Sample>> criteria, - AsyncCallback<TypedTableResultSet<Sample>> callback); - - /** @see IPhosphoNetXClientService#prepareExportRawDataSamples(TableExportCriteria) */ - public void prepareExportRawDataSamples(TableExportCriteria<TableModelRowWithObject<Sample>> exportCriteria, - AsyncCallback<String> callback); - - /** @see IPhosphoNetXClientService#processRawData(String, long[], String) */ - public void processRawData(String dataSetProcessingKey, long[] rawDataSampleIDs, String dataSetType, AsyncCallback<Void> callback); -} \ No newline at end of file diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/application/AccessionNumberURLCreator.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/application/AccessionNumberURLCreator.java deleted file mode 100644 index 9b4caaffd0a342129713096bcfb505cb97190f30..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/application/AccessionNumberURLCreator.java +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.application; - -import java.util.HashMap; -import java.util.Map; - -/** - * @author Franz-Josef Elmer - */ -class AccessionNumberURLCreator -{ - private static final String UNIPROT_URL_TEMPLATE = "http://www.uniprot.org/uniprot/$id"; - - private static final String UNIPROT_QUERY_URL_TEMPLATE = "http://www.uniprot.org/uniprot/?query=$id"; - - private static final Map<String, String> URL_TEMPLATES = createURLTemplates(); - - private static final Map<String, String> createURLTemplates() - { - HashMap<String, String> map = new HashMap<String, String>(); - map.put("sp", UNIPROT_URL_TEMPLATE); - map.put("tr", UNIPROT_URL_TEMPLATE); - map.put("ipi", UNIPROT_QUERY_URL_TEMPLATE); - map.put("ens", UNIPROT_QUERY_URL_TEMPLATE); - map.put("rs", UNIPROT_QUERY_URL_TEMPLATE); - map.put("ll", UNIPROT_QUERY_URL_TEMPLATE); - map.put("fb", UNIPROT_QUERY_URL_TEMPLATE); - map.put("gi", "http://www.ncbi.nlm.nih.gov/protein/$id"); - map.put("isb", "http://www.ebi.ac.uk/ebisearch/search.ebi?db=proteinSequences&t=$id"); - return map; - } - - static String tryToCreateURL(String typeOrNull, String accessionNumber) - { - if (typeOrNull == null) - { - return eval(UNIPROT_URL_TEMPLATE, accessionNumber); - } - String template = URL_TEMPLATES.get(typeOrNull); - return template == null ? null : eval(template, accessionNumber); - } - - private static String eval(String template, String value) - { - return template.replaceAll("\\$id", value); - } -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/application/ClientPluginFactory.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/application/ClientPluginFactory.java deleted file mode 100644 index cfd0dacffd13ff3685bb719fa644c7f00b55ce3b..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/application/ClientPluginFactory.java +++ /dev/null @@ -1,244 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.application; - -import java.util.Arrays; -import java.util.Collections; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; - -import ch.systemsx.cisd.openbis.generic.client.web.client.ICommonClientServiceAsync; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.AbstractClientPluginFactory; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ActionContext; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.Dict; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.AbstractTabItemFactory; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DatabaseModificationAwareComponent; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DatabaseModificationAwareWidget; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DefaultTabItem; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.ITabItem; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.help.HelpPageIdentifier; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.help.HelpPageIdentifier.HelpPageAction; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.help.HelpPageIdentifier.HelpPageDomain; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.plugin.IClientPlugin; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.plugin.IModule; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.AbstractRegistrationForm; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.AbstractViewer; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.framework.LinkExtractor; -import ch.systemsx.cisd.openbis.generic.shared.basic.IEntityInformationHolderWithPermId; -import ch.systemsx.cisd.openbis.generic.shared.basic.IIdAndCodeHolder; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.BasicEntityType; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityKind; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExperimentType; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.api.IManagedInputWidgetDescription; -import ch.systemsx.cisd.openbis.plugin.generic.client.web.client.IGenericClientServiceAsync; -import ch.systemsx.cisd.openbis.plugin.generic.client.web.client.application.AbstractGenericEntityRegistrationForm; -import ch.systemsx.cisd.openbis.plugin.generic.client.web.client.application.DelegatedClientPlugin; -import ch.systemsx.cisd.openbis.plugin.generic.client.web.client.application.GenericViewContext; -import ch.systemsx.cisd.openbis.plugin.generic.client.web.client.application.experiment.GenericExperimentEditForm; -import ch.systemsx.cisd.openbis.plugin.generic.client.web.client.application.experiment.GenericExperimentRegistrationForm; -import ch.systemsx.cisd.openbis.plugin.generic.client.web.client.application.experiment.GenericExperimentViewer; -import ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.IPhosphoNetXClientServiceAsync; - -/** - * @author Franz-Josef Elmer - */ -public class ClientPluginFactory extends AbstractClientPluginFactory<ViewContext> -{ - - public ClientPluginFactory(IViewContext<ICommonClientServiceAsync> originalViewContext) - { - super(originalViewContext); - } - - @Override - protected ViewContext createViewContext( - IViewContext<ICommonClientServiceAsync> originalViewContext) - { - return new ViewContext(originalViewContext); - } - - @Override - public boolean isEnabled() - { - return checkEnabledProperty("proteomics"); - } - - @Override - public IModule maybeCreateModule() - { - return new PhosphoNetXModule(getViewContext()); - } - - @Override - public Set<String> getEntityTypeCodes(EntityKind entityKind) - { - if (entityKind == EntityKind.EXPERIMENT) - { - return new HashSet<String>(Arrays.asList("MS_SEARCH", "MS_QUANTIFICATION")); - } - return Collections.emptySet(); - } - - @Override - @SuppressWarnings("unchecked") - public <T extends BasicEntityType, I extends IIdAndCodeHolder> IClientPlugin<T, I> createClientPlugin( - EntityKind entityKind) - { - if (EntityKind.EXPERIMENT.equals(entityKind)) - { - return (IClientPlugin<T, I>) new ExperimentClientPlugin(getViewContext()); - } - throw new UnsupportedOperationException("IClientPlugin for entity kind '" + entityKind - + "' not implemented yet."); - } - - // - // Helper classes - // - - private final class ExperimentClientPlugin extends DelegatedClientPlugin<ExperimentType> - { - private ExperimentClientPlugin(IViewContext<IPhosphoNetXClientServiceAsync> viewContext) - { - super(viewContext, EntityKind.EXPERIMENT); - } - - // - // IViewClientPlugin - // - - @Override - public final AbstractTabItemFactory createEntityViewer( - final IEntityInformationHolderWithPermId entity) - { - return new AbstractTabItemFactory() - { - @Override - public ITabItem create() - { - final DatabaseModificationAwareComponent experimentViewer = - ExperimentViewer.createComponent(getViewContext(), entity.getEntityType(), - entity); - return DefaultTabItem.create(getTabTitle(), experimentViewer, - getViewContext(), false); - } - - @Override - public String getId() - { - return GenericExperimentViewer.createId(entity); - } - - @Override - public HelpPageIdentifier getHelpPageIdentifier() - { - return new HelpPageIdentifier(HelpPageDomain.EXPERIMENT, - HelpPageAction.VIEW); - } - - @Override - public String getTabTitle() - { - return getViewerTitle(Dict.EXPERIMENT, entity); - } - - @Override - public String tryGetLink() - { - return LinkExtractor.tryExtract(entity); - } - }; - } - - @Override - public DatabaseModificationAwareWidget createRegistrationForEntityType( - ExperimentType entityType, - Map<String, List<IManagedInputWidgetDescription>> inputWidgetDescriptions, - ActionContext context) - { - GenericExperimentRegistrationForm form = - new GenericExperimentRegistrationForm(getGenericViewContext(), - inputWidgetDescriptions, context, entityType); - return new DatabaseModificationAwareWidget(form, form); - } - - @Override - public AbstractTabItemFactory createEntityEditor(final IIdAndCodeHolder identifiable) - { - return new AbstractTabItemFactory() - { - @Override - public ITabItem create() - { - DatabaseModificationAwareComponent component = - GenericExperimentEditForm.create(getGenericViewContext(), - identifiable); - return DefaultTabItem.create(getTabTitle(), component, getViewContext(), - true); - } - - @Override - public String getId() - { - return AbstractGenericEntityRegistrationForm.createId(identifiable, - EntityKind.EXPERIMENT); - } - - @Override - public HelpPageIdentifier getHelpPageIdentifier() - { - return new HelpPageIdentifier(HelpPageDomain.EXPERIMENT, - HelpPageAction.EDIT); - } - - @Override - public String getTabTitle() - { - return getEditorTitle(Dict.EXPERIMENT, identifiable); - } - - @Override - public String tryGetLink() - { - return null; - } - }; - } - - private String getViewerTitle(final String entityKindDictKey, - final IIdAndCodeHolder identifiable) - { - return AbstractViewer.getTitle(getViewContext(), entityKindDictKey, identifiable); - } - - private String getEditorTitle(final String entityKindDictKey, - final IIdAndCodeHolder identifiable) - { - return AbstractRegistrationForm.getEditTitle(getViewContext(), entityKindDictKey, - identifiable); - } - - private IViewContext<IGenericClientServiceAsync> getGenericViewContext() - { - return new GenericViewContext(getViewContext().getCommonViewContext()); - } - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/application/DataSetProteinGrid.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/application/DataSetProteinGrid.java deleted file mode 100644 index 107f6cbbba41c24fe9d96f58e8b2588367883ac2..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/application/DataSetProteinGrid.java +++ /dev/null @@ -1,118 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.application; - -import java.util.Arrays; -import java.util.List; - -import ch.systemsx.cisd.openbis.generic.client.web.client.application.AbstractAsyncCallback; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.TypedTableGrid; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.IDisposableComponent; -import ch.systemsx.cisd.openbis.generic.client.web.client.dto.DefaultResultSetConfig; -import ch.systemsx.cisd.openbis.generic.client.web.client.dto.GenericConstants; -import ch.systemsx.cisd.openbis.generic.client.web.client.dto.TableExportCriteria; -import ch.systemsx.cisd.openbis.generic.client.web.client.dto.TypedTableResultSet; -import ch.systemsx.cisd.openbis.generic.shared.basic.IIdAndCodeHolder; -import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseModificationKind; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModelRowWithObject; -import ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.IPhosphoNetXClientServiceAsync; -import ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.dto.DataSetProteinGridColumnIDs; -import ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.dto.ListProteinByExperimentAndReferenceCriteria; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.DataSetProtein; - -/** - * @author Franz-Josef Elmer - */ -class DataSetProteinGrid extends TypedTableGrid<DataSetProtein> -{ - private static final String PREFIX = GenericConstants.ID_PREFIX + "data-set-protein-browser"; - - public static final String BROWSER_ID = PREFIX + "_main"; - - public static final String GRID_ID = PREFIX + TypedTableGrid.GRID_POSTFIX; - - static IDisposableComponent create(IViewContext<IPhosphoNetXClientServiceAsync> viewContext, - IIdAndCodeHolder experimentIdOrNull, TechId proteinReferenceID) - { - return new DataSetProteinGrid(viewContext, experimentIdOrNull, proteinReferenceID) - .asDisposableWithoutToolbar(); - } - - private static String createWidgetID(IIdAndCodeHolder experimentIdOrNull, TechId proteinReferenceID) - { - return "-" + (experimentIdOrNull == null ? "" : experimentIdOrNull.getId() + "-") - + proteinReferenceID; - } - - private final IViewContext<IPhosphoNetXClientServiceAsync> specificViewContext; - - private ListProteinByExperimentAndReferenceCriteria criteria; - - private DataSetProteinGrid(IViewContext<IPhosphoNetXClientServiceAsync> viewContext, - IIdAndCodeHolder experimentIdOrNull, TechId proteinReferenceID) - { - super(viewContext.getCommonViewContext(), BROWSER_ID - + createWidgetID(experimentIdOrNull, proteinReferenceID), true, - PhosphoNetXDisplayTypeIDGenerator.DATA_SET_PROTEIN_BROWSER_GRID); - specificViewContext = viewContext; - criteria = new ListProteinByExperimentAndReferenceCriteria(); - if (experimentIdOrNull != null) - { - criteria.setExperimentID(new TechId(experimentIdOrNull)); - } - criteria.setProteinReferenceID(proteinReferenceID); - } - - @Override - protected String translateColumnIdToDictionaryKey(String columnID) - { - return DataSetProteinGridColumnIDs.FDR.equals(columnID) ? "false_discovery_rate_column" - : columnID.toLowerCase(); - } - - @Override - protected List<String> getColumnIdsOfFilters() - { - return Arrays.asList(); - } - - @Override - protected void listTableRows( - DefaultResultSetConfig<String, TableModelRowWithObject<DataSetProtein>> resultSetConfig, - AbstractAsyncCallback<TypedTableResultSet<DataSetProtein>> callback) - { - criteria.copyPagingConfig(resultSetConfig); - specificViewContext.getService().listProteinsByExperimentAndReference(criteria, callback); - } - - @Override - protected void prepareExportEntities( - TableExportCriteria<TableModelRowWithObject<DataSetProtein>> exportCriteria, - AbstractAsyncCallback<String> callback) - { - specificViewContext.getService().prepareExportDataSetProteins(exportCriteria, callback); - } - - @Override - public DatabaseModificationKind[] getRelevantModifications() - { - return new DatabaseModificationKind[0]; - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/application/Dict.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/application/Dict.java deleted file mode 100644 index 1609b15b473657d1e3cdbc83894961b8af9646fc..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/application/Dict.java +++ /dev/null @@ -1,114 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.application; - -/** - * @author Franz-Josef Elmer - */ -public class Dict -{ - public static final String QUERY_MENU_TITLE = "query_menu_title"; - - public static final String SELECTED_EXPERIMENT_LABEL = "selected_experiment_label"; - - public static final String FDR_FILTER_LABEL = "false_discovery_rate_filter_label"; - - public static final String AGGREGATE_FUNCTION_LABEL = "aggregate_function_label"; - - public static final String AGGREGATE_ON_TREATMENT_TYPE_LABEL = "aggregate_on_treatment_type_label"; - - public static final String AGGREGATE_ORIGINAL_LABEL = "aggregate_original_label"; - - public static final String ACCESSION_NUMBER = "accession_number"; - - public static final String PROTEIN_DESCRIPTION = "protein_description"; - - public static final String COVERAGE = "coverage"; - - public static final String FALSE_DISCOVERY_RATE = "false_discovery_rate"; - - public static final String FDR_COMBO_INFO = "fdr_combo_info"; - - public static final String DATA_SET = "data_set"; - - public static final String PROTEIN_BROWSER = "protein_browser"; - - public static final String PROTEIN_SUMMARY = "protein_summary"; - - // Experiment Viewer - - public static final String DATA_SET_PROCESSING_SECTION_TITLE = "data_set_processing_section_title"; - - // Protein Viewer - public static final String PROTEIN_DETAILS_WAITING_MESSAGE = "loading_protein_details_waiting_message"; - - public static final String PROTEINS_SECTION = "proteins_section"; - - public static final String PRIMARY_PROTEIN = "primary_protein"; - - public static final String PROTEIN_IN_EXPERIMENT_TAB_LABEL = "protein_in_experiment_tab_label"; - - public static final String EXPERIMENT_LABEL = "experiment_label"; - - public static final String SEQUENCE_SHORT_NAME = "sequence_short_name"; - - public static final String DATABASE_NAME_AND_VERSION = "database_name_and_version"; - - public static final String INDISTINGUISHABLE_PROTEINS = "indistinguishable_proteins"; - - public static final String SEQUENCE = "sequence"; - - public static final String SEQUENCES = "sequences"; - - public static final String DATA_SET_PROTEINS = "data_set_proteins"; - - public static final String DATA_SET_PERM_ID = "data_set_perm_id"; - - public static final String PROTEIN_COUNT = "protein_count"; - - public static final String PEPTIDE_COUNT = "peptide_count"; - - public static final String PEPTIDES = "peptides"; - - public static final String SEQUENCE_NAME = "sequence_name"; - - public static final String FDR = "false_discovery_rate_column"; - - // Protein Detail View - public static final String PROBABILITY = "protein_probability"; - - public static final String BUTTON_DELETE_PROTEIN = "button_delete_protein"; - - // SampleAbundance Browser - - public static final String ABUNDANCE = "abundance"; - - // RawDataSample Browser - - public static final String BIOLOGICAL_SAMPLE_IDENTIFIER = "biological_sample_identifier"; - - public static final String MS_INJECTION_SAMPLE_CODE = "ms_injection_sample_code"; - - public static final String COPY_DATA_SETS_BUTTON_LABEL = "copy_data_sets_button_label"; - - public static final String COPY_DATA_SETS_TITLE = "copy_data_sets_title"; - - public static final String COPY_DATA_SETS_MESSAGE = "copy_data_sets_message"; - - public static final String COPY_DATA_SETS_DATA_SET_TYPE_FIELD = "copy_data_sets_data_set_type_field"; - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/application/DisplayTypeIDGenerator.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/application/DisplayTypeIDGenerator.java deleted file mode 100644 index 27246608c0e867898f03f9c5284ff184e4c3aa4a..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/application/DisplayTypeIDGenerator.java +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.application; - -import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.IDisplayTypeIDGenerator; - -/** - * Enum for all generic {@link IDisplayTypeIDGenerator}s. - * - * @author Franz-Josef Elmer - */ -public enum DisplayTypeIDGenerator implements IDisplayTypeIDGenerator -{ - PROTEIN_SECTION("protein-section"), - - ; - - private final String genericNameOrPrefix; - - private DisplayTypeIDGenerator(String genericNameOrPrefix) - { - this.genericNameOrPrefix = genericNameOrPrefix; - } - - @Override - public String createID() - { - return genericNameOrPrefix; - } - - @Override - public String createID(String suffix) - { - return genericNameOrPrefix + suffix; - } -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/application/ExperimentViewer.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/application/ExperimentViewer.java deleted file mode 100644 index 58501159bfbb1bd343d6a1562fcd7fc50f97670c..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/application/ExperimentViewer.java +++ /dev/null @@ -1,188 +0,0 @@ -/* - * Copyright 2010 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.application; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; - -import ch.systemsx.cisd.openbis.generic.client.web.client.application.AbstractAsyncCallback; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.DisposableTabContent; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.VoidAsyncCallback; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DatabaseModificationAwareComponent; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.renderer.LinkRenderer; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.data.ProcessingDisplayCallback; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.IDisposableComponent; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.lang.StringEscapeUtils; -import ch.systemsx.cisd.openbis.generic.client.web.client.dto.DefaultResultSetConfig; -import ch.systemsx.cisd.openbis.generic.client.web.client.dto.DisplayedOrSelectedDatasetCriteria; -import ch.systemsx.cisd.openbis.generic.client.web.client.dto.ResultSet; -import ch.systemsx.cisd.openbis.generic.client.web.client.dto.TypedTableResultSet; -import ch.systemsx.cisd.openbis.generic.shared.basic.GridRowModel; -import ch.systemsx.cisd.openbis.generic.shared.basic.IIdAndCodeHolder; -import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.AbstractExternalData; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.BasicEntityType; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataStoreServiceKind; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatastoreServiceDescription; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModelRowWithObject; -import ch.systemsx.cisd.openbis.plugin.generic.client.web.client.IGenericClientServiceAsync; -import ch.systemsx.cisd.openbis.plugin.generic.client.web.client.application.GenericViewContext; -import ch.systemsx.cisd.openbis.plugin.generic.client.web.client.application.experiment.GenericExperimentViewer; -import ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.IPhosphoNetXClientServiceAsync; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.CommonConstants; - -import com.extjs.gxt.ui.client.util.Margins; -import com.extjs.gxt.ui.client.widget.Component; -import com.extjs.gxt.ui.client.widget.ContentPanel; -import com.extjs.gxt.ui.client.widget.LayoutContainer; -import com.extjs.gxt.ui.client.widget.layout.FitLayout; -import com.extjs.gxt.ui.client.widget.layout.RowData; -import com.extjs.gxt.ui.client.widget.layout.RowLayout; -import com.google.gwt.event.dom.client.ClickEvent; -import com.google.gwt.event.dom.client.ClickHandler; -import com.google.gwt.user.client.rpc.AsyncCallback; -import com.google.gwt.user.client.ui.Widget; - -/** - * @author Franz-Josef Elmer - */ -public class ExperimentViewer extends GenericExperimentViewer -{ - public static DatabaseModificationAwareComponent createComponent( - IViewContext<IPhosphoNetXClientServiceAsync> viewContext, - BasicEntityType experimentType, IIdAndCodeHolder experimentId) - { - ExperimentViewer viewer = - new ExperimentViewer(new GenericViewContext(viewContext.getCommonViewContext()), - viewContext, experimentType, experimentId); - return new DatabaseModificationAwareComponent(viewer, viewer); - } - - private final IViewContext<IPhosphoNetXClientServiceAsync> specificViewContext; - - protected ExperimentViewer(IViewContext<IGenericClientServiceAsync> viewContext, - IViewContext<IPhosphoNetXClientServiceAsync> specificViewContext, - BasicEntityType experimentType, IIdAndCodeHolder experimentId) - { - super(viewContext, experimentType, experimentId); - this.specificViewContext = specificViewContext; - } - - @Override - protected List<DisposableTabContent> createAdditionalBrowserSectionPanels() - { - DisposableTabContent section = - new DisposableTabContent(specificViewContext.getMessage(Dict.PROTEINS_SECTION), - specificViewContext, experiment) - { - @Override - protected IDisposableComponent createDisposableContent() - { - return ProteinByExperimentBrowserGrid.create(specificViewContext, - experimentType, experiment); - } - }; - section.setIds(DisplayTypeIDGenerator.PROTEIN_SECTION); - return Collections.<DisposableTabContent> singletonList(section); - } - - @Override - protected Component tryCreateLowerLeftComponent() - { - if (viewContext.isSimpleOrEmbeddedMode()) - { - return null; // no processing in simple view mode - } - final ContentPanel contentPanel = new ContentPanel(new RowLayout()); - contentPanel.setHeading(viewContext.getMessage(Dict.DATA_SET_PROCESSING_SECTION_TITLE)); - viewContext.getCommonService().listExperimentDataSets( - new TechId(experimentId), - DefaultResultSetConfig - .<String, TableModelRowWithObject<AbstractExternalData>> createFetchAll(), true, - new AbstractAsyncCallback<TypedTableResultSet<AbstractExternalData>>(viewContext) - { - @Override - protected void process(TypedTableResultSet<AbstractExternalData> result) - { - AsyncCallback<List<DatastoreServiceDescription>> callBack = - createCallback(contentPanel, result); - viewContext.getCommonService().listDataStoreServices( - DataStoreServiceKind.PROCESSING, callBack); - - } - }); - return contentPanel; - } - - private AsyncCallback<List<DatastoreServiceDescription>> createCallback( - final ContentPanel contentPanel, TypedTableResultSet<AbstractExternalData> result) - { - ResultSet<TableModelRowWithObject<AbstractExternalData>> resultSet = result.getResultSet(); - String resultSetKey = resultSet.getResultSetKey(); - viewContext.getCommonService().removeResultSet(resultSetKey, - new VoidAsyncCallback<Void>(viewContext)); - final List<String> dataSetCodes = new ArrayList<String>(); - for (GridRowModel<TableModelRowWithObject<AbstractExternalData>> gridRowModel : resultSet.getList()) - { - dataSetCodes.add(gridRowModel.getOriginalObject().getObjectOrNull().getCode()); - } - final DisplayedOrSelectedDatasetCriteria criteria = - DisplayedOrSelectedDatasetCriteria.createSelectedItems(dataSetCodes); - return new AbstractAsyncCallback<List<DatastoreServiceDescription>>(viewContext) - { - @Override - protected void process(List<DatastoreServiceDescription> descriptions) - { - for (final DatastoreServiceDescription description : descriptions) - { - String[] dataSetTypes = description.getDatasetTypeCodes(); - for (String dataSetType : dataSetTypes) - { - if (dataSetType.equals(CommonConstants.PROT_RESULT_DATA_SET_TYPE)) - { - Widget link = createLink(description, criteria); - LayoutContainer wrapper = new LayoutContainer(new FitLayout()); - wrapper.add(link); - contentPanel.add(wrapper, new RowData(1, -1, new Margins(5))); - } - } - } - contentPanel.layout(); - } - }; - } - - private Widget createLink(final DatastoreServiceDescription description, - final DisplayedOrSelectedDatasetCriteria criteria) - { - String href = ""; - ClickHandler listener = new ClickHandler() - { - @Override - public void onClick(ClickEvent event) - { - viewContext.getCommonService().processDatasets(description, criteria, - new ProcessingDisplayCallback(viewContext)); - } - }; - String label = StringEscapeUtils.unescapeHtml(description.getLabel()); - return LinkRenderer.getLinkWidget(label, listener, href); - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/application/PhosphoNetXClient.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/application/PhosphoNetXClient.java deleted file mode 100644 index 5bad10fedb9fde032101da17e1c758fd020ac8c8..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/application/PhosphoNetXClient.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.application; - -import ch.systemsx.cisd.openbis.generic.client.web.client.IClientServiceAsync; -import ch.systemsx.cisd.openbis.generic.client.web.client.ICommonClientServiceAsync; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.Client; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.plugin.DefaultClientPluginFactoryProvider; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.plugin.IClientPluginFactoryProvider; - -/** - * @author Franz-Josef Elmer - */ -public class PhosphoNetXClient extends Client -{ - private static final class ClientPluginFactoryProvider extends - DefaultClientPluginFactoryProvider - { - ClientPluginFactoryProvider(IViewContext<ICommonClientServiceAsync> originalViewContext) - { - super(originalViewContext); - registerPluginFactory(new ClientPluginFactory(originalViewContext)); - } - - } - - @Override - protected IClientPluginFactoryProvider createPluginFactoryProvider( - final IViewContext<ICommonClientServiceAsync> commonContext) - { - return new ClientPluginFactoryProvider(commonContext); - } - - @Override - protected IClientServiceAsync getServiceForRetrievingApplicationInfo( - IViewContext<ICommonClientServiceAsync> context) - { - return new ViewContext(context).getService(); - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/application/PhosphoNetXDisplayTypeIDGenerator.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/application/PhosphoNetXDisplayTypeIDGenerator.java deleted file mode 100644 index 6561a789ec1904d53991825a4099cdba1399e765..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/application/PhosphoNetXDisplayTypeIDGenerator.java +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.application; - -import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.IDisplayTypeIDGenerator; - -/** - * @author Franz-Josef Elmer - */ -public enum PhosphoNetXDisplayTypeIDGenerator implements IDisplayTypeIDGenerator -{ - PROTEIN_BY_EXPERIMENT_BROWSER_GRID("protein-by-experiment-browser-grid"), - - PROTEIN_SEQUENCE_BROWSER_GRID("protein-sequence-browser-grid"), - - PROTEIN_SUMMARY_BROWSER_GRID("protein-summary-browser-grid"), - - DATA_SET_PROTEIN_BROWSER_GRID("data-set-protein-browser-grid"), - - RAW_DATA_SAMPLE_BROWSER_GRID("raw-data-sample-browser-grid"), - - PARENT_LESS_MS_INJECTION_SAMPLE_BROWSER_GRID("parent-less-ms-injection-sample-browser-grid"), - - BIOLOGICAL_SAMPLE_BROWSER_GRID("biological-sample-browser-grid"), ; - - private final String genericNameOrPrefix; - - private PhosphoNetXDisplayTypeIDGenerator(String genericNameOrPrefix) - { - this.genericNameOrPrefix = genericNameOrPrefix; - } - - @Override - public String createID() - { - return genericNameOrPrefix; - } - - @Override - public String createID(String suffix) - { - return genericNameOrPrefix + suffix; - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/application/PhosphoNetXModule.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/application/PhosphoNetXModule.java deleted file mode 100644 index c736783747dfb8d8cf21f53c1305251a43652d13..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/application/PhosphoNetXModule.java +++ /dev/null @@ -1,141 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.application; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; -import java.util.List; - -import com.extjs.gxt.ui.client.widget.menu.MenuItem; -import com.google.gwt.user.client.rpc.AsyncCallback; - -import ch.systemsx.cisd.openbis.generic.client.web.client.application.DisposableTabContent; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DatabaseModificationAwareComponent; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.menu.ActionMenu; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.menu.ITabActionMenuItemDefinition; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.menu.TabActionMenuItemFactory; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.plugin.IModule; -import ch.systemsx.cisd.openbis.generic.client.web.client.dto.GenericConstants; -import ch.systemsx.cisd.openbis.generic.shared.basic.BasicConstant; -import ch.systemsx.cisd.openbis.generic.shared.basic.IEntityInformationHolderWithIdentifier; -import ch.systemsx.cisd.openbis.generic.shared.basic.URLMethodWithParameters; -import ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.IPhosphoNetXClientServiceAsync; -import ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.application.wizard.MsInjectionSampleAnnotationWizard; - -/** - * @author Franz-Josef Elmer - */ -public class PhosphoNetXModule implements IModule -{ - public static final String ID = GenericConstants.ID_PREFIX + "-proteomics-"; - - private final IViewContext<IPhosphoNetXClientServiceAsync> viewContext; - - public PhosphoNetXModule(IViewContext<IPhosphoNetXClientServiceAsync> viewContext) - { - this.viewContext = viewContext; - } - - @Override - public List<? extends MenuItem> getMenuItems() - { - ActionMenu msInjectionSampleAnnotatingMenuItem = TabActionMenuItemFactory.createActionMenu(viewContext, ID, - new ITabActionMenuItemDefinition<IPhosphoNetXClientServiceAsync>() - { - - @Override - public String getName() - { - return "ANNOTATE_MS_INJECTION_SAMPLES"; - } - - @Override - public String getHelpPageTitle() - { - return "Wizard for annotation MS INJECTION " + viewContext.getMessage( - ch.systemsx.cisd.openbis.generic.client.web.client.application.Dict.SAMPLES).toLowerCase(); - } - - @Override - public DatabaseModificationAwareComponent createComponent( - IViewContext<IPhosphoNetXClientServiceAsync> context) - { - return DatabaseModificationAwareComponent.create(new MsInjectionSampleAnnotationWizard(context)); - } - - @Override - public String tryGetLink() - { - URLMethodWithParameters url = new URLMethodWithParameters(""); - url.addParameter((String) BasicConstant.LOCATOR_ACTION_PARAMETER, getName()); - return url.toString().substring(1); - } - }); - ActionMenu msInjectionSampleBrowserMenuItem = TabActionMenuItemFactory.createActionMenu(viewContext, ID, - new ITabActionMenuItemDefinition<IPhosphoNetXClientServiceAsync>() - { - - @Override - public String getName() - { - return "ALL_RAW_DATA_SAMPLES"; - } - - @Override - public String getHelpPageTitle() - { - return "MS INJECTION Data Overview"; - } - - @Override - public DatabaseModificationAwareComponent createComponent( - IViewContext<IPhosphoNetXClientServiceAsync> context) - { - return RawDataSampleGrid.create(context); - } - - @Override - public String tryGetLink() - { - return null; - } - }); - return Arrays.asList(msInjectionSampleAnnotatingMenuItem, msInjectionSampleBrowserMenuItem); - } - - @Override - public String getName() - { - return viewContext.getMessage(Dict.QUERY_MENU_TITLE); - } - - @Override - public void initialize(AsyncCallback<Void> callback) - { - callback.onSuccess(null); - } - - @Override - public Collection<? extends DisposableTabContent> getSections( - IEntityInformationHolderWithIdentifier entity) - { - return new ArrayList<DisposableTabContent>(); - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/application/ProteinByExperimentBrowerToolBar.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/application/ProteinByExperimentBrowerToolBar.java deleted file mode 100644 index d58e10da11f3c52bd9b116390a5ec21ae9581605..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/application/ProteinByExperimentBrowerToolBar.java +++ /dev/null @@ -1,391 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.application; - -import java.util.List; - -import com.extjs.gxt.ui.client.event.BaseEvent; -import com.extjs.gxt.ui.client.event.Events; -import com.extjs.gxt.ui.client.event.Listener; -import com.extjs.gxt.ui.client.event.SelectionChangedEvent; -import com.extjs.gxt.ui.client.event.SelectionChangedListener; -import com.extjs.gxt.ui.client.store.ListStore; -import com.extjs.gxt.ui.client.widget.Label; -import com.extjs.gxt.ui.client.widget.form.CheckBox; -import com.extjs.gxt.ui.client.widget.form.ComboBox; -import com.extjs.gxt.ui.client.widget.form.ComboBox.TriggerAction; -import com.extjs.gxt.ui.client.widget.toolbar.LabelToolItem; -import com.extjs.gxt.ui.client.widget.toolbar.ToolBar; -import com.google.gwt.user.client.rpc.AsyncCallback; -import com.google.gwt.user.client.ui.AbstractImagePrototype; - -import ch.systemsx.cisd.openbis.generic.client.web.client.application.AbstractAsyncCallback; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.SimplifiedBaseModelData; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.VocabularyTermModel; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.field.VocabularyTermSelectionWidget; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.widget.FieldUtil; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.widget.IDataRefreshCallback; -import ch.systemsx.cisd.openbis.generic.client.web.client.dto.GenericConstants; -import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Experiment; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Vocabulary; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.VocabularyTerm; -import ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.IPhosphoNetXClientServiceAsync; -import ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.dto.ListProteinByExperimentCriteria; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.AbundanceColumnDefinition; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.AggregateFunction; - -/** - * @author Franz-Josef Elmer - */ -class ProteinByExperimentBrowerToolBar extends ToolBar -{ - private static final AggregateFunction DEFAULT_AGGREGATE_FUNCTION = AggregateFunction.MEAN; - - private static final class AggregateOnTreatmentTypeSelectionWidget extends - VocabularyTermSelectionWidget - { - - private final VocabularyTermModel nothingTermModel; - - AggregateOnTreatmentTypeSelectionWidget( - IViewContext<IPhosphoNetXClientServiceAsync> viewContext) - { - super("treatmentType", "treatmentType", false, null, viewContext, null, null); - setAllowBlank(false); - setForceSelection(true); - VocabularyTerm nothingTerm = new VocabularyTerm(); - nothingTerm.setLabel("(nothing)"); - nothingTermModel = new VocabularyTermModel(nothingTerm); - setValue(nothingTermModel); - viewContext.getService().getTreatmentTypeVocabulary( - new AbstractAsyncCallback<Vocabulary>(viewContext) - { - @Override - protected void process(Vocabulary vocabulary) - { - setVocabulary(vocabulary); - } - }); - - } - - @Override - protected List<VocabularyTermModel> convertItems(List<VocabularyTerm> result) - { - List<VocabularyTermModel> terms = super.convertItems(result); - terms.add(0, nothingTermModel); - return terms; - } - - } - - private abstract static class SimpleModel<T> extends SimplifiedBaseModelData - { - private static final long serialVersionUID = 1L; - - private static final String PROPERTY = "property"; - - private final T object; - - SimpleModel(T object) - { - this.object = object; - set(PROPERTY, render(object)); - } - - public final T getObject() - { - return object; - } - - protected abstract String render(T modelObject); - } - - private static final class FalseDiscoveryRateModel extends SimpleModel<Double> - { - private static final long serialVersionUID = 1L; - - FalseDiscoveryRateModel(Double falseDiscoveryRate) - { - super(falseDiscoveryRate); - } - - @Override - protected String render(Double modelObject) - { - int percent = (int) (100 * modelObject); - int percentFraction = (int) (1000 * modelObject + 0.5) - 10 * percent; - return Integer.toString(percent) - + (percentFraction == 0 ? "" : "." + Integer.toString(percentFraction)) + "%"; - } - } - - private static final class AggregateFunctionModel extends SimpleModel<AggregateFunction> - { - private static final long serialVersionUID = 1L; - - AggregateFunctionModel(AggregateFunction aggregateFunction) - { - super(aggregateFunction); - } - - @Override - protected String render(AggregateFunction modelObject) - { - return modelObject.getLabel(); - } - } - - private final IViewContext<IPhosphoNetXClientServiceAsync> viewContext; - - private final ComboBox<FalseDiscoveryRateModel> fdrComboBox; - - private final ComboBox<AggregateFunctionModel> aggregateFunctionComboBox; - - private final VocabularyTermSelectionWidget treatmentTypeComboBox; - - private final CheckBox aggregateOriginalCheckBox; - - private ProteinByExperimentBrowserGrid browserGrid; - - private Experiment experiment; - - private ProteinSummaryGrid summaryGrid; - - ProteinByExperimentBrowerToolBar(IViewContext<IPhosphoNetXClientServiceAsync> viewContext, - Experiment experiment) - { - this.viewContext = viewContext; - this.experiment = experiment; - setBorders(true); - // WORKAROUND to get all elements in the toolbar present independent of the original width - // of the parent - setWidth(3000); - add(new LabelToolItem(viewContext.getMessage(Dict.FDR_FILTER_LABEL) - + GenericConstants.LABEL_SEPARATOR)); - fdrComboBox = createFDRComboBox(new SelectionChangedListener<FalseDiscoveryRateModel>() - { - - @Override - public void selectionChanged(SelectionChangedEvent<FalseDiscoveryRateModel> se) - { - update(); - } - }); - add(fdrComboBox); - add(new Label(" ")); - add(new LabelToolItem(viewContext.getMessage(Dict.AGGREGATE_FUNCTION_LABEL) - + GenericConstants.LABEL_SEPARATOR)); - aggregateFunctionComboBox = - createAggregateFunctionComboBox(new SelectionChangedListener<AggregateFunctionModel>() - { - - @Override - public void selectionChanged( - SelectionChangedEvent<AggregateFunctionModel> se) - { - update(); - } - - }); - add(aggregateFunctionComboBox); - add(new LabelToolItem(viewContext.getMessage(Dict.AGGREGATE_ON_TREATMENT_TYPE_LABEL) - + GenericConstants.LABEL_SEPARATOR)); - treatmentTypeComboBox = new AggregateOnTreatmentTypeSelectionWidget(viewContext); - treatmentTypeComboBox - .addSelectionChangedListener(new SelectionChangedListener<VocabularyTermModel>() - { - - @Override - public void selectionChanged(SelectionChangedEvent<VocabularyTermModel> se) - { - update(); - - } - }); - add(treatmentTypeComboBox); - add(new LabelToolItem(viewContext.getMessage(Dict.AGGREGATE_ORIGINAL_LABEL) - + GenericConstants.LABEL_SEPARATOR)); - aggregateOriginalCheckBox = new CheckBox(); - aggregateOriginalCheckBox.addListener(Events.Change, new Listener<BaseEvent>() - { - - @Override - public void handleEvent(BaseEvent be) - { - update(); - } - }); - add(aggregateOriginalCheckBox); - } - - private ComboBox<FalseDiscoveryRateModel> createFDRComboBox( - SelectionChangedListener<FalseDiscoveryRateModel> changedListener) - { - ComboBox<FalseDiscoveryRateModel> comboBox = new ComboBox<FalseDiscoveryRateModel>(); - ListStore<FalseDiscoveryRateModel> listStore = new ListStore<FalseDiscoveryRateModel>(); - FalseDiscoveryRateModel fdr0 = new FalseDiscoveryRateModel(0.0); - listStore.add(fdr0); - listStore.add(new FalseDiscoveryRateModel(0.01)); - listStore.add(new FalseDiscoveryRateModel(0.025)); - listStore.add(new FalseDiscoveryRateModel(0.05)); - listStore.add(new FalseDiscoveryRateModel(0.1)); - comboBox.setStore(listStore); - comboBox.setDisplayField(SimpleModel.PROPERTY); - comboBox.setValue(fdr0); - comboBox.addSelectionChangedListener(changedListener); - comboBox.setEnabled(true); - comboBox.setWidth(70); - comboBox.setTriggerAction(TriggerAction.ALL); - AbstractImagePrototype infoIcon = - AbstractImagePrototype.create(viewContext.getImageBundle().getInfoIcon()); - FieldUtil.addInfoIcon(comboBox, viewContext.getMessage(Dict.FDR_COMBO_INFO), - infoIcon.createImage(), 3, 3); - return comboBox; - } - - private ComboBox<AggregateFunctionModel> createAggregateFunctionComboBox( - SelectionChangedListener<AggregateFunctionModel> changedListener) - { - ComboBox<AggregateFunctionModel> comboBox = new ComboBox<AggregateFunctionModel>(); - ListStore<AggregateFunctionModel> store = new ListStore<AggregateFunctionModel>(); - AggregateFunctionModel defaultModel = null; - for (AggregateFunction aggregateFunction : AggregateFunction.values()) - { - AggregateFunctionModel model = new AggregateFunctionModel(aggregateFunction); - store.add(model); - if (aggregateFunction == DEFAULT_AGGREGATE_FUNCTION) - { - defaultModel = model; - } - } - comboBox.setStore(store); - comboBox.setDisplayField(SimpleModel.PROPERTY); - comboBox.setValue(defaultModel); - comboBox.addSelectionChangedListener(changedListener); - comboBox.setWidth(100); - comboBox.setEnabled(true); - comboBox.setTriggerAction(TriggerAction.ALL); - return comboBox; - } - - Experiment getExperimentOrNull() - { - return experiment; - } - - void setBrowserGrid(ProteinByExperimentBrowserGrid browserGrid) - { - this.browserGrid = browserGrid; - } - - void setSummaryGrid(ProteinSummaryGrid summaryGrid) - { - this.summaryGrid = summaryGrid; - } - - void update() - { - if (experiment != null) - { - final TechId experimentID = TechId.create(experiment); - browserGrid.setLoadMaskImmediately(true); - browserGrid.setPostRefreshCallback(new IDataRefreshCallback() - { - @Override - public void postRefresh(boolean wasSuccessful) - { - if (summaryGrid != null) - { - summaryGrid.setLoadMaskImmediately(true); - summaryGrid.update(experimentID); - } - } - }); - double falseDiscoveryRate = getSelection(fdrComboBox, 0.0); - AggregateFunction aggregateFunction = - getSelection(aggregateFunctionComboBox, DEFAULT_AGGREGATE_FUNCTION); - VocabularyTermModel value = treatmentTypeComboBox.getValue(); - String treatmentTypeCode = value == null ? null : value.getTerm().getCode(); - AsyncCallback<List<AbundanceColumnDefinition>> callback = - new AbundanceColumnDefinitionsCallback(viewContext, browserGrid, experimentID, - falseDiscoveryRate, aggregateFunction, treatmentTypeCode, - aggregateOriginalCheckBox.getValue()); - viewContext.getService().getAbundanceColumnDefinitionsForProteinByExperiment( - experimentID, treatmentTypeCode, callback); - } - } - - ListProteinByExperimentCriteria getCriteria() - { - ListProteinByExperimentCriteria criteria = new ListProteinByExperimentCriteria(); - criteria.setExperimentID(TechId.create(experiment)); - criteria.setFalseDiscoveryRate(getSelection(fdrComboBox, 0.0)); - criteria.setAggregateFunction(getSelection(aggregateFunctionComboBox, DEFAULT_AGGREGATE_FUNCTION)); - VocabularyTermModel value = treatmentTypeComboBox.getValue(); - String treatmentTypeCode = value == null ? null : value.getTerm().getCode(); - criteria.setTreatmentTypeCode(treatmentTypeCode); - criteria.setAggregateOriginal(aggregateOriginalCheckBox.getValue()); - return criteria; - } - - private <T> T getSelection(ComboBox<? extends SimpleModel<T>> comboBox, T defaultValue) - { - List<? extends SimpleModel<T>> selection = comboBox.getSelection(); - return selection.isEmpty() ? defaultValue : selection.get(0).getObject(); - } - - private static final class AbundanceColumnDefinitionsCallback extends - AbstractAsyncCallback<List<AbundanceColumnDefinition>> - { - private final ProteinByExperimentBrowserGrid browserGrid; - - private final TechId experimentID; - - private final double falseDiscoveryRate; - - private final AggregateFunction aggregateFunction; - - private final String treatmentTypeCode; - - private final boolean aggregateOriginal; - - public AbundanceColumnDefinitionsCallback(IViewContext<?> viewContext, - ProteinByExperimentBrowserGrid browserGrid, TechId experimentID, double falseDiscoveryRate, - AggregateFunction aggregateFunction, String treatmentTypeCode, - boolean aggregateOriginal) - { - super(viewContext); - this.browserGrid = browserGrid; - this.experimentID = experimentID; - this.falseDiscoveryRate = falseDiscoveryRate; - this.aggregateFunction = aggregateFunction; - this.treatmentTypeCode = treatmentTypeCode; - this.aggregateOriginal = aggregateOriginal; - } - - @Override - protected void process(List<AbundanceColumnDefinition> result) - { - browserGrid.update(experimentID, falseDiscoveryRate, aggregateFunction, - treatmentTypeCode, aggregateOriginal, result); - } - - } -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/application/ProteinByExperimentBrowserGrid.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/application/ProteinByExperimentBrowserGrid.java deleted file mode 100644 index 0667f7b297ba9fe97bb82feec4f0b452d21875c2..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/application/ProteinByExperimentBrowserGrid.java +++ /dev/null @@ -1,240 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.application; - -import java.util.Arrays; -import java.util.List; -import java.util.Set; - -import com.extjs.gxt.ui.client.widget.Component; -import com.extjs.gxt.ui.client.widget.LayoutContainer; -import com.extjs.gxt.ui.client.widget.TabItem; -import com.extjs.gxt.ui.client.widget.TabPanel; -import com.extjs.gxt.ui.client.widget.layout.FitLayout; -import com.extjs.gxt.ui.client.widget.layout.RowData; -import com.extjs.gxt.ui.client.widget.layout.RowLayout; - -import ch.systemsx.cisd.openbis.generic.client.web.client.application.AbstractAsyncCallback; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.AbstractTabItemFactory; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DispatcherHelper; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.TypedTableGrid; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.ICellListenerAndLinkGenerator; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.IDisposableComponent; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.widget.IDataRefreshCallback; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.IMessageProvider; -import ch.systemsx.cisd.openbis.generic.client.web.client.dto.DefaultResultSetConfig; -import ch.systemsx.cisd.openbis.generic.client.web.client.dto.GenericConstants; -import ch.systemsx.cisd.openbis.generic.client.web.client.dto.TableExportCriteria; -import ch.systemsx.cisd.openbis.generic.client.web.client.dto.TypedTableResultSet; -import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.BasicEntityType; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseModificationKind; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseModificationKind.ObjectKind; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Experiment; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ISerializableComparable; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModelRowWithObject; -import ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.IPhosphoNetXClientServiceAsync; -import ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.dto.ListProteinByExperimentCriteria; -import ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.dto.ProteinBrowserColumnIDs; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.AbundanceColumnDefinition; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.AggregateFunction; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.ProteinInfo; - -/** - * @author Franz-Josef Elmer - */ -class ProteinByExperimentBrowserGrid extends TypedTableGrid<ProteinInfo> -{ - private static final String PREFIX = GenericConstants.ID_PREFIX - + "protein-by-experiment-browser"; - - // browser consists of the grid and additional toolbars (paging, filtering) - public static final String BROWSER_ID = PREFIX + "_main"; - - public static final String GRID_ID = PREFIX + TypedTableGrid.GRID_POSTFIX; - - private final IViewContext<IPhosphoNetXClientServiceAsync> specificViewContext; - - private final ProteinByExperimentBrowerToolBar toolbar; - - private ListProteinByExperimentCriteria criteria; - - private IDataRefreshCallback postRefreshCallback = new IDataRefreshCallback() - { - @Override - public void postRefresh(boolean wasSuccessful) - { - } - }; - - static IDisposableComponent create( - final IViewContext<IPhosphoNetXClientServiceAsync> viewContext, - BasicEntityType experimentType, Experiment experiment) - { - final IDisposableComponent summaryGrid = ProteinSummaryGrid.create(viewContext); - ProteinByExperimentBrowserGrid browserGrid = - new ProteinByExperimentBrowserGrid(viewContext, experiment); - final IDisposableComponent disposableBrowerGrid = browserGrid.asDisposableWithoutToolbar(); - final ProteinByExperimentBrowerToolBar toolBar = browserGrid.toolbar; - toolBar.setSummaryGrid((ProteinSummaryGrid) summaryGrid.getComponent()); - final LayoutContainer container = new LayoutContainer(); - container.setLayout(new RowLayout()); - container.add(toolBar); - TabPanel tabPanel = new TabPanel(); - tabPanel.add(createTab(disposableBrowerGrid, viewContext, Dict.PROTEIN_BROWSER)); - tabPanel.add(createTab(summaryGrid, viewContext, Dict.PROTEIN_SUMMARY)); - container.add(tabPanel, new RowData(1, 1)); - toolBar.update(); - return new IDisposableComponent() - { - @Override - public void update(Set<DatabaseModificationKind> observedModifications) - { - disposableBrowerGrid.update(observedModifications); - summaryGrid.update(observedModifications); - } - - @Override - public DatabaseModificationKind[] getRelevantModifications() - { - return disposableBrowerGrid.getRelevantModifications(); - } - - @Override - public Component getComponent() - { - return container; - } - - @Override - public void dispose() - { - disposableBrowerGrid.dispose(); - summaryGrid.dispose(); - } - }; - } - - private static TabItem createTab(IDisposableComponent disposableComponent, - IMessageProvider messageProvider, String titleKey) - { - TabItem tabItem = new TabItem(messageProvider.getMessage(titleKey)); - tabItem.setLayout(new FitLayout()); - Component component = disposableComponent.getComponent(); - component.setHeight("100%"); - tabItem.add(component); - return tabItem; - } - - private ProteinByExperimentBrowserGrid( - final IViewContext<IPhosphoNetXClientServiceAsync> viewContext, final Experiment experiment) - { - super(viewContext.getCommonViewContext(), BROWSER_ID, true, - PhosphoNetXDisplayTypeIDGenerator.PROTEIN_BY_EXPERIMENT_BROWSER_GRID); - specificViewContext = viewContext; - toolbar = new ProteinByExperimentBrowerToolBar(viewContext, experiment); - toolbar.setBrowserGrid(this); - registerListenerAndLinkGenerator(ProteinBrowserColumnIDs.ACCESSION_NUMBER, - new ICellListenerAndLinkGenerator<ProteinInfo>() - { - @Override - public void handle(TableModelRowWithObject<ProteinInfo> rowItem, - boolean keyPressed) - { - AbstractTabItemFactory tabItemFactory = - ProteinViewer.createTabItemFactory(viewContext, - toolbar.getExperimentOrNull(), - rowItem.getObjectOrNull()); - tabItemFactory.setInBackground(keyPressed); - DispatcherHelper.dispatchNaviEvent(tabItemFactory); - } - - @Override - public String tryGetLink(ProteinInfo entity, - ISerializableComparable comparableValue) - { - return ProteinViewLocatorResolver.createLink(experiment, entity); - } - }); - } - - void update(TechId experimentID, double falseDiscoveryRate, - AggregateFunction aggregateFunction, String treatmentTypeCode, - boolean aggregateOriginal, List<AbundanceColumnDefinition> definitions) - { - criteria = new ListProteinByExperimentCriteria(); - criteria.setExperimentID(experimentID); - criteria.setFalseDiscoveryRate(falseDiscoveryRate); - criteria.setAggregateFunction(aggregateFunction); - criteria.setTreatmentTypeCode(treatmentTypeCode); - criteria.setAggregateOriginal(aggregateOriginal); - refresh(postRefreshCallback, true); - } - - void setPostRefreshCallback(IDataRefreshCallback postRefreshCallback) - { - this.postRefreshCallback = postRefreshCallback; - } - - @Override - protected String translateColumnIdToDictionaryKey(String columnID) - { - return columnID.toLowerCase(); - } - - @Override - protected List<String> getColumnIdsOfFilters() - { - return Arrays.asList(ProteinBrowserColumnIDs.PROTEIN_DESCRIPTION); - } - - @Override - protected void listTableRows( - DefaultResultSetConfig<String, TableModelRowWithObject<ProteinInfo>> resultSetConfig, - AbstractAsyncCallback<TypedTableResultSet<ProteinInfo>> callback) - { - if (criteria == null) - { - criteria = toolbar.getCriteria(); - } - criteria.copyPagingConfig(resultSetConfig); - specificViewContext.getService().listProteinsByExperiment(criteria, callback); - } - - @Override - protected void prepareExportEntities(TableExportCriteria<TableModelRowWithObject<ProteinInfo>> exportCriteria, - AbstractAsyncCallback<String> callback) - { - specificViewContext.getService().prepareExportProteins(exportCriteria, callback); - } - - @Override - public void update(Set<DatabaseModificationKind> observedModifications) - { - toolbar.update(); - } - - @Override - public DatabaseModificationKind[] getRelevantModifications() - { - return new DatabaseModificationKind[] - { DatabaseModificationKind.createOrDelete(ObjectKind.DATA_SET), - DatabaseModificationKind.edit(ObjectKind.SAMPLE) }; - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/application/ProteinRelatedSampleGrid.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/application/ProteinRelatedSampleGrid.java deleted file mode 100644 index 0c430904fc748fa946d8eefd364764509f9daefe..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/application/ProteinRelatedSampleGrid.java +++ /dev/null @@ -1,133 +0,0 @@ -/* - * Copyright 2008 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.application; - -import java.util.Arrays; -import java.util.List; - -import com.extjs.gxt.ui.client.widget.LayoutContainer; - -import ch.systemsx.cisd.openbis.generic.client.web.client.application.AbstractAsyncCallback; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DisplayTypeIDGenerator; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.TypedTableGrid; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.framework.LinkExtractor; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.ICellListenerAndLinkGenerator; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.IDisposableComponent; -import ch.systemsx.cisd.openbis.generic.client.web.client.dto.DefaultResultSetConfig; -import ch.systemsx.cisd.openbis.generic.client.web.client.dto.GenericConstants; -import ch.systemsx.cisd.openbis.generic.client.web.client.dto.TableExportCriteria; -import ch.systemsx.cisd.openbis.generic.client.web.client.dto.TypedTableResultSet; -import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ISerializableComparable; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModelRowWithObject; -import ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.IPhosphoNetXClientServiceAsync; -import ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.dto.ListSampleAbundanceByProteinCriteria; -import ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.dto.ProteinRelatedSampleGridColumnIDs; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.ProteinRelatedSample; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.SampleWithPropertiesAndAbundance; - -/** - * A {@link LayoutContainer} which contains the grid where {@link SampleWithPropertiesAndAbundance}s of specified Protein are displayed. - * - * @author Piotr Buczek - */ -public class ProteinRelatedSampleGrid extends TypedTableGrid<ProteinRelatedSample> -{ - private static final String PREFIX = GenericConstants.ID_PREFIX + "protein_related_sample_grid"; - - // browser consists of the grid and additional toolbars (paging, filtering) - public static final String BROWSER_ID = PREFIX + "_main"; - - public static final String GRID_ID = PREFIX + TypedTableGrid.GRID_POSTFIX; - - public static final String EDIT_BUTTON_ID = BROWSER_ID + "_edit-button"; - - public static final String SHOW_DETAILS_BUTTON_ID = BROWSER_ID + "_show-details-button"; - - private final IViewContext<IPhosphoNetXClientServiceAsync> phosphoViewContext; - - public static IDisposableComponent createGridForProteinSamples( - final IViewContext<IPhosphoNetXClientServiceAsync> viewContext, - final TechId proteinReferenceID, Long experimentIDOrNull, final String gridId) - { - final ListSampleAbundanceByProteinCriteria criteria = - new ListSampleAbundanceByProteinCriteria(); - criteria.setProteinReferenceID(proteinReferenceID); - criteria.setExperimentID(experimentIDOrNull); - final ProteinRelatedSampleGrid browserGrid = - new ProteinRelatedSampleGrid(viewContext, criteria, gridId); - return browserGrid.asDisposableWithoutToolbar(); - } - - private ListSampleAbundanceByProteinCriteria criteria; - - private ProteinRelatedSampleGrid( - final IViewContext<IPhosphoNetXClientServiceAsync> viewContext, - ListSampleAbundanceByProteinCriteria criteria, String gridId) - { - super(viewContext.getCommonViewContext(), gridId, true, - DisplayTypeIDGenerator.SAMPLE_DETAILS_GRID); - this.phosphoViewContext = viewContext; - setId(BROWSER_ID); - this.criteria = criteria; - registerListenerAndLinkGenerator(ProteinRelatedSampleGridColumnIDs.SAMPLE_IDENTIFIER, - new ICellListenerAndLinkGenerator<ProteinRelatedSample>() - { - - @Override - public void handle(TableModelRowWithObject<ProteinRelatedSample> rowItem, - boolean specialKeyPressed) - { - showEntityInformationHolderViewer(rowItem.getObjectOrNull(), false, - specialKeyPressed); - } - - @Override - public String tryGetLink(ProteinRelatedSample entity, - ISerializableComparable comparableValue) - { - return LinkExtractor.tryExtract(entity); - } - }); - } - - @Override - protected void listTableRows( - DefaultResultSetConfig<String, TableModelRowWithObject<ProteinRelatedSample>> resultSetConfig, - AbstractAsyncCallback<TypedTableResultSet<ProteinRelatedSample>> callback) - { - criteria.copyPagingConfig(resultSetConfig); - phosphoViewContext.getService().listProteinRelatedSamplesByProtein(criteria, callback); - } - - @Override - protected List<String> getColumnIdsOfFilters() - { - return Arrays.asList(ProteinRelatedSampleGridColumnIDs.SAMPLE_IDENTIFIER, - ProteinRelatedSampleGridColumnIDs.ABUNDANCE); - } - - @Override - protected void prepareExportEntities( - TableExportCriteria<TableModelRowWithObject<ProteinRelatedSample>> exportCriteria, - AbstractAsyncCallback<String> callback) - { - phosphoViewContext.getService().prepareExportProteinRelatedSamples(exportCriteria, callback); - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/application/ProteinRenderers.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/application/ProteinRenderers.java deleted file mode 100644 index ce30c2960cfdf8a7800fbd8ff47dc45f7f3a8c55..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/application/ProteinRenderers.java +++ /dev/null @@ -1,265 +0,0 @@ -/* - * Copyright 2007 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.application; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import com.extjs.gxt.ui.client.widget.Text; -import com.google.gwt.user.client.ui.FlowPanel; -import com.google.gwt.user.client.ui.InlineHTML; -import com.google.gwt.user.client.ui.Widget; - -import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.PropertyValueRenderers.EntityInformationHolderPropertyValueRenderer; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.property.AbstractPropertyValueRenderer; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.property.IPropertyValueRenderer; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.widget.ExternalHyperlink; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.IMessageProvider; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Experiment; -import ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.application.ProteinViewer.DatasetInformationHolder; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.AccessionNumberProvider; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.Occurrence; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.OccurrenceUtil; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.Peptide; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.PeptideModification; - -/** - * Utility method for creating {@link IPropertyValueRenderer} instances or directly rendering stuff in {@link ProteinViewer}. - * - * @author Tomasz Pylak - * @author Franz-Josef Elmer - */ -public final class ProteinRenderers -{ - private static final class Symbol - { - private final char character; - - private boolean inPeptide; - - private Double mass; - - Symbol(char character) - { - this.character = character; - } - - public char getCharacter() - { - return character; - } - - public boolean isInPeptide() - { - return inPeptide; - } - - public void inPeptide() - { - this.inPeptide = true; - } - - public Double getMass() - { - return mass; - } - - public void setMass(Double mass) - { - this.mass = mass; - } - } - - private ProteinRenderers() - { - // Can not be instantiated - } - - /** - * Allows to render a property identifier which is a link to an external page with a description. - */ - public final static IPropertyValueRenderer<AccessionNumberProvider> createProteinIdentLinkRenderer( - final IViewContext<?> viewContext) - { - return new AccessionNumberRenderer(viewContext); - } - - public final static IPropertyValueRenderer<Peptide> createPeptideRenderer( - final IViewContext<?> viewContext) - { - return new PeptideRenderer(viewContext); - } - - public final static IPropertyValueRenderer<Experiment> createExperimentPropertyValueRenderer( - final IViewContext<?> viewContext) - { - return ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.PropertyValueRenderers - .createExperimentPropertyValueRenderer(viewContext); - } - - public final static IPropertyValueRenderer<DatasetInformationHolder> createEntityInformationPropertyValueRenderer( - final IViewContext<?> viewContext) - { - return new EntityInformationHolderPropertyValueRenderer<DatasetInformationHolder>( - viewContext); - } - - public static String getFixedWidthHTMLString(String text) - { - return "<font style='font-family:monospace'>" + text + "</font>"; - } - - /** Produces an HTML code with all occurrences properly marked */ - public static String markOccurrencesWithHtml(String proteinSequence, List<Peptide> peptides, - int blockLength) - { - List<Symbol> symbols = createSymbols(proteinSequence, peptides); - StringBuilder builder = new StringBuilder(); - boolean inPeptide = false; - for (int i = 0, n = symbols.size(); i < n; i++) - { - if (i > 0) - { - if (i % blockLength == 0) - { - builder.append(" "); - } - } - Symbol symbol = symbols.get(i); - boolean nextInPeptide = symbol.isInPeptide(); - if (inPeptide != nextInPeptide) - { - builder.append(nextInPeptide ? "<font color='red'>" : "</font>"); - } - inPeptide = nextInPeptide; - Double mass = symbol.getMass(); - char character = symbol.getCharacter(); - if (mass == null) - { - builder.append(character); - } else - { - builder.append(renderAminoAcidSymbol(character, i + 1, mass)); - } - - } - return builder.toString(); - } - - public static String renderAminoAcidSymbol(char character, Integer positionOrNull, double mass) - { - String tooltip = positionOrNull == null ? "" : "position=" + positionOrNull + ", "; - tooltip += "mass=" + mass; - - return "<font style='text-decoration:underline; cursor:pointer' color='blue' title='" - + tooltip + "'>" + character + "</font>"; - } - - private static List<Symbol> createSymbols(String proteinSequence, List<Peptide> peptides) - { - List<Symbol> symbols = new ArrayList<Symbol>(); - for (int i = 0, n = proteinSequence.length(); i < n; i++) - { - symbols.add(new Symbol(proteinSequence.charAt(i))); - } - - for (Peptide peptide : peptides) - { - List<Occurrence> occurances = - OccurrenceUtil.findAllOccurrences(proteinSequence, peptide.getSequence()); - List<PeptideModification> modifications = peptide.getModifications(); - for (Occurrence occurrence : occurances) - { - int startIndex = occurrence.getStartIndex(); - for (int i = startIndex, n = occurrence.getEndIndex(); i <= n; i++) - { - symbols.get(i).inPeptide(); - } - for (PeptideModification peptideModification : modifications) - { - Symbol symbol = symbols.get(startIndex + peptideModification.getPosition() - 1); - symbol.setMass(peptideModification.getMass()); - } - } - } - return symbols; - } - - private final static class AccessionNumberRenderer extends - AbstractPropertyValueRenderer<AccessionNumberProvider> - { - - AccessionNumberRenderer(final IMessageProvider messageProvider) - { - super(messageProvider); - } - - @Override - public Widget getAsWidget(AccessionNumberProvider object) - { - String accessionNumber = object.getAccessionNumber(); - String type = object.getAccessionNumberType(); - String url = AccessionNumberURLCreator.tryToCreateURL(type, accessionNumber); - if (url == null) - { - return new Text(accessionNumber); - } - return new ExternalHyperlink(accessionNumber, url); - } - } - - private final static class PeptideRenderer extends AbstractPropertyValueRenderer<Peptide> - { - - PeptideRenderer(final IMessageProvider messageProvider) - { - super(messageProvider); - } - - @Override - public Widget getAsWidget(Peptide peptide) - { - StringBuilder builder = new StringBuilder(); - String sequence = peptide.getSequence(); - List<PeptideModification> modifications = peptide.getModifications(); - Map<Integer, PeptideModification> modificationsMap = new HashMap<Integer, PeptideModification>(); - for (PeptideModification modification : modifications) - { - modificationsMap.put(modification.getPosition(), modification); - } - for (int i = 0, n = sequence.length(); i < n; i++) - { - char c = sequence.charAt(i); - PeptideModification peptideModification = modificationsMap.get(i + 1); - if (peptideModification != null) - { - builder.append(renderAminoAcidSymbol(c, null, peptideModification.getMass())); - } else - { - builder.append(c); - } - } - final FlowPanel panel = new FlowPanel(); - panel.add(new InlineHTML(getFixedWidthHTMLString(builder.toString()))); - return panel; - } - - } -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/application/ProteinSamplesSection.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/application/ProteinSamplesSection.java deleted file mode 100644 index 365c2d64c71456ab55b2c69b939109bace72a979..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/application/ProteinSamplesSection.java +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Copyright 2008 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.application; - -import com.extjs.gxt.ui.client.widget.ContentPanel; -import com.extjs.gxt.ui.client.widget.layout.FitLayout; - -import ch.systemsx.cisd.openbis.generic.client.web.client.application.Dict; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.TabContent; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.IDatabaseModificationObserver; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.IDisposableComponent; -import ch.systemsx.cisd.openbis.generic.client.web.client.dto.GenericConstants; -import ch.systemsx.cisd.openbis.generic.shared.basic.IIdAndCodeHolder; -import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; -import ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.IPhosphoNetXClientServiceAsync; - -/** - * {@link TabContent} containing specified protein samples. - * - * @author Piotr Buczek - */ -public class ProteinSamplesSection extends ContentPanel -{ - private static final String PREFIX = "protein-samples-section_"; - - public static final String ID_PREFIX = GenericConstants.ID_PREFIX + PREFIX; - - private IDisposableComponent disposableComponent; - - public ProteinSamplesSection(final IViewContext<IPhosphoNetXClientServiceAsync> viewContext, - final TechId proteinReferenceID, IIdAndCodeHolder experimentOrNull) - { - setHeading(viewContext.getMessage(Dict.SAMPLES)); - setHeaderVisible(true); - setCollapsible(true); - setAnimCollapse(false); - setBodyBorder(true); - setLayout(new FitLayout()); - Long experimentID = experimentOrNull == null ? null : experimentOrNull.getId(); - disposableComponent = ProteinRelatedSampleGrid.createGridForProteinSamples(viewContext, - proteinReferenceID, experimentID, createGridId(proteinReferenceID)); - add(disposableComponent.getComponent()); - } - - // @Private - static String createGridId(TechId containerId) - { - return ID_PREFIX + containerId + "-grid"; - } - - @Override - protected void onDetach() - { - if (disposableComponent != null) - { - disposableComponent.dispose(); - } - super.onDetach(); - } - - IDatabaseModificationObserver tryGetDatabaseModificationObserver() - { - return disposableComponent; - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/application/ProteinSequenceGrid.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/application/ProteinSequenceGrid.java deleted file mode 100644 index 05f9e20152d63a130527c4df00c4fbe70882a868..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/application/ProteinSequenceGrid.java +++ /dev/null @@ -1,109 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.application; - -import java.util.Arrays; -import java.util.List; - -import ch.systemsx.cisd.openbis.generic.client.web.client.application.AbstractAsyncCallback; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.TypedTableGrid; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.IDisposableComponent; -import ch.systemsx.cisd.openbis.generic.client.web.client.dto.DefaultResultSetConfig; -import ch.systemsx.cisd.openbis.generic.client.web.client.dto.GenericConstants; -import ch.systemsx.cisd.openbis.generic.client.web.client.dto.TableExportCriteria; -import ch.systemsx.cisd.openbis.generic.client.web.client.dto.TypedTableResultSet; -import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseModificationKind; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Experiment; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModelRowWithObject; -import ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.IPhosphoNetXClientServiceAsync; -import ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.dto.ListProteinSequenceCriteria; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.ProteinSequence; - -/** - * @author Franz-Josef Elmer - */ -public class ProteinSequenceGrid extends TypedTableGrid<ProteinSequence> -{ - private static final String PREFIX = GenericConstants.ID_PREFIX + "protein-sequence-browser"; - - public static final String BROWSER_ID = PREFIX + "_main"; - - public static final String GRID_ID = PREFIX + TypedTableGrid.GRID_POSTFIX; - - static IDisposableComponent create(IViewContext<IPhosphoNetXClientServiceAsync> viewContext, - Experiment experimentOrNull, TechId proteinReferenceID) - { - return new ProteinSequenceGrid(viewContext, experimentOrNull, proteinReferenceID) - .asDisposableWithoutToolbar(); - } - - private final IViewContext<IPhosphoNetXClientServiceAsync> specificViewContext; - - private ListProteinSequenceCriteria criteria; - - private ProteinSequenceGrid(IViewContext<IPhosphoNetXClientServiceAsync> viewContext, - Experiment experimentOrNull, TechId proteinReferenceID) - { - super(viewContext.getCommonViewContext(), BROWSER_ID + proteinReferenceID, true, - PhosphoNetXDisplayTypeIDGenerator.PROTEIN_SEQUENCE_BROWSER_GRID); - specificViewContext = viewContext; - criteria = new ListProteinSequenceCriteria(); - if (experimentOrNull != null) - { - criteria.setExperimentID(new TechId(experimentOrNull.getId())); - } - criteria.setProteinReferenceID(proteinReferenceID); - } - - @Override - protected String translateColumnIdToDictionaryKey(String columnID) - { - return columnID.toLowerCase(); - } - - @Override - protected List<String> getColumnIdsOfFilters() - { - return Arrays.asList(); - } - - @Override - protected void listTableRows( - DefaultResultSetConfig<String, TableModelRowWithObject<ProteinSequence>> resultSetConfig, - AbstractAsyncCallback<TypedTableResultSet<ProteinSequence>> callback) - { - criteria.copyPagingConfig(resultSetConfig); - specificViewContext.getService().listSequencesByProteinReference(criteria, callback); - } - - @Override - protected void prepareExportEntities( - TableExportCriteria<TableModelRowWithObject<ProteinSequence>> exportCriteria, - AbstractAsyncCallback<String> callback) - { - specificViewContext.getService().prepareExportProteinSequences(exportCriteria, callback); - } - - @Override - public DatabaseModificationKind[] getRelevantModifications() - { - return new DatabaseModificationKind[0]; - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/application/ProteinSummaryGrid.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/application/ProteinSummaryGrid.java deleted file mode 100644 index 6dc527a0d59c861db25c48592f412a9fed24ad2f..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/application/ProteinSummaryGrid.java +++ /dev/null @@ -1,112 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.application; - -import java.util.Arrays; -import java.util.List; - -import ch.systemsx.cisd.openbis.generic.client.web.client.application.AbstractAsyncCallback; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.TypedTableGrid; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.IDisposableComponent; -import ch.systemsx.cisd.openbis.generic.client.web.client.dto.DefaultResultSetConfig; -import ch.systemsx.cisd.openbis.generic.client.web.client.dto.GenericConstants; -import ch.systemsx.cisd.openbis.generic.client.web.client.dto.TableExportCriteria; -import ch.systemsx.cisd.openbis.generic.client.web.client.dto.TypedTableResultSet; -import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseModificationKind; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModelRowWithObject; -import ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.IPhosphoNetXClientServiceAsync; -import ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.dto.ListProteinSummaryByExperimentCriteria; -import ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.dto.ProteinSummaryGridColumnIDs; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.ProteinSummary; - -/** - * @author Franz-Josef Elmer - */ -class ProteinSummaryGrid extends TypedTableGrid<ProteinSummary> -{ - private static final String PREFIX = - GenericConstants.ID_PREFIX + "protein-summary"; - - // browser consists of the grid and additional toolbars (paging, filtering) - public static final String BROWSER_ID = PREFIX + "_main"; - - public static final String GRID_ID = PREFIX + TypedTableGrid.GRID_POSTFIX; - - static IDisposableComponent create(IViewContext<IPhosphoNetXClientServiceAsync> viewContext) - { - return new ProteinSummaryGrid(viewContext).asDisposableWithoutToolbar(); - } - - private final IViewContext<IPhosphoNetXClientServiceAsync> specificViewContext; - - private ListProteinSummaryByExperimentCriteria criteria; - - ProteinSummaryGrid(IViewContext<IPhosphoNetXClientServiceAsync> viewContext) - { - super(viewContext.getCommonViewContext(), BROWSER_ID, true, - PhosphoNetXDisplayTypeIDGenerator.PROTEIN_SUMMARY_BROWSER_GRID); - specificViewContext = viewContext; - } - - void update(TechId experimentID) - { - criteria = new ListProteinSummaryByExperimentCriteria(); - criteria.setExperimentID(experimentID); - refresh(true); - } - - @Override - protected String translateColumnIdToDictionaryKey(String columnID) - { - return ProteinSummaryGridColumnIDs.FDR.equals(columnID) ? "false_discovery_rate_column" - : columnID.toLowerCase(); - } - - @Override - protected List<String> getColumnIdsOfFilters() - { - return Arrays.asList(ProteinSummaryGridColumnIDs.FDR); - } - - @Override - protected void listTableRows( - DefaultResultSetConfig<String, TableModelRowWithObject<ProteinSummary>> resultSetConfig, - AbstractAsyncCallback<TypedTableResultSet<ProteinSummary>> callback) - { - if (criteria != null) - { - criteria.copyPagingConfig(resultSetConfig); - specificViewContext.getService().listProteinSummariesByExperiment(criteria, callback); - } - } - - @Override - protected void prepareExportEntities(TableExportCriteria<TableModelRowWithObject<ProteinSummary>> exportCriteria, - AbstractAsyncCallback<String> callback) - { - specificViewContext.getService().prepareExportProteinSummary(exportCriteria, callback); - } - - @Override - public DatabaseModificationKind[] getRelevantModifications() - { - return new DatabaseModificationKind[0]; - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/application/ProteinViewLocatorResolver.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/application/ProteinViewLocatorResolver.java deleted file mode 100644 index f6d7f3eea2db4ddb976aba705bd8403af09c697b..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/application/ProteinViewLocatorResolver.java +++ /dev/null @@ -1,100 +0,0 @@ -/* - * Copyright 2011 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.application; - -import ch.systemsx.cisd.openbis.generic.client.web.client.application.AbstractAsyncCallback; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.AbstractTabItemFactory; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DispatcherHelper; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.locator.AbstractViewLocatorResolver; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.locator.ViewLocator; -import ch.systemsx.cisd.openbis.generic.client.web.client.exception.UserFailureException; -import ch.systemsx.cisd.openbis.generic.shared.basic.BasicConstant; -import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; -import ch.systemsx.cisd.openbis.generic.shared.basic.URLMethodWithParameters; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Experiment; -import ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.IPhosphoNetXClientServiceAsync; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.ProteinByExperiment; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.ProteinInfo; - -/** - * Locator resolver for protein details view. - * - * @author Franz-Josef Elmer - */ -public class ProteinViewLocatorResolver extends AbstractViewLocatorResolver -{ - private static final String ACTION = "PROTEIN"; - - private static final String EXPERIMENT_PERM_ID = "experimentPermId"; - - private static final String PROTEIN_ID = "id"; - - private final IViewContext<IPhosphoNetXClientServiceAsync> viewContext; - - public ProteinViewLocatorResolver(IViewContext<IPhosphoNetXClientServiceAsync> viewContext) - { - super(ACTION); - this.viewContext = viewContext; - } - - @Override - public void resolve(ViewLocator locator) throws UserFailureException - { - String experimentPermID = getMandatoryParameter(locator, EXPERIMENT_PERM_ID); - final TechId proteinID = new TechId(new Long(getMandatoryParameter(locator, PROTEIN_ID))); - viewContext.log("resolve protein " + proteinID + " for experiment " + experimentPermID); - viewContext.getCommonService().getExperimentInfoByPermId(experimentPermID, - new AbstractAsyncCallback<Experiment>(viewContext) - { - @Override - protected void process(final Experiment experiment) - { - IPhosphoNetXClientServiceAsync service = - ProteinViewLocatorResolver.this.viewContext.getService(); - service.getProteinByExperiment(new TechId(experiment.getId()), - proteinID, new AbstractAsyncCallback<ProteinByExperiment>( - viewContext) - { - @Override - protected void process(final ProteinByExperiment protein) - { - AbstractTabItemFactory tabItemFactory = - ProteinViewer - .createTabItemFactory( - ProteinViewLocatorResolver.this.viewContext, - experiment, protein); - DispatcherHelper.dispatchNaviEvent(tabItemFactory); - } - - }); - } - }); - } - - static String createLink(final Experiment experiment, ProteinInfo entity) - { - URLMethodWithParameters url = new URLMethodWithParameters(""); - url.addParameter((String) BasicConstant.LOCATOR_ACTION_PARAMETER, ACTION); - url.addParameter(ProteinViewLocatorResolver.EXPERIMENT_PERM_ID, - experiment.getPermId()); - url.addParameter(ProteinViewLocatorResolver.PROTEIN_ID, - Long.toString(entity.getId().getId())); - return url.toStringWithoutDelimiterPrefix(); - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/application/ProteinViewer.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/application/ProteinViewer.java deleted file mode 100644 index d061ad1f615d35ce71cf0eb36714ca25eba13f39..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/application/ProteinViewer.java +++ /dev/null @@ -1,454 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.application; - -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; -import java.util.Set; - -import com.extjs.gxt.ui.client.Style.LayoutRegion; -import com.extjs.gxt.ui.client.Style.Scroll; -import com.extjs.gxt.ui.client.widget.ContentPanel; -import com.extjs.gxt.ui.client.widget.LayoutContainer; -import com.extjs.gxt.ui.client.widget.TabItem; -import com.extjs.gxt.ui.client.widget.TabPanel; -import com.extjs.gxt.ui.client.widget.layout.BorderLayout; -import com.extjs.gxt.ui.client.widget.layout.BorderLayoutData; -import com.extjs.gxt.ui.client.widget.layout.FitLayout; -import com.extjs.gxt.ui.client.widget.layout.RowData; -import com.extjs.gxt.ui.client.widget.layout.RowLayout; - -import ch.systemsx.cisd.common.shared.basic.string.StringUtils; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.AbstractAsyncCallback; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.AsyncCallbackWithProgressBar; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.DisposableTabContent; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.AbstractTabItemFactory; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.CompositeDatabaseModificationObserver; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DatabaseModificationAwareComponent; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DefaultTabItem; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.IDatabaseModificationObserver; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.ITabItem; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.help.HelpPageIdentifier; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.AbstractViewerWithVerticalSplit; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.RowLayoutManager; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.IDisposableComponent; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.property.PropertyGrid; -import ch.systemsx.cisd.openbis.generic.client.web.client.dto.GenericConstants; -import ch.systemsx.cisd.openbis.generic.shared.basic.IEntityInformationHolder; -import ch.systemsx.cisd.openbis.generic.shared.basic.IEntityInformationHolderWithIdentifier; -import ch.systemsx.cisd.openbis.generic.shared.basic.IIdAndCodeHolder; -import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSetType; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseModificationKind; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityKind; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityType; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Experiment; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ServiceVersionHolder; -import ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.IPhosphoNetXClientServiceAsync; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.IBasicProteinInfo; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.IndistinguishableProteinInfo; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.Peptide; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.ProteinByExperiment; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.ProteinDetails; - -/** - * @author Franz-Josef Elmer - */ -public class ProteinViewer extends AbstractViewerWithVerticalSplit<IEntityInformationHolder> - implements IDatabaseModificationObserver -{ - private static final int AMINOACIDS_IN_ONE_BLOCK = 10; - - private static final String PREFIX = "protein-viewer_"; - - public static final String ID_PREFIX = GenericConstants.ID_PREFIX + PREFIX; - - static AbstractTabItemFactory createTabItemFactory( - final IViewContext<IPhosphoNetXClientServiceAsync> viewContext, - final Experiment experiment, final IBasicProteinInfo proteinInfo) - { - return new AbstractTabItemFactory() - { - @Override - public String getId() - { - return createWidgetID(experiment, proteinInfo.getId()); - } - - @Override - public ITabItem create() - { - ProteinViewer viewer = new ProteinViewer(viewContext, experiment, proteinInfo); - DatabaseModificationAwareComponent c = - new DatabaseModificationAwareComponent(viewer, viewer); - return DefaultTabItem.create(getTabTitle(), c, viewContext, false); - } - - @Override - public HelpPageIdentifier getHelpPageIdentifier() - { - return HelpPageIdentifier.createSpecific("Protein Viewer"); - } - - @Override - public String getTabTitle() - { - String description = getAbbreviatedDescription(proteinInfo); - String identifier = experiment == null ? "?" : experiment.getCode(); - return viewContext.getMessage(Dict.PROTEIN_IN_EXPERIMENT_TAB_LABEL, - description, identifier); - } - - @Override - public String tryGetLink() - { - return null; - } - }; - } - - private static String getAbbreviatedDescription(final IBasicProteinInfo proteinInfo) - { - String info = proteinInfo.getDescription(); - if (info == null) - { - info = proteinInfo.getAccessionNumber(); - } - return StringUtils.abbreviate(info, 30); - } - - static String createWidgetID(IIdAndCodeHolder experimentIdOrNull, TechId proteinReferenceID) - { - Long experimentID = experimentIdOrNull == null ? null : experimentIdOrNull.getId(); - return ID_PREFIX + experimentID + "_" + proteinReferenceID.getId(); - } - - private final Experiment experimentOrNull; - - private final IBasicProteinInfo proteinInfo; - - private final TechId proteinReferenceID; - - private ProteinSamplesSection proteinSamplesSection; - - private ProteinViewer(IViewContext<IPhosphoNetXClientServiceAsync> viewContext, - Experiment experiment, IBasicProteinInfo proteinInfo) - { - super(viewContext, "", createWidgetID(experiment, proteinInfo.getId()), false); - this.experimentOrNull = experiment; - this.proteinInfo = proteinInfo; - this.proteinReferenceID = proteinInfo.getId(); - reloadAllData(); - } - - @Override - @SuppressWarnings("unchecked") - protected final IViewContext<IPhosphoNetXClientServiceAsync> getViewContext() - { - return (IViewContext<IPhosphoNetXClientServiceAsync>) viewContext; - } - - @Override - protected void reloadAllData() - { - if (experimentOrNull != null) - { - final IViewContext<IPhosphoNetXClientServiceAsync> context = getViewContext(); - ProteinByExperimentCallback callback = new ProteinByExperimentCallback(context, this); - String message = - context.getMessage(Dict.PROTEIN_DETAILS_WAITING_MESSAGE, - proteinInfo.getAccessionNumber()); - context.getService().getProteinByExperiment(new TechId(experimentOrNull.getId()), - proteinReferenceID, AsyncCallbackWithProgressBar.decorate(callback, message)); - } - } - - private void recreateUI(ProteinByExperiment protein) - { - setLayout(new BorderLayout()); - removeAll(); - setScrollMode(Scroll.AUTO); - ContentPanel propertyPanel = createPropertyPanel(protein); - - ProteinDetails details = protein.getDetails(); - if (details == null) - { - recreateUIWithDatasetTable(protein, propertyPanel); - } else - { - LayoutContainer centerPanel = new LayoutContainer(); - RowLayoutManager rowDataManager = new RowLayoutManager(centerPanel, new RowLayout()); - add(centerPanel, createBorderLayoutData(LayoutRegion.CENTER)); - rowDataManager.addToContainer(propertyPanel, new RowData(1, 0.5f)); - List<IndistinguishableProteinInfo> indistinguishableProteins = - details.getIndistinguishableProteinInfos(); - if (indistinguishableProteins.isEmpty() == false) - { - List<Peptide> peptides = details.getPeptides(); - ContentPanel panel = - createIndistinguishableProteinsSection(indistinguishableProteins, peptides); - rowDataManager.addToContainer(panel, new RowData(1, 0.3f)); - } - proteinSamplesSection = - new ProteinSamplesSection(getViewContext(), proteinReferenceID, - experimentOrNull); - rowDataManager.addToContainer(proteinSamplesSection, new RowData(1, 0.2f)); - layout(); - } - } - - private ContentPanel createIndistinguishableProteinsSection( - List<IndistinguishableProteinInfo> indistinguishableProteins, List<Peptide> peptides) - { - ContentPanel panel = new ContentPanel(new RowLayout()); - panel.setHeading(viewContext.getMessage(Dict.INDISTINGUISHABLE_PROTEINS)); - panel.setCollapsible(true); - panel.setHeight("100%"); - TabPanel tabPanel = new TabPanel(); - tabPanel.setTabScroll(true); - for (IndistinguishableProteinInfo info : indistinguishableProteins) - { - String accessionNumber = info.getAccessionNumber(); - TabItem item = new TabItem(accessionNumber); - item.setLayout(new FitLayout()); - PropertyGrid propertyGrid = new PropertyGrid(viewContext, 4, "200"); - final Map<String, Object> properties = new LinkedHashMap<String, Object>(); - properties.put(viewContext.getMessage(Dict.ACCESSION_NUMBER), info); - propertyGrid.registerPropertyValueRenderer(IndistinguishableProteinInfo.class, - ProteinRenderers.createProteinIdentLinkRenderer(viewContext)); - properties.put(viewContext.getMessage(Dict.PROTEIN_DESCRIPTION), info.getDescription()); - String markedSequence = markPeptides(info.getSequence(), peptides); - properties.put(viewContext.getMessage(Dict.SEQUENCE_NAME), markedSequence); - properties.put(viewContext.getMessage(Dict.COVERAGE), info.getCoverage()); - propertyGrid.setProperties(properties); - ContentPanel contentPanel = new ContentPanel(); - contentPanel.setHeight("100%"); - contentPanel.setScrollMode(Scroll.AUTO); - contentPanel.add(propertyGrid); - item.add(contentPanel); - tabPanel.add(item); - } - panel.add(tabPanel, new RowData(1, 1)); - return panel; - } - - private void recreateUIWithDatasetTable(ProteinByExperiment protein, ContentPanel propertyPanel) - { - BorderLayoutData layoutData = createBorderLayoutData(LayoutRegion.WEST); - layoutData.setSize(400); - add(propertyPanel, layoutData); - DisposableTabContent sequencesSection = - new DisposableTabContent(viewContext.getMessage(Dict.SEQUENCES), viewContext, - proteinReferenceID) - { - @Override - protected IDisposableComponent createDisposableContent() - { - return ProteinSequenceGrid.create(ProteinViewer.this.getViewContext(), - experimentOrNull, proteinReferenceID); - } - }; - add(sequencesSection, createRightBorderLayoutData()); - DisposableTabContent proteinsSection = - new DisposableTabContent(viewContext.getMessage(Dict.DATA_SET_PROTEINS), - viewContext, proteinReferenceID) - { - @Override - protected IDisposableComponent createDisposableContent() - { - return DataSetProteinGrid.create(ProteinViewer.this.getViewContext(), - experimentOrNull, proteinReferenceID); - } - }; - add(proteinsSection, createBorderLayoutData(LayoutRegion.SOUTH)); - layout(); - sequencesSection.setContentVisible(true); - proteinsSection.setContentVisible(true); - } - - private ContentPanel createPropertyPanel(ProteinByExperiment protein) - { - PropertyGrid propertyGrid = createPropertyGrid(protein); - ContentPanel contentPanel = new ContentPanel(); - contentPanel.setHeading(viewContext.getMessage(Dict.PRIMARY_PROTEIN)); - contentPanel.setScrollMode(Scroll.AUTO); - contentPanel.setCollapsible(true); - contentPanel.add(propertyGrid); - return contentPanel; - } - - private PropertyGrid createPropertyGrid(ProteinByExperiment protein) - { - final Map<String, Object> properties = new LinkedHashMap<String, Object>(); - PropertyGrid propertyGrid = new PropertyGrid(viewContext, 0, "200"); - if (experimentOrNull != null) - { - properties.put(viewContext.getMessage(Dict.EXPERIMENT_LABEL), experimentOrNull); - } - properties.put(viewContext.getMessage(Dict.ACCESSION_NUMBER), protein); - propertyGrid.registerPropertyValueRenderer(ProteinByExperiment.class, - ProteinRenderers.createProteinIdentLinkRenderer(viewContext)); - - properties.put(viewContext.getMessage(Dict.PROTEIN_DESCRIPTION), protein.getDescription()); - if (protein.getDetails() != null) - { - addProteinDetails(properties, propertyGrid, protein.getDetails()); - } - - propertyGrid.resizeRows(properties.size()); - propertyGrid.setProperties(properties); - return propertyGrid; - } - - private void addProteinDetails(Map<String, Object> properties, PropertyGrid propertyGrid, - ProteinDetails proteinDetails) - { - properties.put(viewContext.getMessage(Dict.DATABASE_NAME_AND_VERSION), - proteinDetails.getDatabaseNameAndVersion()); - String markedSequence = - markPeptides(proteinDetails.getSequence(), proteinDetails.getPeptides()); - properties.put(viewContext.getMessage(Dict.SEQUENCE_NAME), markedSequence); - - properties.put(viewContext.getMessage(Dict.COVERAGE), proteinDetails.getCoverage()); - - propertyGrid.registerPropertyValueRenderer(Peptide.class, - ProteinRenderers.createPeptideRenderer(viewContext)); - properties.put(viewContext.getMessage(Dict.PEPTIDES, proteinDetails.getPeptides().size()), - proteinDetails.getPeptides().toArray()); - - properties.put(viewContext.getMessage(Dict.PROBABILITY), proteinDetails.getProbability()); - properties.put(viewContext.getMessage(Dict.FDR), proteinDetails.getFalseDiscoveryRate()); - - DatasetInformationHolder dataset = new DatasetInformationHolder(proteinDetails); - properties.put(viewContext.getMessage(Dict.DATA_SET_PERM_ID), dataset); - propertyGrid.registerPropertyValueRenderer(DatasetInformationHolder.class, - ProteinRenderers.createEntityInformationPropertyValueRenderer(viewContext)); - } - - private static String markPeptides(String sequence, List<Peptide> peptides) - { - String markedSequence = - ProteinRenderers.markOccurrencesWithHtml(sequence, peptides, - AMINOACIDS_IN_ONE_BLOCK); - // the letters should have fixed width - return ProteinRenderers.getFixedWidthHTMLString(markedSequence); - } - - public static class DatasetInformationHolder implements IEntityInformationHolderWithIdentifier - { - private static final long serialVersionUID = ServiceVersionHolder.VERSION; - - private final ProteinDetails proteinDetails; - - public DatasetInformationHolder(ProteinDetails proteinDetails) - { - this.proteinDetails = proteinDetails; - } - - @Override - public EntityKind getEntityKind() - { - return EntityKind.DATA_SET; - } - - @Override - public EntityType getEntityType() - { - DataSetType dataSetType = new DataSetType(); - dataSetType.setCode(proteinDetails.getDataSetTypeCode()); - return dataSetType; - } - - @Override - public String getIdentifier() - { - return proteinDetails.getDataSetPermID(); - } - - @Override - public Long getId() - { - return proteinDetails.getDataSetTechID(); - } - - @Override - public String getCode() - { - return proteinDetails.getDataSetPermID(); - } - - @Override - public String getPermId() - { - return getIdentifier(); - } - } - - @Override - public DatabaseModificationKind[] getRelevantModifications() - { - return createDatabaseModificationObserver().getRelevantModifications(); - } - - @Override - public void update(Set<DatabaseModificationKind> observedModifications) - { - createDatabaseModificationObserver().update(observedModifications); - } - - private CompositeDatabaseModificationObserver createDatabaseModificationObserver() - { - CompositeDatabaseModificationObserver observer = - new CompositeDatabaseModificationObserver(); - if (proteinSamplesSection != null) - { - observer.addObserver(proteinSamplesSection.tryGetDatabaseModificationObserver()); - } - // TODO 2009-07-31, Piotr Buczek: refresh properties panel? - return observer; - } - - private static final class ProteinByExperimentCallback extends - AbstractAsyncCallback<ProteinByExperiment> - { - private final ProteinViewer viewer; - - private ProteinByExperimentCallback( - final IViewContext<IPhosphoNetXClientServiceAsync> viewContext, - final ProteinViewer viewer) - { - super(viewContext); - this.viewer = viewer; - } - - @Override - protected final void process(final ProteinByExperiment result) - { - viewer.recreateUI(result); - } - - } - - @Override - protected String getDeleteButtonLabel() - { - return viewContext.getMessage(Dict.BUTTON_DELETE_PROTEIN); - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/application/RawDataProcessingMenu.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/application/RawDataProcessingMenu.java deleted file mode 100644 index 4ceb310e6528bcaab377360e9ea869d515191683..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/application/RawDataProcessingMenu.java +++ /dev/null @@ -1,175 +0,0 @@ -/* - * Copyright 2010 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.application; - -import static ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.application.Dict.COPY_DATA_SETS_MESSAGE; -import static ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.application.Dict.COPY_DATA_SETS_TITLE; - -import java.util.List; - -import com.extjs.gxt.ui.client.widget.form.TextField; -import com.extjs.gxt.ui.client.widget.menu.Menu; - -import ch.systemsx.cisd.openbis.generic.client.web.client.ICommonClientServiceAsync; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.AbstractAsyncCallback; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.VoidAsyncCallback; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.menu.ActionMenu; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.menu.IActionMenuItem; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.widget.AbstractDataConfirmationDialog; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.IDelegatedAction; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.IDelegatedActionWithResult; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.IMessageProvider; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.TextToolItem; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataStoreServiceKind; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatastoreServiceDescription; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModelRow; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModelRowWithObject; -import ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.IPhosphoNetXClientServiceAsync; - -/** - * @author Franz-Josef Elmer - */ -public class RawDataProcessingMenu extends TextToolItem -{ - private static final class CopyConfirmationDialog extends - AbstractDataConfirmationDialog<List<TableModelRowWithObject<Sample>>> - { - private final IViewContext<IPhosphoNetXClientServiceAsync> specificViewContext; - - private final List<TableModelRowWithObject<Sample>> samples; - - private final DatastoreServiceDescription datastoreServiceDescription; - - private TextField<String> dataSetTypeField; - - private CopyConfirmationDialog( - IViewContext<IPhosphoNetXClientServiceAsync> specificViewContext, - DatastoreServiceDescription datastoreServiceDescription, - List<TableModelRowWithObject<Sample>> samples, String title) - { - super(specificViewContext, samples, title); - this.specificViewContext = specificViewContext; - this.datastoreServiceDescription = datastoreServiceDescription; - this.samples = samples; - setWidth(400); - } - - @Override - protected String createMessage() - { - String list = "["; - String delim = ""; - for (TableModelRow sample : samples) - { - list += delim + sample.getValues().get(0); - delim = ", "; - } - list += "]"; - String label = datastoreServiceDescription.getLabel(); - return specificViewContext.getMessage(COPY_DATA_SETS_MESSAGE, label, list); - } - - @Override - protected void executeConfirmedAction() - { - long[] rawDataSampleIDs = new long[samples.size()]; - for (int i = 0; i < samples.size(); i++) - { - rawDataSampleIDs[i] = samples.get(i).getObjectOrNull().getId(); - } - specificViewContext.getService().processRawData(datastoreServiceDescription.getKey(), - rawDataSampleIDs, dataSetTypeField.getValue(), - new VoidAsyncCallback<Void>(specificViewContext)); - } - - @Override - protected void extendForm() - { - dataSetTypeField = new TextField<String>(); - dataSetTypeField.setFieldLabel(specificViewContext - .getMessage(Dict.COPY_DATA_SETS_DATA_SET_TYPE_FIELD)); - dataSetTypeField.setSelectOnFocus(true); - dataSetTypeField.setWidth(200); - formPanel.add(dataSetTypeField); - formPanel.setLabelWidth(100); - } - } - - private final IViewContext<IPhosphoNetXClientServiceAsync> viewContext; - - private final IDelegatedActionWithResult<List<TableModelRowWithObject<Sample>>> selectedDataProvider; - - public RawDataProcessingMenu(IViewContext<IPhosphoNetXClientServiceAsync> viewContext, - IDelegatedActionWithResult<List<TableModelRowWithObject<Sample>>> selectedDataProvider) - { - super(viewContext.getMessage(Dict.COPY_DATA_SETS_BUTTON_LABEL)); - this.viewContext = viewContext; - this.selectedDataProvider = selectedDataProvider; - IViewContext<ICommonClientServiceAsync> commonViewContext = - viewContext.getCommonViewContext(); - viewContext.getCommonService().listDataStoreServices(DataStoreServiceKind.PROCESSING, - new AbstractAsyncCallback<List<DatastoreServiceDescription>>(commonViewContext) - { - @Override - public final void process(List<DatastoreServiceDescription> plugins) - { - createMenu(plugins); - } - }); - } - - private void createMenu(List<DatastoreServiceDescription> plugins) - { - Menu subMenu = new Menu(); - - for (final DatastoreServiceDescription datastoreServiceDescription : plugins) - { - IActionMenuItem actionMenuItem = new IActionMenuItem() - { - - @Override - public String getMenuText(IMessageProvider messageProvider) - { - return datastoreServiceDescription.getLabel(); - } - - @Override - public String getMenuId() - { - return datastoreServiceDescription.getKey(); - } - }; - IDelegatedAction action = new IDelegatedAction() - { - - @Override - public void execute() - { - String title = viewContext.getMessage(COPY_DATA_SETS_TITLE); - List<TableModelRowWithObject<Sample>> selectedSamples = selectedDataProvider.execute(); - new CopyConfirmationDialog(viewContext, datastoreServiceDescription, - selectedSamples, title).show(); - } - }; - subMenu.add(new ActionMenu(actionMenuItem, viewContext, action)); - } - setMenu(subMenu); - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/application/RawDataSampleGrid.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/application/RawDataSampleGrid.java deleted file mode 100644 index 67d0e66e6f173096e6aec649708f8b2b574d9f35..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/application/RawDataSampleGrid.java +++ /dev/null @@ -1,157 +0,0 @@ -/* - * Copyright 2010 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.application; - -import static ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseModificationKind.createOrDelete; -import static ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseModificationKind.edit; - -import java.util.List; - -import ch.systemsx.cisd.openbis.generic.client.web.client.application.AbstractAsyncCallback; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DatabaseModificationAwareComponent; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.TypedTableGrid; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.framework.LinkExtractor; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.DisposableEntityChooser; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.ICellListenerAndLinkGenerator; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.IDelegatedActionWithResult; -import ch.systemsx.cisd.openbis.generic.client.web.client.dto.DefaultResultSetConfig; -import ch.systemsx.cisd.openbis.generic.client.web.client.dto.GenericConstants; -import ch.systemsx.cisd.openbis.generic.client.web.client.dto.TableExportCriteria; -import ch.systemsx.cisd.openbis.generic.client.web.client.dto.TypedTableResultSet; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseModificationKind; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseModificationKind.ObjectKind; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ISerializableComparable; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModelRowWithObject; -import ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.IPhosphoNetXClientServiceAsync; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.RawDataSampleGridIDs; - -/** - * @author Franz-Josef Elmer - */ -class RawDataSampleGrid extends TypedTableGrid<Sample> -{ - public static final String BROWSER_ID = GenericConstants.ID_PREFIX + "raw_data_sample_browser"; - - public static DatabaseModificationAwareComponent create( - final IViewContext<IPhosphoNetXClientServiceAsync> viewContext) - { - RawDataSampleGrid grid = new RawDataSampleGrid(viewContext); - DisposableEntityChooser<TableModelRowWithObject<Sample>> disposable = - grid.asDisposableWithoutToolbar(); - return new DatabaseModificationAwareComponent(disposable.getComponent(), disposable); - } - - private final IViewContext<IPhosphoNetXClientServiceAsync> specificViewContext; - - RawDataSampleGrid(IViewContext<IPhosphoNetXClientServiceAsync> viewContext) - { - super(viewContext.getCommonViewContext(), BROWSER_ID, true, - PhosphoNetXDisplayTypeIDGenerator.RAW_DATA_SAMPLE_BROWSER_GRID); - specificViewContext = viewContext; - allowMultipleSelection(); - addEntityOperationsLabel(); - RawDataProcessingMenu button = - new RawDataProcessingMenu(viewContext, - new IDelegatedActionWithResult<List<TableModelRowWithObject<Sample>>>() - { - @Override - public List<TableModelRowWithObject<Sample>> execute() - { - return getSelectedBaseObjects(); - } - }); - enableButtonOnSelectedItems(button); - addButton(button); - linkMSInjectionSample(); - linkBiologicalSample(); - } - - private void linkMSInjectionSample() - { - registerListenerAndLinkGenerator(RawDataSampleGridIDs.CODE, - new ICellListenerAndLinkGenerator<Sample>() - { - - @Override - public void handle(TableModelRowWithObject<Sample> rowItem, - boolean specialKeyPressed) - { - showEntityInformationHolderViewer(rowItem.getObjectOrNull(), false, - specialKeyPressed); - } - - @Override - public String tryGetLink(Sample entity, ISerializableComparable value) - { - return LinkExtractor.tryExtract(entity); - } - - }); - } - - private void linkBiologicalSample() - { - registerListenerAndLinkGenerator(RawDataSampleGridIDs.PARENT, - new ICellListenerAndLinkGenerator<Sample>() - { - - @Override - public void handle(TableModelRowWithObject<Sample> rowItem, - boolean specialKeyPressed) - { - showEntityInformationHolderViewer(rowItem.getObjectOrNull() - .getGeneratedFrom(), false, specialKeyPressed); - } - - @Override - public String tryGetLink(Sample entity, - ISerializableComparable comparableValue) - { - return LinkExtractor.tryExtract(entity.getGeneratedFrom()); - } - }); - } - - @Override - protected void listTableRows( - DefaultResultSetConfig<String, TableModelRowWithObject<Sample>> resultSetConfig, - AbstractAsyncCallback<TypedTableResultSet<Sample>> callback) - { - specificViewContext.getService().listRawDataSamples(resultSetConfig, callback); - } - - @Override - protected void prepareExportEntities( - TableExportCriteria<TableModelRowWithObject<Sample>> exportCriteria, - AbstractAsyncCallback<String> callback) - { - specificViewContext.getService().prepareExportRawDataSamples(exportCriteria, callback); - } - - @Override - public DatabaseModificationKind[] getRelevantModifications() - { - return new DatabaseModificationKind[] - { createOrDelete(ObjectKind.SAMPLE_TYPE), edit(ObjectKind.SAMPLE_TYPE), - edit(ObjectKind.SAMPLE), createOrDelete(ObjectKind.SPACE), - createOrDelete(ObjectKind.PROPERTY_TYPE_ASSIGNMENT), - edit(ObjectKind.PROPERTY_TYPE_ASSIGNMENT) }; - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/application/ViewContext.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/application/ViewContext.java deleted file mode 100644 index 45e1ae9cd24da8b1c8a221c8e2a27fa2e00cc47c..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/application/ViewContext.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.application; - -import com.google.gwt.core.client.GWT; - -import ch.systemsx.cisd.openbis.generic.client.web.client.ICommonClientServiceAsync; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.AbstractPluginViewContext; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.locator.ViewLocatorResolverRegistry; -import ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.Constants; -import ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.IPhosphoNetXClientService; -import ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.IPhosphoNetXClientServiceAsync; - -/** - * View context for technology 'proteomics'. - * - * @author Franz-Josef Elmer - */ -public class ViewContext extends AbstractPluginViewContext<IPhosphoNetXClientServiceAsync> -{ - public ViewContext(IViewContext<ICommonClientServiceAsync> commonViewContext) - { - super(commonViewContext); - } - - @Override - public String getTechnology() - { - return Constants.TECHNOLOGY_NAME; - } - - @Override - protected IPhosphoNetXClientServiceAsync createClientServiceAsync() - { - return GWT.create(IPhosphoNetXClientService.class); - } - - @Override - protected void initializeLocatorHandlerRegistry(ViewLocatorResolverRegistry handlerRegistry) - { - super.initializeLocatorHandlerRegistry(handlerRegistry); - handlerRegistry.registerHandler(new ProteinViewLocatorResolver(this)); - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/application/columns/.gitignore b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/application/columns/.gitignore deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/application/model/.gitignore b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/application/model/.gitignore deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/application/wizard/BiologicalSampleChoosingPage.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/application/wizard/BiologicalSampleChoosingPage.java deleted file mode 100644 index b945606005c438caac7a6eec120e736b329af951..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/application/wizard/BiologicalSampleChoosingPage.java +++ /dev/null @@ -1,97 +0,0 @@ -/* - * Copyright 2011 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.application.wizard; - -import java.util.List; - -import com.extjs.gxt.ui.client.data.ModelData; -import com.extjs.gxt.ui.client.event.Listener; -import com.extjs.gxt.ui.client.event.SelectionChangedEvent; -import com.extjs.gxt.ui.client.util.Margins; -import com.extjs.gxt.ui.client.widget.Label; -import com.extjs.gxt.ui.client.widget.layout.RowData; - -import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.BaseEntityModel; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.wizard.WizardPage; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModelRowWithObject; -import ch.systemsx.cisd.openbis.plugin.demo.client.web.client.application.Dict; -import ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.IPhosphoNetXClientServiceAsync; - -/** - * Wizard for guiding the user to annotate an MS_INJECTION sample. - * - * @author Franz-Josef Elmer - */ -public class BiologicalSampleChoosingPage extends WizardPage<MsInjectionSampleAnnotationModel> -{ - private final IViewContext<IPhosphoNetXClientServiceAsync> viewContext; - - private BiologicalSampleGrid sampleGrid; - - public BiologicalSampleChoosingPage(IViewContext<IPhosphoNetXClientServiceAsync> viewContext, - MsInjectionSampleAnnotationModel model) - { - super(viewContext, MsInjectionAnnotationWizardState.BIOLOGICAL_SAMPLE_CHOOSING, model); - this.viewContext = viewContext; - setLeftContentByDictionary(); - } - - @Override - public void init() - { - addToRightContent( - new Label( - "Please choose a biological " + viewContext.getMessage(Dict.SAMPLE).toLowerCase() - + " as annotation of the MS_INJECTION " + viewContext.getMessage(Dict.SAMPLES).toLowerCase() - + " selected previously:"), - new RowData(1, -1, new Margins(10))); - - sampleGrid = new BiologicalSampleGrid(viewContext); - sampleGrid.addGridSelectionChangeListener(new Listener<SelectionChangedEvent<ModelData>>() - { - @Override - public void handleEvent(SelectionChangedEvent<ModelData> se) - { - List<ModelData> selection = se.getSelection(); - boolean enabled = selection.size() == 1; - enableNextButton(enabled); - } - - }); - addToRightContent(sampleGrid, new RowData(1, 400, new Margins(20, 10, 10, 10))); - } - - @Override - public void deactivate() - { - List<BaseEntityModel<TableModelRowWithObject<Sample>>> selectedItems = - sampleGrid.getSelectedItems(); - if (selectedItems.isEmpty() == false) - { - model.setBiologicalSample(selectedItems.get(0).getBaseObject().getObjectOrNull()); - } - } - - @Override - public void destroy() - { - sampleGrid.dispose(); - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/application/wizard/BiologicalSampleCreatingPage.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/application/wizard/BiologicalSampleCreatingPage.java deleted file mode 100644 index 95c8589b3860e7fb536b57b779296d237beb5da3..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/application/wizard/BiologicalSampleCreatingPage.java +++ /dev/null @@ -1,183 +0,0 @@ -/* - * Copyright 2011 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.application.wizard; - -import java.util.Collections; -import java.util.Iterator; -import java.util.List; -import java.util.Map; - -import com.extjs.gxt.ui.client.event.SelectionChangedEvent; -import com.extjs.gxt.ui.client.event.SelectionChangedListener; -import com.extjs.gxt.ui.client.util.Margins; -import com.extjs.gxt.ui.client.widget.layout.RowData; -import com.google.gwt.event.dom.client.ClickEvent; -import com.google.gwt.event.dom.client.ClickHandler; - -import ch.systemsx.cisd.openbis.generic.client.web.client.application.Dict; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.SampleTypeDisplayID; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.SampleTypeModel; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.SpaceSelectionWidget; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.field.CodeFieldWithGenerator; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.field.ExperimentChooserField; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.field.ExperimentChooserField.ExperimentChooserFieldAdaptor; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.sample.SampleTypeSelectionWidget; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.widget.ClickableFormPanel; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.widget.FieldUtil; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.wizard.WizardPage; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityKind; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IEntityProperty; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SampleType; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SampleTypePropertyType; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.api.IManagedInputWidgetDescription; -import ch.systemsx.cisd.openbis.plugin.generic.client.web.client.application.sample.AbstractGenericSampleRegisterEditForm; -import ch.systemsx.cisd.openbis.plugin.generic.client.web.client.application.sample.SamplePropertyEditor; -import ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.IPhosphoNetXClientServiceAsync; - -/** - * Wizard for guiding the user to annotate an MS_INJECTION sample. - * - * @author Franz-Josef Elmer - */ -public class BiologicalSampleCreatingPage extends WizardPage<MsInjectionSampleAnnotationModel> -{ - - private final IViewContext<IPhosphoNetXClientServiceAsync> viewContext; - - private ClickableFormPanel formPanel; - - private SampleTypeSelectionWidget sampleTypeSelectionWidget; - - private SampleType sampleType; - - private CodeFieldWithGenerator codeField; - - private SpaceSelectionWidget spaceSelectionWidget; - - private SamplePropertyEditor samplePropertyEditor; - - private ExperimentChooserFieldAdaptor experimentField; - - private Map<String, List<IManagedInputWidgetDescription>> inputWidgetDescriptions = Collections - .<String, List<IManagedInputWidgetDescription>> emptyMap(); - - public BiologicalSampleCreatingPage(IViewContext<IPhosphoNetXClientServiceAsync> viewContext, - MsInjectionSampleAnnotationModel model) - { - super(viewContext, MsInjectionAnnotationWizardState.BIOLOGICAL_SAMPLE_CREATING, model); - this.viewContext = viewContext; - setLeftContentByDictionary(); - } - - @Override - public void init() - { - formPanel = new ClickableFormPanel(); - formPanel.setHeaderVisible(false); - sampleTypeSelectionWidget = new SampleTypeSelectionWidget(viewContext, "bio-samp", true, - SampleTypeDisplayID.SAMPLE_REGISTRATION, null) - { - - @Override - protected void filterTypes(List<SampleType> types) - { - for (Iterator<SampleType> iterator = types.iterator(); iterator.hasNext();) - { - SampleType type = iterator.next(); - if (type.getCode().startsWith("BIO") == false) - { - iterator.remove(); - } - } - } - }; - sampleTypeSelectionWidget.addSelectionChangedListener(new SelectionChangedListener<SampleTypeModel>() - { - - @Override - public void selectionChanged(SelectionChangedEvent<SampleTypeModel> se) - { - SampleType sampleTypeOrNull = sampleTypeSelectionWidget.tryGetSelectedSampleType(); - if (sampleTypeOrNull != null) - { - onSampleTypeChanged(sampleTypeOrNull); - } - } - }); - formPanel.add(sampleTypeSelectionWidget); - addToRightContent(formPanel, new RowData(1, 600, new Margins(10))); - } - - protected void onSampleTypeChanged(SampleType type) - { - this.sampleType = type; - formPanel.removeAll(); - formPanel.add(sampleTypeSelectionWidget); - codeField = - new CodeFieldWithGenerator(viewContext, viewContext.getMessage(Dict.CODE), - type.getGeneratedCodePrefix(), EntityKind.SAMPLE, - type.isAutoGeneratedCode()); - boolean codeReadonly = type.isAutoGeneratedCode(); - codeField.setReadOnly(codeReadonly); - codeField.setHideTrigger(codeReadonly); - formPanel.add(codeField); - List<SampleTypePropertyType> types = type.getAssignedPropertyTypes(); - spaceSelectionWidget = - new SpaceSelectionWidget(viewContext, getId(), true, false, viewContext.getModel() - .getSessionContext().getUser().getHomeGroupCode()); - FieldUtil.markAsMandatory(spaceSelectionWidget); - formPanel.add(spaceSelectionWidget); - String label = viewContext.getMessage(Dict.EXPERIMENT); - experimentField = ExperimentChooserField.create(label, false, null, - viewContext.getCommonViewContext()); - formPanel.add(experimentField.getChooserField()); - - samplePropertyEditor = - new SamplePropertyEditor("bio-s", inputWidgetDescriptions, - viewContext.getCommonViewContext()); - samplePropertyEditor.initWithoutProperties(types); - samplePropertyEditor.addPropertyFieldsWithFieldsetToPanel(formPanel); - formPanel.layout(); - formPanel.addClickListener(new ClickHandler() - { - @Override - public void onClick(ClickEvent event) - { - enableNextButton(formPanel.isValid()); - } - }); - } - - @Override - public void deactivate() - { - String identifier = - AbstractGenericSampleRegisterEditForm.createSampleIdentifier(spaceSelectionWidget, - codeField); - String experimentIdentifierOrNull = experimentField.getChooserField().getValue(); - List<IEntityProperty> properties = samplePropertyEditor.extractProperties(); - model.defineBiologicalSample(sampleType, identifier, experimentIdentifierOrNull, properties); - } - - @Override - public void destroy() - { - spaceSelectionWidget.dispose(); - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/application/wizard/BiologicalSampleGrid.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/application/wizard/BiologicalSampleGrid.java deleted file mode 100644 index 707918e0db2b7d61002a489a8a045766c5ffc1dc..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/application/wizard/BiologicalSampleGrid.java +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Copyright 2011 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.application.wizard; - -import java.util.Arrays; -import java.util.List; - -import ch.systemsx.cisd.openbis.generic.client.web.client.application.AbstractAsyncCallback; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.TypedTableGrid; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.BrowserGridPagingToolBar.PagingToolBarButtonKind; -import ch.systemsx.cisd.openbis.generic.client.web.client.dto.DefaultResultSetConfig; -import ch.systemsx.cisd.openbis.generic.client.web.client.dto.GenericConstants; -import ch.systemsx.cisd.openbis.generic.client.web.client.dto.TableExportCriteria; -import ch.systemsx.cisd.openbis.generic.client.web.client.dto.TypedTableResultSet; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModelRowWithObject; -import ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.IPhosphoNetXClientServiceAsync; -import ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.application.PhosphoNetXDisplayTypeIDGenerator; -import ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.dto.BiologicalSampleGridColumnIDs; - -/** - * @author Franz-Josef Elmer - */ -public class BiologicalSampleGrid extends TypedTableGrid<Sample> -{ - private static final String PREFIX = GenericConstants.ID_PREFIX + "biological_sample"; - - public static final String BROWSER_ID = PREFIX + "_main"; - - public static final String GRID_ID = PREFIX + TypedTableGrid.GRID_POSTFIX; - - private final IViewContext<IPhosphoNetXClientServiceAsync> specificViewContext; - - public BiologicalSampleGrid(IViewContext<IPhosphoNetXClientServiceAsync> viewContext) - { - super(viewContext.getCommonViewContext(), BROWSER_ID, true, - PhosphoNetXDisplayTypeIDGenerator.BIOLOGICAL_SAMPLE_BROWSER_GRID); - specificViewContext = viewContext; - removeButtons(PagingToolBarButtonKind.CONFIG, PagingToolBarButtonKind.EXPORT, - PagingToolBarButtonKind.FILTERS); - showFiltersBar(); - setBorders(true); - } - - @Override - protected void listTableRows( - DefaultResultSetConfig<String, TableModelRowWithObject<Sample>> resultSetConfig, - AbstractAsyncCallback<TypedTableResultSet<Sample>> callback) - { - specificViewContext.getService().listBiologicalSamples(resultSetConfig, callback); - } - - @Override - protected List<String> getColumnIdsOfFilters() - { - return Arrays.asList(BiologicalSampleGridColumnIDs.IDENTIFIER, - BiologicalSampleGridColumnIDs.REGISTRATION_DATE); - } - - @Override - protected void prepareExportEntities( - TableExportCriteria<TableModelRowWithObject<Sample>> exportCriteria, - AbstractAsyncCallback<String> callback) - { - } - - public void dispose() - { - asDisposableWithoutToolbar().dispose(); - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/application/wizard/MsInjectionAnnotationWizardState.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/application/wizard/MsInjectionAnnotationWizardState.java deleted file mode 100644 index aa545172f0438a39bd282a933e76fc15deecee3e..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/application/wizard/MsInjectionAnnotationWizardState.java +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright 2011 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.application.wizard; - -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.wizard.IWizardState; - -/** - * States of wizard for annotating MS_INJECTION samples. - * - * @author Franz-Josef Elmer - */ -public enum MsInjectionAnnotationWizardState implements IWizardState -{ - MS_INJECTION_SAMPLE_CHOOSING, CHOOSE_OR_CREATE_QUESTION, BIOLOGICAL_SAMPLE_CHOOSING, BIOLOGICAL_SAMPLE_CREATING; -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/application/wizard/MsInjectionSampleAnnotationModel.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/application/wizard/MsInjectionSampleAnnotationModel.java deleted file mode 100644 index 8c9f7d2e41063603001e9d27f1e578df58d6b56b..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/application/wizard/MsInjectionSampleAnnotationModel.java +++ /dev/null @@ -1,120 +0,0 @@ -/* - * Copyright 2011 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.application.wizard; - -import static ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.application.wizard.MsInjectionAnnotationWizardState.BIOLOGICAL_SAMPLE_CHOOSING; -import static ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.application.wizard.MsInjectionAnnotationWizardState.BIOLOGICAL_SAMPLE_CREATING; -import static ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.application.wizard.MsInjectionAnnotationWizardState.CHOOSE_OR_CREATE_QUESTION; -import static ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.application.wizard.MsInjectionAnnotationWizardState.MS_INJECTION_SAMPLE_CHOOSING; - -import java.util.ArrayList; -import java.util.List; - -import ch.systemsx.cisd.openbis.generic.client.web.client.application.Dict; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.VoidAsyncCallback; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.wizard.IWizardDataModel; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.wizard.IWizardState; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.wizard.WizardWorkflowModel; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IEntityProperty; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewSample; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SampleType; -import ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.IPhosphoNetXClientServiceAsync; - -/** - * @author Franz-Josef Elmer - */ -public class MsInjectionSampleAnnotationModel implements IWizardDataModel -{ - private final IViewContext<IPhosphoNetXClientServiceAsync> context; - - private final WizardWorkflowModel workflowModel; - - private List<Sample> msInjectionSamples = new ArrayList<Sample>(); - - private boolean chooseBiologicalSampleFlag; - - private Sample biologicalSample; - - private NewSample newBiologicalSample; - - public MsInjectionSampleAnnotationModel(IViewContext<IPhosphoNetXClientServiceAsync> context) - { - this.context = context; - workflowModel = new WizardWorkflowModel(this); - workflowModel.addTransition(MS_INJECTION_SAMPLE_CHOOSING, CHOOSE_OR_CREATE_QUESTION); - workflowModel.addTransition(CHOOSE_OR_CREATE_QUESTION, BIOLOGICAL_SAMPLE_CHOOSING); - workflowModel.addTransition(CHOOSE_OR_CREATE_QUESTION, BIOLOGICAL_SAMPLE_CREATING); - } - - @Override - public WizardWorkflowModel getWorkflow() - { - return workflowModel; - } - - @Override - public IWizardState determineNextState(IWizardState currentState) - { - return chooseBiologicalSampleFlag ? BIOLOGICAL_SAMPLE_CHOOSING : BIOLOGICAL_SAMPLE_CREATING; - } - - public void setSelectedMsInjectionSample(List<Sample> samples) - { - msInjectionSamples = samples; - } - - public List<Sample> getMsInjectionSamples() - { - return msInjectionSamples; - } - - public void setChooseBiologicalSampleFlag(boolean flag) - { - chooseBiologicalSampleFlag = flag; - } - - public void setBiologicalSample(Sample biologicalSample) - { - this.biologicalSample = biologicalSample; - } - - public void defineBiologicalSample(SampleType sampleType, String identifier, - String experimentIdentifierOrNull, List<IEntityProperty> properties) - { - newBiologicalSample = NewSample.createWithParents(identifier, sampleType, null, null); - newBiologicalSample.setProperties(properties.toArray(IEntityProperty.EMPTY_ARRAY)); - newBiologicalSample.setExperimentIdentifier(experimentIdentifierOrNull); - } - - @Override - public String finish() - { - VoidAsyncCallback<Void> callback = new VoidAsyncCallback<Void>(context); - if (chooseBiologicalSampleFlag) - { - context.getService().linkSamples(biologicalSample, msInjectionSamples, callback); - } else - { - context.getService().createAndLinkSamples(newBiologicalSample, msInjectionSamples, callback); - } - return msInjectionSamples.size() + " MS_INJECTION " + context.getMessage(Dict.SAMPLES).toLowerCase() - + " have been annotated."; - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/application/wizard/MsInjectionSampleAnnotationWizard.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/application/wizard/MsInjectionSampleAnnotationWizard.java deleted file mode 100644 index 42b6377eb3ec7527aad4fbcf0c21508672442ddd..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/application/wizard/MsInjectionSampleAnnotationWizard.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright 2011 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.application.wizard; - -import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.wizard.Wizard; -import ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.IPhosphoNetXClientServiceAsync; - -/** - * Wizard for annotation MS_INJECTION samples. - * - * @author Franz-Josef Elmer - */ -public class MsInjectionSampleAnnotationWizard extends Wizard<MsInjectionSampleAnnotationModel> -{ - public MsInjectionSampleAnnotationWizard(IViewContext<IPhosphoNetXClientServiceAsync> context) - { - super(new MsInjectionSampleAnnotationModel(context)); - MsInjectionSampleAnnotationModel wizardDataModel = getWizardDataModel(); - register(new MsInjectionSampleChoosingPage(context, wizardDataModel)); - register(new QuestionPage(context, wizardDataModel)); - register(new BiologicalSampleChoosingPage(context, wizardDataModel)); - register(new BiologicalSampleCreatingPage(context, wizardDataModel)); - start(); - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/application/wizard/MsInjectionSampleChoosingPage.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/application/wizard/MsInjectionSampleChoosingPage.java deleted file mode 100644 index 8499af6467777d1ac08048e5a2a9d0ee915d84f0..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/application/wizard/MsInjectionSampleChoosingPage.java +++ /dev/null @@ -1,98 +0,0 @@ -/* - * Copyright 2011 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.application.wizard; - -import java.util.ArrayList; -import java.util.List; - -import com.extjs.gxt.ui.client.data.ModelData; -import com.extjs.gxt.ui.client.event.Listener; -import com.extjs.gxt.ui.client.event.SelectionChangedEvent; -import com.extjs.gxt.ui.client.util.Margins; -import com.extjs.gxt.ui.client.widget.Label; -import com.extjs.gxt.ui.client.widget.layout.RowData; - -import ch.systemsx.cisd.openbis.generic.client.web.client.application.Dict; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.BaseEntityModel; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.wizard.WizardPage; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModelRowWithObject; -import ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.IPhosphoNetXClientServiceAsync; - -/** - * Wizard for guiding the user to annotate an MS_INJECTION sample. - * - * @author Franz-Josef Elmer - */ -public class MsInjectionSampleChoosingPage extends WizardPage<MsInjectionSampleAnnotationModel> -{ - private final IViewContext<IPhosphoNetXClientServiceAsync> viewContext; - - private ParentlessMsInjectionSampleGrid sampleGrid; - - public MsInjectionSampleChoosingPage(IViewContext<IPhosphoNetXClientServiceAsync> viewContext, - MsInjectionSampleAnnotationModel model) - { - super(viewContext, MsInjectionAnnotationWizardState.MS_INJECTION_SAMPLE_CHOOSING, model); - this.viewContext = viewContext; - setLeftContentByDictionary(); - } - - @Override - public void init() - { - addToRightContent(new Label( - "Please choose one or more MS_INJECTION " + viewContext.getMessage(Dict.SAMPLES).toLowerCase() - + " to be annotated:"), new RowData(1, - -1, new Margins(10))); - - sampleGrid = new ParentlessMsInjectionSampleGrid(viewContext); - sampleGrid.addGridSelectionChangeListener(new Listener<SelectionChangedEvent<ModelData>>() - { - @Override - public void handleEvent(SelectionChangedEvent<ModelData> se) - { - List<ModelData> selection = se.getSelection(); - boolean enabled = selection.size() > 0; - enableNextButton(enabled); - } - - }); - addToRightContent(sampleGrid, new RowData(1, 400, new Margins(20, 10, 10, 10))); - } - - @Override - public void deactivate() - { - List<BaseEntityModel<TableModelRowWithObject<Sample>>> selectedItems = - sampleGrid.getSelectedItems(); - ArrayList<Sample> samples = new ArrayList<Sample>(); - for (BaseEntityModel<TableModelRowWithObject<Sample>> item : selectedItems) - { - samples.add(item.getBaseObject().getObjectOrNull()); - } - model.setSelectedMsInjectionSample(samples); - } - - @Override - public void destroy() - { - sampleGrid.dispose(); - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/application/wizard/ParentlessMsInjectionSampleGrid.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/application/wizard/ParentlessMsInjectionSampleGrid.java deleted file mode 100644 index 9f61b5e643c7272972cbc03407d87f0ba17d4fd6..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/application/wizard/ParentlessMsInjectionSampleGrid.java +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Copyright 2011 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.application.wizard; - -import java.util.Arrays; -import java.util.List; - -import ch.systemsx.cisd.openbis.generic.client.web.client.application.AbstractAsyncCallback; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.TypedTableGrid; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.BrowserGridPagingToolBar.PagingToolBarButtonKind; -import ch.systemsx.cisd.openbis.generic.client.web.client.dto.DefaultResultSetConfig; -import ch.systemsx.cisd.openbis.generic.client.web.client.dto.GenericConstants; -import ch.systemsx.cisd.openbis.generic.client.web.client.dto.TableExportCriteria; -import ch.systemsx.cisd.openbis.generic.client.web.client.dto.TypedTableResultSet; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModelRowWithObject; -import ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.IPhosphoNetXClientServiceAsync; -import ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.application.PhosphoNetXDisplayTypeIDGenerator; -import ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.dto.ParentlessMsInjectionSampleGridColumnIDs; - -/** - * @author Franz-Josef Elmer - */ -public class ParentlessMsInjectionSampleGrid extends TypedTableGrid<Sample> -{ - private static final String PREFIX = GenericConstants.ID_PREFIX - + "parentless_ms_injection_sample"; - - public static final String BROWSER_ID = PREFIX + "_main"; - - public static final String GRID_ID = PREFIX + TypedTableGrid.GRID_POSTFIX; - - private final IViewContext<IPhosphoNetXClientServiceAsync> specificViewContext; - - public ParentlessMsInjectionSampleGrid(IViewContext<IPhosphoNetXClientServiceAsync> viewContext) - { - super(viewContext.getCommonViewContext(), BROWSER_ID, true, - PhosphoNetXDisplayTypeIDGenerator.PARENT_LESS_MS_INJECTION_SAMPLE_BROWSER_GRID); - specificViewContext = viewContext; - removeButtons(PagingToolBarButtonKind.CONFIG, PagingToolBarButtonKind.EXPORT, - PagingToolBarButtonKind.FILTERS); - allowMultipleSelection(); - showFiltersBar(); - setBorders(true); - } - - @Override - protected void listTableRows( - DefaultResultSetConfig<String, TableModelRowWithObject<Sample>> resultSetConfig, - AbstractAsyncCallback<TypedTableResultSet<Sample>> callback) - { - specificViewContext.getService() - .listParentlessMsInjectionSamples(resultSetConfig, callback); - } - - @Override - protected List<String> getColumnIdsOfFilters() - { - return Arrays.asList(ParentlessMsInjectionSampleGridColumnIDs.IDENTIFIER, - ParentlessMsInjectionSampleGridColumnIDs.REGISTRATION_DATE); - } - - @Override - protected void prepareExportEntities( - TableExportCriteria<TableModelRowWithObject<Sample>> exportCriteria, - AbstractAsyncCallback<String> callback) - { - } - - public void dispose() - { - asDisposableWithoutToolbar().dispose(); - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/application/wizard/QuestionPage.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/application/wizard/QuestionPage.java deleted file mode 100644 index cd739d5702b2bdd0bdaad4cf3c06b05206bd8c61..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/application/wizard/QuestionPage.java +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright 2011 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.application.wizard; - -import com.extjs.gxt.ui.client.util.Margins; -import com.extjs.gxt.ui.client.widget.Label; -import com.extjs.gxt.ui.client.widget.form.Radio; -import com.extjs.gxt.ui.client.widget.form.RadioGroup; -import com.extjs.gxt.ui.client.widget.layout.RowData; - -import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.wizard.WizardPage; -import ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.IPhosphoNetXClientServiceAsync; -import ch.systemsx.cisd.openbis.plugin.query.client.web.client.application.Dict; - -/** - * @author Franz-Josef Elmer - */ -public class QuestionPage extends WizardPage<MsInjectionSampleAnnotationModel> -{ - - private Radio chooseSampleRadioButton; - - private RadioGroup radioGroup; - - public QuestionPage(IViewContext<IPhosphoNetXClientServiceAsync> viewContext, - MsInjectionSampleAnnotationModel model) - { - super(viewContext, MsInjectionAnnotationWizardState.CHOOSE_OR_CREATE_QUESTION, model); - setLeftContentByDictionary(); - addToRightContent(new Label("How do you want to annotate your " - + viewContext.getMessage(Dict.SAMPLES).toLowerCase() + "?"), new RowData(1, -1, new Margins(10))); - radioGroup = new RadioGroup(); - radioGroup.setFieldLabel("choose"); - chooseSampleRadioButton = new Radio(); - String sampleText = viewContext.getMessage(Dict.SAMPLE).toLowerCase(); - chooseSampleRadioButton.setBoxLabel("I want to choose an existing biological " + sampleText + "."); - chooseSampleRadioButton.setValue(true); - radioGroup.add(chooseSampleRadioButton); - Radio createSampleRadioButton = new Radio(); - createSampleRadioButton.setBoxLabel("I want to create a new biological " + sampleText + "."); - radioGroup.add(createSampleRadioButton); - addToRightContent(radioGroup, new RowData(1, -1, new Margins(10))); - enableNextButton(true); - } - - @Override - public void deactivate() - { - model.setChooseBiologicalSampleFlag(radioGroup.getValue().equals(chooseSampleRadioButton)); - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/dto/BiologicalSampleGridColumnIDs.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/dto/BiologicalSampleGridColumnIDs.java deleted file mode 100644 index cce385f54ccf5f08b460a2b3c6e12a7c14ef9b79..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/dto/BiologicalSampleGridColumnIDs.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright 2011 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.dto; - -import ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.application.wizard.ParentlessMsInjectionSampleGrid; - -/** - * IDs of columns of {@link ParentlessMsInjectionSampleGrid}. - * - * @author Franz-Josef Elmer - */ -public class BiologicalSampleGridColumnIDs -{ - public static final String IDENTIFIER = "IDENTIFIER"; - - public static final String REGISTRATION_DATE = "REGISTRATION_DATE"; -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/dto/DataSetProteinGridColumnIDs.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/dto/DataSetProteinGridColumnIDs.java deleted file mode 100644 index dd979dab26362ac902679520b7c5ed13fffa8c54..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/dto/DataSetProteinGridColumnIDs.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2011 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.dto; - -/** - * Column IDs for data set protein grid. - * - * @author Franz-Josef Elmer - */ -public class DataSetProteinGridColumnIDs -{ - public static final String DATA_SET_PERM_ID = "DATA_SET_PERM_ID"; - - public static final String SEQUENCE_NAME = "SEQUENCE_NAME"; - - public static final String PEPTIDE_COUNT = "PEPTIDE_COUNT"; - - public static final String FDR = "FDR"; -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/dto/ListProteinByExperimentAndReferenceCriteria.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/dto/ListProteinByExperimentAndReferenceCriteria.java deleted file mode 100644 index 916a69fab857445469db65f58f221f549edfded8..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/dto/ListProteinByExperimentAndReferenceCriteria.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.dto; - -import com.google.gwt.user.client.rpc.IsSerializable; - -import ch.systemsx.cisd.openbis.generic.client.web.client.dto.DefaultResultSetConfig; -import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModelRowWithObject; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.DataSetProtein; - -/** - * @author Franz-Josef Elmer - */ -public class ListProteinByExperimentAndReferenceCriteria extends - DefaultResultSetConfig<String, TableModelRowWithObject<DataSetProtein>> implements IsSerializable -{ - private TechId experimentID; - - private TechId proteinReferenceID; - - public final TechId getExperimentID() - { - return experimentID; - } - - public final void setExperimentID(TechId experimentID) - { - this.experimentID = experimentID; - } - - public final TechId getProteinReferenceID() - { - return proteinReferenceID; - } - - public final void setProteinReferenceID(TechId proteinReferenceID) - { - this.proteinReferenceID = proteinReferenceID; - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/dto/ListProteinByExperimentCriteria.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/dto/ListProteinByExperimentCriteria.java deleted file mode 100644 index ff65dae794d464ea3269945f4e9ad380fc0653b8..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/dto/ListProteinByExperimentCriteria.java +++ /dev/null @@ -1,94 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.dto; - -import com.google.gwt.user.client.rpc.IsSerializable; - -import ch.systemsx.cisd.openbis.generic.client.web.client.dto.DefaultResultSetConfig; -import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModelRowWithObject; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.AggregateFunction; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.ProteinInfo; - -/** - * @author Franz-Josef Elmer - */ -public class ListProteinByExperimentCriteria extends - DefaultResultSetConfig<String, TableModelRowWithObject<ProteinInfo>> implements - IsSerializable -{ - private TechId experimentID; - - private double falseDiscoveryRate; - - private AggregateFunction aggregateFunction; - - private String treatmentTypeCode; - - private boolean aggregateOriginal; - - public final TechId getExperimentID() - { - return experimentID; - } - - public final void setExperimentID(TechId experimentID) - { - this.experimentID = experimentID; - } - - public final double getFalseDiscoveryRate() - { - return falseDiscoveryRate; - } - - public final void setFalseDiscoveryRate(double falseDiscoveryRate) - { - this.falseDiscoveryRate = falseDiscoveryRate; - } - - public final AggregateFunction getAggregateFunction() - { - return aggregateFunction; - } - - public void setAggregateFunction(AggregateFunction aggregateFunction) - { - this.aggregateFunction = aggregateFunction; - } - - public final String getTreatmentTypeCode() - { - return treatmentTypeCode; - } - - public final void setTreatmentTypeCode(String treatmentTypeCode) - { - this.treatmentTypeCode = treatmentTypeCode; - } - - public final boolean isAggregateOriginal() - { - return aggregateOriginal; - } - - public final void setAggregateOriginal(boolean aggregateOriginal) - { - this.aggregateOriginal = aggregateOriginal; - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/dto/ListProteinSequenceCriteria.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/dto/ListProteinSequenceCriteria.java deleted file mode 100644 index 8569e6efc3c818d45bd27956c2accfe9c4679ae1..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/dto/ListProteinSequenceCriteria.java +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.dto; - -import com.google.gwt.user.client.rpc.IsSerializable; - -import ch.systemsx.cisd.openbis.generic.client.web.client.dto.DefaultResultSetConfig; -import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModelRowWithObject; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.ProteinSequence; - -/** - * Criteria for listing {@link ProteinSequence} instances. - * - * @author Franz-Josef Elmer - */ -public class ListProteinSequenceCriteria extends - DefaultResultSetConfig<String, TableModelRowWithObject<ProteinSequence>> implements - IsSerializable -{ - private TechId proteinReferenceID; - - private TechId experimentID; - - public final TechId getProteinReferenceID() - { - return proteinReferenceID; - } - - public final void setProteinReferenceID(TechId proteinReferenceID) - { - this.proteinReferenceID = proteinReferenceID; - } - - public void setExperimentID(TechId experimentID) - { - this.experimentID = experimentID; - } - - public TechId getExperimentID() - { - return experimentID; - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/dto/ListProteinSummaryByExperimentCriteria.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/dto/ListProteinSummaryByExperimentCriteria.java deleted file mode 100644 index 3944a71acfb949ac0933f6b08038895f6d651aff..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/dto/ListProteinSummaryByExperimentCriteria.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.dto; - -import com.google.gwt.user.client.rpc.IsSerializable; - -import ch.systemsx.cisd.openbis.generic.client.web.client.dto.DefaultResultSetConfig; -import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModelRowWithObject; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.ProteinSummary; - -/** - * @author Franz-Josef Elmer - */ -public class ListProteinSummaryByExperimentCriteria extends - DefaultResultSetConfig<String, TableModelRowWithObject<ProteinSummary>> implements - IsSerializable -{ - private TechId experimentID; - - public final TechId getExperimentID() - { - return experimentID; - } - - public final void setExperimentID(TechId experimentID) - { - this.experimentID = experimentID; - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/dto/ListSampleAbundanceByProteinCriteria.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/dto/ListSampleAbundanceByProteinCriteria.java deleted file mode 100644 index f191657ee18f58b81f72ed22c6edd05b1465535e..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/dto/ListSampleAbundanceByProteinCriteria.java +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.dto; - -import com.google.gwt.user.client.rpc.IsSerializable; - -import ch.systemsx.cisd.openbis.generic.client.web.client.dto.DefaultResultSetConfig; -import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModelRowWithObject; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.ProteinRelatedSample; - -/** - * @author Franz-Josef Elmer - */ -public class ListSampleAbundanceByProteinCriteria extends - DefaultResultSetConfig<String, TableModelRowWithObject<ProteinRelatedSample>> implements IsSerializable -{ - private TechId experimentID; - - private TechId proteinReferenceID; - - public final TechId getExperimentID() - { - return experimentID; - } - - public final void setExperimentID(Long experimentID) - { - this.experimentID = experimentID == null ? null : new TechId(experimentID); - } - - public final TechId getProteinReferenceID() - { - return proteinReferenceID; - } - - public final void setProteinReferenceID(TechId proteinReferenceID) - { - this.proteinReferenceID = proteinReferenceID; - } -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/dto/ParentlessMsInjectionSampleGridColumnIDs.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/dto/ParentlessMsInjectionSampleGridColumnIDs.java deleted file mode 100644 index 5655e9f62f299cde64fcf34bc3df0bb6763d52d9..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/dto/ParentlessMsInjectionSampleGridColumnIDs.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright 2011 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.dto; - -import ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.application.wizard.ParentlessMsInjectionSampleGrid; - -/** - * IDs of columns of {@link ParentlessMsInjectionSampleGrid}. - * - * @author Franz-Josef Elmer - */ -public class ParentlessMsInjectionSampleGridColumnIDs -{ - public static final String IDENTIFIER = "IDENTIFIER"; - - public static final String REGISTRATION_DATE = "REGISTRATION_DATE"; -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/dto/ProteinBrowserColumnIDs.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/dto/ProteinBrowserColumnIDs.java deleted file mode 100644 index faadf66e0ec68e8aeaefe1a1affc575d09b0ecb2..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/dto/ProteinBrowserColumnIDs.java +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright 2011 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.dto; - -/** - * @author Franz-Josef Elmer - */ -public class ProteinBrowserColumnIDs -{ - public static final String ACCESSION_NUMBER = "ACCESSION_NUMBER"; - - public static final String PROTEIN_DESCRIPTION = "PROTEIN_DESCRIPTION"; - - public static final String COVERAGE = "COVERAGE"; -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/dto/ProteinRelatedSampleGridColumnIDs.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/dto/ProteinRelatedSampleGridColumnIDs.java deleted file mode 100644 index 34c9cff25fa5adf639ebc713c549a9fb7e8593aa..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/dto/ProteinRelatedSampleGridColumnIDs.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright 2011 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.dto; - -/** - * @author Franz-Josef Elmer - */ -public class ProteinRelatedSampleGridColumnIDs -{ - public static final String SAMPLE_IDENTIFIER = "SAMPLE_IDENTIFIER"; - - public static final String SAMPLE_TYPE = "SAMPLE_TYPE"; - - public static final String ABUNDANCE = "ABUNDANCE"; - - public static final String MODIFIED_AMINO_ACID = "MODIFIED_AMINO_ACID"; - - public static final String MODIFICATION_POSITION = "MODIFICATION_POSITION"; - - public static final String MODIFICATION_MASS = "MODIFICATION_MASS"; - - public static final String MODIFICATION_FRACTION = "MODIFICATION_FRACTION"; -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/dto/ProteinSequenceGridColumnIDs.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/dto/ProteinSequenceGridColumnIDs.java deleted file mode 100644 index 23a88159c15fdbdecfcf13f6bba6b1b6935af6bf..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/dto/ProteinSequenceGridColumnIDs.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2011 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.dto; - -import ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.application.ProteinSequenceGrid; - -/** - * Column IDs of {@link ProteinSequenceGrid}. - * - * @author Franz-Josef Elmer - */ -public class ProteinSequenceGridColumnIDs -{ - public static final String SEQUENCE_SHORT_NAME = "SEQUENCE_SHORT_NAME"; - - public static final String DATABASE_NAME_AND_VERSION = "DATABASE_NAME_AND_VERSION"; - - public static final String SEQUENCE = "SEQUENCE"; -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/dto/ProteinSummaryGridColumnIDs.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/dto/ProteinSummaryGridColumnIDs.java deleted file mode 100644 index 2f94f198755f2aa4bca906bf103c20027513d2a9..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/dto/ProteinSummaryGridColumnIDs.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright 2011 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.dto; - -/** - * Column IDs for protein summary grid. - * - * @author Franz-Josef Elmer - */ -public class ProteinSummaryGridColumnIDs -{ - public static final String FDR = "FDR"; - - public static final String PROTEIN_COUNT = "PROTEIN_COUNT"; - - public static final String PEPTIDE_COUNT = "PEPTIDE_COUNT"; - - public static final String DECOY_PROTEIN_COUNT = "DECOY_PROTEIN_COUNT"; - - public static final String DECOY_PEPTIDE_COUNT = "DECOY_PEPTIDE_COUNT"; -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/public/index.html b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/public/index.html deleted file mode 100644 index 0298c05ee9d34e4111687025192724d99a78292c..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/public/index.html +++ /dev/null @@ -1,61 +0,0 @@ -<!DOCTYPE html> -<html> -<head> -<title>openBIS - Biology Information System for Proteomics</title> - -<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> -<!-- force IE to go to document mode IE8 standards (and avoid the dreadful quirks-mode) --> -<meta http-equiv="X-UA-Compatible" content="IE=edge" > - -<link rel="shortcut icon" href="images/favicon.ico" /> -<link rel="icon" type="image/png" href="images/favicon.png" /> -<link rel="stylesheet" type="text/css" href="resources/css/gxt-all.css" /> -<!-- New Grey / White Style --> -<link rel="stylesheet" type="text/css" href="resources/css/gxt-gray.css" /> -<link rel="stylesheet" type="text/css" href="resources/css/debug-panel.css" /> - -<!-- -// This script loads your compiled module. If you add any GWT meta tags, they must be added before this line. ---> -<script language="javascript" - src="ch.systemsx.cisd.openbis.plugin.proteomics.OpenBIS.nocache.js"></script> - -<!-- This snippet should be automatically included in all the HTML that wishes to use the debug panel. --> -<script type="text/javascript" language="javascript"> - var stats = window.__stats = []; - window.__gwtStatsEvent = function(evt) { - stats[stats.length] = evt; - var listener = window.__stats_listener; - listener && listener(evt); - return true; - } -</script> - -</head> -<!-- -// The body can have arbitrary html, or you can leave the body empty if you want to create a completely dynamic ui. ---> -<body> -<!-- Required by IE (GWT 1.7) --> -<iframe id="__gwt_historyFrame" style="width: 0; height: 0; border: 0"></iframe> -<div id="openbis_login_div" style="visibility: hidden"> -<form id="openbis_login_form" method="post" action="javascript:;"> -<table cellspacing="5"> - <tbody> - <tr style="padding-bottom: 5px"> - <td><span>User:</span></td> - <td><input type="text" id="openbis_login_username" - name="openbis-username" style="width: 150px;"></td> - </tr> - <tr style="padding-bottom: 5px"> - <td><span>Password:</span></td> - <td><input type="password" id="openbis_login_password" - name="openbis-password" style="width: 150px;"></td> - </tr> - </tbody> -</table> -<input style="margin-left: 200px" type="submit" id="openbis_login_submit" value="Login"> -</form> -</div> -</body> -</html> diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/public/proteomics-dictionary.js b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/public/proteomics-dictionary.js deleted file mode 100644 index d530628ec0e4998743b1d70dec9fe1ff045fb7d9..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/public/proteomics-dictionary.js +++ /dev/null @@ -1,101 +0,0 @@ -// Proteomics dictionary -var proteomics = { - ALL_PROTEINS_OF_AN_EXPERIMENT_menu_item: "All Proteins of an Experiment", - ALL_PROTEINS_OF_AN_EXPERIMENT_tab_label: "Proteins of an Experiment", - selected_experiment_label: "Experiment", - false_discovery_rate_filter_label: "False Discovery Rate", - aggregate_function_label: "Aggregate Function", - aggregate_on_treatment_type_label: "Aggregate on", - aggregate_original_label: "Aggregate original", - - // Experiment View - data_set_processing_section_title: "Available Data Set Processing Tasks", - - // Protein grid - accession_number: "Accession Number", - protein_description: "Protein", - coverage: "Protein Coverage (in %)", - false_discovery_rate: "FDR", - fdr_combo_info: "<html><div style='width:250px'>This False Discovery Rate determines which ProteinProphet probability " + - "cut-off is applied to the combined ProteinProphet output. Only proteins above this " + - "probability are displayed in the table.<br/><br/>" + - "Note, that the spectral counts are not affected by this threshold and values for individual " + - "samples stay unchanged as long as the protein is displayed at all.</div></html>", - - // Protein in experiment viewer - loading_protein_details_waiting_message: "Loading details for protein {0}", - proteins_section: "Proteins", - protein_in_experiment_tab_label: "{0} in {1}", - experiment_label: "Experiment", - sequence_short_name: "Sequence Reference", - protein_browser: "Proteins", - protein_summary: "Protein/Peptide Counts", - database_name_and_version: "Database", - primary_protein: "Primary Protein and Peptides", - indistinguishable_proteins: "Indistinguishable Proteins", - sequence: "Amino Acid Sequence", - sequences: "Amino Acid Sequences", - data_set_proteins: "Data Sets", - data_set_perm_id: "Data Set", - protein_count: "Proteins (no decoy)", - peptide_count: "Peptides (no decoy)", - decoy_protein_count: "Proteins (decoy)", - decoy_peptide_count: "Peptides (decoy)", - peptides: "Peptides ({0})", - sequence_name: "Sequence Reference", - false_discovery_rate_column: "FDR (Protein Prophet)", - protein_probability: "Probability (Protein Prophet)", - button_delete_protein: "Delete Protein", - - // ProteinRelatedSampleGrid - openbis_protein_related_sample_grid_main_SAMPLE_IDENTIFIER: "Identifier", - openbis_protein_related_sample_grid_main_SAMPLE_TYPE: "Sample Type", - openbis_protein_related_sample_grid_main_ABUNDANCE: "Abundance", - openbis_protein_related_sample_grid_main_MODIFIED_AMINO_ACID: "Modified Amino Acid", - openbis_protein_related_sample_grid_main_MODIFICATION_POSITION: "Modification Position", - openbis_protein_related_sample_grid_main_MODIFICATION_MASS: "Modification Mass", - openbis_protein_related_sample_grid_main_MODIFICATION_FRACTION: "Modification Fraction", - - // MS_INJECTION annotation wizard - - MS_INJECTION_SAMPLE_CHOOSING_left_content: "MS data are added to openBIS in an automated process. " - + "The corresponding data sets are associated with samples of type <tt>MS_INJECTION</tt>." - + "<p>Before MS data of such samples can be processed in a protein identification pipeline " - + "they have to be <b>annotated</b>. In the terminology of openBIS this means: " - + "An <tt>MS_INJECTION</tt> sample is linked to a biological sample where " - + "the biological sample is the parent and the <tt>MS_INJECTION</tt> sample is the child. " - + "The biological sample has all annotations (called properties in openBIS). " - + "They define the scientific context of proteins found and have to be created " - + "by the user before the MS_INJECTION sample can be linked to it. " - + "<p>This wizard helps you adding these important annotations to openBIS.", - openbis_parentless_ms_injection_sample_main_IDENTIFIER: "MS_INJECTION Sample", - openbis_parentless_ms_injection_sample_main_REGISTRATION_DATE: "Registration Date", - CHOOSE_OR_CREATE_QUESTION_left_content: "Annotating the <tt>MS_INJECTION</tt> samples you have chosen " - + "means to link them to a <b>biological sample</b>. " - + "You can choose an existing biological sample or you can create a new one.", - BIOLOGICAL_SAMPLE_CHOOSING_left_content: "Annotating <tt>MS_INJECTION</tt> sample by choosing one biological sample means " - + "that all properties of the biological sample is also for the <tt>MS_INJECTION</tt> to be annotated.", - openbis_biological_sample_main_IDENTIFIER: "Biological Sample", - openbis_biological_sample_main_REGISTRATION_DATE: "Registration Date", - BIOLOGICAL_SAMPLE_CREATING_left_content: "Annotating <tt>MS_INJECTION</tt> sample by creating a new biological sample means " - + "mainly specifying properties of a freshly created biological sample in openBIS.", - - - // RawDataSample Browser - - ANNOTATE_MS_INJECTION_SAMPLES_menu_item: "Annotate MS INJECTION Samples", - ANNOTATE_MS_INJECTION_SAMPLES_tab_label: "MS INJECTION Samples Annotation Wizard", - ALL_RAW_DATA_SAMPLES_menu_item: "All MS INJECTION Samples", - ALL_RAW_DATA_SAMPLES_tab_label: "MS INJECTION Samples and Related Biological Samples", - openbis_raw_data_sample_browser_CODE: "MS INJECTION Sample", - openbis_raw_data_sample_browser_REGISTRATION_DATE: "Registration Date", - openbis_raw_data_sample_browser_PARENT: "Biological Sample", - openbis_raw_data_sample_browser_EXPERIMENT: "Biological Experiment", - copy_data_sets_button_label: "Process Data Sets", - copy_data_sets_title: "Process Data Sets", - copy_data_sets_message: "Please, enter the data set type of the data sets of the samples {1} to be processed by '{0}'.", - copy_data_sets_data_set_type_field: "Data Set Type", - - // LAST LINE: KEEP IT AT THE END - lastline: "" // we need a line without a comma -}; \ No newline at end of file diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/server/PhosphoNetXClientService.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/server/PhosphoNetXClientService.java deleted file mode 100644 index 645c5dc68d3f88165bf5eef3783783eb8cd432e1..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/server/PhosphoNetXClientService.java +++ /dev/null @@ -1,405 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.client.web.server; - -import static ch.systemsx.cisd.common.utilities.SystemTimeProvider.SYSTEM_TIME_PROVIDER; - -import java.io.Serializable; -import java.lang.reflect.Method; -import java.util.Collections; -import java.util.List; - -import javax.annotation.Resource; - -import org.aopalliance.intercept.MethodInterceptor; -import org.aopalliance.intercept.MethodInvocation; -import org.apache.commons.lang3.time.StopWatch; -import org.springframework.aop.framework.ProxyFactory; -import org.springframework.aop.support.DefaultPointcutAdvisor; -import org.springframework.aop.support.annotation.AnnotationMatchingPointcut; -import org.springframework.beans.factory.InitializingBean; -import org.springframework.stereotype.Component; - -import ch.rinn.restrictions.Private; -import ch.systemsx.cisd.common.filesystem.IFreeSpaceProvider; -import ch.systemsx.cisd.common.filesystem.SimpleFreeSpaceProvider; -import ch.systemsx.cisd.common.servlet.IRequestContextProvider; -import ch.systemsx.cisd.common.utilities.ITimeProvider; -import ch.systemsx.cisd.openbis.generic.client.web.client.dto.DefaultResultSetConfig; -import ch.systemsx.cisd.openbis.generic.client.web.client.dto.IResultSetConfig; -import ch.systemsx.cisd.openbis.generic.client.web.client.dto.ResultSet; -import ch.systemsx.cisd.openbis.generic.client.web.client.dto.TableExportCriteria; -import ch.systemsx.cisd.openbis.generic.client.web.client.dto.TypedTableResultSet; -import ch.systemsx.cisd.openbis.generic.client.web.server.AbstractClientService; -import ch.systemsx.cisd.openbis.generic.client.web.server.resultset.DataProviderAdapter; -import ch.systemsx.cisd.openbis.generic.shared.ICommonServer; -import ch.systemsx.cisd.openbis.generic.shared.IServer; -import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IEntityProperty; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewAttachment; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewSample; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ServiceVersionHolder; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModelRowWithObject; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Vocabulary; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.WebClientConfiguration; -import ch.systemsx.cisd.openbis.generic.shared.dto.SampleUpdatesDTO; -import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.SampleIdentifier; -import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.SampleIdentifierFactory; -import ch.systemsx.cisd.openbis.generic.shared.util.CacheManager; -import ch.systemsx.cisd.openbis.generic.shared.util.ICacheManager; -import ch.systemsx.cisd.openbis.generic.shared.util.Key; -import ch.systemsx.cisd.openbis.plugin.generic.shared.IGenericServer; -import ch.systemsx.cisd.openbis.plugin.proteomics.BuildAndEnvironmentInfo; -import ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.Constants; -import ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.IPhosphoNetXClientService; -import ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.dto.ListProteinByExperimentAndReferenceCriteria; -import ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.dto.ListProteinByExperimentCriteria; -import ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.dto.ListProteinSequenceCriteria; -import ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.dto.ListProteinSummaryByExperimentCriteria; -import ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.dto.ListSampleAbundanceByProteinCriteria; -import ch.systemsx.cisd.openbis.plugin.proteomics.client.web.server.resultset.BiologicalSampleProvider; -import ch.systemsx.cisd.openbis.plugin.proteomics.client.web.server.resultset.DataSetProteinProvider; -import ch.systemsx.cisd.openbis.plugin.proteomics.client.web.server.resultset.ParentlessMsInjectionSampleProvider; -import ch.systemsx.cisd.openbis.plugin.proteomics.client.web.server.resultset.ProteinProvider; -import ch.systemsx.cisd.openbis.plugin.proteomics.client.web.server.resultset.ProteinRelatedSampleProvider; -import ch.systemsx.cisd.openbis.plugin.proteomics.client.web.server.resultset.ProteinSequenceProvider; -import ch.systemsx.cisd.openbis.plugin.proteomics.client.web.server.resultset.ProteinSummaryProvider; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.CacheData; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.IPhosphoNetXServer; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.IProteomicsDataServiceInternal; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.ResourceNames; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.AbundanceColumnDefinition; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.AggregateFunction; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.DataSetProtein; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.ProteinByExperiment; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.ProteinInfo; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.ProteinRelatedSample; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.ProteinSequence; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.ProteinSummary; - -/** - * @author Franz-Josef Elmer - */ -@Component(value = ResourceNames.PROTEOMICS_PLUGIN_SERVICE) -public class PhosphoNetXClientService extends AbstractClientService implements - IPhosphoNetXClientService, InitializingBean -{ - private static final String CACHE_VERSION = Integer.toString(ServiceVersionHolder.VERSION); - - @Resource(name = ch.systemsx.cisd.openbis.generic.shared.ResourceNames.COMMON_SERVER) - private ICommonServer commonServer; - - @Resource(name = ch.systemsx.cisd.openbis.plugin.generic.shared.ResourceNames.GENERIC_PLUGIN_SERVER) - private IGenericServer genericServer; - - @Resource(name = ResourceNames.PROTEOMICS_PLUGIN_SERVER) - @Private - IPhosphoNetXServer server; - - @Resource(name = ResourceNames.PROTEOMICS_RAW_DATA_SERVICE_WEB) - private IProteomicsDataServiceInternal proteomicsDataService; - - @Private - ITimeProvider timeProvider = SYSTEM_TIME_PROVIDER; - - public PhosphoNetXClientService() - { - super(); - } - - public PhosphoNetXClientService(IRequestContextProvider requestContextProvider) - { - super(requestContextProvider); - } - - @Override - public void afterPropertiesSet() throws Exception - { - WebClientConfiguration webClientConfiguration = getWebClientConfiguration(); - IFreeSpaceProvider freeSpaceProvider = new SimpleFreeSpaceProvider(); - final ICacheManager cacheManager = - new CacheManager(webClientConfiguration, Constants.TECHNOLOGY_NAME, - timeProvider, freeSpaceProvider, CACHE_VERSION); - ProxyFactory proxyFactory = new ProxyFactory(server); - proxyFactory.addInterface(IPhosphoNetXServer.class); - AnnotationMatchingPointcut pointcut = - AnnotationMatchingPointcut.forMethodAnnotation(CacheData.class); - proxyFactory.addAdvisor(new DefaultPointcutAdvisor(pointcut, new MethodInterceptor() - { - @Override - public Object invoke(MethodInvocation methodInvocation) throws Throwable - { - // assuming first argument is sessionToken which shouldn't be a part of the key - Object[] arguments = methodInvocation.getArguments(); - Object[] keyArguments = new Serializable[arguments.length]; - Method method = methodInvocation.getMethod(); - keyArguments[0] = method.getName(); - for (int i = 1; i < keyArguments.length; i++) - { - keyArguments[i] = arguments[i]; - } - Key key = new Key(keyArguments); - Object data = cacheManager.tryToGetData(key); - if (data == null) - { - Object serverObject = methodInvocation.getThis(); - data = method.invoke(serverObject, arguments); - cacheManager.storeData(key, data); - } - return data; - } - })); - server = (IPhosphoNetXServer) proxyFactory.getProxy(); - } - - @Override - protected IServer getServer() - { - return server; - } - - @Override - protected String getVersion() - { - return BuildAndEnvironmentInfo.INSTANCE.getFullVersion(); - } - - @Override - public TypedTableResultSet<Sample> listParentlessMsInjectionSamples( - DefaultResultSetConfig<String, TableModelRowWithObject<Sample>> criteria) - throws ch.systemsx.cisd.openbis.generic.client.web.client.exception.UserFailureException - { - String sessionToken = getSessionToken(); - return listEntities(new ParentlessMsInjectionSampleProvider(commonServer, sessionToken), - criteria); - } - - @Override - public TypedTableResultSet<Sample> listBiologicalSamples( - DefaultResultSetConfig<String, TableModelRowWithObject<Sample>> criteria) - throws ch.systemsx.cisd.openbis.generic.client.web.client.exception.UserFailureException - { - String sessionToken = getSessionToken(); - return listEntities(new BiologicalSampleProvider(commonServer, sessionToken), criteria); - } - - @Override - public void linkSamples(Sample parentSample, List<Sample> childSamples) - throws ch.systemsx.cisd.openbis.generic.client.web.client.exception.UserFailureException - { - String sessionToken = getSessionToken(); - linkSamples(sessionToken, parentSample.getIdentifier(), childSamples); - } - - @Override - public void createAndLinkSamples(NewSample newBiologicalSample, List<Sample> msInjectionSamples) - throws ch.systemsx.cisd.openbis.generic.client.web.client.exception.UserFailureException - { - String sessionToken = getSessionToken(); - List<NewAttachment> noAttachments = Collections.<NewAttachment> emptyList(); - genericServer.registerSample(sessionToken, newBiologicalSample, noAttachments); - linkSamples(sessionToken, newBiologicalSample.getIdentifier(), msInjectionSamples); - } - - private void linkSamples(String sessionToken, String identifier, List<Sample> childSamples) - { - String[] parents = new String[] - { identifier }; - for (Sample childSample : childSamples) - { - SampleIdentifier childSampleIdentifier = - SampleIdentifierFactory.parse(childSample.getIdentifier()); - SampleUpdatesDTO update = - new SampleUpdatesDTO(new TechId(childSample), - Collections.<IEntityProperty> emptyList(), null, null, - Collections.<NewAttachment> emptyList(), - childSample.getVersion(), childSampleIdentifier, null, parents); - update.setUpdateExperimentLink(false); - genericServer.updateSample(sessionToken, update); - } - } - - @Override - public Vocabulary getTreatmentTypeVocabulary() - { - final String sessionToken = getSessionToken(); - return server.getTreatmentTypeVocabulary(sessionToken); - } - - @Override - public List<AbundanceColumnDefinition> getAbundanceColumnDefinitionsForProteinByExperiment( - TechId experimentID, String treatmentTypeOrNull) - { - StopWatch stopWatch = new StopWatch(); - stopWatch.start(); - try - { - final String sessionToken = getSessionToken(); - return server.getAbundanceColumnDefinitionsForProteinByExperiment(sessionToken, - experimentID, treatmentTypeOrNull); - } finally - { - operationLog.info(stopWatch.getTime() - + " msec for getAbundanceColumnDefinitionsForProteinByExperiment"); - } - } - - @Override - public TypedTableResultSet<ProteinInfo> listProteinsByExperiment( - ListProteinByExperimentCriteria criteria) - { - StopWatch stopWatch = new StopWatch(); - stopWatch.start(); - try - { - final String sessionToken = getSessionToken(); - TechId experimentID = criteria.getExperimentID(); - double fdr = criteria.getFalseDiscoveryRate(); - AggregateFunction aggregateFunction = criteria.getAggregateFunction(); - String treatmentTypeCode = criteria.getTreatmentTypeCode(); - boolean aggregateOnOriginal = criteria.isAggregateOriginal(); - return listEntities(new ProteinProvider(server, sessionToken, experimentID, fdr, - aggregateFunction, treatmentTypeCode, aggregateOnOriginal), criteria); - } finally - { - operationLog.info(stopWatch.getTime() + " msec for listProteinsByExperiment"); - } - } - - @Override - public String prepareExportProteins(TableExportCriteria<TableModelRowWithObject<ProteinInfo>> exportCriteria) - { - return prepareExportEntities(exportCriteria); - } - - @Override - public TypedTableResultSet<ProteinSummary> listProteinSummariesByExperiment( - ListProteinSummaryByExperimentCriteria criteria) - { - StopWatch stopWatch = new StopWatch(); - stopWatch.start(); - try - { - final String sessionToken = getSessionToken(); - return listEntities( - new ProteinSummaryProvider(server, sessionToken, criteria.getExperimentID()), - criteria); - } finally - { - operationLog.info(stopWatch.getTime() + " msec for listProteinSummariesByExperiment"); - } - } - - @Override - public String prepareExportProteinSummary( - TableExportCriteria<TableModelRowWithObject<ProteinSummary>> exportCriteria) - { - return prepareExportEntities(exportCriteria); - } - - @Override - public ProteinByExperiment getProteinByExperiment(TechId experimentID, TechId proteinReferenceID) - { - final String sessionToken = getSessionToken(); - return server.getProteinByExperiment(sessionToken, experimentID, proteinReferenceID); - } - - @Override - public TypedTableResultSet<ProteinSequence> listSequencesByProteinReference( - ListProteinSequenceCriteria criteria) - { - final String sessionToken = getSessionToken(); - return listEntities( - new ProteinSequenceProvider(server, sessionToken, criteria.getExperimentID(), criteria.getProteinReferenceID()), - criteria); - } - - @Override - public String prepareExportProteinSequences( - TableExportCriteria<TableModelRowWithObject<ProteinSequence>> exportCriteria) - { - return prepareExportEntities(exportCriteria); - } - - @Override - public TypedTableResultSet<DataSetProtein> listProteinsByExperimentAndReference( - ListProteinByExperimentAndReferenceCriteria criteria) - { - final String sessionToken = getSessionToken(); - return listEntities( - new DataSetProteinProvider(server, sessionToken, criteria.getExperimentID(), - criteria.getProteinReferenceID()), criteria); - } - - @Override - public String prepareExportDataSetProteins( - TableExportCriteria<TableModelRowWithObject<DataSetProtein>> exportCriteria) - { - return prepareExportEntities(exportCriteria); - } - - @Override - public TypedTableResultSet<ProteinRelatedSample> listProteinRelatedSamplesByProtein( - ListSampleAbundanceByProteinCriteria criteria) - { - final String sessionToken = getSessionToken(); - ProteinRelatedSampleProvider provider = - new ProteinRelatedSampleProvider(server, sessionToken, criteria.getExperimentID(), - criteria.getProteinReferenceID()); - return listEntities(provider, criteria); - } - - @Override - public String prepareExportProteinRelatedSamples( - TableExportCriteria<TableModelRowWithObject<ProteinRelatedSample>> exportCriteria) - throws ch.systemsx.cisd.openbis.generic.client.web.client.exception.UserFailureException - { - return prepareExportEntities(exportCriteria); - } - - @Override - public TypedTableResultSet<Sample> listRawDataSamples( - IResultSetConfig<String, TableModelRowWithObject<Sample>> criteria) - throws ch.systemsx.cisd.openbis.generic.client.web.client.exception.UserFailureException - { - final String sessionToken = getSessionToken(); - RawDataSampleProvider rawDataSampleProvider = - new RawDataSampleProvider(proteomicsDataService, sessionToken); - DataProviderAdapter<Sample> dataProvider = - new DataProviderAdapter<Sample>(rawDataSampleProvider); - ResultSet<TableModelRowWithObject<Sample>> resultSet = listEntities(criteria, dataProvider); - return new TypedTableResultSet<Sample>(resultSet); - } - - @Override - public String prepareExportRawDataSamples( - TableExportCriteria<TableModelRowWithObject<Sample>> exportCriteria) - { - return prepareExportEntities(exportCriteria); - } - - @Override - @SuppressWarnings("deprecation") - public void processRawData(String dataSetProcessingKey, long[] rawDataSampleIDs, - String dataSetType) - { - proteomicsDataService.processRawData(getSessionToken(), dataSetProcessingKey, - rawDataSampleIDs, dataSetType); - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/server/PhosphoNetXClientServiceServlet.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/server/PhosphoNetXClientServiceServlet.java deleted file mode 100644 index ef4ee6191f331f996c50a5a7b0ccac4d0510d020..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/server/PhosphoNetXClientServiceServlet.java +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.client.web.server; - -import javax.annotation.Resource; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.servlet.ModelAndView; - -import ch.systemsx.cisd.common.servlet.GWTRPCServiceExporter; -import ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.IPhosphoNetXClientService; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.ResourceNames; - -/** - * @author Franz-Josef Elmer - */ -@Controller -public class PhosphoNetXClientServiceServlet extends GWTRPCServiceExporter -{ - private static final long serialVersionUID = 1L; - - @Resource(name = ResourceNames.PROTEOMICS_PLUGIN_SERVICE) - private IPhosphoNetXClientService service; - - @RequestMapping({ "/proteomics", "/openbis/proteomics" }) - public final ModelAndView handleRequestExposed(final HttpServletRequest request, - final HttpServletResponse response) throws Exception - { - return super.handleRequest(request, response); - } - - @Override - protected Object getService() - { - return service; - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/server/RawDataSampleProvider.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/server/RawDataSampleProvider.java deleted file mode 100644 index 90fe409c4b9168c9474cd62ba384e0a67b2dd867..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/server/RawDataSampleProvider.java +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Copyright 2010 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.client.web.server; - -import static ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.RawDataSampleGridIDs.CODE; -import static ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.RawDataSampleGridIDs.EXPERIMENT; -import static ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.RawDataSampleGridIDs.PARENT; -import static ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.RawDataSampleGridIDs.REGISTRATION_DATE; - -import java.util.List; - -import ch.systemsx.cisd.openbis.generic.client.web.server.resultset.AbstractTableModelProvider; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataTypeCode; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Experiment; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TypedTableModel; -import ch.systemsx.cisd.openbis.generic.shared.util.TypedTableModelBuilder; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.IProteomicsDataServiceInternal; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.dto.MsInjectionSample; - -/** - * @author Franz-Josef Elmer - */ -class RawDataSampleProvider extends AbstractTableModelProvider<Sample> -{ - private final IProteomicsDataServiceInternal service; - - private final String sessionToken; - - RawDataSampleProvider(IProteomicsDataServiceInternal service, String sessionToken) - { - this.service = service; - this.sessionToken = sessionToken; - } - - @Override - public TypedTableModel<Sample> createTableModel() - { - List<MsInjectionSample> samples = service.listRawDataSamples(sessionToken); - TypedTableModelBuilder<Sample> builder = new TypedTableModelBuilder<Sample>(); - builder.addColumn(CODE).withDataType(DataTypeCode.VARCHAR); - builder.addColumn(REGISTRATION_DATE).withDataType(DataTypeCode.TIMESTAMP) - .withDefaultWidth(190); - builder.addColumn(PARENT).withDataType(DataTypeCode.VARCHAR); - builder.addColumn(EXPERIMENT).withDataType(DataTypeCode.VARCHAR); - for (MsInjectionSample msInjectionSample : samples) - { - Sample sample = msInjectionSample.getSample(); - builder.addRow(sample); - builder.column(CODE).addString(sample.getCode()); - builder.column(REGISTRATION_DATE).addDate(sample.getRegistrationDate()); - Sample parent = sample.getGeneratedFrom(); - builder.column(PARENT).addString(parent.getIdentifier()); - Experiment experiment = parent.getExperiment(); - if (experiment != null) - { - builder.column(EXPERIMENT).addString(experiment.getIdentifier()); - } - builder.columnGroup("MS").addProperties("", sample.getProperties()); - builder.columnGroup("BIO_").addProperties(parent.getProperties()); - } - return builder.getModel(); - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/server/resultset/BiologicalSampleProvider.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/server/resultset/BiologicalSampleProvider.java deleted file mode 100644 index 8cf8b0eb5d519a6dd891693f43fc97fa7f289b27..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/server/resultset/BiologicalSampleProvider.java +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Copyright 2011 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.client.web.server.resultset; - -import static ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.dto.BiologicalSampleGridColumnIDs.IDENTIFIER; -import static ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.dto.BiologicalSampleGridColumnIDs.REGISTRATION_DATE; - -import java.util.Arrays; -import java.util.List; - -import ch.systemsx.cisd.openbis.generic.client.web.server.resultset.AbstractCommonTableModelProvider; -import ch.systemsx.cisd.openbis.generic.shared.ICommonServer; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DetailedSearchCriteria; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DetailedSearchCriterion; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DetailedSearchField; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SampleAttributeSearchFieldKind; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SearchCriteriaConnection; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TypedTableModel; -import ch.systemsx.cisd.openbis.generic.shared.util.TypedTableModelBuilder; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.CommonConstants; - -/** - * Provider of biological samples registered by the user. A biological sample is a sample with sample type code starting with BIO. - * - * @author Franz-Josef Elmer - */ -public class BiologicalSampleProvider extends AbstractCommonTableModelProvider<Sample> -{ - public BiologicalSampleProvider(ICommonServer commonServer, String sessionToken) - { - super(commonServer, sessionToken); - } - - @Override - protected TypedTableModel<Sample> createTableModel() - { - DetailedSearchCriteria criteria = new DetailedSearchCriteria(); - criteria.setConnection(SearchCriteriaConnection.MATCH_ALL); - DetailedSearchCriterion typeCriterion = new DetailedSearchCriterion(); - typeCriterion.setField(DetailedSearchField - .createAttributeField(SampleAttributeSearchFieldKind.SAMPLE_TYPE)); - typeCriterion.setValue(CommonConstants.BIOLOGICAL_SAMPLE_PREFIX + "*"); - DetailedSearchCriterion registratorCriterion = new DetailedSearchCriterion(); - String userName = commonServer.tryGetSession(sessionToken).getUserName(); - registratorCriterion.setField(DetailedSearchField.createRegistratorField()); - registratorCriterion.setValue(userName); - criteria.setCriteria(Arrays.asList(typeCriterion, registratorCriterion)); - List<Sample> samples = commonServer.searchForSamples(sessionToken, criteria); - TypedTableModelBuilder<Sample> builder = new TypedTableModelBuilder<Sample>(); - builder.addColumn(IDENTIFIER); - builder.addColumn(REGISTRATION_DATE); - for (Sample sample : samples) - { - builder.addRow(sample); - builder.column(IDENTIFIER).addString(sample.getIdentifier()); - builder.column(REGISTRATION_DATE).addDate(sample.getRegistrationDate()); - builder.columnGroup("PROPERTY").uneditablePropertyColumns() - .addProperties(sample.getProperties()); - } - return builder.getModel(); - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/server/resultset/DataSetProteinProvider.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/server/resultset/DataSetProteinProvider.java deleted file mode 100644 index 1624dc598354439dd0ce03f20c0014b676f077af..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/server/resultset/DataSetProteinProvider.java +++ /dev/null @@ -1,82 +0,0 @@ -/* - * Copyright 2011 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.client.web.server.resultset; - -import static ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.dto.DataSetProteinGridColumnIDs.DATA_SET_PERM_ID; -import static ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.dto.DataSetProteinGridColumnIDs.FDR; -import static ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.dto.DataSetProteinGridColumnIDs.PEPTIDE_COUNT; -import static ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.dto.DataSetProteinGridColumnIDs.SEQUENCE_NAME; - -import java.util.List; - -import ch.systemsx.cisd.openbis.generic.client.web.server.resultset.AbstractTableModelProvider; -import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataTypeCode; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TypedTableModel; -import ch.systemsx.cisd.openbis.generic.shared.util.TypedTableModelBuilder; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.IPhosphoNetXServer; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.DataSetProtein; - -/** - * Provider of {@link DataSetProtein} instances. - * - * @author Franz-Josef Elmer - */ -public class DataSetProteinProvider extends AbstractTableModelProvider<DataSetProtein> -{ - private final IPhosphoNetXServer server; - - private final String sessionToken; - - private final TechId experimentID; - - private final TechId proteinReferenceID; - - public DataSetProteinProvider(IPhosphoNetXServer server, String sessionToken, - TechId experimentID, TechId proteinReferenceID) - { - this.server = server; - this.sessionToken = sessionToken; - this.experimentID = experimentID; - this.proteinReferenceID = proteinReferenceID; - } - - @Override - protected TypedTableModel<DataSetProtein> createTableModel() - { - List<DataSetProtein> proteins = - server.listProteinsByExperimentAndReference(sessionToken, experimentID, - proteinReferenceID); - TypedTableModelBuilder<DataSetProtein> builder = - new TypedTableModelBuilder<DataSetProtein>(); - builder.addColumn(DATA_SET_PERM_ID).withDefaultWidth(200); - builder.addColumn(SEQUENCE_NAME).withDefaultWidth(80); - builder.addColumn(PEPTIDE_COUNT).withDataType(DataTypeCode.INTEGER).withDefaultWidth(80); - builder.addColumn(FDR).withDefaultWidth(80); - for (DataSetProtein protein : proteins) - { - builder.addRow(protein); - builder.column(DATA_SET_PERM_ID).addString(protein.getDataSetPermID()); - builder.column(SEQUENCE_NAME).addString(protein.getSequenceName()); - builder.column(PEPTIDE_COUNT).addInteger((long) protein.getPeptideCount()); - int perMille = (int) (1000 * protein.getFalseDiscoveryRate() + 0.5); - builder.column(FDR).addString((perMille / 10) + "." + (perMille % 10) + " %"); - } - return builder.getModel(); - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/server/resultset/ParentlessMsInjectionSampleProvider.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/server/resultset/ParentlessMsInjectionSampleProvider.java deleted file mode 100644 index 3b9feeeef9e84b24c4830556c156afccafff2d89..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/server/resultset/ParentlessMsInjectionSampleProvider.java +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright 2011 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.client.web.server.resultset; - -import static ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.dto.ParentlessMsInjectionSampleGridColumnIDs.IDENTIFIER; -import static ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.dto.ParentlessMsInjectionSampleGridColumnIDs.REGISTRATION_DATE; - -import java.util.Arrays; -import java.util.List; - -import ch.systemsx.cisd.openbis.generic.client.web.server.resultset.AbstractCommonTableModelProvider; -import ch.systemsx.cisd.openbis.generic.shared.ICommonServer; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DetailedSearchCriteria; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DetailedSearchCriterion; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DetailedSearchField; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SampleAttributeSearchFieldKind; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SearchCriteriaConnection; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TypedTableModel; -import ch.systemsx.cisd.openbis.generic.shared.util.TypedTableModelBuilder; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.CommonConstants; - -/** - * Provider of MS_INJECTION samples registered for the user. - * - * @author Franz-Josef Elmer - */ -public class ParentlessMsInjectionSampleProvider extends AbstractCommonTableModelProvider<Sample> -{ - public ParentlessMsInjectionSampleProvider(ICommonServer commonServer, String sessionToken) - { - super(commonServer, sessionToken); - } - - @Override - protected TypedTableModel<Sample> createTableModel() - { - DetailedSearchCriteria criteria = new DetailedSearchCriteria(); - criteria.setConnection(SearchCriteriaConnection.MATCH_ALL); - DetailedSearchCriterion typeCriterion = new DetailedSearchCriterion(); - typeCriterion.setField(DetailedSearchField - .createAttributeField(SampleAttributeSearchFieldKind.SAMPLE_TYPE)); - typeCriterion.setValue(CommonConstants.MS_INJECTION_SAMPLE_TYPE_CODE); - DetailedSearchCriterion spaceCriterion = new DetailedSearchCriterion(); - spaceCriterion.setField(DetailedSearchField - .createAttributeField(SampleAttributeSearchFieldKind.SPACE)); - spaceCriterion.setValue(CommonConstants.MS_DATA_SPACE); - DetailedSearchCriterion registratorCriterion = new DetailedSearchCriterion(); - String userName = commonServer.tryGetSession(sessionToken).getUserName(); - registratorCriterion.setField(DetailedSearchField.createRegistratorField()); - registratorCriterion.setValue(userName); - criteria.setCriteria(Arrays.asList(typeCriterion, spaceCriterion, registratorCriterion)); - List<Sample> samples = commonServer.searchForSamples(sessionToken, criteria); - TypedTableModelBuilder<Sample> builder = new TypedTableModelBuilder<Sample>(); - builder.addColumn(IDENTIFIER).withDefaultWidth(300); - builder.addColumn(REGISTRATION_DATE).withDefaultWidth(300); - for (Sample sample : samples) - { - if (sample.getGeneratedFrom() == null) - { - builder.addRow(sample); - builder.column(IDENTIFIER).addString(sample.getIdentifier()); - builder.column(REGISTRATION_DATE).addDate(sample.getRegistrationDate()); - } - } - return builder.getModel(); - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/server/resultset/ProteinProvider.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/server/resultset/ProteinProvider.java deleted file mode 100644 index 38513cf59f0dbd945266e17a3c63932e15e0ac55..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/server/resultset/ProteinProvider.java +++ /dev/null @@ -1,160 +0,0 @@ -/* - * Copyright 2011 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.client.web.server.resultset; - -import static ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.dto.ProteinBrowserColumnIDs.ACCESSION_NUMBER; -import static ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.dto.ProteinBrowserColumnIDs.COVERAGE; -import static ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.dto.ProteinBrowserColumnIDs.PROTEIN_DESCRIPTION; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; -import java.util.Set; - -import ch.systemsx.cisd.base.exceptions.CheckedExceptionTunnel; -import ch.systemsx.cisd.common.exceptions.HighLevelException; -import ch.systemsx.cisd.openbis.generic.client.web.server.resultset.AbstractTableModelProvider; -import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TypedTableModel; -import ch.systemsx.cisd.openbis.generic.shared.util.IColumn; -import ch.systemsx.cisd.openbis.generic.shared.util.TypedTableModelBuilder; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.IPhosphoNetXServer; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.AbundanceColumnDefinition; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.AggregateFunction; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.ProteinInfo; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.Treatment; - -/** - * Provider of {@link ProteinInfo} instances. - * - * @author Franz-Josef Elmer - */ -public class ProteinProvider extends AbstractTableModelProvider<ProteinInfo> -{ - private static final String ABUNDANCE_PROPERTY_KEY = "ABUNDANCE"; - - private final IPhosphoNetXServer server; - - private final String sessionToken; - - private final TechId experimentID; - - private final double falseDiscoveryRate; - - private final AggregateFunction aggregateFunction; - - private final String treatmentTypeCode; - - private final boolean aggregateOnOriginal; - - public ProteinProvider(IPhosphoNetXServer server, String sessionToken, TechId experimentID, - double falseDiscoveryRate, AggregateFunction function, String treatmentTypeCode, - boolean aggregateOnOriginal) - { - this.server = server; - this.sessionToken = sessionToken; - this.experimentID = experimentID; - this.falseDiscoveryRate = falseDiscoveryRate; - this.aggregateFunction = function; - this.treatmentTypeCode = treatmentTypeCode; - this.aggregateOnOriginal = aggregateOnOriginal; - } - - @Override - protected TypedTableModel<ProteinInfo> createTableModel() - { - try - { - - List<AbundanceColumnDefinition> abundanceColumnDefinitions = - server.getAbundanceColumnDefinitionsForProteinByExperiment(sessionToken, - experimentID, treatmentTypeCode); - List<ProteinInfo> proteins = - server.listProteinsByExperiment(sessionToken, experimentID, falseDiscoveryRate, - aggregateFunction, treatmentTypeCode, aggregateOnOriginal); - TypedTableModelBuilder<ProteinInfo> builder = new TypedTableModelBuilder<ProteinInfo>(); - builder.addColumn(ACCESSION_NUMBER); - builder.addColumn(PROTEIN_DESCRIPTION); - builder.addColumn(COVERAGE).withDefaultWidth(100); - Map<Long, IColumn> sampleIdToAbundanceColumnMap = new HashMap<Long, IColumn>(); - for (AbundanceColumnDefinition abundanceColumnDefinition : abundanceColumnDefinitions) - { - long sampleID = abundanceColumnDefinition.getID(); - String columnID = "abundance-" + Long.toString(sampleID); - builder.addColumn(columnID).withDefaultWidth(100); - IColumn column = builder.column(columnID); - sampleIdToAbundanceColumnMap.put(sampleID, column); - String header = abundanceColumnDefinition.getSampleCode(); - Map<String, String> properties = new HashMap<String, String>(); - properties.put(ABUNDANCE_PROPERTY_KEY, header); - List<Treatment> treatments = abundanceColumnDefinition.getTreatments(); - if (treatments.isEmpty() == false) - { - String delim; - if (header == null) - { - header = ""; - delim = ""; - } else - { - delim = ": "; - } - for (Treatment treatment : treatments) - { - header += delim + treatment; - delim = ", "; - column.property(treatment.getTypeCode(), treatment.getValue()); - } - } - column.withTitle(header); - } - for (ProteinInfo protein : proteins) - { - builder.addRow(protein); - builder.column(ACCESSION_NUMBER).addString(protein.getAccessionNumber()); - builder.column(PROTEIN_DESCRIPTION).addString(protein.getDescription()); - builder.column(COVERAGE).addDouble(protein.getCoverage()); - Map<Long, Double> abundances = protein.getAbundances(); - Set<Entry<Long, Double>> entrySet = abundances.entrySet(); - for (Entry<Long, Double> entry : entrySet) - { - IColumn column = sampleIdToAbundanceColumnMap.get(entry.getKey()); - if (column != null) - { - column.addDouble(entry.getValue()); - } - } - } - return builder.getModel(); - } catch (Exception e) - { - Throwable t = e; - while (t != null) - { - if (t instanceof HighLevelException) - { - throw (HighLevelException) t; - } - t = t.getCause(); - } - throw CheckedExceptionTunnel.wrapIfNecessary(e); - } - - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/server/resultset/ProteinRelatedSampleProvider.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/server/resultset/ProteinRelatedSampleProvider.java deleted file mode 100644 index 5cec3d17095d10a42a15ba27a73b981250f049c1..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/server/resultset/ProteinRelatedSampleProvider.java +++ /dev/null @@ -1,112 +0,0 @@ -/* - * Copyright 2011 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.client.web.server.resultset; - -import static ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataTypeCode.INTEGER; -import static ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataTypeCode.REAL; -import static ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.dto.ProteinRelatedSampleGridColumnIDs.ABUNDANCE; -import static ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.dto.ProteinRelatedSampleGridColumnIDs.MODIFICATION_FRACTION; -import static ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.dto.ProteinRelatedSampleGridColumnIDs.MODIFICATION_MASS; -import static ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.dto.ProteinRelatedSampleGridColumnIDs.MODIFICATION_POSITION; -import static ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.dto.ProteinRelatedSampleGridColumnIDs.MODIFIED_AMINO_ACID; -import static ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.dto.ProteinRelatedSampleGridColumnIDs.SAMPLE_IDENTIFIER; -import static ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.dto.ProteinRelatedSampleGridColumnIDs.SAMPLE_TYPE; - -import java.util.List; - -import ch.systemsx.cisd.openbis.generic.client.web.server.resultset.AbstractTableModelProvider; -import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TypedTableModel; -import ch.systemsx.cisd.openbis.generic.shared.util.TypedTableModelBuilder; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.IPhosphoNetXServer; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.AminoAcid; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.ProteinRelatedSample; - -/** - * Provider of {@link ProteinRelatedSample}. - * - * @author Franz-Josef Elmer - */ -public class ProteinRelatedSampleProvider extends AbstractTableModelProvider<ProteinRelatedSample> -{ - private static final String PROPERTIES_GROUP = "property-"; - - private final IPhosphoNetXServer server; - - private final String sessionToken; - - private final TechId experimentID; - - private final TechId proteinReferenceID; - - public ProteinRelatedSampleProvider(IPhosphoNetXServer server, String sessionToken, - TechId experimentID, TechId proteinReferenceID) - { - this.server = server; - this.sessionToken = sessionToken; - this.experimentID = experimentID; - this.proteinReferenceID = proteinReferenceID; - } - - @Override - protected TypedTableModel<ProteinRelatedSample> createTableModel() - { - List<ProteinRelatedSample> samples = - server.listProteinRelatedSamplesByProtein(sessionToken, experimentID, - proteinReferenceID); - TypedTableModelBuilder<ProteinRelatedSample> builder = - new TypedTableModelBuilder<ProteinRelatedSample>(); - builder.column(SAMPLE_IDENTIFIER); - builder.column(SAMPLE_TYPE); - builder.column(ABUNDANCE).withDataType(REAL).withDefaultWidth(100); - builder.column(MODIFIED_AMINO_ACID); - builder.column(MODIFICATION_POSITION).withDataType(INTEGER).withDefaultWidth(100); - builder.column(MODIFICATION_MASS).withDataType(REAL).withDefaultWidth(100); - builder.column(MODIFICATION_FRACTION).withDataType(REAL).withDefaultWidth(100); - for (ProteinRelatedSample sample : samples) - { - builder.addRow(sample); - builder.column(SAMPLE_IDENTIFIER).addString(sample.getIdentifier()); - builder.column(SAMPLE_TYPE).addString(sample.getEntityType().getCode()); - builder.column(ABUNDANCE).addDouble(sample.getAbundance()); - builder.column(MODIFIED_AMINO_ACID).addString(getAminoAcidName(sample)); - builder.column(MODIFICATION_POSITION).addInteger(sample.getModificationPosition()); - builder.column(MODIFICATION_MASS).addDouble(sample.getModificationMass()); - builder.column(MODIFICATION_FRACTION).addDouble(sample.getModificationFraction()); - builder.columnGroup(PROPERTIES_GROUP).addProperties(sample.getProperties()); - } - return builder.getModel(); - } - - private String getAminoAcidName(ProteinRelatedSample sample) - { - char modifiedAminoAcid = sample.getModifiedAminoAcid(); - if (modifiedAminoAcid == 0) - { - return null; - } - try - { - char aminoAcidSymbol = Character.toUpperCase(modifiedAminoAcid); - return AminoAcid.valueOf(Character.toString(aminoAcidSymbol)).getName(); - } catch (IllegalArgumentException ex) - { - return "?"; - } - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/server/resultset/ProteinSequenceProvider.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/server/resultset/ProteinSequenceProvider.java deleted file mode 100644 index 12bab9a5210b09a752614816c03584985647bab4..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/server/resultset/ProteinSequenceProvider.java +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Copyright 2011 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.client.web.server.resultset; - -import static ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.dto.ProteinSequenceGridColumnIDs.DATABASE_NAME_AND_VERSION; -import static ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.dto.ProteinSequenceGridColumnIDs.SEQUENCE; -import static ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.dto.ProteinSequenceGridColumnIDs.SEQUENCE_SHORT_NAME; - -import java.util.List; - -import ch.systemsx.cisd.openbis.generic.client.web.server.resultset.AbstractTableModelProvider; -import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TypedTableModel; -import ch.systemsx.cisd.openbis.generic.shared.util.TypedTableModelBuilder; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.IPhosphoNetXServer; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.ProteinSequence; - -/** - * Provider of {@link ProteinSequence} instances. - * - * @author Franz-Josef Elmer - */ -public class ProteinSequenceProvider extends AbstractTableModelProvider<ProteinSequence> -{ - private final IPhosphoNetXServer server; - - private final String sessionToken; - - private final TechId experimentID; - - private final TechId proteinReferenceID; - - public ProteinSequenceProvider(IPhosphoNetXServer server, String sessionToken, - TechId experimentID, TechId proteinReferenceID) - { - this.server = server; - this.sessionToken = sessionToken; - this.experimentID = experimentID; - this.proteinReferenceID = proteinReferenceID; - } - - @Override - protected TypedTableModel<ProteinSequence> createTableModel() - { - List<ProteinSequence> sequences = - server.listProteinSequencesByProteinReference(sessionToken, experimentID, proteinReferenceID); - TypedTableModelBuilder<ProteinSequence> builder = - new TypedTableModelBuilder<ProteinSequence>(); - builder.addColumn(SEQUENCE_SHORT_NAME).withDefaultWidth(20); - builder.addColumn(DATABASE_NAME_AND_VERSION); - builder.addColumn(SEQUENCE).withDefaultWidth(400); - for (ProteinSequence sequence : sequences) - { - builder.addRow(sequence); - builder.column(SEQUENCE_SHORT_NAME).addString(sequence.getShortName()); - builder.column(DATABASE_NAME_AND_VERSION).addString( - sequence.getDatabaseNameAndVersion()); - builder.column(SEQUENCE).addString(sequence.getSequence()); - } - return builder.getModel(); - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/server/resultset/ProteinSummaryProvider.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/server/resultset/ProteinSummaryProvider.java deleted file mode 100644 index 4f2b5a1093bca517c476d74950c10ab629a97a8c..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/server/resultset/ProteinSummaryProvider.java +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Copyright 2011 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.client.web.server.resultset; - -import static ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.dto.ProteinSummaryGridColumnIDs.DECOY_PEPTIDE_COUNT; -import static ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.dto.ProteinSummaryGridColumnIDs.DECOY_PROTEIN_COUNT; -import static ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.dto.ProteinSummaryGridColumnIDs.FDR; -import static ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.dto.ProteinSummaryGridColumnIDs.PEPTIDE_COUNT; -import static ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.dto.ProteinSummaryGridColumnIDs.PROTEIN_COUNT; - -import java.util.List; - -import ch.systemsx.cisd.openbis.generic.client.web.server.resultset.AbstractTableModelProvider; -import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TypedTableModel; -import ch.systemsx.cisd.openbis.generic.shared.util.TypedTableModelBuilder; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.IPhosphoNetXServer; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.ProteinSummary; - -/** - * Provider of {@link ProteinSummary} instances. - * - * @author Franz-Josef Elmer - */ -public class ProteinSummaryProvider extends AbstractTableModelProvider<ProteinSummary> -{ - private final IPhosphoNetXServer server; - - private final String sessionToken; - - private final TechId experimentID; - - public ProteinSummaryProvider(IPhosphoNetXServer server, String sessionToken, - TechId experimentID) - { - this.server = server; - this.sessionToken = sessionToken; - this.experimentID = experimentID; - } - - @Override - protected TypedTableModel<ProteinSummary> createTableModel() - { - List<ProteinSummary> sumaries = server.listProteinSummariesByExperiment(sessionToken, experimentID); - TypedTableModelBuilder<ProteinSummary> builder = new TypedTableModelBuilder<ProteinSummary>(); - builder.addColumn(FDR); - builder.addColumn(PROTEIN_COUNT).withDefaultWidth(100); - builder.addColumn(PEPTIDE_COUNT).withDefaultWidth(100); - builder.addColumn(DECOY_PROTEIN_COUNT).withDefaultWidth(100); - builder.addColumn(DECOY_PEPTIDE_COUNT).withDefaultWidth(100); - for (ProteinSummary summary : sumaries) - { - builder.addRow(summary); - builder.column(FDR).addDouble(summary.getFDR()); - builder.column(PROTEIN_COUNT).addInteger((long) summary.getProteinCount()); - builder.column(PEPTIDE_COUNT).addInteger((long) summary.getPeptideCount()); - builder.column(DECOY_PROTEIN_COUNT).addInteger((long) summary.getDecoyProteinCount()); - builder.column(DECOY_PEPTIDE_COUNT).addInteger((long) summary.getDecoyPeptideCount()); - } - return builder.getModel(); - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/PhosphoNetXServer.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/PhosphoNetXServer.java deleted file mode 100644 index 791c9d90ae5997d29e74a572ac5fd61dfcd9c16e..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/PhosphoNetXServer.java +++ /dev/null @@ -1,262 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.server; - -import java.util.List; - -import javax.annotation.Resource; - -import net.lemnik.eodsql.DataSet; - -import org.springframework.stereotype.Component; - -import ch.rinn.restrictions.Private; -import ch.systemsx.cisd.common.exceptions.UserFailureException; -import ch.systemsx.cisd.openbis.common.spring.IInvocationLoggerContext; -import ch.systemsx.cisd.openbis.generic.server.AbstractServer; -import ch.systemsx.cisd.openbis.generic.server.authorization.annotation.AuthorizationGuard; -import ch.systemsx.cisd.openbis.generic.server.authorization.annotation.RolesAllowed; -import ch.systemsx.cisd.openbis.generic.server.authorization.predicate.AbstractTechIdPredicate.ExperimentTechIdPredicate; -import ch.systemsx.cisd.openbis.generic.server.business.IPropertiesBatchManager; -import ch.systemsx.cisd.openbis.generic.server.dataaccess.IDAOFactory; -import ch.systemsx.cisd.openbis.generic.server.dataaccess.IVocabularyDAO; -import ch.systemsx.cisd.openbis.generic.server.plugin.IDataSetTypeSlaveServerPlugin; -import ch.systemsx.cisd.openbis.generic.server.plugin.ISampleTypeSlaveServerPlugin; -import ch.systemsx.cisd.openbis.generic.shared.IOpenBisSessionManager; -import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.RoleWithHierarchy; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Vocabulary; -import ch.systemsx.cisd.openbis.generic.shared.dto.ExperimentPE; -import ch.systemsx.cisd.openbis.generic.shared.dto.Session; -import ch.systemsx.cisd.openbis.generic.shared.dto.VocabularyPE; -import ch.systemsx.cisd.openbis.generic.shared.translator.VocabularyTranslator; -import ch.systemsx.cisd.openbis.plugin.proteomics.server.business.AccessionNumberBuilder; -import ch.systemsx.cisd.openbis.plugin.proteomics.server.business.IAbundanceColumnDefinitionTable; -import ch.systemsx.cisd.openbis.plugin.proteomics.server.business.IBusinessObjectFactory; -import ch.systemsx.cisd.openbis.plugin.proteomics.server.business.IDataSetProteinTable; -import ch.systemsx.cisd.openbis.plugin.proteomics.server.business.IProteinDetailsBO; -import ch.systemsx.cisd.openbis.plugin.proteomics.server.business.IProteinInfoTable; -import ch.systemsx.cisd.openbis.plugin.proteomics.server.business.IProteinRelatedSampleTable; -import ch.systemsx.cisd.openbis.plugin.proteomics.server.business.IProteinSequenceTable; -import ch.systemsx.cisd.openbis.plugin.proteomics.server.business.IProteinSummaryTable; -import ch.systemsx.cisd.openbis.plugin.proteomics.server.business.ISampleProvider; -import ch.systemsx.cisd.openbis.plugin.proteomics.server.dataaccess.IPhosphoNetXDAOFactory; -import ch.systemsx.cisd.openbis.plugin.proteomics.server.dataaccess.IProteinQueryDAO; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.IPhosphoNetXServer; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.ResourceNames; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.AbundanceColumnDefinition; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.AggregateFunction; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.DataSetProtein; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.ProteinByExperiment; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.ProteinDetails; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.ProteinInfo; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.ProteinRelatedSample; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.ProteinSequence; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.ProteinSummary; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.dto.ProteinReference; - -/** - * @author Franz-Josef Elmer - */ -@Component(ResourceNames.PROTEOMICS_PLUGIN_SERVER) -public class PhosphoNetXServer extends AbstractServer<IPhosphoNetXServer> implements - IPhosphoNetXServer -{ - @Resource(name = ResourceNames.PROTEOMICS_DAO_FACTORY) - private IPhosphoNetXDAOFactory specificDAOFactory; - - @Resource(name = ResourceNames.PROTEOMICS_BO_FACTORY) - private IBusinessObjectFactory specificBOFactory; - - public PhosphoNetXServer() - { - super(); - } - - @Private - PhosphoNetXServer(IOpenBisSessionManager sessionManager, IDAOFactory daoFactory, - IPropertiesBatchManager propertiesBatchManager, - IPhosphoNetXDAOFactory specificDAOFactory, IBusinessObjectFactory specificBOFactory, - ISampleTypeSlaveServerPlugin sampleTypeSlaveServerPlugin, - IDataSetTypeSlaveServerPlugin dataSetTypeSlaveServerPlugin) - { - super(sessionManager, daoFactory, propertiesBatchManager, sampleTypeSlaveServerPlugin, - dataSetTypeSlaveServerPlugin); - this.specificDAOFactory = specificDAOFactory; - this.specificBOFactory = specificBOFactory; - } - - @Override - public IPhosphoNetXServer createLogger(IInvocationLoggerContext context) - { - return new PhosphoNetXServerLogger(getSessionManager(), context); - } - - @Override - @RolesAllowed(RoleWithHierarchy.PROJECT_OBSERVER) - public Vocabulary getTreatmentTypeVocabulary(String sessionToken) throws UserFailureException - { - IVocabularyDAO vocabularyDAO = getDAOFactory().getVocabularyDAO(); - VocabularyPE vocabulary = vocabularyDAO.tryFindVocabularyByCode("TREATMENT_TYPE"); - return VocabularyTranslator.translate(vocabulary); - } - - @Override - @RolesAllowed(RoleWithHierarchy.PROJECT_OBSERVER) - public List<AbundanceColumnDefinition> getAbundanceColumnDefinitionsForProteinByExperiment( - String sessionToken, @AuthorizationGuard(guardClass = ExperimentTechIdPredicate.class) TechId experimentID, String treatmentTypeOrNull) - throws UserFailureException - { - Session session = getSession(sessionToken); - ISampleProvider sampleProvider = specificBOFactory.createSampleProvider(session); - sampleProvider.loadByExperimentID(experimentID); - return getAbundanceColumnDefinitions(session, sampleProvider, experimentID, - treatmentTypeOrNull); - } - - private List<AbundanceColumnDefinition> getAbundanceColumnDefinitions(Session session, - ISampleProvider sampleProvider, TechId experimentID, String treatmentTypeOrNull) - { - String experimentPermID = getExperimentPermIDFor(experimentID); - IProteinQueryDAO dao = specificDAOFactory.getProteinQueryDAO(experimentID); - DataSet<String> samplePermIDs = - dao.listAbundanceRelatedSamplePermIDsByExperiment(experimentPermID); - try - { - IAbundanceColumnDefinitionTable table = - specificBOFactory.createAbundanceColumnDefinitionTable(session); - for (String samplePermID : samplePermIDs) - { - table.add(sampleProvider.getSample(samplePermID)); - } - return table.getSortedAndAggregatedDefinitions(treatmentTypeOrNull); - } finally - { - samplePermIDs.close(); - } - } - - @Override - @RolesAllowed(RoleWithHierarchy.PROJECT_OBSERVER) - public List<ProteinInfo> listProteinsByExperiment(String sessionToken, - @AuthorizationGuard(guardClass = ExperimentTechIdPredicate.class) TechId experimentId, double falseDiscoveryRate, - AggregateFunction function, - String treatmentTypeCode, boolean aggregateOnOriginal) throws UserFailureException - { - final Session session = getSession(sessionToken); - ISampleProvider sampleProvider = specificBOFactory.createSampleProvider(session); - sampleProvider.loadByExperimentID(experimentId); - List<AbundanceColumnDefinition> definitions = - getAbundanceColumnDefinitions(session, sampleProvider, experimentId, - treatmentTypeCode); - IProteinInfoTable table = specificBOFactory.createProteinInfoTable(session, sampleProvider); - table.load(definitions, experimentId, falseDiscoveryRate, function, aggregateOnOriginal); - return table.getProteinInfos(); - } - - @Override - @RolesAllowed(RoleWithHierarchy.PROJECT_OBSERVER) - public List<ProteinSummary> listProteinSummariesByExperiment(String sessionToken, - @AuthorizationGuard(guardClass = ExperimentTechIdPredicate.class) TechId experimentId) throws UserFailureException - { - final Session session = getSession(sessionToken); - IProteinSummaryTable summaryTable = specificBOFactory.createProteinSummaryTable(session); - summaryTable.load(experimentId); - return summaryTable.getProteinSummaries(); - } - - @Override - @RolesAllowed(RoleWithHierarchy.PROJECT_OBSERVER) - public ProteinByExperiment getProteinByExperiment(String sessionToken, - @AuthorizationGuard(guardClass = ExperimentTechIdPredicate.class) TechId experimentID, TechId proteinReferenceID) - throws UserFailureException - { - Session session = getSession(sessionToken); - IProteinQueryDAO proteinQueryDAO = specificDAOFactory.getProteinQueryDAO(experimentID); - ProteinByExperiment proteinByExperiment = new ProteinByExperiment(); - ProteinReference proteinReference = - proteinQueryDAO.tryToGetProteinReference(proteinReferenceID.getId()); - if (proteinReference == null) - { - throw new UserFailureException("No protein reference found for ID: " - + proteinReferenceID); - } - proteinByExperiment.setId(proteinReferenceID); - AccessionNumberBuilder builder = - new AccessionNumberBuilder(proteinReference.getAccessionNumber()); - proteinByExperiment.setAccessionNumber(builder.getAccessionNumber()); - proteinByExperiment.setAccessionNumberType(builder.getTypeOrNull()); - proteinByExperiment.setDescription(proteinReference.getDescription()); - IProteinDetailsBO proteinDetailsBO = specificBOFactory.createProteinDetailsBO(session); - proteinDetailsBO.loadByExperimentAndReference(experimentID, proteinReferenceID); - proteinByExperiment.setDetails(proteinDetailsBO.getDetailsOrNull()); - return proteinByExperiment; - } - - @Override - @RolesAllowed(RoleWithHierarchy.PROJECT_OBSERVER) - public List<ProteinSequence> listProteinSequencesByProteinReference(String sessionToken, - @AuthorizationGuard(guardClass = ExperimentTechIdPredicate.class) TechId experimentID, TechId proteinReferenceID) - throws UserFailureException - { - final Session session = getSession(sessionToken); - IProteinSequenceTable sequenceTable = specificBOFactory.createProteinSequenceTable(session); - sequenceTable.loadByReference(experimentID, proteinReferenceID); - return sequenceTable.getSequences(); - } - - @Override - @RolesAllowed(RoleWithHierarchy.PROJECT_OBSERVER) - public List<DataSetProtein> listProteinsByExperimentAndReference(String sessionToken, - @AuthorizationGuard(guardClass = ExperimentTechIdPredicate.class) TechId experimentId, TechId proteinReferenceID) - throws UserFailureException - { - final Session session = getSession(sessionToken); - IProteinSequenceTable sequenceTable = specificBOFactory.createProteinSequenceTable(session); - sequenceTable.loadByReference(experimentId, proteinReferenceID); - IDataSetProteinTable dataSetProteinTable = - specificBOFactory.createDataSetProteinTable(session); - dataSetProteinTable.load(getExperimentPermIDFor(experimentId), proteinReferenceID, - sequenceTable); - return dataSetProteinTable.getDataSetProteins(); - } - - @Override - @RolesAllowed(RoleWithHierarchy.PROJECT_OBSERVER) - public List<ProteinRelatedSample> listProteinRelatedSamplesByProtein(String sessionToken, - @AuthorizationGuard(guardClass = ExperimentTechIdPredicate.class) TechId experimentID, TechId proteinReferenceID) - throws UserFailureException - { - final Session session = getSession(sessionToken); - - IProteinDetailsBO proteinDetailsBO = specificBOFactory.createProteinDetailsBO(session); - proteinDetailsBO.loadByExperimentAndReference(experimentID, proteinReferenceID); - ProteinDetails detailsOrNull = proteinDetailsBO.getDetailsOrNull(); - String sequenceOrNull = detailsOrNull == null ? null : detailsOrNull.getSequence(); - IProteinRelatedSampleTable proteinRelatedSampleTable = - specificBOFactory.createProteinRelatedSampleTable(session); - proteinRelatedSampleTable.load(session, experimentID, proteinReferenceID, sequenceOrNull); - return proteinRelatedSampleTable.getSamples(); - } - - private String getExperimentPermIDFor(TechId experimentId) - { - ExperimentPE experiment = getDAOFactory().getExperimentDAO().getByTechId(experimentId); - return experiment.getPermId(); - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/PhosphoNetXServerLogger.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/PhosphoNetXServerLogger.java deleted file mode 100644 index 0a3dfe4c53b7c29e0cfd76ca9fdb2dc935cc7cde..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/PhosphoNetXServerLogger.java +++ /dev/null @@ -1,124 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.server; - -import java.util.List; - -import ch.systemsx.cisd.authentication.ISessionManager; -import ch.systemsx.cisd.common.exceptions.UserFailureException; -import ch.systemsx.cisd.openbis.common.spring.IInvocationLoggerContext; -import ch.systemsx.cisd.openbis.generic.shared.AbstractServerLogger; -import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Vocabulary; -import ch.systemsx.cisd.openbis.generic.shared.dto.Session; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.IPhosphoNetXServer; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.AbundanceColumnDefinition; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.AggregateFunction; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.DataSetProtein; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.ProteinByExperiment; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.ProteinInfo; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.ProteinRelatedSample; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.ProteinSequence; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.ProteinSummary; - -/** - * @author Franz-Josef Elmer - */ -public class PhosphoNetXServerLogger extends AbstractServerLogger implements IPhosphoNetXServer -{ - PhosphoNetXServerLogger(final ISessionManager<Session> sessionManager, - IInvocationLoggerContext context) - { - super(sessionManager, context); - } - - @Override - public Vocabulary getTreatmentTypeVocabulary(String sessionToken) throws UserFailureException - { - logAccess(sessionToken, "get_treatment_type_vocabulary"); - return null; - } - - @Override - public List<AbundanceColumnDefinition> getAbundanceColumnDefinitionsForProteinByExperiment( - String sessionToken, TechId experimentID, String treatmentTypeOrNull) - throws UserFailureException - { - logAccess(sessionToken, "get_abundance_colum_definitions", - "EXPERIMENT_ID(%s) TREATMENT_TYPE(%s)", experimentID, - treatmentTypeOrNull); - return null; - } - - @Override - public List<ProteinInfo> listProteinsByExperiment(String sessionToken, TechId experimentId, - double falseDiscoveryRate, AggregateFunction function, String treatmentTypeCode, - boolean aggregateOnOriginal) throws UserFailureException - { - logAccess(sessionToken, "list_proteins_by_experiment", - "ID(%s) FDR(%s) AGGREGATE_FUNCTION(%s) TREATMENT_TYPE(%s) " - + "AGGREGATE_ON_ORIGINAL(%s)", experimentId, falseDiscoveryRate, function - .getLabel(), treatmentTypeCode, aggregateOnOriginal); - return null; - } - - @Override - public List<ProteinSummary> listProteinSummariesByExperiment(String sessionToken, - TechId experimentId) throws UserFailureException - { - logAccess(sessionToken, "list_protein_summaries_by_experiment", "EXPERIMENT_ID(%s)", - experimentId); - return null; - } - - @Override - public ProteinByExperiment getProteinByExperiment(String sessionToken, TechId experimentId, - TechId proteinReferenceID) throws UserFailureException - { - logAccess(sessionToken, "get_protein_by_experiment", - "EXPERIMENT_ID(%s) PROTEIN_REFERENCE_ID(%s)", experimentId, proteinReferenceID); - return null; - } - - @Override - public List<ProteinSequence> listProteinSequencesByProteinReference(String sessionToken, - TechId experimentID, TechId proteinReferenceID) throws UserFailureException - { - logAccess(sessionToken, "list_protein_sequences_by_reference", - "EXPERIMENT_ID(%s) PROTEIN_REFERENCE_ID(%s)", experimentID, proteinReferenceID); - return null; - } - - @Override - public List<DataSetProtein> listProteinsByExperimentAndReference(String sessionToken, - TechId experimentId, TechId proteinReferenceID) throws UserFailureException - { - logAccess(sessionToken, "list_proteins_by_experiment_and_reference", - "EXPERIMENT_ID(%s) PROTEIN_REFERENCE_ID(%s)", experimentId, proteinReferenceID); - return null; - } - - @Override - public List<ProteinRelatedSample> listProteinRelatedSamplesByProtein(String sessionToken, - TechId experimentID, TechId proteinReferenceID) throws UserFailureException - { - logAccess(sessionToken, "list_protein_related_samples_by_protein", - "EXPERIMENT_ID(%s) PROTEIN_REFERENCE_ID(%s)", experimentID, proteinReferenceID); - return null; - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/ProteomicsDataServiceInternal.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/ProteomicsDataServiceInternal.java deleted file mode 100644 index f9d28fd536ec194583a1e6d80692247509a988c0..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/ProteomicsDataServiceInternal.java +++ /dev/null @@ -1,368 +0,0 @@ -/* - * Copyright 2010 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.server; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; -import java.util.Set; - -import ch.systemsx.cisd.common.collection.CollectionUtils; -import ch.systemsx.cisd.common.exceptions.EnvironmentFailureException; -import ch.systemsx.cisd.common.exceptions.UserFailureException; -import ch.systemsx.cisd.openbis.common.spring.IInvocationLoggerContext; -import ch.systemsx.cisd.openbis.generic.server.AbstractServer; -import ch.systemsx.cisd.openbis.generic.server.authorization.AuthorizationDataProvider; -import ch.systemsx.cisd.openbis.generic.server.authorization.annotation.AuthorizationGuard; -import ch.systemsx.cisd.openbis.generic.server.authorization.annotation.ReturnValueFilter; -import ch.systemsx.cisd.openbis.generic.server.authorization.annotation.RolesAllowed; -import ch.systemsx.cisd.openbis.generic.server.authorization.predicate.AbstractTechIdPredicate.ExperimentTechIdPredicate; -import ch.systemsx.cisd.openbis.generic.server.authorization.predicate.DataSetCodeCollectionPredicate; -import ch.systemsx.cisd.openbis.generic.server.authorization.validator.ExperimentValidator; -import ch.systemsx.cisd.openbis.generic.server.authorization.validator.SamplePropertyAccessValidator; -import ch.systemsx.cisd.openbis.generic.server.business.IPropertiesBatchManager; -import ch.systemsx.cisd.openbis.generic.server.business.bo.ICommonBusinessObjectFactory; -import ch.systemsx.cisd.openbis.generic.server.business.bo.IDataSetTable; -import ch.systemsx.cisd.openbis.generic.server.dataaccess.IDAOFactory; -import ch.systemsx.cisd.openbis.generic.server.dataaccess.IDataDAO; -import ch.systemsx.cisd.openbis.generic.server.dataaccess.IEntityTypeDAO; -import ch.systemsx.cisd.openbis.generic.server.dataaccess.IExperimentDAO; -import ch.systemsx.cisd.openbis.generic.shared.IOpenBisSessionManager; -import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.AbstractExternalData; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Code; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataStoreServiceKind; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Experiment; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Metaproject; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.RoleWithHierarchy; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample; -import ch.systemsx.cisd.openbis.generic.shared.dto.DataPE; -import ch.systemsx.cisd.openbis.generic.shared.dto.DataStorePE; -import ch.systemsx.cisd.openbis.generic.shared.dto.DataStoreServicePE; -import ch.systemsx.cisd.openbis.generic.shared.dto.ExperimentPE; -import ch.systemsx.cisd.openbis.generic.shared.dto.ExperimentTypePE; -import ch.systemsx.cisd.openbis.generic.shared.dto.MetaprojectAssignmentPE; -import ch.systemsx.cisd.openbis.generic.shared.dto.PersonPE; -import ch.systemsx.cisd.openbis.generic.shared.dto.Session; -import ch.systemsx.cisd.openbis.generic.shared.dto.properties.EntityKind; -import ch.systemsx.cisd.openbis.generic.shared.managed_property.IManagedPropertyEvaluatorFactory; -import ch.systemsx.cisd.openbis.generic.shared.translator.DataSetTranslator; -import ch.systemsx.cisd.openbis.generic.shared.translator.ExperimentTranslator; -import ch.systemsx.cisd.openbis.generic.shared.translator.MetaprojectTranslator; -import ch.systemsx.cisd.openbis.plugin.proteomics.server.authorization.validator.ParentSampleValidator; -import ch.systemsx.cisd.openbis.plugin.proteomics.server.authorization.validator.RawDataSampleValidator; -import ch.systemsx.cisd.openbis.plugin.proteomics.server.business.ExperimentLoader; -import ch.systemsx.cisd.openbis.plugin.proteomics.server.business.IBusinessObjectFactory; -import ch.systemsx.cisd.openbis.plugin.proteomics.server.business.ISampleLoader; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.IProteomicsDataServiceInternal; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.CommonConstants; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.dto.MsInjectionSample; - -/** - * @author Franz-Josef Elmer - */ -public class ProteomicsDataServiceInternal extends AbstractServer<IProteomicsDataServiceInternal> - implements IProteomicsDataServiceInternal -{ - private ICommonBusinessObjectFactory commonBoFactory; - - private IOpenBisSessionManager sessionManagerFromConstructor; - - private ExperimentLoader experimentLoader; - - private IBusinessObjectFactory boFactory; - - private IManagedPropertyEvaluatorFactory managedPropertyEvaluatorFactory; - - public ProteomicsDataServiceInternal() - { - } - - public ProteomicsDataServiceInternal(IOpenBisSessionManager sessionManager, - IDAOFactory daoFactory, ICommonBusinessObjectFactory businessObjectFactory, - IBusinessObjectFactory boFactory, - IManagedPropertyEvaluatorFactory managedPropertyEvaluatorFactory) - { - this(sessionManager, daoFactory, null, businessObjectFactory, boFactory, - managedPropertyEvaluatorFactory); - } - - ProteomicsDataServiceInternal(IOpenBisSessionManager sessionManager, IDAOFactory daoFactory, - IPropertiesBatchManager propertiesBatchManager, - ICommonBusinessObjectFactory businessObjectFactory, IBusinessObjectFactory boFactory, - IManagedPropertyEvaluatorFactory managedPropertyEvaluatorFactory) - { - super(sessionManager, daoFactory, propertiesBatchManager); - sessionManagerFromConstructor = sessionManager; - this.commonBoFactory = businessObjectFactory; - this.boFactory = boFactory; - experimentLoader = new ExperimentLoader(getDAOFactory(), managedPropertyEvaluatorFactory); - this.managedPropertyEvaluatorFactory = managedPropertyEvaluatorFactory; - } - - public void replaceAutoWiredSesseionManagerByConstructorSessionManager() - { - sessionManager = sessionManagerFromConstructor; - } - - @Override - public IProteomicsDataServiceInternal createLogger(IInvocationLoggerContext context) - { - return new ProteomicsDataServiceInternalLogger(getSessionManager(), context); - } - - @Override - @RolesAllowed(RoleWithHierarchy.PROJECT_USER) - @ReturnValueFilter(validatorClass = RawDataSampleValidator.class) - public List<MsInjectionSample> listRawDataSamples(String sessionToken) - { - return loadAllRawDataSamples(getSession(sessionToken), true); - } - - @Override - @RolesAllowed(RoleWithHierarchy.PROJECT_USER) - public List<MsInjectionSample> listAllRawDataSamples(String sessionToken) - { - return loadAllRawDataSamples(getSession(sessionToken), false); - } - - @Override - @RolesAllowed(RoleWithHierarchy.PROJECT_USER) - public void processRawData(String sessionToken, String dataSetProcessingKey, - long[] rawDataSampleIDs, String dataSetType) - { - Session session = getSession(sessionToken); - PersonPE person = session.tryGetPerson(); - - List<MsInjectionSample> samples = loadAllRawDataSamples(session, true); - Set<Long> sampleIDs = asSet(rawDataSampleIDs); - List<String> dataSetCodes = new ArrayList<String>(); - Map<String, String> parameterBindings = new HashMap<String, String>(); - - RawDataSampleValidator validator = new RawDataSampleValidator(); - validator.init(new AuthorizationDataProvider(getDAOFactory())); - - for (MsInjectionSample sample : samples) - { - if (validator.isValid(person, sample) - && sampleIDs.contains(sample.getSample().getId())) - { - Map<String, AbstractExternalData> latestDataSets = sample.getLatestDataSets(); - AbstractExternalData latestDataSet = latestDataSets.get(dataSetType); - if (latestDataSet != null) - { - String code = latestDataSet.getCode(); - dataSetCodes.add(code); - parameterBindings.put(code, sample.getSample().getCode()); - } - } - } - - processDataSets(session, dataSetProcessingKey, dataSetCodes, parameterBindings); - } - - @Override - @RolesAllowed(RoleWithHierarchy.PROJECT_USER) - public void processDataSets(String sessionToken, String dataSetProcessingKey, - @AuthorizationGuard(guardClass = DataSetCodeCollectionPredicate.class) List<String> dataSetCodes) - { - Session session = getSession(sessionToken); - processDataSets(session, dataSetProcessingKey, dataSetCodes, new HashMap<String, String>()); - } - - @Override - @RolesAllowed(RoleWithHierarchy.PROJECT_USER) - @ReturnValueFilter(validatorClass = ExperimentValidator.class) - public List<Experiment> listExperiments(String sessionToken, String experimentTypeCode) - { - Session session = getSession(sessionToken); - - IDAOFactory daoFactory = getDAOFactory(); - IEntityTypeDAO entityTypeDAO = daoFactory.getEntityTypeDAO(EntityKind.EXPERIMENT); - ExperimentTypePE type = - (ExperimentTypePE) entityTypeDAO.tryToFindEntityTypeByCode(experimentTypeCode); - List<ExperimentPE> experiments = - daoFactory.getExperimentDAO().listExperimentsWithProperties(type, null, null); - final Collection<MetaprojectAssignmentPE> assignmentPEs = - getDAOFactory().getMetaprojectDAO().listMetaprojectAssignmentsForEntities( - session.tryGetPerson(), experiments, EntityKind.EXPERIMENT); - Map<Long, Set<Metaproject>> assignments = - MetaprojectTranslator.translateMetaprojectAssignments(assignmentPEs); - return ExperimentTranslator.translate(experiments, "", assignments, - managedPropertyEvaluatorFactory, - new SamplePropertyAccessValidator(session, getDAOFactory())); - } - - @Override - @RolesAllowed(RoleWithHierarchy.PROJECT_USER) - public List<AbstractExternalData> listDataSetsByExperiment(String sessionToken, - @AuthorizationGuard(guardClass = ExperimentTechIdPredicate.class) TechId experimentID) - { - final Session session = getSession(sessionToken); - - IDataSetTable dataSetTable = commonBoFactory.createDataSetTable(session); - dataSetTable.loadByExperimentTechId(experimentID); - List<DataPE> dataSetPEs = dataSetTable.getDataSets(); - Collection<MetaprojectAssignmentPE> assignmentPEs = - getDAOFactory().getMetaprojectDAO().listMetaprojectAssignmentsForEntities( - session.tryGetPerson(), dataSetPEs, EntityKind.DATA_SET); - return DataSetTranslator.translate(dataSetPEs, "", "", - MetaprojectTranslator.translateMetaprojectAssignments(assignmentPEs), - managedPropertyEvaluatorFactory, - new SamplePropertyAccessValidator(session, getDAOFactory())); - } - - @Override - @RolesAllowed(RoleWithHierarchy.PROJECT_USER) - public void processProteinResultDataSets(String sessionToken, String dataSetProcessingKey, - String experimentType, long[] searchExperimentIDs) - { - Session session = getSession(sessionToken); - PersonPE person = session.tryGetPerson(); - - List<String> dataSetCodes = new ArrayList<String>(); - IExperimentDAO experimentDAO = getDAOFactory().getExperimentDAO(); - IDataDAO dataSetDAO = getDAOFactory().getDataDAO(); - ExperimentValidator validator = new ExperimentValidator(); - - validator.init(new AuthorizationDataProvider(getDAOFactory())); - - for (long experimentID : searchExperimentIDs) - { - ExperimentPE experiment = experimentDAO.tryGetByTechId(new TechId(experimentID)); - String actualExperimentTypeCode = experiment.getExperimentType().getCode(); - if (actualExperimentTypeCode.equals(experimentType) == false) - { - throw new UserFailureException("Experiment with technical id " + experimentID - + " [" + experiment.getIdentifier() + "] is not of type " + experimentType - + " but of type " + actualExperimentTypeCode + "."); - } - Experiment translatedExperiment = - ExperimentTranslator.translate(experiment, "", null, - managedPropertyEvaluatorFactory, - new SamplePropertyAccessValidator(session, getDAOFactory())); - if (validator.isValid(person, translatedExperiment)) - { - List<DataPE> dataSets = dataSetDAO.listDataSets(experiment); - dataSetCodes.addAll(Code.extractCodes(dataSets)); - } - } - - processDataSets(session, dataSetProcessingKey, dataSetCodes, new HashMap<String, String>()); - } - - private List<MsInjectionSample> loadAllRawDataSamples(Session session, boolean parentHasToBeValid) - { - List<Sample> samples = loadAccessableSamples(session, parentHasToBeValid); - List<Sample> parentSamples = new ArrayList<Sample>(); - for (Sample sample : samples) - { - Sample parent = sample.getGeneratedFrom(); - if (parent != null) - { - parentSamples.add(parent); - } - } - experimentLoader.enrichWithExperiments(session, parentSamples); - Map<Sample, List<AbstractExternalData>> dataSetsBySamples = - commonBoFactory.createDatasetLister(session).listAllDataSetsFor(samples); - List<MsInjectionSample> result = new ArrayList<MsInjectionSample>(); - for (Entry<Sample, List<AbstractExternalData>> entry : dataSetsBySamples.entrySet()) - { - result.add(new MsInjectionSample(entry.getKey(), entry.getValue())); - } - return result; - } - - protected List<Sample> loadAccessableSamples(Session session, boolean parentHasToBeValid) - { - ISampleLoader sampleLoader = boFactory.createSampleLoader(session); - List<Sample> samples = - sampleLoader.listSamplesWithParentsByTypeAndSpace( - CommonConstants.MS_INJECTION_SAMPLE_TYPE_CODE, - CommonConstants.MS_DATA_SPACE); - PersonPE person = session.tryGetPerson(); - List<Sample> validSamples = new ArrayList<Sample>(); - - ParentSampleValidator validator = new ParentSampleValidator(); - validator.init(new AuthorizationDataProvider(getDAOFactory())); - - for (Sample sample : samples) - { - if (validator.isValid(person, sample, parentHasToBeValid)) - { - if (validator.isValid(person, sample) == false) - { - sample.setParents(Collections.<Sample> emptySet()); - } - validSamples.add(sample); - } - } - return validSamples; - } - - private void processDataSets(Session session, String dataSetProcessingKey, - List<String> dataSetCodes, Map<String, String> parameterBindings) - { - try - { - String dataStoreServerCode = findDataStoreServer(dataSetProcessingKey); - IDataSetTable dataSetTable = commonBoFactory.createDataSetTable(session); - dataSetTable.processDatasets(dataSetProcessingKey, dataStoreServerCode, dataSetCodes, - parameterBindings); - } catch (EnvironmentFailureException ex) - { - throw new EnvironmentFailureException("Processing data sets " + - CollectionUtils.abbreviate(dataSetCodes, 20) + " with processing plugin '" - + dataSetProcessingKey + "' using bindings " + parameterBindings + " failed.", ex); - } - } - - private String findDataStoreServer(String dataSetProcessingKey) - { - List<DataStorePE> dataStores = getDAOFactory().getDataStoreDAO().listDataStores(); - for (DataStorePE dataStore : dataStores) - { - Set<DataStoreServicePE> services = dataStore.getServices(); - for (DataStoreServicePE dataStoreService : services) - { - if (DataStoreServiceKind.PROCESSING.equals(dataStoreService.getKind()) - && dataSetProcessingKey.equals(dataStoreService.getKey())) - { - return dataStore.getCode(); - } - } - } - throw new EnvironmentFailureException("No data store processing service with key '" - + dataSetProcessingKey + "' found."); - } - - private Set<Long> asSet(long[] ids) - { - Set<Long> result = new HashSet<Long>(); - for (long id : ids) - { - result.add(id); - } - return result; - } -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/ProteomicsDataServiceInternalLogger.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/ProteomicsDataServiceInternalLogger.java deleted file mode 100644 index 964f3b03c4d5bc35b6b8cbd523f8092306326eda..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/ProteomicsDataServiceInternalLogger.java +++ /dev/null @@ -1,100 +0,0 @@ -/* - * Copyright 2010 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.server; - -import java.util.List; - -import ch.systemsx.cisd.authentication.ISessionManager; -import ch.systemsx.cisd.openbis.common.spring.IInvocationLoggerContext; -import ch.systemsx.cisd.openbis.generic.shared.AbstractServerLogger; -import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Experiment; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.AbstractExternalData; -import ch.systemsx.cisd.openbis.generic.shared.dto.Session; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.IProteomicsDataServiceInternal; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.dto.MsInjectionSample; - -/** - * @author Franz-Josef Elmer - */ -class ProteomicsDataServiceInternalLogger extends AbstractServerLogger implements - IProteomicsDataServiceInternal -{ - - ProteomicsDataServiceInternalLogger(ISessionManager<Session> sessionManager, - IInvocationLoggerContext context) - { - super(sessionManager, context); - } - - @Override - public List<MsInjectionSample> listRawDataSamples(String sessionToken) - { - logAccess(sessionToken, "list_raw_data_samples"); - return null; - } - - @Override - public List<MsInjectionSample> listAllRawDataSamples(String sessionToken) - { - logAccess(sessionToken, "list_all_raw_data_samples"); - return null; - } - - @Override - public void processRawData(String sessionToken, String dataSetProcessingKey, - long[] rawDataSampleIDs, String dataSetType) - { - int numberOfDataSets = rawDataSampleIDs == null ? 0 : rawDataSampleIDs.length; - logAccess(sessionToken, "copy_raw_data", "NUMBER_OF_DATA_SETS(%s), DATA_SET_TYPE(%s)", - numberOfDataSets, dataSetType); - } - - @Override - public void processDataSets(String sessionToken, String dataSetProcessingKey, - List<String> dataSetCodes) - { - logAccess(sessionToken, "process_data_sets", - "DSS_PROCESSING_PLUGIN(%s) NUMBER_OF_DATA_SETS(%s)", dataSetProcessingKey, - dataSetCodes.size()); - } - - @Override - public List<Experiment> listExperiments(String sessionToken, String experimentTypeCode) - { - logAccess(sessionToken, "list_search_experiments", "EXPERIMENT_TYPE(%s)", experimentTypeCode); - return null; - } - - @Override - public List<AbstractExternalData> listDataSetsByExperiment(String sessionToken, TechId experimentID) - { - logAccess(sessionToken, "list_data_sets_by_experiments", "EXPERIMENT_ID(%s)", experimentID); - return null; - } - - @Override - public void processProteinResultDataSets(String sessionToken, String dataSetProcessingKey, - String experimentTypeCode, long[] searchExperimentIDs) - { - int experimentCount = searchExperimentIDs == null ? 0 : searchExperimentIDs.length; - logAccess(sessionToken, "process_protein_result_data_sets", - "DSS_PROCESSING_PLUGIN(%s) EXPERIMENT_TYPE(%s) NUMBER_OF_EXPERIMENTS(%s)", - dataSetProcessingKey, experimentTypeCode, experimentCount); - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/api/v1/Constants.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/api/v1/Constants.java deleted file mode 100644 index e55625dd8f0aac59d3c3181ebce528ca55ddd265..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/api/v1/Constants.java +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright 2010 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.server.api.v1; - -/** - * @author Franz-Josef Elmer - */ -public class Constants -{ - // Spring bean IDs - public final static String PROTEOMICS_DATA_SERVICE = "proteomics-data-service"; - - public final static String PROTEOMICS_DATA_SERVICE_INTERNAL = "proteomics-data-service-internal"; - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/api/v1/ProteomicsDataService.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/api/v1/ProteomicsDataService.java deleted file mode 100644 index bfabf505a04085e79b7e214d2fea918ec053e0b9..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/api/v1/ProteomicsDataService.java +++ /dev/null @@ -1,413 +0,0 @@ -/* - * Copyright 2010 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.server.api.v1; - -import java.io.Serializable; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Date; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; -import java.util.Set; - -import javax.annotation.Resource; - -import org.springframework.stereotype.Component; - -import ch.systemsx.cisd.common.exceptions.UserFailureException; -import ch.systemsx.cisd.openbis.common.spring.IInvocationLoggerContext; -import ch.systemsx.cisd.openbis.generic.server.AbstractServer; -import ch.systemsx.cisd.openbis.generic.server.authorization.annotation.RolesAllowed; -import ch.systemsx.cisd.openbis.generic.server.business.IPropertiesBatchManager; -import ch.systemsx.cisd.openbis.generic.server.dataaccess.IDAOFactory; -import ch.systemsx.cisd.openbis.generic.shared.IOpenBisSessionManager; -import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.AbstractExternalData; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataStoreServiceKind; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataTypeCode; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Experiment; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IEntityProperty; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.PropertyType; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.RoleWithHierarchy; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample; -import ch.systemsx.cisd.openbis.generic.shared.dto.DataSetTypePE; -import ch.systemsx.cisd.openbis.generic.shared.dto.DataStorePE; -import ch.systemsx.cisd.openbis.generic.shared.dto.DataStoreServicePE; -import ch.systemsx.cisd.openbis.generic.shared.dto.SessionContextDTO; -import ch.systemsx.cisd.openbis.generic.shared.util.DataTypeUtils; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.IProteomicsDataServiceInternal; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.api.v1.IProteomicsDataService; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.api.v1.dto.DataSet; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.api.v1.dto.DataStoreServerProcessingPluginInfo; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.api.v1.dto.MsInjectionDataInfo; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.api.v1.dto.PropertyKey; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.dto.MsInjectionSample; - -/** - * Implementation of {@link IProteomicsDataService}. - * - * @author Franz-Josef Elmer - */ -@Component(Constants.PROTEOMICS_DATA_SERVICE) -public class ProteomicsDataService extends AbstractServer<IProteomicsDataService> implements - IProteomicsDataService -{ - private static final String MS_SEARCH = "MS_SEARCH"; - - @Resource(name = Constants.PROTEOMICS_DATA_SERVICE_INTERNAL) - private IProteomicsDataServiceInternal service; - - public ProteomicsDataService() - { - } - - public ProteomicsDataService(final IOpenBisSessionManager sessionManager, - final IDAOFactory daoFactory, IPropertiesBatchManager propertiesBatchManager, - IProteomicsDataServiceInternal service) - { - super(sessionManager, daoFactory, propertiesBatchManager); - this.service = service; - } - - @Override - public String tryToAuthenticateAtRawDataServer(String userID, String userPassword) - { - SessionContextDTO session = tryAuthenticate(userID, userPassword); - return session == null ? null : session.getSessionToken(); - } - - @Override - public IProteomicsDataService createLogger(IInvocationLoggerContext context) - { - return new ProteomicsDataServiceLogger(getSessionManager(), context); - } - - @Override - @RolesAllowed(RoleWithHierarchy.INSTANCE_OBSERVER) - public List<MsInjectionDataInfo> listRawDataSamples(String sessionToken, String userID) - { - checkSession(sessionToken); - SessionContextDTO session = login(userID); - try - { - return translateSamples(service.listRawDataSamples(session.getSessionToken())); - } finally - { - service.logout(session.getSessionToken()); - } - } - - @Override - @RolesAllowed(RoleWithHierarchy.INSTANCE_OBSERVER) - public List<MsInjectionDataInfo> listAllRawDataSamples(String sessionToken, String userID) - { - checkSession(sessionToken); - SessionContextDTO session = login(userID); - try - { - return translateSamples(service.listAllRawDataSamples(session.getSessionToken())); - } finally - { - service.logout(session.getSessionToken()); - } - } - - private List<MsInjectionDataInfo> translateSamples(List<MsInjectionSample> samples) - { - ArrayList<MsInjectionDataInfo> result = new ArrayList<MsInjectionDataInfo>(); - for (MsInjectionSample sample : samples) - { - result.add(translate(sample)); - } - return result; - } - - private MsInjectionDataInfo translate(MsInjectionSample sample) - { - MsInjectionDataInfo info = new MsInjectionDataInfo(); - Sample msiSample = sample.getSample(); - info.setMsInjectionSampleID(msiSample.getId()); - info.setMsInjectionSampleCode(msiSample.getCode()); - info.setMsInjectionSampleRegistrationDate(msiSample.getRegistrationDate()); - info.setMsInjectionSampleProperties(translate(msiSample.getProperties())); - Sample bioSample = msiSample.getGeneratedFrom(); - if (bioSample != null) - { - info.setBiologicalSampleID(bioSample.getId()); - info.setBiologicalSampleIdentifier(bioSample.getIdentifier()); - Experiment experiment = bioSample.getExperiment(); - if (experiment != null) - { - info.setBiologicalExperimentIdentifier(experiment.getIdentifier()); - info.setBiologicalExperiment(translate(experiment)); - } - info.setBiologicalSampleProperties(translate(bioSample.getProperties())); - } - List<AbstractExternalData> dataSets = sample.getDataSets(); - Set<DataSet> transformedDataSets = new HashSet<DataSet>(); - for (AbstractExternalData dataSet : dataSets) - { - DataSet transformedDataSet = transform(dataSet); - transformedDataSets.add(transformedDataSet); - } - info.setDataSets(transformedDataSets); - Map<String, Date> latestDataSetRegistrationDates = new HashMap<String, Date>(); - for (Entry<String, AbstractExternalData> entry : sample.getLatestDataSets().entrySet()) - { - latestDataSetRegistrationDates.put(entry.getKey(), entry.getValue() - .getRegistrationDate()); - } - info.setLatestDataSetRegistrationDates(latestDataSetRegistrationDates); - return info; - } - - private DataSet transform(AbstractExternalData dataSet) - { - DataSet transformedDataSet = new DataSet(); - transformedDataSet.setId(dataSet.getId()); - transformedDataSet.setCode(dataSet.getCode()); - transformedDataSet.setType(dataSet.getDataSetType().getCode()); - transformedDataSet.setRegistrationDate(dataSet.getRegistrationDate()); - transformedDataSet.setProperties(translate(dataSet.getProperties())); - Collection<AbstractExternalData> children = dataSet.getChildren(); - if (children != null && children.isEmpty() == false) - { - for (AbstractExternalData child : children) - { - transformedDataSet.addChild(transform(child)); - } - } - return transformedDataSet; - } - - @Override - @RolesAllowed(RoleWithHierarchy.INSTANCE_OBSERVER) - public List<DataStoreServerProcessingPluginInfo> listDataStoreServerProcessingPluginInfos( - String sessionToken) - { - checkSession(sessionToken); - - List<DataStoreServerProcessingPluginInfo> result = - new ArrayList<DataStoreServerProcessingPluginInfo>(); - List<DataStorePE> dataStores = getDAOFactory().getDataStoreDAO().listDataStores(); - for (DataStorePE dataStore : dataStores) - { - Set<DataStoreServicePE> services = dataStore.getServices(); - for (DataStoreServicePE dataStoreService : services) - { - if (dataStoreService.getKind() == DataStoreServiceKind.PROCESSING) - { - result.add(translate(dataStoreService)); - } - } - } - return result; - } - - private DataStoreServerProcessingPluginInfo translate(DataStoreServicePE dataStoreService) - { - String key = dataStoreService.getKey(); - String label = dataStoreService.getLabel(); - List<String> translatedCodes = new ArrayList<String>(); - Set<DataSetTypePE> datasetTypes = dataStoreService.getDatasetTypes(); - for (DataSetTypePE dataSetType : datasetTypes) - { - translatedCodes.add(dataSetType.getCode()); - } - return new DataStoreServerProcessingPluginInfo(key, label, translatedCodes); - } - - @Override - @SuppressWarnings("deprecation") - @RolesAllowed(RoleWithHierarchy.INSTANCE_OBSERVER) - public void processingRawData(String sessionToken, String userID, String dataSetProcessingKey, - long[] rawDataSampleIDs, String dataSetType) - { - checkSession(sessionToken); - SessionContextDTO session = login(userID); - try - { - service.processRawData(session.getSessionToken(), dataSetProcessingKey, - rawDataSampleIDs, dataSetType); - } finally - { - service.logout(session.getSessionToken()); - } - } - - @Override - @RolesAllowed(RoleWithHierarchy.INSTANCE_OBSERVER) - public void processDataSets(String sessionToken, String userID, String dataSetProcessingKey, - List<String> dataSetCodes) - { - checkSession(sessionToken); - SessionContextDTO session = login(userID); - try - { - service.processDataSets(session.getSessionToken(), dataSetProcessingKey, dataSetCodes); - } finally - { - service.logout(session.getSessionToken()); - } - } - - @Override - @RolesAllowed(RoleWithHierarchy.INSTANCE_OBSERVER) - public List<ch.systemsx.cisd.openbis.plugin.proteomics.shared.api.v1.dto.Experiment> listSearchExperiments( - String sessionToken, String userID) - { - return listExperiments(sessionToken, userID, MS_SEARCH); - } - - @Override - @RolesAllowed(RoleWithHierarchy.INSTANCE_OBSERVER) - public List<ch.systemsx.cisd.openbis.plugin.proteomics.shared.api.v1.dto.Experiment> listExperiments( - String sessionToken, String userID, String experimentTypeCode) - { - checkSession(sessionToken); - SessionContextDTO session = login(userID); - try - { - List<Experiment> experiments = - service.listExperiments(session.getSessionToken(), experimentTypeCode); - List<ch.systemsx.cisd.openbis.plugin.proteomics.shared.api.v1.dto.Experiment> result = - new ArrayList<ch.systemsx.cisd.openbis.plugin.proteomics.shared.api.v1.dto.Experiment>(); - for (Experiment experiment : experiments) - { - ch.systemsx.cisd.openbis.plugin.proteomics.shared.api.v1.dto.Experiment e = - translate(experiment); - result.add(e); - } - return result; - } finally - { - service.logout(session.getSessionToken()); - } - } - - private ch.systemsx.cisd.openbis.plugin.proteomics.shared.api.v1.dto.Experiment translate( - Experiment experiment) - { - ch.systemsx.cisd.openbis.plugin.proteomics.shared.api.v1.dto.Experiment e = - new ch.systemsx.cisd.openbis.plugin.proteomics.shared.api.v1.dto.Experiment(); - e.setId(experiment.getId()); - e.setCode(experiment.getCode()); - e.setProjectCode(experiment.getProject().getCode()); - e.setSpaceCode(experiment.getProject().getSpace().getCode()); - e.setRegistrationDate(experiment.getRegistrationDate()); - e.setProperties(translate(experiment.getProperties())); - return e; - } - - @Override - @RolesAllowed(RoleWithHierarchy.INSTANCE_OBSERVER) - public List<DataSet> listDataSetsByExperiment(String sessionToken, String userID, - long experimentID) - { - checkSession(sessionToken); - SessionContextDTO session = login(userID); - try - { - List<DataSet> result = new ArrayList<DataSet>(); - List<AbstractExternalData> dataSets = - service.listDataSetsByExperiment(session.getSessionToken(), new TechId( - experimentID)); - for (AbstractExternalData dataSet : dataSets) - { - DataSet ds = new DataSet(); - ds.setId(dataSet.getId()); - ds.setCode(dataSet.getCode()); - ds.setType(dataSet.getDataSetType().getCode()); - ds.setProperties(translate(dataSet.getProperties())); - result.add(ds); - } - return result; - } finally - { - service.logout(session.getSessionToken()); - } - } - - @Override - @RolesAllowed(RoleWithHierarchy.INSTANCE_OBSERVER) - public void processSearchData(String sessionToken, String userID, String dataSetProcessingKey, - long[] searchExperimentIDs) - { - processProteinResultDataSets(sessionToken, userID, dataSetProcessingKey, MS_SEARCH, - searchExperimentIDs); - } - - @Override - @RolesAllowed(RoleWithHierarchy.INSTANCE_OBSERVER) - public void processProteinResultDataSets(String sessionToken, String userID, - String dataSetProcessingKey, String experimentTypeCode, long[] experimentIDs) - { - checkSession(sessionToken); - SessionContextDTO session = login(userID); - try - { - service.processProteinResultDataSets(session.getSessionToken(), dataSetProcessingKey, - experimentTypeCode, experimentIDs); - } finally - { - service.logout(session.getSessionToken()); - } - } - - private Map<PropertyKey, Serializable> translate(List<IEntityProperty> properties) - { - if (properties == null) - { - return null; - } - HashMap<PropertyKey, Serializable> map = new HashMap<PropertyKey, Serializable>(); - for (IEntityProperty property : properties) - { - PropertyType propertyType = property.getPropertyType(); - PropertyKey key = new PropertyKey(propertyType.getCode(), propertyType.getLabel()); - DataTypeCode dataTypeCode = propertyType.getDataType().getCode(); - map.put(key, DataTypeUtils.convertValueTo(dataTypeCode, property.tryGetAsString())); - } - return map; - } - - private SessionContextDTO login(String userID) - { - SessionContextDTO session = service.tryAuthenticate(userID, "dummy-password"); - if (session == null) - { - throw new UserFailureException("Unknown user ID: " + userID); - } - return session; - } - - @Override - public int getMajorVersion() - { - return 1; - } - - @Override - public int getMinorVersion() - { - return 3; - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/api/v1/ProteomicsDataServiceLogger.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/api/v1/ProteomicsDataServiceLogger.java deleted file mode 100644 index a779ee526e0216536c92b3d2a9696fa366a3aa18..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/api/v1/ProteomicsDataServiceLogger.java +++ /dev/null @@ -1,142 +0,0 @@ -/* - * Copyright 2010 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.server.api.v1; - -import java.util.List; - -import ch.systemsx.cisd.authentication.ISessionManager; -import ch.systemsx.cisd.openbis.common.spring.IInvocationLoggerContext; -import ch.systemsx.cisd.openbis.generic.shared.AbstractServerLogger; -import ch.systemsx.cisd.openbis.generic.shared.dto.Session; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.api.v1.IProteomicsDataService; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.api.v1.dto.DataSet; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.api.v1.dto.DataStoreServerProcessingPluginInfo; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.api.v1.dto.Experiment; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.api.v1.dto.MsInjectionDataInfo; - -/** - * @author Franz-Josef Elmer - */ -class ProteomicsDataServiceLogger extends AbstractServerLogger implements IProteomicsDataService -{ - - ProteomicsDataServiceLogger(ISessionManager<Session> sessionManager, IInvocationLoggerContext context) - { - super(sessionManager, context); - } - - @Override - public String tryToAuthenticateAtRawDataServer(String userID, String userPassword) - { - return null; - } - - @Override - public List<MsInjectionDataInfo> listRawDataSamples(String sessionToken, String userID) - { - logAccess(sessionToken, "list_raw_data_samples", "USER_ID(%s)", userID); - return null; - } - - @Override - public List<MsInjectionDataInfo> listAllRawDataSamples(String sessionToken, String userID) - { - logAccess(sessionToken, "list_all_raw_data_samples", "USER_ID(%s)", userID); - return null; - } - - @Override - public List<DataStoreServerProcessingPluginInfo> listDataStoreServerProcessingPluginInfos( - String sessionToken) - { - logAccess(sessionToken, "list_data_store_services", ""); - return null; - } - - @Override - public void processingRawData(String sessionToken, String userID, String dataSetProcessingKey, - long[] rawDataSampleIDs, String dataSetType) - { - int numberOfDataSets = rawDataSampleIDs == null ? 0 : rawDataSampleIDs.length; - logAccess(sessionToken, "copy_raw_data", - "USER_ID(%s) DSS_PROCESSING_PLUGIN(%s) NUMBER_OF_DATA_SETS(%s) DATA_SET_TYPE(%s)", - userID, dataSetProcessingKey, numberOfDataSets, dataSetType); - } - - @Override - public void processDataSets(String sessionToken, String userID, String dataSetProcessingKey, - List<String> dataSetCodes) - { - logAccess(sessionToken, "process_data_sets", - "USER_ID(%s) DSS_PROCESSING_PLUGIN(%s) DATA_SETS(%s)", userID, - dataSetProcessingKey, dataSetCodes); - } - - @Override - public List<Experiment> listSearchExperiments(String sessionToken, String userID) - { - logAccess(sessionToken, "list_search_experiments"); - return null; - } - - @Override - public List<Experiment> listExperiments(String sessionToken, String userID, - String experimentTypeCode) - { - logAccess(sessionToken, "list_search_experiments", "EXPERIMENT_TYPE(%s)", experimentTypeCode); - return null; - } - - @Override - public List<DataSet> listDataSetsByExperiment(String sessionToken, String userID, - long experimentID) - { - logAccess(sessionToken, "list_data_sets_by_experiment", "EXPERIMENT_ID(%s)", experimentID); - return null; - } - - @Override - public void processSearchData(String sessionToken, String userID, String dataSetProcessingKey, - long[] searchExperimentIDs) - { - int numberOfDataSets = searchExperimentIDs == null ? 0 : searchExperimentIDs.length; - logAccess(sessionToken, "copy_search_data", "NUMBER_OF_DATA_SETS(%s)", numberOfDataSets); - } - - @Override - public void processProteinResultDataSets(String sessionToken, String userID, - String dataSetProcessingKey, String experimentTypeCode, long[] experimentIDs) - { - int experimentCount = experimentIDs == null ? 0 : experimentIDs.length; - logAccess(sessionToken, "process_protein_result_data_sets", - "DSS_PROCESSING_PLUGIN(%s) EXPERIMENT_TYPE(%s) NUMBER_OF_EXPERIMENTS(%s)", - dataSetProcessingKey, experimentTypeCode, experimentCount); - } - - @Override - public int getMajorVersion() - { - return 1; - } - - @Override - public int getMinorVersion() - { - return 0; - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/api/v1/ProteomicsDataServiceServer.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/api/v1/ProteomicsDataServiceServer.java deleted file mode 100644 index a5f5715dbdedfe8f6e9951e0b663a0bfe0499f6e..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/api/v1/ProteomicsDataServiceServer.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright 2010 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.server.api.v1; - -import java.io.IOException; - -import javax.annotation.Resource; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.RequestMapping; - -import ch.systemsx.cisd.openbis.common.api.server.AbstractApiServiceExporter; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.api.v1.IProteomicsDataService; - -/** - * Server wrapping {@link IProteomicsDataService}. - * - * @author Franz-Josef Elmer - */ -@Controller -public class ProteomicsDataServiceServer extends AbstractApiServiceExporter -{ - @Resource(name = Constants.PROTEOMICS_DATA_SERVICE) - private IProteomicsDataService service; - - @Override - public void afterPropertiesSet() - { - establishService(IProteomicsDataService.class, service, IProteomicsDataService.SERVICE_NAME, - IProteomicsDataService.SERVER_URL); - super.afterPropertiesSet(); - } - - @RequestMapping( - { IProteomicsDataService.SERVER_URL, "/openbis" + IProteomicsDataService.SERVER_URL }) - @Override - public void handleRequest(HttpServletRequest request, HttpServletResponse response) - throws ServletException, IOException - { - super.handleRequest(request, response); - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/authorization/validator/ParentSampleValidator.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/authorization/validator/ParentSampleValidator.java deleted file mode 100644 index 8d7ad5842d51a1b88e16accbde9889508a7f8724..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/authorization/validator/ParentSampleValidator.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright 2010 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.server.authorization.validator; - -import ch.systemsx.cisd.openbis.generic.server.authorization.project.provider.project.ProjectProviderFromSample; -import ch.systemsx.cisd.openbis.generic.server.authorization.validator.AbstractValidator; -import ch.systemsx.cisd.openbis.generic.server.authorization.validator.IValidator; -import ch.systemsx.cisd.openbis.generic.server.authorization.validator.SpaceValidator; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Space; -import ch.systemsx.cisd.openbis.generic.shared.dto.PersonPE; - -/** - * @author Franz-Josef Elmer - */ -public class ParentSampleValidator extends AbstractValidator<Sample> -{ - private IValidator<Space> validator = new SpaceValidator(); - - @Override - public boolean doValidation(PersonPE person, Sample value) - { - return isValid(person, value, true); - } - - public boolean isValid(PersonPE person, Sample sample, boolean parentHasToBeValid) - { - Sample parent = sample.getGeneratedFrom(); - - if (parent != null) - { - Space space = parent.getSpace(); - - if (parentHasToBeValid == false || space == null || validator.isValid(person, space)) - { - return true; - } else - { - return isValidPA(person, new ProjectProviderFromSample(parent)); - } - } - - return false; - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/authorization/validator/RawDataSampleValidator.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/authorization/validator/RawDataSampleValidator.java deleted file mode 100644 index 1e280e19880dbb1e429f6f63301ce6ee20cc8117..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/authorization/validator/RawDataSampleValidator.java +++ /dev/null @@ -1,27 +0,0 @@ -package ch.systemsx.cisd.openbis.plugin.proteomics.server.authorization.validator; - -import ch.systemsx.cisd.openbis.generic.server.authorization.IAuthorizationDataProvider; -import ch.systemsx.cisd.openbis.generic.server.authorization.validator.IValidator; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample; -import ch.systemsx.cisd.openbis.generic.shared.dto.PersonPE; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.dto.MsInjectionSample; - -/** - * @author Franz-Josef Elmer - */ -public final class RawDataSampleValidator implements IValidator<MsInjectionSample> -{ - private IValidator<Sample> validator = new ParentSampleValidator(); - - @Override - public boolean isValid(PersonPE person, MsInjectionSample sample) - { - return validator.isValid(person, sample.getSample()); - } - - @Override - public void init(IAuthorizationDataProvider authorizationDataProvider) - { - validator.init(authorizationDataProvider); - } -} \ No newline at end of file diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/AbstractBusinessObject.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/AbstractBusinessObject.java deleted file mode 100644 index e32a00999cb64548b098774b0fbef3edb94b4f06..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/AbstractBusinessObject.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.server.business; - -import ch.systemsx.cisd.openbis.generic.server.dataaccess.IDAOFactory; -import ch.systemsx.cisd.openbis.generic.shared.dto.PersonPE; -import ch.systemsx.cisd.openbis.generic.shared.dto.Session; -import ch.systemsx.cisd.openbis.plugin.proteomics.server.dataaccess.IPhosphoNetXDAOFactory; - -/** - * @author Franz-Josef Elmer - */ -abstract class AbstractBusinessObject -{ - private final IDAOFactory daoFactory; - - private final IPhosphoNetXDAOFactory specificDAOFactory; - - private final Session session; - - AbstractBusinessObject(IDAOFactory daoFactory, IPhosphoNetXDAOFactory specificDAOFactory, Session session) - { - this.daoFactory = daoFactory; - this.specificDAOFactory = specificDAOFactory; - this.session = session; - } - - protected final PersonPE getRegistrator() - { - PersonPE registrator = session.tryGetPerson(); - assert registrator != null : "Session with unknown person: " + session; - return registrator; - } - - protected final IDAOFactory getDaoFactory() - { - return daoFactory; - } - - protected final IPhosphoNetXDAOFactory getSpecificDAOFactory() - { - return specificDAOFactory; - } -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/AbundanceColumnDefinitionTable.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/AbundanceColumnDefinitionTable.java deleted file mode 100644 index e8544ad2d3cdf037fb5a10c59a23a5d4b973e25e..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/AbundanceColumnDefinitionTable.java +++ /dev/null @@ -1,142 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.server.business; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.TreeMap; - -import ch.systemsx.cisd.openbis.generic.server.dataaccess.IDAOFactory; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample; -import ch.systemsx.cisd.openbis.generic.shared.dto.Session; -import ch.systemsx.cisd.openbis.plugin.proteomics.server.dataaccess.IPhosphoNetXDAOFactory; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.AbundanceColumnDefinition; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.Treatment; - -/** - * @author Franz-Josef Elmer - */ -class AbundanceColumnDefinitionTable extends AbstractBusinessObject implements IAbundanceColumnDefinitionTable -{ - private final TreatmentFinder treatmentFinder; - - private final Map<Long, AbundanceColumnDefinition> columnDefinitions; - - AbundanceColumnDefinitionTable(IDAOFactory daoFactory, - IPhosphoNetXDAOFactory specificDAOFactory, Session session) - { - super(daoFactory, specificDAOFactory, session); - treatmentFinder = new TreatmentFinder(); - columnDefinitions = new TreeMap<Long, AbundanceColumnDefinition>(); - } - - @Override - public void add(Sample sample) - { - Sample parent = sample.getGeneratedFrom(); - Sample sampleOrParent = parent == null ? sample : parent; - Long sampleID = sampleOrParent.getId(); - AbundanceColumnDefinition columnDefinition = columnDefinitions.get(sampleID); - if (columnDefinition == null) - { - columnDefinition = new AbundanceColumnDefinition(); - columnDefinition.addSampleID(sampleID); - columnDefinition.setSampleCode(sampleOrParent.getCode()); - columnDefinition.setTreatments(treatmentFinder.findTreatmentsOf(sampleOrParent)); - columnDefinitions.put(sampleID, columnDefinition); - } - } - - @Override - public List<AbundanceColumnDefinition> getSortedAndAggregatedDefinitions( - String treatmentTypeOrNull) - { - Collection<AbundanceColumnDefinition> values = columnDefinitions.values(); - List<AbundanceColumnDefinition> definitions = new ArrayList<AbundanceColumnDefinition>(); - if (treatmentTypeOrNull == null) - { - definitions.addAll(values); - } else - { - Collection<List<AbundanceColumnDefinition>> groupedDefinitions = - groupDefinitions(values, definitions, treatmentTypeOrNull); - for (List<AbundanceColumnDefinition> group : groupedDefinitions) - { - AbundanceColumnDefinition definition = new AbundanceColumnDefinition(); - AbundanceColumnDefinition firstDefinition = group.get(0); - Treatment treatment = - tryToFindTreatmentByTypeCode(firstDefinition, treatmentTypeOrNull); - definition.setTreatments(Arrays.asList(treatment)); - for (AbundanceColumnDefinition abundanceColumnDefinition : group) - { - definition.addSampleIDsOf(abundanceColumnDefinition); - } - definitions.add(definition); - } - } - - Collections.sort(definitions); - return definitions; - } - - private Collection<List<AbundanceColumnDefinition>> groupDefinitions( - Collection<AbundanceColumnDefinition> values, - List<AbundanceColumnDefinition> definitions, String treatmentType) - { - Map<String, List<AbundanceColumnDefinition>> groupedDefinitions = - new HashMap<String, List<AbundanceColumnDefinition>>(); - for (AbundanceColumnDefinition definition : values) - { - Treatment treatment = tryToFindTreatmentByTypeCode(definition, treatmentType); - if (treatment == null) - { - definitions.add(definition); - } else - { - String treatmentValue = treatment.getValue(); - List<AbundanceColumnDefinition> list = groupedDefinitions.get(treatmentValue); - if (list == null) - { - list = new ArrayList<AbundanceColumnDefinition>(); - groupedDefinitions.put(treatmentValue, list); - } - list.add(definition); - } - } - return groupedDefinitions.values(); - } - - private Treatment tryToFindTreatmentByTypeCode(AbundanceColumnDefinition definition, - String typeCode) - { - List<Treatment> treatments = definition.getTreatments(); - for (Treatment treatment : treatments) - { - if (treatment.getTypeCode().equals(typeCode)) - { - return treatment; - } - } - return null; - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/AbundanceManager.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/AbundanceManager.java deleted file mode 100644 index 63b8985b5e4eeb5a6107b9ed3a1877e2aeccd0c4..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/AbundanceManager.java +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.server.business; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; -import java.util.Set; -import java.util.TreeSet; - -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.dto.ProteinAbundance; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.dto.ProteinReferenceWithProtein; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.dto.ProteinWithAbundances; - -/** - * @author Franz-Josef Elmer - */ -class AbundanceManager -{ - private final List<ProteinWithAbundances> proteins = new ArrayList<ProteinWithAbundances>(); - - private final ISampleProvider sampleProvider; - - private final Set<Long> sampleIDs = new TreeSet<Long>(); - - AbundanceManager(ISampleProvider sampleProvider) - { - this.sampleProvider = sampleProvider; - } - - public void handle(ProteinReferenceWithProtein proteinReference, List<ProteinAbundance> listOrNull) - { - String accessionNumber = proteinReference.getAccessionNumber(); - ProteinWithAbundances protein = new ProteinWithAbundances(); - protein.setCoverage(proteinReference.getCoverage()); - protein.setId(proteinReference.getId()); - protein.setDescription(proteinReference.getDescription()); - protein.setAccessionNumber(accessionNumber); - proteins.add(protein); - if (listOrNull != null) - { - for (ProteinAbundance proteinAbundance : listOrNull) - { - String samplePermID = proteinAbundance.getSamplePermID(); - Long sampleID = getSampleIDOrParentSampleID(samplePermID); - sampleIDs.add(sampleID); - protein.addAbundanceFor(sampleID, proteinAbundance.getAbundance()); - } - } - } - - private Long getSampleIDOrParentSampleID(String samplePermID) - { - Sample sample = sampleProvider.getSample(samplePermID); - Sample parent = sample.getGeneratedFrom(); - return parent == null ? sample.getId() : parent.getId(); - } - - public Collection<ProteinWithAbundances> getProteinsWithAbundances() - { - return proteins; - } - - public final Collection<Long> getSampleIDs() - { - return sampleIDs; - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/AccessionNumberBuilder.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/AccessionNumberBuilder.java deleted file mode 100644 index 2e0049c285ccad20a3655e0c6bb932fb3c13c8f2..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/AccessionNumberBuilder.java +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.server.business; - -/** - * Parses accession numbers of the form - * - * <pre> - * ['DECOY_'][<type>'|']<accession number>['|'<some string>] - * </pre> - * - * @author Franz-Josef Elmer - */ -public class AccessionNumberBuilder -{ - static final String DECOY_PREFIX = "DECOY_"; - - private static final char SEPARATOR = '|'; - - private final String typeOrNull; - - private final String accessionNumber; - - public AccessionNumberBuilder(String fullAccessionNumber) - { - int indexOfFirstSeparator = fullAccessionNumber.indexOf(SEPARATOR); - if (indexOfFirstSeparator < 0) - { - typeOrNull = null; - accessionNumber = fullAccessionNumber; - } else - { - String firstItem = fullAccessionNumber.substring(0, indexOfFirstSeparator); - int decoyPrefixIndex = firstItem.startsWith(DECOY_PREFIX) ? DECOY_PREFIX.length() : 0; - String prefix = firstItem.substring(0, decoyPrefixIndex); - typeOrNull = firstItem.substring(decoyPrefixIndex); - int startIndex = indexOfFirstSeparator + 1; - int indexOfSecondSeparator = fullAccessionNumber.indexOf(SEPARATOR, startIndex); - if (indexOfSecondSeparator < 0) - { - accessionNumber = - addPrefixIfNecessary(prefix, fullAccessionNumber.substring(startIndex)); - } else - { - accessionNumber = - addPrefixIfNecessary(prefix, - fullAccessionNumber.substring(startIndex, indexOfSecondSeparator)); - } - } - } - - private String addPrefixIfNecessary(String prefix, String string) - { - return string.startsWith(prefix) ? string : prefix + string; - } - - public final String getTypeOrNull() - { - return typeOrNull; - } - - public final String getAccessionNumber() - { - return accessionNumber; - } -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/BusinessObjectFactory.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/BusinessObjectFactory.java deleted file mode 100644 index c7b486a1e57b270573efe64f073dabff33d829d6..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/BusinessObjectFactory.java +++ /dev/null @@ -1,120 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.server.business; - -import ch.systemsx.cisd.openbis.generic.server.business.bo.ICommonBusinessObjectFactory; -import ch.systemsx.cisd.openbis.generic.server.business.bo.samplelister.ISampleLister; -import ch.systemsx.cisd.openbis.generic.server.dataaccess.IDAOFactory; -import ch.systemsx.cisd.openbis.generic.shared.dto.Session; -import ch.systemsx.cisd.openbis.plugin.AbstractPluginBusinessObjectFactory; -import ch.systemsx.cisd.openbis.plugin.proteomics.server.dataaccess.IPhosphoNetXDAOFactory; - -/** - * @author Franz-Josef Elmer - */ -public class BusinessObjectFactory extends AbstractPluginBusinessObjectFactory implements - IBusinessObjectFactory -{ - private final IDAOFactory daoFactory; - - private final IPhosphoNetXDAOFactory specificDAOFactory; - - private final ICommonBusinessObjectFactory businessObjectFactory; - - public BusinessObjectFactory(IDAOFactory daoFactory, IPhosphoNetXDAOFactory specificDAOFactory, - ICommonBusinessObjectFactory businessObjectFactory) - { - this.daoFactory = daoFactory; - this.specificDAOFactory = specificDAOFactory; - this.businessObjectFactory = businessObjectFactory; - } - - @Override - public ISampleLister createSampleLister(Session session) - { - return getCommonBusinessObjectFactory().createSampleLister(session); - } - - @Override - public IAbundanceColumnDefinitionTable createAbundanceColumnDefinitionTable(Session session) - { - return new AbundanceColumnDefinitionTable(daoFactory, specificDAOFactory, session); - } - - @Override - public IProteinInfoTable createProteinInfoTable(Session session, ISampleProvider sampleProvider) - { - return new ProteinInfoTable(daoFactory, specificDAOFactory, session, sampleProvider); - } - - @Override - public IProteinSummaryTable createProteinSummaryTable(Session session) - { - return new ProteinSummaryTable(daoFactory, specificDAOFactory, session); - } - - @Override - public IProteinSequenceTable createProteinSequenceTable(Session session) - { - return new ProteinSequenceTable(daoFactory, specificDAOFactory, session); - } - - @Override - public IDataSetProteinTable createDataSetProteinTable(Session session) - { - return new DataSetProteinTable(daoFactory, specificDAOFactory, session); - } - - @Override - public IProteinDetailsBO createProteinDetailsBO(Session session) - { - return new ProteinDetailsBO(daoFactory, specificDAOFactory, session); - } - - @Override - public IProteinRelatedSampleTable createProteinRelatedSampleTable(Session session) - { - return new ProteinRelatedSampleTable(daoFactory, specificDAOFactory, - getManagedPropertyEvaluatorFactory()); - } - - @Override - public ISampleTable createSampleTable(Session session) - { - return new SampleTable(daoFactory, specificDAOFactory, session, - getManagedPropertyEvaluatorFactory()); - } - - @Override - public ISampleIDProvider createSampleIDProvider(Session session) - { - return new SampleIDProvider(daoFactory.getSampleDAO()); - } - - @Override - public ISampleProvider createSampleProvider(Session session) - { - return new SampleProvider(session, this); - } - - @Override - public ISampleLoader createSampleLoader(Session session) - { - return new SampleLoader(session, daoFactory, businessObjectFactory); - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/DataSetProteinTable.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/DataSetProteinTable.java deleted file mode 100644 index b15527159032a68c2b4083b3d5b6dfaa547a6ad8..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/DataSetProteinTable.java +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.server.business; - -import java.util.ArrayList; -import java.util.List; - -import net.lemnik.eodsql.DataSet; - -import ch.systemsx.cisd.openbis.generic.server.dataaccess.IDAOFactory; -import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; -import ch.systemsx.cisd.openbis.generic.shared.dto.Session; -import ch.systemsx.cisd.openbis.plugin.proteomics.server.dataaccess.IPhosphoNetXDAOFactory; -import ch.systemsx.cisd.openbis.plugin.proteomics.server.dataaccess.IProteinQueryDAO; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.DataSetProtein; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.dto.IdentifiedProtein; - -/** - * @author Franz-Josef Elmer - */ -class DataSetProteinTable extends AbstractBusinessObject implements IDataSetProteinTable -{ - private List<DataSetProtein> dataSetProteins; - - DataSetProteinTable(IDAOFactory daoFactory, IPhosphoNetXDAOFactory specificDAOFactory, - Session session) - { - super(daoFactory, specificDAOFactory, session); - } - - @Override - public List<DataSetProtein> getDataSetProteins() - { - return dataSetProteins; - } - - @Override - public void load(String experimentPermID, TechId proteinReferenceID, - IProteinSequenceTable sequenceTable) - { - IProteinQueryDAO proteinQueryDAO = getSpecificDAOFactory().getProteinQueryDAO(experimentPermID); - ErrorModel errorModel = new ErrorModel(proteinQueryDAO); - DataSet<IdentifiedProtein> proteins = - proteinQueryDAO.listProteinsByProteinReferenceAndExperiment(experimentPermID, - proteinReferenceID.getId()); - dataSetProteins = new ArrayList<DataSetProtein>(); - for (IdentifiedProtein protein : proteins) - { - errorModel.setFalseDiscoveryRateFor(protein); - DataSetProtein dataSetProtein = new DataSetProtein(); - dataSetProtein.setDataSetID(new TechId(protein.getDataSetID())); - dataSetProtein.setDataSetPermID(protein.getDataSetPermID()); - dataSetProtein.setFalseDiscoveryRate(protein.getFalseDiscoveryRate()); - dataSetProtein.setPeptideCount(protein.getPeptideCount()); - dataSetProtein.setProteinID(new TechId(protein.getProteinID())); - dataSetProtein.setSequenceName(sequenceTable.getShortName(protein.getDatabaseID())); - dataSetProteins.add(dataSetProtein); - } - proteins.close(); - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/ErrorModel.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/ErrorModel.java deleted file mode 100644 index fbeec454b95fabecf5346619daf1d6042b0b3923..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/ErrorModel.java +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.server.business; - -import java.util.HashMap; -import java.util.Map; - -import net.lemnik.eodsql.DataSet; - -import ch.systemsx.cisd.openbis.plugin.proteomics.server.dataaccess.IProteinQueryDAO; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.ProbabilityToFDRCalculator; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.dto.IdentifiedProtein; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.dto.ProbabilityFDRMapping; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.dto.ProteinReferenceWithProtein; - -/** - * @author Franz-Josef Elmer - */ -class ErrorModel -{ - private final Map<Long, ProbabilityToFDRCalculator> calculators = - new HashMap<Long, ProbabilityToFDRCalculator>(); - - private final IProteinQueryDAO dao; - - ErrorModel(IProteinQueryDAO dao) - { - this.dao = dao; - } - - boolean passProtein(ProteinReferenceWithProtein protein, double falseDiscoveryRate) - { - ProbabilityToFDRCalculator calculator = getCalculator(protein.getDataSetID()); - double fdr = calculator.calculateFDR(protein.getProbability()); - return Double.isNaN(fdr) || fdr <= falseDiscoveryRate; - } - - void setFalseDiscoveryRateFor(IdentifiedProtein protein) - { - long dataSetID = protein.getDataSetID(); - double probability = protein.getProbability(); - protein.setFalseDiscoveryRate(calculateFalsDiscoveryRate(dataSetID, probability)); - } - - double calculateFalsDiscoveryRate(long dataSetID, double probability) - { - ProbabilityToFDRCalculator calculator = getCalculator(dataSetID); - return calculator.calculateFDR(probability); - } - - private ProbabilityToFDRCalculator getCalculator(long dataSetID) - { - ProbabilityToFDRCalculator calculator = calculators.get(dataSetID); - if (calculator == null) - { - calculator = new ProbabilityToFDRCalculator(); - DataSet<ProbabilityFDRMapping> mappings = dao.getProbabilityFDRMapping(dataSetID); - for (ProbabilityFDRMapping probabilityFDRMapping : mappings) - { - double probability = probabilityFDRMapping.getProbability(); - double falseDiscoveryRate = probabilityFDRMapping.getFalseDiscoveryRate(); - calculator.add(probability, falseDiscoveryRate); - } - mappings.close(); - calculator.init(); - calculators.put(dataSetID, calculator); - } - return calculator; - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/ExperimentLoader.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/ExperimentLoader.java deleted file mode 100644 index 50c8f79d2c664073611e9cac67516dc07271ac34..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/ExperimentLoader.java +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Copyright 2010 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.server.business; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; - -import ch.systemsx.cisd.openbis.generic.server.authorization.validator.SamplePropertyAccessValidator; -import ch.systemsx.cisd.openbis.generic.server.dataaccess.IDAOFactory; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Experiment; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample; -import ch.systemsx.cisd.openbis.generic.shared.dto.ExperimentPE; -import ch.systemsx.cisd.openbis.generic.shared.dto.Session; -import ch.systemsx.cisd.openbis.generic.shared.managed_property.IManagedPropertyEvaluatorFactory; -import ch.systemsx.cisd.openbis.generic.shared.translator.ExperimentTranslator; -import ch.systemsx.cisd.openbis.generic.shared.translator.ExperimentTranslator.LoadableFields; - -/** - * @author Franz-Josef Elmer - */ -public class ExperimentLoader -{ - private final IDAOFactory daoFactory; - - private final IManagedPropertyEvaluatorFactory managedPropertyEvaluatorFactory; - - public ExperimentLoader(IDAOFactory daoFactory, - IManagedPropertyEvaluatorFactory managedPropertyEvaluatorFactory) - { - this.daoFactory = daoFactory; - this.managedPropertyEvaluatorFactory = managedPropertyEvaluatorFactory; - } - - public void enrichWithExperiments(Session session, Collection<Sample> samples) - { - Map<Long, List<Sample>> samplesByID = new LinkedHashMap<Long, List<Sample>>(); - for (Sample sample : samples) - { - Experiment experiment = sample.getExperiment(); - if (experiment != null) - { - Long id = experiment.getId(); - List<Sample> list = samplesByID.get(id); - if (list == null) - { - list = new ArrayList<Sample>(); - samplesByID.put(id, list); - } - list.add(sample); - } - } - List<ExperimentPE> experiments = - daoFactory.getExperimentDAO().listExperimentsWithProperties(samplesByID.keySet()); - for (ExperimentPE experiment : experiments) - { - Experiment e = - ExperimentTranslator.translate(experiment, "", null, - managedPropertyEvaluatorFactory, - new SamplePropertyAccessValidator(session, daoFactory), LoadableFields.PROPERTIES); - List<Sample> list = samplesByID.get(experiment.getId()); - for (Sample sample : list) - { - sample.setExperiment(e); - } - } - } -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/IAbundanceColumnDefinitionTable.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/IAbundanceColumnDefinitionTable.java deleted file mode 100644 index 8b1420e641cbb2bfaf013a5dc4be4fa284b37037..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/IAbundanceColumnDefinitionTable.java +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.server.business; - -import java.util.List; - -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.AbundanceColumnDefinition; - -/** - * @author Franz-Josef Elmer - */ -public interface IAbundanceColumnDefinitionTable -{ - public void add(Sample sample); - - public List<AbundanceColumnDefinition> getSortedAndAggregatedDefinitions( - String treatmentTypeOrNull); - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/IBusinessObjectFactory.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/IBusinessObjectFactory.java deleted file mode 100644 index 2efc9007f38817176235852bb9eb6022c934757b..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/IBusinessObjectFactory.java +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.server.business; - -import ch.systemsx.cisd.openbis.generic.server.business.bo.samplelister.ISampleLister; -import ch.systemsx.cisd.openbis.generic.shared.dto.Session; - -/** - * @author Franz-Josef Elmer - */ -public interface IBusinessObjectFactory -{ - public ISampleLister createSampleLister(Session session); - - public IAbundanceColumnDefinitionTable createAbundanceColumnDefinitionTable(Session session); - - public IProteinInfoTable createProteinInfoTable(Session session, - ISampleProvider sampleProvider); - - public IProteinSummaryTable createProteinSummaryTable(Session session); - - public IProteinSequenceTable createProteinSequenceTable(Session session); - - public IDataSetProteinTable createDataSetProteinTable(Session session); - - public IProteinDetailsBO createProteinDetailsBO(Session session); - - public IProteinRelatedSampleTable createProteinRelatedSampleTable(Session session); - - public ISampleTable createSampleTable(Session session); - - public ISampleIDProvider createSampleIDProvider(Session session); - - public ISampleProvider createSampleProvider(Session session); - - public ISampleLoader createSampleLoader(Session session); -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/IDataSetProteinTable.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/IDataSetProteinTable.java deleted file mode 100644 index 6785f2a998d03414ce9a0396b51d3f841dd367d5..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/IDataSetProteinTable.java +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.server.business; - -import java.util.List; - -import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.DataSetProtein; - -/** - * @author Franz-Josef Elmer - */ -public interface IDataSetProteinTable -{ - public List<DataSetProtein> getDataSetProteins(); - - public void load(String experimentPermID, TechId proteinReferenceID, - IProteinSequenceTable sequenceTable); - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/IProteinDetailsBO.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/IProteinDetailsBO.java deleted file mode 100644 index 2aeefffc70082eecaa91aeb26688833e8bc500ed..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/IProteinDetailsBO.java +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.server.business; - -import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.ProteinDetails; - -/** - * @author Franz-Josef Elmer - */ -public interface IProteinDetailsBO -{ - - public void loadByExperimentAndReference(TechId experimentID, TechId proteinReferenceID); - - public ProteinDetails getDetailsOrNull(); - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/IProteinInfoTable.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/IProteinInfoTable.java deleted file mode 100644 index 97ce2def45949f87cd80530ad8a1dfb5f28f195d..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/IProteinInfoTable.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.server.business; - -import java.util.List; - -import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.AbundanceColumnDefinition; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.AggregateFunction; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.ProteinInfo; - -/** - * Business object for loading proteins together with their abundances. - * - * @author Franz-Josef Elmer - */ -public interface IProteinInfoTable -{ - /** - * Loads proteins of all data sets registered for the specified experiment. All proteins are filtered out if their false discovery rate is larger - * then the specified one. Abundance values are aggregated in accordance with <code>aggregateOnOriginal</code>, abundance column definitions, and - * aggregate function. - */ - public void load(List<AbundanceColumnDefinition> definitions, TechId experimentId, - double falseDiscoveryRate, AggregateFunction function, boolean aggregateOnOriginal); - - public List<ProteinInfo> getProteinInfos(); - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/IProteinRelatedSampleTable.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/IProteinRelatedSampleTable.java deleted file mode 100644 index 38f02ccfc28f213dd29bedfac59453b1f99225a2..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/IProteinRelatedSampleTable.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright 2011 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.server.business; - -import java.util.List; - -import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; -import ch.systemsx.cisd.openbis.generic.shared.dto.Session; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.ProteinRelatedSample; - -/** - * Interface to business object for collection of {@link ProteinRelatedSample} instances. - * - * @author Franz-Josef Elmer - */ -public interface IProteinRelatedSampleTable -{ - public void load(Session session, TechId experimentID, TechId proteinReferenceID, String sequenceOrNull); - - public List<ProteinRelatedSample> getSamples(); -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/IProteinSequenceTable.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/IProteinSequenceTable.java deleted file mode 100644 index f19c618ac72bf5d82df63f4a81fdca5689a0df5c..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/IProteinSequenceTable.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.server.business; - -import java.util.List; - -import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.ProteinSequence; - -/** - * @author Franz-Josef Elmer - */ -public interface IProteinSequenceTable -{ - - public void loadByReference(TechId experimentID, TechId proteinReferenceID); - - public List<ProteinSequence> getSequences(); - - public String getShortName(long databaseID); -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/IProteinSummaryTable.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/IProteinSummaryTable.java deleted file mode 100644 index de570feda6cd2bf0fcf869e27aee2a3af708a147..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/IProteinSummaryTable.java +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.server.business; - -import java.util.List; - -import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.ProteinSummary; - -/** - * @author Franz-Josef Elmer - */ -public interface IProteinSummaryTable -{ - - public void load(TechId experimentID); - - public List<ProteinSummary> getProteinSummaries(); - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/ISampleIDProvider.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/ISampleIDProvider.java deleted file mode 100644 index e363ec393e7e0292e60c7df6e0616f40f0c09df6..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/ISampleIDProvider.java +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.server.business; - -import ch.systemsx.cisd.common.exceptions.UserFailureException; -import ch.systemsx.cisd.openbis.generic.shared.dto.SamplePE; - -/** - * Provides the ID of a sample or its parent. - * - * @author Franz-Josef Elmer - */ -public interface ISampleIDProvider -{ - /** - * Returns the ID of the specified sample or the ID of its parent if it exist. - * - * @throws UserFailureException if no sample could be found. - */ - public long getSampleIDOrParentSampleID(String samplePermID); - - public SamplePE getSampleOrParentSample(String samplePermID); - -} \ No newline at end of file diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/ISampleLoader.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/ISampleLoader.java deleted file mode 100644 index cfa34fdf1eb5f34d160ee079bc6845792ed1de66..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/ISampleLoader.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright 2010 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.server.business; - -import java.util.List; - -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample; - -/** - * Loader for sample having a parent. - * - * @author Franz-Josef Elmer - */ -public interface ISampleLoader -{ - public List<Sample> listSamplesWithParentsByTypeAndSpace(String sampleTypeCode, String spaceCode); -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/ISampleProvider.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/ISampleProvider.java deleted file mode 100644 index 47423c1036b006d2ed37fec2dcfee8ab682e6181..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/ISampleProvider.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright 2010 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.server.business; - -import ch.systemsx.cisd.common.exceptions.UserFailureException; -import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample; - -/** - * Provides samples of an experiments. - * - * @author Franz-Josef Elmer - */ -public interface ISampleProvider -{ - /** - * Loads all samples registered for the specified experiment. - */ - public void loadByExperimentID(TechId experimentID); - - /** - * Returns the sample for specified permID. - * - * @throws UserFailureException if sample not found. - */ - public Sample getSample(String permID); - -} \ No newline at end of file diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/ISampleTable.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/ISampleTable.java deleted file mode 100644 index 08fabca7b1f524a8bf0614cb90dd9c6f4e6f250b..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/ISampleTable.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.server.business; - -import java.util.List; - -import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; -import ch.systemsx.cisd.openbis.generic.shared.dto.Session; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.SampleWithPropertiesAndAbundance; - -/** - * @author Franz-Josef Elmer - */ -public interface ISampleTable -{ - - public void loadSamplesWithAbundance(Session session, TechId experimentID, TechId proteinReferenceID); - - public List<SampleWithPropertiesAndAbundance> getSamples(); - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/ProteinDetailsBO.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/ProteinDetailsBO.java deleted file mode 100644 index c7b94a9afcc9b557f1187153eced1efb0f5326bb..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/ProteinDetailsBO.java +++ /dev/null @@ -1,177 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.server.business; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.Comparator; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import net.lemnik.eodsql.DataSet; - -import ch.systemsx.cisd.openbis.generic.server.dataaccess.IDAOFactory; -import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; -import ch.systemsx.cisd.openbis.generic.shared.dto.DataPE; -import ch.systemsx.cisd.openbis.generic.shared.dto.ExperimentPE; -import ch.systemsx.cisd.openbis.generic.shared.dto.Session; -import ch.systemsx.cisd.openbis.plugin.proteomics.server.dataaccess.IPhosphoNetXDAOFactory; -import ch.systemsx.cisd.openbis.plugin.proteomics.server.dataaccess.IProteinQueryDAO; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.IndistinguishableProteinInfo; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.Peptide; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.PeptideModification; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.ProteinDetails; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.dto.IdentifiedProtein; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.dto.IndistinguishableProtein; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.dto.PeptideWithModification; - -/** - * @author Franz-Josef Elmer - */ -class ProteinDetailsBO extends AbstractBusinessObject implements IProteinDetailsBO -{ - private ProteinDetails details; - - ProteinDetailsBO(IDAOFactory daoFactory, IPhosphoNetXDAOFactory specificDAOFactory, - Session session) - { - super(daoFactory, specificDAOFactory, session); - } - - @Override - public ProteinDetails getDetailsOrNull() - { - return details; - } - - @Override - public void loadByExperimentAndReference(TechId experimentID, TechId proteinReferenceID) - { - String experimentPermID = getExperimentPermIDFor(experimentID); - IProteinQueryDAO proteinQueryDAO = getSpecificDAOFactory().getProteinQueryDAO(experimentID); - DataSet<IdentifiedProtein> proteins = - proteinQueryDAO.listProteinsByProteinReferenceAndExperiment(experimentPermID, - proteinReferenceID.getId()); - try - { - if (proteins.size() == 1) - { - ErrorModel errorModel = new ErrorModel(proteinQueryDAO); - IdentifiedProtein protein = proteins.get(0); - errorModel.setFalseDiscoveryRateFor(protein); - details = new ProteinDetails(); - details.setSequence(protein.getSequence()); - details.setDatabaseNameAndVersion(protein.getDatabaseNameAndVersion()); - details.setProbability(protein.getProbability()); - details.setCoverage(100 * protein.getCoverage()); - details.setFalseDiscoveryRate(protein.getFalseDiscoveryRate()); - String dataSetPermID = protein.getDataSetPermID(); - details.setDataSetPermID(dataSetPermID); - DataPE ds = getDaoFactory().getDataDAO().tryToFindDataSetByCode(dataSetPermID); - if (ds != null) - { - details.setDataSetTechID(ds.getId()); - details.setDataSetTypeCode(ds.getDataSetType().getCode()); - } - details.setPeptides(loadPeptides(proteinQueryDAO, protein)); - long proteinID = protein.getProteinID(); - details.setProteinID(new TechId(proteinID)); - details.setIndistinguishableProteinInfos(loadIndistinguishableProteinInfos(proteinQueryDAO, proteinID)); - } - } finally - { - proteins.close(); - } - } - - private List<IndistinguishableProteinInfo> loadIndistinguishableProteinInfos(IProteinQueryDAO proteinQueryDAO, long proteinID) - { - DataSet<IndistinguishableProtein> proteins = - proteinQueryDAO.listIndistinguishableProteinsByProteinID(proteinID); - try - { - List<IndistinguishableProteinInfo> infos = - new ArrayList<IndistinguishableProteinInfo>(); - for (IndistinguishableProtein protein : proteins) - { - IndistinguishableProteinInfo info = new IndistinguishableProteinInfo(); - AccessionNumberBuilder builder = - new AccessionNumberBuilder(protein.getAccessionNumber()); - info.setAccessionNumber(builder.getAccessionNumber()); - info.setAccessionNumberType(builder.getTypeOrNull()); - info.setDescription(protein.getDescription()); - info.setSequence(protein.getSequence()); - info.setCoverage(100 * protein.getCoverage()); - infos.add(info); - } - return infos; - } finally - { - proteins.close(); - } - } - - private List<Peptide> loadPeptides(IProteinQueryDAO proteinQueryDAO, IdentifiedProtein protein) - { - DataSet<PeptideWithModification> identifiedPeptides = - proteinQueryDAO.listIdentifiedPeptidesByProtein(protein.getProteinID()); - try - { - Map<Long, Peptide> peps = new HashMap<Long, Peptide>(); - for (PeptideWithModification peptidWithModification : identifiedPeptides) - { - long id = peptidWithModification.getId(); - Peptide peptide = peps.get(id); - if (peptide == null) - { - peptide = new Peptide(); - peptide.setSequence(peptidWithModification.getSequence()); - peps.put(id, peptide); - } - Integer position = peptidWithModification.getPosition(); - Double mass = peptidWithModification.getMass(); - if (position != null && mass != null) - { - PeptideModification peptideModification = new PeptideModification(); - peptideModification.setPosition(position); - peptideModification.setMass(mass); - peptide.getModifications().add(peptideModification); - } - } - List<Peptide> result = new ArrayList<Peptide>(peps.values()); - Collections.sort(result, new Comparator<Peptide>() - { - @Override - public int compare(Peptide p1, Peptide p2) - { - return p1.getSequence().compareTo(p2.getSequence()); - } - }); - return result; - } finally - { - identifiedPeptides.close(); - } - } - - private String getExperimentPermIDFor(TechId experimentId) - { - ExperimentPE experiment = getDaoFactory().getExperimentDAO().getByTechId(experimentId); - return experiment.getPermId(); - } -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/ProteinInfoTable.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/ProteinInfoTable.java deleted file mode 100644 index 6e09f0cc8b3efb04198f7357bdec09e8c841bd76..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/ProteinInfoTable.java +++ /dev/null @@ -1,217 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.server.business; - -import it.unimi.dsi.fastutil.longs.LongOpenHashSet; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.Comparator; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import net.lemnik.eodsql.DataSet; - -import org.apache.log4j.Logger; - -import ch.systemsx.cisd.common.logging.LogCategory; -import ch.systemsx.cisd.common.logging.LogFactory; -import ch.systemsx.cisd.openbis.generic.server.dataaccess.IDAOFactory; -import ch.systemsx.cisd.openbis.generic.server.dataaccess.IExperimentDAO; -import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; -import ch.systemsx.cisd.openbis.generic.shared.dto.Session; -import ch.systemsx.cisd.openbis.plugin.proteomics.server.dataaccess.IPhosphoNetXDAOFactory; -import ch.systemsx.cisd.openbis.plugin.proteomics.server.dataaccess.IProteinQueryDAO; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.AbundanceColumnDefinition; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.AggregateFunction; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.ProteinInfo; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.dto.ProteinAbundance; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.dto.ProteinReferenceWithProtein; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.dto.ProteinWithAbundances; - -/** - * Implementation based of {@link IDAOFactory} and {@link IPhosphoNetXDAOFactory}. - * - * @author Franz-Josef Elmer - */ -class ProteinInfoTable extends AbstractBusinessObject implements IProteinInfoTable -{ - protected static final Logger operationLog = - LogFactory.getLogger(LogCategory.OPERATION, ProteinInfoTable.class); - - private List<ProteinInfo> infos; - - private final ISampleProvider sampleProvider; - - ProteinInfoTable(IDAOFactory daoFactory, IPhosphoNetXDAOFactory specificDAOFactory, - Session session, ISampleProvider sampleProvider) - { - super(daoFactory, specificDAOFactory, session); - this.sampleProvider = sampleProvider; - } - - @Override - public List<ProteinInfo> getProteinInfos() - { - if (infos == null) - { - throw new IllegalStateException("No proteins loaded."); - } - return infos; - } - - @Override - public void load(List<AbundanceColumnDefinition> definitions, TechId experimentID, - double falseDiscoveryRate, AggregateFunction function, boolean aggregateOnOriginal) - { - IExperimentDAO experimentDAO = getDaoFactory().getExperimentDAO(); - String permID = experimentDAO.getByTechId(experimentID).getPermId(); - AbundanceManager abundanceManager = setUpAbundanceManager(permID, falseDiscoveryRate); - Collection<ProteinWithAbundances> proteins = abundanceManager.getProteinsWithAbundances(); - infos = new ArrayList<ProteinInfo>(proteins.size()); - for (ProteinWithAbundances protein : proteins) - { - ProteinInfo proteinInfo = new ProteinInfo(); - proteinInfo.setId(new TechId(protein.getId())); - AccessionNumberBuilder builder = new AccessionNumberBuilder(protein.getAccessionNumber()); - proteinInfo.setCoverage(100 * protein.getCoverage()); - proteinInfo.setAccessionNumber(builder.getAccessionNumber()); - proteinInfo.setDescription(protein.getDescription()); - proteinInfo.setExperimentID(experimentID); - Map<Long, Double> abundances = new HashMap<Long, Double>(); - for (AbundanceColumnDefinition abundanceColumnDefinition : definitions) - { - double[] abundanceValues = new double[0]; - List<Long> ids = abundanceColumnDefinition.getSampleIDs(); - for (Long sampleID : ids) - { - double[] values = protein.getAbundancesForSample(sampleID); - if (values != null && values.length > 0 && aggregateOnOriginal == false) - { - values = new double[] { function.aggregate(values) }; - } - abundanceValues = concatenate(abundanceValues, values); - } - if (abundanceValues.length > 0) - { - double aggregatedAbundance = function.aggregate(abundanceValues); - abundances.put(abundanceColumnDefinition.getID(), aggregatedAbundance); - } - } - proteinInfo.setAbundances(abundances); - infos.add(proteinInfo); - } - Collections.sort(infos, new Comparator<ProteinInfo>() - { - - @Override - public int compare(ProteinInfo p1, ProteinInfo p2) - { - String an1 = p1.getAccessionNumber(); - String an2 = p2.getAccessionNumber(); - return an1 == null ? -1 : (an2 == null ? 1 : an1.compareToIgnoreCase(an2)); - } - }); - } - - private AbundanceManager setUpAbundanceManager(String experimentPermID, - double falseDiscoveryRate) - { - AbundanceManager abundanceManager = new AbundanceManager(sampleProvider); - IPhosphoNetXDAOFactory specificDAOFactory = getSpecificDAOFactory(); - IProteinQueryDAO dao = specificDAOFactory.getProteinQueryDAO(experimentPermID); - long time = System.currentTimeMillis(); - DataSet<ProteinReferenceWithProtein> dataSet = - dao.listProteinReferencesByExperiment(experimentPermID); - List<ProteinReferenceWithProtein> proteins = new ArrayList<ProteinReferenceWithProtein>(); - LongOpenHashSet proteinIDs = new LongOpenHashSet(); - try - { - for (ProteinReferenceWithProtein protein : dataSet) - { - proteins.add(protein); - proteinIDs.add(protein.getProteinID()); - } - } finally - { - dataSet.close(); - } - operationLog.info("(" + (System.currentTimeMillis() - time) + "ms) for listProteinReferencesByExperiment"); - Map<Long, List<ProteinAbundance>> abundancesPerProtein = getAbudancesPerProtein(dao, proteinIDs); - ErrorModel errorModel = new ErrorModel(dao); - for (ProteinReferenceWithProtein protein : proteins) - { - if (errorModel.passProtein(protein, falseDiscoveryRate)) - { - List<ProteinAbundance> list = abundancesPerProtein.get(protein.getProteinID()); - abundanceManager.handle(protein, list); - } - } - return abundanceManager; - } - - private Map<Long, List<ProteinAbundance>> getAbudancesPerProtein(IProteinQueryDAO dao, LongOpenHashSet proteinIDs) - { - long time = System.currentTimeMillis(); - DataSet<ProteinAbundance> dataSet = dao.listProteinWithAbundanceByExperiment(proteinIDs); - List<ProteinAbundance> proteinAbundances = new ArrayList<ProteinAbundance>(); - try - { - for (ProteinAbundance proteinAbundance : dataSet) - { - proteinAbundances.add(proteinAbundance); - } - } finally - { - dataSet.close(); - } - operationLog.info("(" + (System.currentTimeMillis() - time) + "ms) for listProteinWithAbundanceByExperiment"); - Map<Long, List<ProteinAbundance>> abundancesPerProtein = - new HashMap<Long, List<ProteinAbundance>>(); - for (ProteinAbundance proteinAbundance : proteinAbundances) - { - long proteinID = proteinAbundance.getId(); - List<ProteinAbundance> list = abundancesPerProtein.get(proteinID); - if (list == null) - { - list = new ArrayList<ProteinAbundance>(); - abundancesPerProtein.put(proteinID, list); - } - list.add(proteinAbundance); - } - return abundancesPerProtein; - } - - private static double[] concatenate(double[] array1OrNull, double[] array2OrNull) - { - if (array1OrNull == null || array1OrNull.length == 0) - { - return array2OrNull; - } - if (array2OrNull == null || array2OrNull.length == 0) - { - return array1OrNull; - } - double[] newArray = new double[array1OrNull.length + array2OrNull.length]; - System.arraycopy(array1OrNull, 0, newArray, 0, array1OrNull.length); - System.arraycopy(array2OrNull, 0, newArray, array1OrNull.length, array2OrNull.length); - return newArray; - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/ProteinRelatedSampleTable.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/ProteinRelatedSampleTable.java deleted file mode 100644 index c884b253e98effa723f6ea57bcfe7e5bff0ff190..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/ProteinRelatedSampleTable.java +++ /dev/null @@ -1,219 +0,0 @@ -/* - * Copyright 2011 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.server.business; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; - -import net.lemnik.eodsql.DataSet; -import ch.systemsx.cisd.openbis.generic.server.authorization.validator.SamplePropertyAccessValidator; -import ch.systemsx.cisd.openbis.generic.server.dataaccess.IDAOFactory; -import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.MaterialType; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.PropertyType; -import ch.systemsx.cisd.openbis.generic.shared.dto.MaterialTypePE; -import ch.systemsx.cisd.openbis.generic.shared.dto.PropertyTypePE; -import ch.systemsx.cisd.openbis.generic.shared.dto.SamplePE; -import ch.systemsx.cisd.openbis.generic.shared.dto.Session; -import ch.systemsx.cisd.openbis.generic.shared.managed_property.IManagedPropertyEvaluatorFactory; -import ch.systemsx.cisd.openbis.generic.shared.translator.EntityPropertyTranslator; -import ch.systemsx.cisd.openbis.generic.shared.translator.SampleTypeTranslator; -import ch.systemsx.cisd.openbis.plugin.proteomics.server.dataaccess.IPhosphoNetXDAOFactory; -import ch.systemsx.cisd.openbis.plugin.proteomics.server.dataaccess.IProteinQueryDAO; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.Occurrence; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.OccurrenceUtil; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.ProteinRelatedSample; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.dto.AbstractSample; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.dto.SampleAbundance; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.dto.SamplePeptideModification; - -/** - * Implementation of {@link IProteinRelatedSampleTable}. - * - * @author Franz-Josef Elmer - */ -class ProteinRelatedSampleTable implements IProteinRelatedSampleTable -{ - private final IDAOFactory daoFactory; - - private final IPhosphoNetXDAOFactory specificDAOFactory; - - private final IManagedPropertyEvaluatorFactory managedPropertyEvaluatorFactory; - - private List<ProteinRelatedSample> result; - - ProteinRelatedSampleTable(IDAOFactory daoFactory, IPhosphoNetXDAOFactory specificDAOFactory, - IManagedPropertyEvaluatorFactory managedPropertyEvaluatorFactory) - { - this.daoFactory = daoFactory; - this.specificDAOFactory = specificDAOFactory; - this.managedPropertyEvaluatorFactory = managedPropertyEvaluatorFactory; - } - - @Override - public List<ProteinRelatedSample> getSamples() - { - return result; - } - - @Override - public void load(Session session, TechId experimentID, TechId proteinReferenceID, String sequenceOrNull) - { - String experimentPermID = - daoFactory.getExperimentDAO().getByTechId(experimentID).getPermId(); - IProteinQueryDAO proteinQueryDAO = specificDAOFactory.getProteinQueryDAO(experimentID); - Map<String, List<SampleAbundance>> sampleAbundanceMap = - createSampleMap(proteinQueryDAO.listSampleAbundanceByProtein(experimentPermID, - proteinReferenceID.getId())); - Map<String, List<SamplePeptideModification>> samplePeptideModificationMap = - createSampleMap(proteinQueryDAO.listSamplePeptideModificatioByProtein( - experimentPermID, proteinReferenceID.getId())); - result = new ArrayList<ProteinRelatedSample>(); - SampleIDProvider sampleIDProvider = new SampleIDProvider(daoFactory.getSampleDAO()); - Map<PropertyTypePE, PropertyType> cache = new HashMap<PropertyTypePE, PropertyType>(); - Map<MaterialTypePE, MaterialType> materialTypeCache = new HashMap<MaterialTypePE, MaterialType>(); - for (Entry<String, List<SampleAbundance>> entry : sampleAbundanceMap.entrySet()) - { - String key = entry.getKey(); - SamplePE sample = sampleIDProvider.getSampleOrParentSample(key); - List<SampleAbundance> sampleAbundances = entry.getValue(); - List<SamplePeptideModification> samplePeptideModifications = - samplePeptideModificationMap.get(key); - if (samplePeptideModifications == null) - { - for (SampleAbundance sampleAbundance : sampleAbundances) - { - ProteinRelatedSample s = createFrom(sample, materialTypeCache, cache, session); - s.setAbundance(sampleAbundance.getAbundance()); - result.add(s); - } - } else - { - for (SampleAbundance sampleAbundance : sampleAbundances) - { - Double abundance = sampleAbundance.getAbundance(); - result.addAll(createSamplesForPeptideModifications(samplePeptideModifications, - sample, abundance, sequenceOrNull, materialTypeCache, cache, session)); - } - } - } - for (Entry<String, List<SamplePeptideModification>> entry : samplePeptideModificationMap - .entrySet()) - { - String key = entry.getKey(); - if (sampleAbundanceMap.containsKey(key) == false) - { - SamplePE sample = sampleIDProvider.getSampleOrParentSample(key); - List<SamplePeptideModification> samplePeptideModifications = entry.getValue(); - result.addAll(createSamplesForPeptideModifications(samplePeptideModifications, - sample, null, sequenceOrNull, materialTypeCache, cache, session)); - } - } - } - - private List<ProteinRelatedSample> createSamplesForPeptideModifications( - List<SamplePeptideModification> samplePeptideModifications, SamplePE sample, - Double abundanceOrNull, String sequenceOrNull, - Map<MaterialTypePE, MaterialType> materialTypeCache, Map<PropertyTypePE, PropertyType> cache - , Session session) - { - List<ProteinRelatedSample> samples = new ArrayList<ProteinRelatedSample>(); - for (SamplePeptideModification samplePeptideModification : samplePeptideModifications) - { - int position = samplePeptideModification.getPosition(); - if (sequenceOrNull != null) - { - List<Occurrence> occurances = - OccurrenceUtil.findAllOccurrences(sequenceOrNull, - samplePeptideModification.getSequence()); - for (Occurrence occurrence : occurances) - { - samples.add(createProteinRelatedSample(samplePeptideModification, sample, - abundanceOrNull, position + occurrence.getStartIndex(), materialTypeCache, cache, session)); - } - } else - { - samples.add(createProteinRelatedSample(samplePeptideModification, sample, - abundanceOrNull, position, materialTypeCache, cache, session)); - } - } - return samples; - } - - private ProteinRelatedSample createProteinRelatedSample( - SamplePeptideModification samplePeptideModification, SamplePE sample, - Double abundanceOrNull, int position, - Map<MaterialTypePE, MaterialType> materialTypeCache, Map<PropertyTypePE, PropertyType> cache - , Session session) - { - ProteinRelatedSample s = createFrom(sample, materialTypeCache, cache, session); - s.setAbundance(abundanceOrNull); - int index = samplePeptideModification.getPosition() - 1; - String sequence = samplePeptideModification.getSequence(); - if (index >= 0 && index < sequence.length()) - { - s.setModifiedAminoAcid(sequence.charAt(index)); - } - s.setModificationFraction(samplePeptideModification.getFraction()); - s.setModificationMass(samplePeptideModification.getMass()); - s.setModificationPosition((long) position); - return s; - } - - private ProteinRelatedSample createFrom(SamplePE sample, Map<MaterialTypePE, MaterialType> materialTypeCache, - Map<PropertyTypePE, PropertyType> cache, Session session) - { - ProteinRelatedSample s = new ProteinRelatedSample(); - s.setCode(sample.getCode()); - s.setEntityType(SampleTypeTranslator.translate(sample.getSampleType(), materialTypeCache, cache)); - s.setId(sample.getId()); - s.setIdentifier(sample.getIdentifier()); - s.setPermId(sample.getPermId()); - s.setProperties(EntityPropertyTranslator.translate(sample.getProperties(), materialTypeCache, cache, - managedPropertyEvaluatorFactory, - new SamplePropertyAccessValidator(session, daoFactory))); - return s; - } - - private <T extends AbstractSample> Map<String, List<T>> createSampleMap(DataSet<T> items) - { - Map<String, List<T>> map = new LinkedHashMap<String, List<T>>(); - try - { - for (T item : items) - { - String samplePermID = item.getSamplePermID(); - List<T> list = map.get(samplePermID); - if (list == null) - { - list = new ArrayList<T>(); - map.put(samplePermID, list); - } - list.add(item); - } - } finally - { - items.close(); - } - return map; - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/ProteinSequenceTable.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/ProteinSequenceTable.java deleted file mode 100644 index 46492166070cd9cbbb61baa2a9f3b38e9ab38265..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/ProteinSequenceTable.java +++ /dev/null @@ -1,111 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.server.business; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import net.lemnik.eodsql.DataSet; - -import ch.systemsx.cisd.openbis.generic.server.dataaccess.IDAOFactory; -import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; -import ch.systemsx.cisd.openbis.generic.shared.dto.Session; -import ch.systemsx.cisd.openbis.plugin.proteomics.server.dataaccess.IPhosphoNetXDAOFactory; -import ch.systemsx.cisd.openbis.plugin.proteomics.server.dataaccess.IProteinQueryDAO; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.ProteinSequence; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.dto.Sequence; - -/** - * @author Franz-Josef Elmer - */ -class ProteinSequenceTable extends AbstractBusinessObject implements IProteinSequenceTable -{ - private List<ProteinSequence> proteinSequences; - - private Map<Long, String> databaseIDToShortNameMap; - - ProteinSequenceTable(IDAOFactory daoFactory, IPhosphoNetXDAOFactory specificDAOFactory, - Session session) - { - super(daoFactory, specificDAOFactory, session); - } - - @Override - public List<ProteinSequence> getSequences() - { - if (proteinSequences == null) - { - throw new IllegalStateException("Sequences not loaded."); - } - return proteinSequences; - } - - @Override - public String getShortName(long databaseID) - { - if (databaseIDToShortNameMap == null) - { - throw new IllegalStateException("Sequences not loaded."); - } - String shortName = databaseIDToShortNameMap.get(databaseID); - if (shortName == null) - { - throw new IllegalArgumentException("No sequence found for databaseID " + databaseID); - } - return shortName; - } - - @Override - public void loadByReference(TechId experimentID, TechId proteinReferenceID) - { - IProteinQueryDAO proteinQueryDAO = getSpecificDAOFactory().getProteinQueryDAO(experimentID); - DataSet<Sequence> sequences = - proteinQueryDAO.listProteinSequencesByProteinReference(proteinReferenceID.getId()); - proteinSequences = new ArrayList<ProteinSequence>(sequences.size()); - databaseIDToShortNameMap = new HashMap<Long, String>(); - int number = 0; - for (Sequence sequence : sequences) - { - ProteinSequence proteinSequence = new ProteinSequence(); - proteinSequence.setId(new TechId(sequence.getId())); - String shortName = createShortName(number++); - proteinSequence.setShortName(shortName); - proteinSequence.setSequence(sequence.getSequence()); - long databaseID = sequence.getDatabaseID(); - proteinSequence.setDatabaseID(new TechId(databaseID)); - proteinSequence.setDatabaseNameAndVersion(sequence.getDatabaseNameAndVersion()); - proteinSequences.add(proteinSequence); - databaseIDToShortNameMap.put(databaseID, shortName); - } - sequences.close(); - } - - private String createShortName(int number) - { - StringBuilder builder = new StringBuilder(); - int n = number; - while (n > 0 || builder.length() == 0) - { - builder.insert(0, "ABCEDEFGHIJKLMNOPQRSTUVWXYZ".charAt(n % 26)); - n /= 26; - } - return builder.toString(); - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/ProteinSummaryTable.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/ProteinSummaryTable.java deleted file mode 100644 index 44e994ffdb05f837216845c7d8b86eff5c854776..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/ProteinSummaryTable.java +++ /dev/null @@ -1,150 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.server.business; - -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import java.util.Set; - -import net.lemnik.eodsql.DataSet; - -import ch.systemsx.cisd.openbis.generic.server.dataaccess.IDAOFactory; -import ch.systemsx.cisd.openbis.generic.server.dataaccess.IExperimentDAO; -import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; -import ch.systemsx.cisd.openbis.generic.shared.dto.Session; -import ch.systemsx.cisd.openbis.plugin.proteomics.server.dataaccess.IPhosphoNetXDAOFactory; -import ch.systemsx.cisd.openbis.plugin.proteomics.server.dataaccess.IProteinQueryDAO; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.ProteinSummary; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.dto.ProteinReferenceWithProbabilityAndPeptide; - -/** - * @author Franz-Josef Elmer - */ -class ProteinSummaryTable extends AbstractBusinessObject implements IProteinSummaryTable -{ - static final double[] FDR_LEVELS = new double[] - { 0, 0.01, 0.025, 0.05, 0.1 }; - - private static final class Counter - { - - private final double fdrLevel; - - private final Set<Long> proteins; - - private final Set<Long> decoyProteins; - - private final Set<String> peptides; - - private final Set<String> decoyPeptides; - - Counter(double fdrLevel) - { - this.fdrLevel = fdrLevel; - proteins = new HashSet<Long>(); - decoyProteins = new HashSet<Long>(); - peptides = new HashSet<String>(); - decoyPeptides = new HashSet<String>(); - } - - public ProteinSummary getProteinSummary() - { - ProteinSummary proteinSummary = new ProteinSummary(); - proteinSummary.setFDR(fdrLevel); - proteinSummary.setProteinCount(proteins.size()); - proteinSummary.setPeptideCount(peptides.size()); - proteinSummary.setDecoyProteinCount(decoyProteins.size()); - proteinSummary.setDecoyPeptideCount(decoyPeptides.size()); - return proteinSummary; - } - - public void handle(double fdr, ProteinReferenceWithProbabilityAndPeptide protein) - { - if (Double.isNaN(fdr) || fdr <= fdrLevel) - { - String accessionNumber = protein.getAccessionNumber(); - if (accessionNumber.startsWith(AccessionNumberBuilder.DECOY_PREFIX)) - { - decoyProteins.add(protein.getId()); - decoyPeptides.add(protein.getPeptideSequence()); - } else - { - proteins.add(protein.getId()); - peptides.add(protein.getPeptideSequence()); - } - } - } - } - - private List<ProteinSummary> summaries; - - ProteinSummaryTable(IDAOFactory daoFactory, IPhosphoNetXDAOFactory specificDAOFactory, - Session session) - { - super(daoFactory, specificDAOFactory, session); - } - - @Override - public List<ProteinSummary> getProteinSummaries() - { - return summaries; - } - - @Override - public void load(TechId experimentID) - { - IExperimentDAO experimentDAO = getDaoFactory().getExperimentDAO(); - String permID = experimentDAO.getByTechId(experimentID).getPermId(); - IProteinQueryDAO dao = getSpecificDAOFactory().getProteinQueryDAO(experimentID); - ErrorModel errorModel = new ErrorModel(dao); - DataSet<ProteinReferenceWithProbabilityAndPeptide> resultSet = - dao.listProteinsWithProbabilityAndPeptidesByExperiment(permID); - List<Counter> counters = new ArrayList<Counter>(FDR_LEVELS.length); - for (double fdrLevel : FDR_LEVELS) - { - counters.add(new Counter(fdrLevel)); - } - try - { - for (ProteinReferenceWithProbabilityAndPeptide protein : resultSet) - { - long dataSetID = protein.getDataSetID(); - double probability = protein.getProbability(); - double fdr = errorModel.calculateFalsDiscoveryRate(dataSetID, probability); - for (Counter counter : counters) - { - counter.handle(fdr, protein); - } - } - summaries = getSummaries(counters); - } finally - { - resultSet.close(); - } - } - - private List<ProteinSummary> getSummaries(List<Counter> counters) - { - List<ProteinSummary> list = new ArrayList<ProteinSummary>(counters.size()); - for (Counter counter : counters) - { - list.add(counter.getProteinSummary()); - } - return list; - } -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/SampleIDProvider.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/SampleIDProvider.java deleted file mode 100644 index 663533f5b4fa2f2047f8b5b1e1ae518b35a3cd02..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/SampleIDProvider.java +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.server.business; - -import java.util.LinkedHashMap; -import java.util.Map; - -import ch.systemsx.cisd.common.exceptions.UserFailureException; -import ch.systemsx.cisd.openbis.generic.server.dataaccess.ISampleDAO; -import ch.systemsx.cisd.openbis.generic.shared.dto.SamplePE; -import ch.systemsx.cisd.openbis.generic.shared.util.HibernateUtils; - -/** - * Implementation based on {@link ISampleDAO}. - * - * @author Franz-Josef Elmer - */ -public class SampleIDProvider implements ISampleIDProvider -{ - private final ISampleDAO sampleDAO; - - private final Map<String, SamplePE> samples = new LinkedHashMap<String, SamplePE>(); - - public SampleIDProvider(ISampleDAO sampleDAO) - { - this.sampleDAO = sampleDAO; - } - - @Override - public long getSampleIDOrParentSampleID(String samplePermID) - { - return HibernateUtils.getId(getSampleOrParentSample(samplePermID)); - } - - @Override - public SamplePE getSampleOrParentSample(String samplePermID) - { - SamplePE sample = samples.get(samplePermID); - if (sample == null) - { - sample = sampleDAO.tryToFindByPermID(samplePermID); - if (sample == null) - { - throw new UserFailureException("No sample found for permID " + samplePermID); - } - SamplePE parentSample = sample.getGeneratedFrom(); - if (parentSample != null) - { - sample = parentSample; - } - samples.put(samplePermID, sample); - } - return sample; - } -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/SampleLoader.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/SampleLoader.java deleted file mode 100644 index cf40e60ebfffb2fd32c785bc4d22a4b313c0f83d..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/SampleLoader.java +++ /dev/null @@ -1,131 +0,0 @@ -/* - * Copyright 2010 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.server.business; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashSet; -import java.util.List; -import java.util.Set; - -import ch.systemsx.cisd.common.collection.IValidator; -import ch.systemsx.cisd.openbis.generic.server.business.bo.ICommonBusinessObjectFactory; -import ch.systemsx.cisd.openbis.generic.server.business.bo.samplelister.ISampleLister; -import ch.systemsx.cisd.openbis.generic.server.dataaccess.IDAOFactory; -import ch.systemsx.cisd.openbis.generic.shared.basic.BasicConstant; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ListOrSearchSampleCriteria; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample; -import ch.systemsx.cisd.openbis.generic.shared.dto.SpacePE; -import ch.systemsx.cisd.openbis.generic.shared.dto.SampleRelationshipSkeleton; -import ch.systemsx.cisd.openbis.generic.shared.dto.SampleSkeleton; -import ch.systemsx.cisd.openbis.generic.shared.dto.SampleTypePE; -import ch.systemsx.cisd.openbis.generic.shared.dto.Session; - -/** - * @author Franz-Josef Elmer - */ -public class SampleLoader implements ISampleLoader -{ - private final Session session; - - private final IDAOFactory daoFactory; - - private final ICommonBusinessObjectFactory businessObjectFactory; - - public SampleLoader(Session session, IDAOFactory daoFactory, - ICommonBusinessObjectFactory businessObjectFactory) - { - this.session = session; - this.daoFactory = daoFactory; - this.businessObjectFactory = businessObjectFactory; - - } - - @Override - public List<Sample> listSamplesWithParentsByTypeAndSpace(String sampleTypeCode, String spaceCode) - { - ISampleLister sampleLister = businessObjectFactory.createSampleLister(session); - Set<Long> filteredSampleIDs = getSampleIDs(sampleLister, sampleTypeCode, spaceCode); - ListOrSearchSampleCriteria criteria = new ListOrSearchSampleCriteria(filteredSampleIDs); - criteria.setEnrichDependentSamplesWithProperties(true); - List<Sample> samples = sampleLister.list(criteria); - ArrayList<Sample> samplesWithParent = new ArrayList<Sample>(); - for (Sample sample : samples) - { - if (sample.getParents().size() == 1) - { - samplesWithParent.add(sample); - } - } - return samplesWithParent; - } - - private Set<Long> getSampleIDs(ISampleLister sampleLister, String sampleTypeCode, - String spaceCode) - { - SampleTypePE sampleTypePE = - daoFactory.getSampleTypeDAO().tryFindSampleTypeByCode(sampleTypeCode); - if (sampleTypePE == null) - { - return Collections.emptySet(); - } - final Long sampleTypeID = sampleTypePE.getId(); - SpacePE space = - daoFactory.getSpaceDAO().tryFindSpaceByCode(spaceCode); - if (space == null) - { - return Collections.emptySet(); - } - final Long spaceID = space.getId(); - List<SampleSkeleton> sampleSkeletons = - sampleLister.listSampleBy(new IValidator<SampleSkeleton>() - { - @Override - public boolean isValid(SampleSkeleton sampleSkeleton) - { - return spaceID.equals(sampleSkeleton.getSpaceID()) - && sampleTypeID.equals(sampleSkeleton.getTypeID()); - } - }); - final Set<Long> sampleIDs = new HashSet<Long>(); - for (SampleSkeleton sampleSkeleton : sampleSkeletons) - { - sampleIDs.add(sampleSkeleton.getId()); - } - final long relationshipTypeID = - sampleLister - .getRelationshipTypeID(BasicConstant.PARENT_CHILD_INTERNAL_RELATIONSHIP); - @SuppressWarnings("deprecation") - List<SampleRelationshipSkeleton> relationshipSkeletons = - sampleLister.listSampleRelationshipsBy(new IValidator<SampleRelationshipSkeleton>() - { - @Override - public boolean isValid(SampleRelationshipSkeleton skeleton) - { - return skeleton.getRelationshipTypeID() == relationshipTypeID - && sampleIDs.contains(skeleton.getChildSampleID()); - } - }); - Set<Long> filteredSampleIDs = new HashSet<Long>(); - for (SampleRelationshipSkeleton sampleRelationShipSkeleton : relationshipSkeletons) - { - filteredSampleIDs.add(sampleRelationShipSkeleton.getChildSampleID()); - } - return filteredSampleIDs; - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/SampleProvider.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/SampleProvider.java deleted file mode 100644 index da9493facb0e110dbfd22237fd3d5a18bf70cdd8..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/SampleProvider.java +++ /dev/null @@ -1,93 +0,0 @@ -/* - * Copyright 2010 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.server.business; - -import java.util.HashMap; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; - -import ch.systemsx.cisd.common.exceptions.UserFailureException; -import ch.systemsx.cisd.openbis.generic.server.business.bo.samplelister.ISampleLister; -import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ListOrSearchSampleCriteria; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ListSampleCriteria; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample; -import ch.systemsx.cisd.openbis.generic.shared.dto.Session; - -/** - * @author Franz-Josef Elmer - */ -class SampleProvider implements ISampleProvider -{ - private final Session session; - - private final IBusinessObjectFactory boFactory; - - private Map<String, Sample> samplesByPermIDs; - - SampleProvider(Session session, IBusinessObjectFactory boFactory) - { - this.session = session; - this.boFactory = boFactory; - } - - @Override - public void loadByExperimentID(TechId experimentID) - { - samplesByPermIDs = new HashMap<String, Sample>(); - ListSampleCriteria criteria = ListSampleCriteria.createForExperiment(experimentID); - ISampleLister lister = boFactory.createSampleLister(session); - ListOrSearchSampleCriteria criteria2 = new ListOrSearchSampleCriteria(criteria); - criteria2.setEnrichDependentSamplesWithProperties(true); - gatherSamplesAndAncestorsRecursively(lister, criteria2); - } - - private void gatherSamplesAndAncestorsRecursively(ISampleLister lister, - ListOrSearchSampleCriteria criteria) - { - List<Sample> list = lister.list(criteria); - Set<Long> sampleIDs = new LinkedHashSet<Long>(); - for (Sample sample : list) - { - samplesByPermIDs.put(sample.getPermId(), sample); - sampleIDs.add(sample.getId()); - } - if (sampleIDs.isEmpty()) - { - return; - } - ListSampleCriteria criteria2 = - ListSampleCriteria.createForChildren(sampleIDs); - ListOrSearchSampleCriteria criteria3 = new ListOrSearchSampleCriteria(criteria2); - criteria3.setEnrichDependentSamplesWithProperties(true); - gatherSamplesAndAncestorsRecursively(lister, criteria3); - } - - @Override - public Sample getSample(String permID) - { - Sample sample = samplesByPermIDs.get(permID); - if (sample == null) - { - throw new UserFailureException( - "No sample with following perm ID registered in openBIS: " + permID); - } - return sample; - } -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/SampleTable.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/SampleTable.java deleted file mode 100644 index 7bab99e446a29e3ab08adf1b7ceddcff62c86230..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/SampleTable.java +++ /dev/null @@ -1,117 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.server.business; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import net.lemnik.eodsql.DataSet; -import ch.systemsx.cisd.common.collection.IValidator; -import ch.systemsx.cisd.openbis.generic.server.authorization.validator.SamplePropertyAccessValidator; -import ch.systemsx.cisd.openbis.generic.server.dataaccess.IDAOFactory; -import ch.systemsx.cisd.openbis.generic.server.dataaccess.ISampleDAO; -import ch.systemsx.cisd.openbis.generic.shared.basic.IIdentifierHolder; -import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.MaterialType; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.PropertyType; -import ch.systemsx.cisd.openbis.generic.shared.dto.MaterialTypePE; -import ch.systemsx.cisd.openbis.generic.shared.dto.PropertyTypePE; -import ch.systemsx.cisd.openbis.generic.shared.dto.SamplePE; -import ch.systemsx.cisd.openbis.generic.shared.dto.Session; -import ch.systemsx.cisd.openbis.generic.shared.managed_property.IManagedPropertyEvaluatorFactory; -import ch.systemsx.cisd.openbis.generic.shared.translator.EntityPropertyTranslator; -import ch.systemsx.cisd.openbis.generic.shared.translator.SampleTypeTranslator; -import ch.systemsx.cisd.openbis.generic.shared.util.HibernateUtils; -import ch.systemsx.cisd.openbis.plugin.proteomics.server.dataaccess.IPhosphoNetXDAOFactory; -import ch.systemsx.cisd.openbis.plugin.proteomics.server.dataaccess.IProteinQueryDAO; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.SampleWithPropertiesAndAbundance; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.dto.SampleAbundance; - -/** - * @author Franz-Josef Elmer - */ -class SampleTable extends AbstractBusinessObject implements ISampleTable -{ - private List<SampleWithPropertiesAndAbundance> samples = - new ArrayList<SampleWithPropertiesAndAbundance>(); - - private SampleIDProvider sampleIDProvider; - - private IManagedPropertyEvaluatorFactory managedPropertyEvaluatorFactory; - - SampleTable(IDAOFactory daoFactory, IPhosphoNetXDAOFactory specificDAOFactory, Session session, - IManagedPropertyEvaluatorFactory managedPropertyEvaluatorFactory) - { - super(daoFactory, specificDAOFactory, session); - sampleIDProvider = new SampleIDProvider(daoFactory.getSampleDAO()); - this.managedPropertyEvaluatorFactory = managedPropertyEvaluatorFactory; - } - - @Override - public List<SampleWithPropertiesAndAbundance> getSamples() - { - return samples; - } - - @Override - public void loadSamplesWithAbundance(Session session, TechId experimentID, TechId proteinReferenceID) - { - samples = new ArrayList<SampleWithPropertiesAndAbundance>(); - IProteinQueryDAO proteinQueryDAO = getSpecificDAOFactory().getProteinQueryDAO(experimentID); - IDAOFactory daoFactory = getDaoFactory(); - String experimentPermID = - daoFactory.getExperimentDAO().getByTechId(experimentID).getPermId(); - DataSet<SampleAbundance> sampleAbundances = - proteinQueryDAO.listSampleAbundanceByProtein(experimentPermID, - proteinReferenceID.getId()); - try - { - ISampleDAO sampleDAO = daoFactory.getSampleDAO(); - for (SampleAbundance sampleAbundance : sampleAbundances) - { - SampleWithPropertiesAndAbundance sample = new SampleWithPropertiesAndAbundance(); - sample.setAbundance(sampleAbundance.getAbundance()); - String samplePermID = sampleAbundance.getSamplePermID(); - long sampleID = sampleIDProvider.getSampleIDOrParentSampleID(samplePermID); - SamplePE samplePE = sampleDAO.getByTechId(new TechId(sampleID)); - fillSampleData(sample, samplePE, managedPropertyEvaluatorFactory, - new SamplePropertyAccessValidator(session, daoFactory)); - samples.add(sample); - } - } finally - { - sampleAbundances.close(); - } - } - - private final static void fillSampleData(final SampleWithPropertiesAndAbundance result, - final SamplePE samplePE, - IManagedPropertyEvaluatorFactory managedPropertyEvaluatorFactory, - IValidator<IIdentifierHolder> samplePropertyAccessValidator) - { - result.setId(HibernateUtils.getId(samplePE)); - result.setPermId(samplePE.getPermId()); - result.setCode(samplePE.getCode()); - result.setIdentifier(samplePE.getIdentifier()); - result.setSampleType(SampleTypeTranslator.translate(samplePE.getSampleType(), - new HashMap<MaterialTypePE, MaterialType>(), new HashMap<PropertyTypePE, PropertyType>())); - result.setProperties(EntityPropertyTranslator.translate(samplePE.getProperties(), - new HashMap<MaterialTypePE, MaterialType>(), new HashMap<PropertyTypePE, PropertyType>(), - managedPropertyEvaluatorFactory, samplePropertyAccessValidator)); - } -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/TreatmentFinder.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/TreatmentFinder.java deleted file mode 100644 index 2aa35c622e4cf48323dfa41f719e09eecf388e30..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/TreatmentFinder.java +++ /dev/null @@ -1,147 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.server.business; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.HashMap; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; - -import org.apache.commons.lang3.StringUtils; - -import ch.systemsx.cisd.common.exceptions.UserFailureException; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataTypeCode; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IEntityProperty; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Material; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.PropertyType; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.VocabularyTerm; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.Treatment; - -/** - * Helper class which gathers properties in a sample and its ancestor samples defining sample treatments. Treatments of the same type will be - * overridden by descendants. - * - * @author Franz-Josef Elmer - */ -public class TreatmentFinder -{ - public static final String TREATMENT_TYPE_CODE = "TREATMENT_TYPE"; - - public static final String TREATMENT_VALUE_CODE = "TREATMENT_VALUE"; - - /** - * Returns all treatments found for specified sample and its ancestors. - */ - public List<Treatment> findTreatmentsOf(Sample sample) - { - Map<String, Treatment> treatments = new LinkedHashMap<String, Treatment>(); - findAndAddTreatments(treatments, sample); - List<Treatment> treatmentList = new ArrayList<Treatment>(treatments.values()); - Collections.sort(treatmentList); - return treatmentList; - } - - private void findAndAddTreatments(Map<String, Treatment> treatments, Sample sampleOrNull) - { - if (sampleOrNull == null) - { - return; - } - findAndAddTreatments(treatments, sampleOrNull.getGeneratedFrom()); - List<IEntityProperty> properties = sampleOrNull.getProperties(); - Map<String, Treatment> codeTreatmentMap = new HashMap<String, Treatment>(); - for (IEntityProperty property : properties) - { - PropertyType propertyType = property.getPropertyType(); - String code = propertyType.getCode(); - if (code.startsWith(TREATMENT_TYPE_CODE)) - { - String treatmentCode = code.substring(TREATMENT_TYPE_CODE.length()); - VocabularyTerm vocabularyTerm = property.getVocabularyTerm(); - if (vocabularyTerm == null) - { - throw new UserFailureException("Data type of property type '" + code - + "' must be a vocabulary."); - } - Treatment treatment = getOrCreateTreatment(codeTreatmentMap, treatmentCode); - treatment.setType(getLabelOrCode(vocabularyTerm)); - treatment.setTypeCode(vocabularyTerm.getCode()); - } else if (code.startsWith(TREATMENT_VALUE_CODE)) - { - String treatmentCode = code.substring(TREATMENT_VALUE_CODE.length()); - Treatment treatment = getOrCreateTreatment(codeTreatmentMap, treatmentCode); - DataTypeCode dataType = propertyType.getDataType().getCode(); - treatment.setValueType(dataType.toString()); - String value = getValue(property); - treatment.setValue(value); - } - } - Collection<Treatment> treatmentsToBeAdded = codeTreatmentMap.values(); - for (Treatment treatment : treatmentsToBeAdded) - { - Treatment superTreatment = treatments.get(treatment.getType()); - if (superTreatment == null) - { - treatments.put(treatment.getType(), treatment); - } else - { - superTreatment.setValue(treatment.getValue()); - } - } - } - - private String getValue(IEntityProperty property) - { - Material material = property.getMaterial(); - if (material != null) - { - return material.getCode(); - } - VocabularyTerm vocabularyTerm = property.getVocabularyTerm(); - return vocabularyTerm == null ? property.getValue() : getLabelOrCode(vocabularyTerm); - } - - private String getLabelOrCode(VocabularyTerm vocabularyTerm) - { - String label = vocabularyTerm.getLabel(); - if (StringUtils.isBlank(label)) - { - label = vocabularyTerm.getCode(); - } - return label; - } - - private Treatment getOrCreateTreatment(Map<String, Treatment> codeTreatmentMap, - String treatmentCode) - { - Treatment treatment = codeTreatmentMap.get(treatmentCode); - if (treatment == null) - { - treatment = new Treatment(); - treatment.setType(""); - treatment.setTypeCode(""); - treatment.setValue(""); - treatment.setValueType(DataTypeCode.VARCHAR.toString()); - codeTreatmentMap.put(treatmentCode, treatment); - } - return treatment; - } -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/dataaccess/IPhosphoNetXDAOFactory.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/dataaccess/IPhosphoNetXDAOFactory.java deleted file mode 100644 index 22cf326c808b1eb46b8544767e406c1ab46515bf..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/dataaccess/IPhosphoNetXDAOFactory.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.server.dataaccess; - -import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; - -/** - * A factory for PhosphoNetX specific DAOs. - * - * @author Franz-Josef Elmer - */ -public interface IPhosphoNetXDAOFactory -{ - public IProteinQueryDAO getProteinQueryDAO(TechId experimentID); - - public IProteinQueryDAO getProteinQueryDAO(String experimentPermID); -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/dataaccess/IProteinQueryDAO.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/dataaccess/IProteinQueryDAO.java deleted file mode 100644 index 861f24b02cee8414d92803053262b6438326ff0c..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/dataaccess/IProteinQueryDAO.java +++ /dev/null @@ -1,139 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.server.dataaccess; - -import it.unimi.dsi.fastutil.longs.LongSet; -import net.lemnik.eodsql.BaseQuery; -import net.lemnik.eodsql.DataSet; -import net.lemnik.eodsql.Select; - -import ch.systemsx.cisd.common.db.mapper.LongSetMapper; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.dto.IdentifiedProtein; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.dto.IndistinguishableProtein; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.dto.PeptideWithModification; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.dto.ProbabilityFDRMapping; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.dto.ProteinAbundance; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.dto.ProteinReference; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.dto.ProteinReferenceWithProbabilityAndPeptide; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.dto.ProteinReferenceWithProtein; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.dto.SampleAbundance; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.dto.SamplePeptideModification; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.dto.Sequence; - -/** - * @author Franz-Josef Elmer - */ -public interface IProteinQueryDAO extends BaseQuery -{ - @Select(sql = "select * from probability_fdr_mappings where dase_id = ?{1}", disconnected = true) - public DataSet<ProbabilityFDRMapping> getProbabilityFDRMapping(long dataSetID); - - @Select("select d.id as data_set_id, p.id as protein_id, probability, coverage, " - + "pr.id, accession_number, description from protein_references as pr " - + "left join sequences as s on s.prre_id = pr.id " - + "left join identified_proteins as ip on ip.sequ_id = s.id " - + "left join proteins as p on ip.prot_id = p.id " - + "left join data_sets as d on p.dase_id = d.id " - + "left join experiments as e on d.expe_id = e.id where e.perm_id = ?{1} and ip.is_primary = 't'") - public DataSet<ProteinReferenceWithProtein> listProteinReferencesByExperiment( - String experimentPermID); - - @Select(sql = "select p.id, a.value, s.perm_id " - + "from proteins as p join abundances as a on p.id = a.prot_id " - + "left join samples as s on a.samp_id = s.id " - + "where p.id = any (?{1})", parameterBindings = { LongSetMapper.class }) - public DataSet<ProteinAbundance> listProteinWithAbundanceByExperiment(LongSet proteinIDs); - - @Select(sql = "select p.dase_id as data_set_id, p.probability, s.prre_id as id, pr.accession_number, pe.sequence " - + "from identified_proteins as ip left join sequences as s on ip.sequ_id = s.id " - + "left join protein_references as pr on s.prre_id = pr.id " - + "left join proteins as p on ip.prot_id = p.id " - + "left join peptides as pe on pe.prot_id = p.id " - + "left join data_sets as d on p.dase_id = d.id " - + "left join experiments as e on d.expe_id = e.id " - + "where e.perm_id = ?{1} and ip.is_primary = 't'") - public DataSet<ProteinReferenceWithProbabilityAndPeptide> listProteinsWithProbabilityAndPeptidesByExperiment( - String experimentPermID); - - @Select("select distinct s.perm_id " - + "from abundances as a left join proteins as p on a.prot_id = p.id " - + " left join data_sets as d on p.dase_id = d.id " - + " left join experiments as e on d.expe_id = e.id " - + " left join samples as s on a.samp_id = s.id " - + "where e.perm_id = ?{1} order by s.perm_id") - public DataSet<String> listAbundanceRelatedSamplePermIDsByExperiment(String experimentPermID); - - @Select("select * from protein_references where id = ?{1}") - public ProteinReference tryToGetProteinReference(long proteinReferenceID); - - @Select("select s.id, db_id, amino_acid_sequence, name_and_version " - + "from sequences as s join databases as d on s.db_id = d.id " - + "where s.prre_id = ?{1} order by name_and_version") - public DataSet<Sequence> listProteinSequencesByProteinReference(long proteinReferenceID); - - @Select("select ds.id as data_set_id, ds.perm_id as data_set_perm_id, p.id as protein_id, " - + "probability, coverage, count(pe.id) as peptide_count, amino_acid_sequence, s.db_id, name_and_version " - + "from data_sets as ds join experiments as e on ds.expe_id = e.id " - + " join proteins as p on p.dase_id = ds.id " - + " join identified_proteins as ip on ip.prot_id = p.id " - + " join sequences as s on ip.sequ_id = s.id " - + " join databases as db on s.db_id = db.id " - + " left join peptides as pe on pe.prot_id = p.id " - + "where s.prre_id = ?{2} and e.perm_id = ?{1} and ip.is_primary = 't' " - + "group by data_set_id, data_set_perm_id, protein_id, probability, coverage, " - + " amino_acid_sequence, s.db_id, name_and_version order by data_set_perm_id") - public DataSet<IdentifiedProtein> listProteinsByProteinReferenceAndExperiment( - String experimentPermID, long proteinReferenceID); - - @Select("select pe.id, sequence, pos, mass " - + "from peptides as pe left join modified_peptides as mp on mp.pept_id = pe.id " - + " left join modifications as m on m.mope_id = mp.id " - + "where prot_id = ?{1} order by pe.id") - public DataSet<PeptideWithModification> listIdentifiedPeptidesByProtein(long proteinID); - - @Select("select accession_number, description, amino_acid_sequence, coverage " - + "from identified_proteins as ip join sequences as s on ip.sequ_id = s.id " - + " join protein_references as pr on s.prre_id = pr.id " - + "where ip.prot_id = ?{1} and ip.is_primary = 'f'") - public DataSet<IndistinguishableProtein> listIndistinguishableProteinsByProteinID(long proteinID); - - @Select("select distinct a.id, samples.perm_id, value " - + "from abundances as a left join proteins as p on a.prot_id = p.id " - + " left join data_sets as d on p.dase_id = d.id " - + " left join experiments as e on d.expe_id = e.id " - + " left join identified_proteins as ip on ip.prot_id = p.id " - + " left join sequences as s on ip.sequ_id = s.id " - + " left join samples on a.samp_id = samples.id " - + "where e.perm_id = ?{1} and s.prre_id = ?{2} and ip.is_primary = 't'") - public DataSet<SampleAbundance> listSampleAbundanceByProtein(String experimentPermID, - long proteinReferenceID); - - @Select("select distinct mf.id, samples.perm_id, fraction, pos, mass, sequence " - + "from modification_fractions as mf left join modifications as m on mf.modi_id = m.id " - + " left join modified_peptides as mp on m.mope_id = mp.id " - + " left join peptides as pe on mp.pept_id = pe.id " - + " left join proteins as p on pe.prot_id = p.id " - + " left join data_sets as d on p.dase_id = d.id " - + " left join experiments as e on d.expe_id = e.id " - + " left join identified_proteins as ip on ip.prot_id = p.id " - + " left join sequences as s on ip.sequ_id = s.id " - + " left join samples on mf.samp_id = samples.id " - + "where e.perm_id = ?{1} and s.prre_id = ?{2} and ip.is_primary = 't'") - public DataSet<SamplePeptideModification> listSamplePeptideModificatioByProtein( - String experimentPermID, long proteinReferenceID); - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/dataaccess/db/PhosphoNetXDAOFactory.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/dataaccess/db/PhosphoNetXDAOFactory.java deleted file mode 100644 index a9823517b4bd30f17e79bb899d9c71a0e4edfac0..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/dataaccess/db/PhosphoNetXDAOFactory.java +++ /dev/null @@ -1,130 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.server.dataaccess.db; - -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; - -import javax.sql.DataSource; - -import net.lemnik.eodsql.QueryTool; - -import org.apache.log4j.Logger; - -import ch.systemsx.cisd.common.exceptions.UserFailureException; -import ch.systemsx.cisd.common.logging.LogCategory; -import ch.systemsx.cisd.common.logging.LogFactory; -import ch.systemsx.cisd.openbis.generic.server.dataaccess.IDAOFactory; -import ch.systemsx.cisd.openbis.generic.server.dataaccess.IDataDAO; -import ch.systemsx.cisd.openbis.generic.server.dataaccess.IDataSourceProvider; -import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; -import ch.systemsx.cisd.openbis.generic.shared.dto.DataPE; -import ch.systemsx.cisd.openbis.generic.shared.dto.ExperimentPE; -import ch.systemsx.cisd.openbis.plugin.proteomics.server.dataaccess.IPhosphoNetXDAOFactory; -import ch.systemsx.cisd.openbis.plugin.proteomics.server.dataaccess.IProteinQueryDAO; - -/** - * @author Franz-Josef Elmer - */ -public class PhosphoNetXDAOFactory implements IPhosphoNetXDAOFactory -{ - private static final Logger operationLog = - LogFactory.getLogger(LogCategory.OPERATION, PhosphoNetXDAOFactory.class); - - private final Map<DataSource, IProteinQueryDAO> daos = new HashMap<DataSource, IProteinQueryDAO>(); - - private final IDAOFactory daoFactory; - - private final IDataSourceProvider dataSourceProvider; - - public PhosphoNetXDAOFactory(IDataSourceProvider dataSourceProvider, IDAOFactory daoFactory) - { - this.dataSourceProvider = dataSourceProvider; - this.daoFactory = daoFactory; - if (operationLog.isInfoEnabled()) - { - operationLog.info("DAO factory for proteomics created."); - } - } - - @Override - public IProteinQueryDAO getProteinQueryDAO(String experimentPermID) - { - ExperimentPE experiment = daoFactory.getExperimentDAO().tryGetByPermID(experimentPermID); - if (experiment == null) - { - throw new UserFailureException("No experiment with following perm ID found: " - + experimentPermID); - } - return getProteinQueryDAO(experiment); - } - - @Override - public IProteinQueryDAO getProteinQueryDAO(TechId experimentID) - { - ExperimentPE experiment = daoFactory.getExperimentDAO().tryGetByTechId(experimentID); - if (experiment == null) - { - throw new UserFailureException("No experiment with following technical ID found: " - + experimentID); - } - return getProteinQueryDAO(experiment); - } - - public IProteinQueryDAO getProteinQueryDAO(ExperimentPE experiment) - { - DataSource dataSource = getDataSource(experiment); - IProteinQueryDAO dao = daos.get(dataSource); - if (dao == null) - { - dao = QueryTool.getQuery(dataSource, IProteinQueryDAO.class); - daos.put(dataSource, dao); - } - return dao; - } - - private DataSource getDataSource(ExperimentPE experiment) - { - IDataDAO dataDAO = daoFactory.getDataDAO(); - - List<DataPE> dataSets = dataDAO.listDataSets(experiment); - Set<String> dataStores = new HashSet<String>(); - for (DataPE data : dataSets) - { - dataStores.add(data.getDataStore().getCode()); - } - if (dataStores.isEmpty()) - { - throw new UserFailureException("Experiment with " + experiment.getIdentifier() - + " has no data sets."); - } - if (dataStores.size() > 1) - { - throw new UserFailureException("Experiment with " + experiment.getIdentifier() - + " has data sets from more than one store. The stores are the following: " - + dataStores); - } - DataSource dataSource = - dataSourceProvider.getDataSourceByDataStoreServerCode(dataStores.iterator() - .next(), "proteomics"); - return dataSource; - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/dataaccess/db/migration/MigrationStepFrom002To003.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/dataaccess/db/migration/MigrationStepFrom002To003.java deleted file mode 100644 index df1252a3761bd9415ee2720737288b24bda9c798..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/dataaccess/db/migration/MigrationStepFrom002To003.java +++ /dev/null @@ -1,145 +0,0 @@ -/* - * Copyright 2010 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.server.dataaccess.db.migration; - -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; - -import javax.sql.DataSource; - -import org.apache.log4j.Logger; -import org.springframework.dao.DataAccessException; -import org.springframework.jdbc.core.JdbcOperations; -import org.springframework.jdbc.core.JdbcTemplate; -import org.springframework.jdbc.core.ResultSetExtractor; - -import ch.systemsx.cisd.common.logging.LogCategory; -import ch.systemsx.cisd.common.logging.LogFactory; -import ch.systemsx.cisd.dbmigration.java.MigrationStepAdapter; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.Occurrence; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.OccurrenceUtil; - -/** - * @author Franz-Josef Elmer - */ -public class MigrationStepFrom002To003 extends MigrationStepAdapter -{ - private static final long MB = 1024 * 1024; - - private static final Logger operationLog = - LogFactory.getLogger(LogCategory.OPERATION, MigrationStepFrom002To003.class); - - @Override - public void performPostMigration(JdbcTemplate simpleJdbcTemplate, DataSource dataSource) - throws DataAccessException - { - List<Object[]> coverageValues = calculateCoverageValues(simpleJdbcTemplate); - operationLog.info("update " + coverageValues.size() + " identified proteins"); - simpleJdbcTemplate.batchUpdate("update identified_proteins set coverage = ? where id = ?", - coverageValues); - } - - private List<Object[]> calculateCoverageValues(JdbcTemplate simpleJdbcTemplate) - { - logMemory(); - JdbcOperations jdbcOperations = simpleJdbcTemplate; - final Map<Long, List<String>> peptides = getPeptides(jdbcOperations); - logMemory(); - final List<Object[]> values = new ArrayList<Object[]>(); - jdbcOperations.query("select ip.id, ip.prot_id, s.amino_acid_sequence " - + "from identified_proteins as ip " - + "join sequences as s on ip.sequ_id = s.id where coverage is null", - new ResultSetExtractor() - { - @Override - public Object extractData(ResultSet rs) throws SQLException, - DataAccessException - { - while (rs.next()) - { - long id = rs.getLong(1); - long proteinID = rs.getLong(2); - String sequence = rs.getString(3); - List<String> peptideSequences = peptides.get(proteinID); - double coverage = calculateCoverage(sequence, peptideSequences); - values.add(new Object[] { coverage, id }); - } - return null; - } - }); - logMemory(); - return values; - } - - private Map<Long, List<String>> getPeptides(JdbcOperations jdbcOperations) - { - final Map<Long, List<String>> peptides = new HashMap<Long, List<String>>(); - jdbcOperations.query("select prot_id, sequence from peptides order by prot_id", - new ResultSetExtractor() - { - @Override - public Object extractData(ResultSet rs) throws SQLException, - DataAccessException - { - long currentProteinID = -1; - ArrayList<String> list = null; - while (rs.next()) - { - long proteinID = rs.getLong(1); - if (list == null || proteinID != currentProteinID) - { - if (list != null) - { - list.trimToSize(); - } - currentProteinID = proteinID; - list = new ArrayList<String>(); - peptides.put(proteinID, list); - } - list.add(rs.getString(2)); - } - return null; - } - }); - return peptides; - } - - private double calculateCoverage(String sequence, List<String> peptides) - { - Set<String> distinctPeptides = new HashSet<String>(peptides); - List<Occurrence> list = OccurrenceUtil.getCoverage(sequence, distinctPeptides); - int sumPeptides = 0; - for (Occurrence occurrence : list) - { - sumPeptides += occurrence.getWord().length(); - } - return sumPeptides / (double) sequence.length(); - } - - private void logMemory() - { - Runtime runtime = Runtime.getRuntime(); - long usedMemory = (runtime.totalMemory() - runtime.freeMemory()) / MB; - operationLog.info(usedMemory + " MB used, " + runtime.totalMemory() / MB + " MB total"); - } -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/CacheData.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/CacheData.java deleted file mode 100644 index ebaf25b670ae1342b12499ce78a8f12fa7ae1e8b..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/CacheData.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright 2010 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.shared; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Inherited; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** - * Annotation for methods to cache their return values. - * - * @author Franz-Josef Elmer - */ -@Retention(RetentionPolicy.RUNTIME) -@Target(ElementType.METHOD) -@Inherited -public @interface CacheData -{ - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/IPhosphoNetXServer.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/IPhosphoNetXServer.java deleted file mode 100644 index 102159813051c89ce00f2b088af1b82384a079cf..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/IPhosphoNetXServer.java +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.shared; - -import java.util.List; - -import org.springframework.transaction.annotation.Transactional; - -import ch.systemsx.cisd.common.exceptions.UserFailureException; -import ch.systemsx.cisd.openbis.generic.shared.IServer; -import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Vocabulary; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.AbundanceColumnDefinition; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.AggregateFunction; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.DataSetProtein; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.ProteinByExperiment; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.ProteinInfo; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.ProteinRelatedSample; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.ProteinSequence; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.ProteinSummary; - -/** - * @author Franz-Josef Elmer - */ -public interface IPhosphoNetXServer extends IServer -{ - @Transactional - public Vocabulary getTreatmentTypeVocabulary(String sessionToken) throws UserFailureException; - - @Transactional - @CacheData - public List<AbundanceColumnDefinition> getAbundanceColumnDefinitionsForProteinByExperiment( - String sessionToken, TechId experimentID, String treatmentTypeOrNull) - throws UserFailureException; - - @Transactional - @CacheData - public List<ProteinInfo> listProteinsByExperiment(String sessionToken, TechId experimentId, - double falseDiscoveryRate, AggregateFunction function, String treatmentTypeCode, - boolean aggregateOnOriginal) throws UserFailureException; - - @Transactional - @CacheData - public List<ProteinSummary> listProteinSummariesByExperiment(String sessionToken, - TechId experimentId) throws UserFailureException; - - @Transactional - public ProteinByExperiment getProteinByExperiment(String sessionToken, TechId experimentId, - TechId proteinReferenceID) throws UserFailureException; - - @Transactional - public List<ProteinSequence> listProteinSequencesByProteinReference(String sessionToken, - TechId experimentID, TechId proteinReferenceID) throws UserFailureException; - - @Transactional - public List<DataSetProtein> listProteinsByExperimentAndReference(String sessionToken, - TechId experimentId, TechId proteinReferenceID) throws UserFailureException; - - @Transactional - public List<ProteinRelatedSample> listProteinRelatedSamplesByProtein(String sessionToken, - TechId experimentID, TechId proteinReferenceID) throws UserFailureException; -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/IProteomicsDataServiceInternal.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/IProteomicsDataServiceInternal.java deleted file mode 100644 index 04e941dc98c698b0ee53de946c78da11684550f0..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/IProteomicsDataServiceInternal.java +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright 2010 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.shared; - -import java.util.List; - -import org.springframework.transaction.annotation.Transactional; - -import ch.systemsx.cisd.openbis.generic.shared.IServer; -import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Experiment; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.AbstractExternalData; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.dto.MsInjectionSample; - -/** - * @author Franz-Josef Elmer - */ -public interface IProteomicsDataServiceInternal extends IServer -{ - /** - * Returns all samples of type MS_INJECTION in group MS_DATA which have a parent sample which the specified user is allow to read. - */ - @Transactional - public List<MsInjectionSample> listRawDataSamples(String sessionToken); - - /** - * Returns all samples of type MS_INJECTION in group MS_DATA which have a parent sample. - */ - @Transactional - public List<MsInjectionSample> listAllRawDataSamples(String sessionToken); - - @Deprecated - @Transactional - public void processRawData(String sessionToken, String dataSetProcessingKey, - long[] rawDataSampleIDs, String dataSetType); - - @Transactional - public void processDataSets(String sessionToken, String dataSetProcessingKey, - List<String> dataSetCodes); - - @Transactional - public List<Experiment> listExperiments(String sessionToken, String experimentTypeCode); - - @Transactional - public List<AbstractExternalData> listDataSetsByExperiment(String sessionToken, TechId experimentID); - - @Transactional - public void processProteinResultDataSets(String sessionToken, String dataSetProcessingKey, - String experimentTypeCode, long[] searchExperimentIDs); - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/ProbabilityToFDRCalculator.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/ProbabilityToFDRCalculator.java deleted file mode 100644 index ebb6dbd9dd26a637d2f9beba2c77870cd36639d5..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/ProbabilityToFDRCalculator.java +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.shared; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; - -public final class ProbabilityToFDRCalculator -{ - private static final class MappingEntry implements Comparable<ProbabilityToFDRCalculator.MappingEntry> - { - private final double probability; - - private final double fdr; - - MappingEntry(double probability, double fdr) - { - this.probability = probability; - this.fdr = fdr; - } - - @Override - public int compareTo(ProbabilityToFDRCalculator.MappingEntry that) - { - return probability < that.probability ? -1 : (probability > that.probability ? 1 - : 0); - } - - @Override - public String toString() - { - return probability + " = " + fdr; - } - } - - private final List<ProbabilityToFDRCalculator.MappingEntry> mappingEntries = new ArrayList<ProbabilityToFDRCalculator.MappingEntry>(); - - public void add(double probability, double falseDiscoveryRate) - { - mappingEntries.add(new MappingEntry(probability, falseDiscoveryRate)); - } - - public void init() - { - Collections.sort(mappingEntries); - } - - public double calculateFDR(double probability) - { - if (mappingEntries.isEmpty()) - { - return Double.NaN; - } - int index = Collections.binarySearch(mappingEntries, new MappingEntry(probability, 0)); - if (index >= 0) - { - return mappingEntries.get(index).fdr; - } - // calculate by linear interpolation - int index1 = -index - 1; - int index0 = index1 - 1; - assert index0 >= 0; - ProbabilityToFDRCalculator.MappingEntry m0 = mappingEntries.get(index0); - ProbabilityToFDRCalculator.MappingEntry m1 = mappingEntries.get(index1); - double scale = (m1.fdr - m0.fdr) / (m1.probability - m0.probability); - return m0.fdr + scale * (probability - m0.probability); - } -} \ No newline at end of file diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/ResourceNames.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/ResourceNames.java deleted file mode 100644 index e1d3f6edb57c908b431f758328220de66f12db59..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/ResourceNames.java +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.shared; - -/** - * @author Franz-Josef Elmer - */ -public class ResourceNames -{ - private ResourceNames() - { - } - - public final static String PROTEOMICS_PLUGIN_SERVICE = "proteomics-plugin-service"; - - public final static String PROTEOMICS_PLUGIN_SERVER = "proteomics-plugin-server"; - - public final static String PROTEOMICS_RAW_DATA_SERVICE_WEB = "proteomics-data-service-web"; - - public final static String PROTEOMICS_DAO_FACTORY = "proteomics-dao-factory"; - - public final static String PROTEOMICS_BO_FACTORY = "proteomics-bo-factory"; - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/api/v1/IProteomicsDataService.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/api/v1/IProteomicsDataService.java deleted file mode 100644 index ec18a32bb19cde8b5826648dfe2703e5f0d34ac8..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/api/v1/IProteomicsDataService.java +++ /dev/null @@ -1,133 +0,0 @@ -/* - * Copyright 2010 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.shared.api.v1; - -import java.util.List; - -import org.springframework.transaction.annotation.Transactional; - -import ch.systemsx.cisd.common.api.IRpcService; -import ch.systemsx.cisd.openbis.plugin.proteomics.client.api.v1.IProteomicsDataApiFacade; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.api.v1.dto.DataSet; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.api.v1.dto.DataStoreServerProcessingPluginInfo; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.api.v1.dto.Experiment; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.api.v1.dto.MsInjectionDataInfo; - -/** - * Interface used by {@link IProteomicsDataApiFacade}. - * - * @author Franz-Josef Elmer - */ -public interface IProteomicsDataService extends IRpcService -{ - /** - * Name of this service for which it is registered at the RPC name server. - */ - public static final String SERVICE_NAME = "proteomics-data"; - - /** - * Service part of the URL to access this service remotely. - */ - public static final String SERVER_URL = "/rmi-" + SERVICE_NAME + "-v1"; - - /** - * Tries to authenticate specified user with specified password. Returns session token if succeeded otherwise <code>null</code> is returned. - */ - @Transactional - public String tryToAuthenticateAtRawDataServer(String userID, String userPassword); - - /** - * Logout the session with the specified session token. - */ - @Transactional - public void logout(String sessionToken); - - /** - * Returns all samples of type MS_INJECTION in space MS_DATA which have a parent sample which the specified user is allowed to read. - */ - @Transactional - public List<MsInjectionDataInfo> listRawDataSamples(String sessionToken, String userID); - - /** - * Returns all samples of type MS_INJECTION in space MS_DATA which have a parent sample. - */ - @Transactional - public List<MsInjectionDataInfo> listAllRawDataSamples(String sessionToken, String userID); - - /** - * Lists all processing plugins on DSS. - */ - @Transactional - public List<DataStoreServerProcessingPluginInfo> listDataStoreServerProcessingPluginInfos( - String sessionToken); - - /** - * Processes the data sets of specified samples by the DSS processing plug-in of specified key for the specified user. Implementations should - * check that the specified user is allowed to read specified samples. - */ - @Deprecated - @Transactional - public void processingRawData(String sessionToken, String userID, String dataSetProcessingKey, - long[] rawDataSampleIDs, String dataSetType); - - /** - * Processes the specified data sets by the DSS processing plug-in of specified key for the specified user. Implementations should check that the - * specified user is allowed to read specified data sets. - */ - @Transactional - public void processDataSets(String sessionToken, String userID, String dataSetProcessingKey, - List<String> dataSetCodes); - - /** - * Returns all experiments of type <tt>MS_SEARCH</tt> which the specified user is allowed to read. - */ - @Deprecated - @Transactional - public List<Experiment> listSearchExperiments(String sessionToken, String userID); - - /** - * Returns all experiments of specified type which the specified user is allowed to read. - */ - @Transactional - public List<Experiment> listExperiments(String sessionToken, String userID, - String experimentTypeCode); - - /** - * Returns all data sets of specified experiment which the specified user is allowed to read. - */ - @Transactional - public List<DataSet> listDataSetsByExperiment(String sessionToken, String userID, - long experimentID); - - /** - * Processes the data sets of specified experiments of type <tt>MS_SEARCH</tt> by the DSS processing plug-in of specified key for the specified - * user. It will be checked if the experiments are of search experiments and if the user is allowed to read them. - */ - @Deprecated - @Transactional - public void processSearchData(String sessionToken, String userID, String dataSetProcessingKey, - long[] searchExperimentIDs); - - /** - * Processes the data sets of specified experiments by the DSS processing plug-in of specified key for the specified user. It will be checked if - * the experiments are of specified type and if the user is allowed to read them. - */ - @Transactional - public void processProteinResultDataSets(String sessionToken, String userID, - String dataSetProcessingKey, String experimentTypeCode, long[] experimentIDs); - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/api/v1/dto/DataSet.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/api/v1/dto/DataSet.java deleted file mode 100644 index c26386280c099379efd4114fbd7cc8a658e1467a..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/api/v1/dto/DataSet.java +++ /dev/null @@ -1,114 +0,0 @@ -/* - * Copyright 2010 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.shared.api.v1.dto; - -import java.io.Serializable; -import java.util.Date; -import java.util.HashSet; -import java.util.Map; -import java.util.Set; - -/** - * Date Set bean with properties, children and parents. - * - * @author Franz-Josef Elmer - */ -public class DataSet implements Serializable -{ - private static final long serialVersionUID = 1L; - - private long id; - - private String code; - - private String type; - - private Date registrationDate; - - private Map<PropertyKey, Serializable> properties; - - private Set<DataSet> parents = new HashSet<DataSet>(); - - private Set<DataSet> children = new HashSet<DataSet>(); - - public final long getId() - { - return id; - } - - public final void setId(long id) - { - this.id = id; - } - - public final String getCode() - { - return code; - } - - public final void setCode(String code) - { - this.code = code; - } - - public final String getType() - { - return type; - } - - public final void setType(String type) - { - this.type = type; - } - - public final Date getRegistrationDate() - { - return registrationDate; - } - - public final void setRegistrationDate(Date registrationDate) - { - this.registrationDate = registrationDate; - } - - public final Map<PropertyKey, Serializable> getProperties() - { - return properties; - } - - public final void setProperties(Map<PropertyKey, Serializable> properties) - { - this.properties = properties; - } - - public final Set<DataSet> getParents() - { - return parents; - } - - public final Set<DataSet> getChildren() - { - return children; - } - - public void addChild(DataSet child) - { - getChildren().add(child); - child.getParents().add(this); - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/api/v1/dto/DataStoreServerProcessingPluginInfo.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/api/v1/dto/DataStoreServerProcessingPluginInfo.java deleted file mode 100644 index 2f1ed5b2a11849f01edd94f491048f6e1d4ea526..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/api/v1/dto/DataStoreServerProcessingPluginInfo.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright 2010 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.shared.api.v1.dto; - -import java.io.Serializable; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; - -/** - * Information about a processing plugin on a Data Store Server (DSS). - * - * @author Franz-Josef Elmer - */ -public class DataStoreServerProcessingPluginInfo implements Serializable -{ - - private static final long serialVersionUID = 1L; - - private final String key; - - private final String label; - - private final List<String> datasetTypeCodes; - - /** - * Create a new instance for specified key, label and data set type codes. - */ - public DataStoreServerProcessingPluginInfo(String key, String label, List<String> datasetTypeCodes) - { - this.key = key; - this.label = label; - this.datasetTypeCodes = Collections.unmodifiableList(new ArrayList<String>(datasetTypeCodes)); - } - - /** - * Returns a unique key of the plugin. - */ - public String getKey() - { - return key; - } - - /** - * Returns a human readable name of the plugin. - */ - public String getLabel() - { - return label; - } - - /** - * Returns a list data set type codes for all data sets for which the plugin is available. - */ - public List<String> getDatasetTypeCodes() - { - return datasetTypeCodes; - } -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/api/v1/dto/Experiment.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/api/v1/dto/Experiment.java deleted file mode 100644 index 22280ab490fde7a9b0203fe00bdd358fe3c75168..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/api/v1/dto/Experiment.java +++ /dev/null @@ -1,104 +0,0 @@ -/* - * Copyright 2010 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.shared.api.v1.dto; - -import java.io.Serializable; -import java.util.Date; -import java.util.Map; - -/** - * Experiment bean with properties. - * - * @author Franz-Josef Elmer - */ -public class Experiment implements Serializable -{ - private static final long serialVersionUID = 1L; - - private long id; - - private String spaceCode; - - private String projectCode; - - private String code; - - private Date registrationDate; - - private Map<PropertyKey, Serializable> properties; - - public final long getId() - { - return id; - } - - public final void setId(long id) - { - this.id = id; - } - - public final String getSpaceCode() - { - return spaceCode; - } - - public final void setSpaceCode(String spaceCode) - { - this.spaceCode = spaceCode; - } - - public final String getProjectCode() - { - return projectCode; - } - - public final void setProjectCode(String projectCode) - { - this.projectCode = projectCode; - } - - public final String getCode() - { - return code; - } - - public final void setCode(String code) - { - this.code = code; - } - - public final Date getRegistrationDate() - { - return registrationDate; - } - - public final void setRegistrationDate(Date registrationDate) - { - this.registrationDate = registrationDate; - } - - public final Map<PropertyKey, Serializable> getProperties() - { - return properties; - } - - public final void setProperties(Map<PropertyKey, Serializable> properties) - { - this.properties = properties; - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/api/v1/dto/MsInjectionDataInfo.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/api/v1/dto/MsInjectionDataInfo.java deleted file mode 100644 index 5ad6c9f5383183d28b399777bc4896e9dd07e5f4..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/api/v1/dto/MsInjectionDataInfo.java +++ /dev/null @@ -1,172 +0,0 @@ -/* - * Copyright 2010 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.shared.api.v1.dto; - -import java.io.Serializable; -import java.util.Date; -import java.util.Map; -import java.util.Set; - -/** - * Informations about an MS_INJECTION sample and its related biological sample. There are attributes for - * <ul> - * <li>MS_INJECTION sample: ID, properties, code and registration date - * <li>Biological sample: identifier and properties - * <li>Biological experiment (i.e. experiment of biological sample) if present: identifier and properties - * <li>Registration dates of the most recently registered data sets for each data set type - * <li>All data sets including the derived ones of the MS_INJECTION sample with their type, registration date, and properties. - * </ul> - * - * @author Franz-Josef Elmer - */ -public class MsInjectionDataInfo implements Serializable -{ - private static final long serialVersionUID = 1L; - - private long msInjectionSampleID; - - private String msInjectionSampleCode; - - private Date msInjectionSampleRegistrationDate; - - private Map<PropertyKey, Serializable> msInjectionSampleProperties; - - private long biologicalSampleID; - - private String biologicalSampleIdentifier; - - private String biologicalExperimentIdentifier; - - private Experiment biologicalExperiment; - - private Map<PropertyKey, Serializable> biologicalSampleProperties; - - private Set<DataSet> dataSets; - - private Map<String, Date> latestDataSetRegistrationDates; - - public long getMsInjectionSampleID() - { - return msInjectionSampleID; - } - - public void setMsInjectionSampleID(long msInjectionSampleID) - { - this.msInjectionSampleID = msInjectionSampleID; - } - - public String getMsInjectionSampleCode() - { - return msInjectionSampleCode; - } - - public void setMsInjectionSampleCode(String msInjectionSampleCode) - { - this.msInjectionSampleCode = msInjectionSampleCode; - } - - public Date getMsInjectionSampleRegistrationDate() - { - return msInjectionSampleRegistrationDate; - } - - public void setMsInjectionSampleRegistrationDate(Date msInjectionSampleRegistrationDate) - { - this.msInjectionSampleRegistrationDate = msInjectionSampleRegistrationDate; - } - - public Map<PropertyKey, Serializable> getMsInjectionSampleProperties() - { - return msInjectionSampleProperties; - } - - public void setMsInjectionSampleProperties( - Map<PropertyKey, Serializable> msInjectionSampleProperties) - { - this.msInjectionSampleProperties = msInjectionSampleProperties; - } - - public long getBiologicalSampleID() - { - return biologicalSampleID; - } - - public void setBiologicalSampleID(long biologicalSampleID) - { - this.biologicalSampleID = biologicalSampleID; - } - - public String getBiologicalSampleIdentifier() - { - return biologicalSampleIdentifier; - } - - public void setBiologicalSampleIdentifier(String biologicalSampleIdentifier) - { - this.biologicalSampleIdentifier = biologicalSampleIdentifier; - } - - public final String getBiologicalExperimentIdentifier() - { - return biologicalExperimentIdentifier; - } - - public final void setBiologicalExperimentIdentifier(String biologicalExperimentIdentifier) - { - this.biologicalExperimentIdentifier = biologicalExperimentIdentifier; - } - - public final Experiment getBiologicalExperiment() - { - return biologicalExperiment; - } - - public final void setBiologicalExperiment(Experiment biologicalExperiment) - { - this.biologicalExperiment = biologicalExperiment; - } - - public Map<PropertyKey, Serializable> getBiologicalSampleProperties() - { - return biologicalSampleProperties; - } - - public void setBiologicalSampleProperties(Map<PropertyKey, Serializable> biologicalSampleProperties) - { - this.biologicalSampleProperties = biologicalSampleProperties; - } - - public final Set<DataSet> getDataSets() - { - return dataSets; - } - - public final void setDataSets(Set<DataSet> dataSets) - { - this.dataSets = dataSets; - } - - public Map<String, Date> getLatestDataSetRegistrationDates() - { - return latestDataSetRegistrationDates; - } - - public void setLatestDataSetRegistrationDates(Map<String, Date> latestDataSetRegistrationDates) - { - this.latestDataSetRegistrationDates = latestDataSetRegistrationDates; - } -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/api/v1/dto/PropertyKey.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/api/v1/dto/PropertyKey.java deleted file mode 100644 index e38c444fc02da0b9bd8d02e56409a0efe018254f..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/api/v1/dto/PropertyKey.java +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Copyright 2010 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.shared.api.v1.dto; - -import java.io.Serializable; - -/** - * Immutable class of a property key. Two instances are equal if their IDs are equal. - * - * @author Franz-Josef Elmer - */ -public final class PropertyKey implements Serializable -{ - - private static final long serialVersionUID = 1L; - - private final String id; - - private final String label; - - /** - * Creates a new instance for specified ID and label. - */ - public PropertyKey(String id, String label) - { - this.id = id; - this.label = label; - } - - /** - * Returns the ID. - */ - public String getId() - { - return id; - } - - /** - * Returns the label. - */ - public String getLabel() - { - return label; - } - - @Override - public boolean equals(Object obj) - { - if (this == obj) - { - return true; - } - if (obj instanceof PropertyKey == false) - { - return false; - } - PropertyKey key = (PropertyKey) obj; - return key.id.equals(id); - } - - @Override - public int hashCode() - { - return id.hashCode(); - } - - /** - * Renders this key in the form <code><label>[<id>]</code>. - */ - @Override - public String toString() - { - return label + "[" + id + "]"; - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/api/v1/dto/package.html b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/api/v1/dto/package.html deleted file mode 100644 index 0bdd5dde03bf0939dc3fcf4e4e28d6bb781f9085..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/api/v1/dto/package.html +++ /dev/null @@ -1,5 +0,0 @@ -<html> -<body> -Data Transfer Objects -</body> -</html> \ No newline at end of file diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/basic/CommonConstants.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/basic/CommonConstants.java deleted file mode 100644 index bc01bc3b1d9eac4933de1895889b56cb9917ab2b..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/basic/CommonConstants.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright 2011 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic; - -/** - * Commons constants used in DSS and AS. - * - * @author Franz-Josef Elmer - */ -public class CommonConstants -{ - - public static final String MS_INJECTION_SAMPLE_TYPE_CODE = "MS_INJECTION"; - - public static final String BIOLOGICAL_SAMPLE_PREFIX = "BIO"; - - public static final String MS_DATA_SPACE = "MS_DATA"; - - public static final String PROT_RESULT_DATA_SET_TYPE = "PROT_RESULT"; - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/basic/dto/AbundanceColumnDefinition.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/basic/dto/AbundanceColumnDefinition.java deleted file mode 100644 index b5283af313987688e2115bc7adae0278bbe48e87..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/basic/dto/AbundanceColumnDefinition.java +++ /dev/null @@ -1,111 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto; - -import java.io.Serializable; -import java.util.ArrayList; -import java.util.List; - -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ServiceVersionHolder; - -/** - * @author Franz-Josef Elmer - */ -public class AbundanceColumnDefinition implements Serializable, - Comparable<AbundanceColumnDefinition> -{ - private static final long serialVersionUID = ServiceVersionHolder.VERSION; - - private List<Long> sampleIDs = new ArrayList<Long>(1); - - private String sampleCode; - - private List<Treatment> treatments; - - public final long getID() - { - long id = 0; - for (Long sampleID : sampleIDs) - { - id = 37 * id + sampleID; - } - return id; - } - - public final List<Long> getSampleIDs() - { - return sampleIDs; - } - - public final void addSampleIDsOf(AbundanceColumnDefinition definition) - { - sampleIDs.addAll(definition.getSampleIDs()); - } - - public final void addSampleID(long sampleID) - { - sampleIDs.add(sampleID); - } - - public final String getSampleCode() - { - return sampleCode; - } - - public final void setSampleCode(String sampleCode) - { - this.sampleCode = sampleCode; - } - - public final List<Treatment> getTreatments() - { - return treatments; - } - - public final void setTreatments(List<Treatment> treatments) - { - this.treatments = treatments; - } - - @Override - public int compareTo(AbundanceColumnDefinition that) - { - if (this.treatments != null && that.treatments != null) - { - for (int i = 0, n = Math.min(this.treatments.size(), that.treatments.size()); i < n; i++) - { - Treatment thisTreatment = this.treatments.get(i); - Treatment thatTreatment = that.treatments.get(i); - int diff = thisTreatment.compareTo(thatTreatment); - if (diff != 0) - { - return diff; - } - } - int sizeDiff = this.treatments.size() - that.treatments.size(); - if (sizeDiff != 0) - { - return sizeDiff; - } - } - if (this.sampleCode != null && that.sampleCode != null) - { - return this.sampleCode.compareTo(that.sampleCode); - } - return 0; - } -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/basic/dto/AccessionNumberProvider.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/basic/dto/AccessionNumberProvider.java deleted file mode 100644 index 9b3c2dc7d97db56b9ba9470640969ff9c9b3671a..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/basic/dto/AccessionNumberProvider.java +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Copyright 2010 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto; - -import java.io.Serializable; - -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ServiceVersionHolder; - -/** - * @author Franz-Josef Elmer - */ -public class AccessionNumberProvider implements Serializable -{ - private static final long serialVersionUID = ServiceVersionHolder.VERSION; - - private String accessionNumberType; - - private String accessionNumber; - - public final String getAccessionNumberType() - { - return accessionNumberType; - } - - public final void setAccessionNumberType(String accessionNumberType) - { - this.accessionNumberType = accessionNumberType; - } - - public final String getAccessionNumber() - { - return accessionNumber; - } - - public final void setAccessionNumber(String accessionNumber) - { - this.accessionNumber = accessionNumber; - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/basic/dto/AggregateFunction.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/basic/dto/AggregateFunction.java deleted file mode 100644 index cf515ba4cbb9b106ddd62df6e7053a5cef73c822..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/basic/dto/AggregateFunction.java +++ /dev/null @@ -1,114 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto; - -import java.io.Serializable; -import java.util.Arrays; - -/** - * Aggregate functions. - * - * @author Franz-Josef Elmer - */ -public enum AggregateFunction implements Serializable -{ - MEAN("mean") - { - @Override - public double aggregate(double[] values) - { - return SUM.aggregate(values) / values.length; - } - }, - MEDIAN("median") - { - @Override - public double aggregate(double[] values) - { - Arrays.sort(values); - int i = values.length / 2; - return values.length % 2 == 0 ? (values[i - 1] + values[i]) / 2 : values[i]; - } - }, - SUM("sum") - { - @Override - public double aggregate(double[] values) - { - double sum = 0; - for (double value : values) - { - sum += value; - } - return sum; - } - }, - MIN("minimum") - { - @Override - public double aggregate(double[] values) - { - double min = Double.MAX_VALUE; - for (double value : values) - { - min = Math.min(min, value); - } - return min; - } - }, - MAX("maximum") - { - @Override - public double aggregate(double[] values) - { - double max = -Double.MAX_VALUE; - for (double value : values) - { - max = Math.max(max, value); - } - return max; - } - }, - COUNT("count") - { - @Override - public double aggregate(double[] values) - { - return values.length; - } - }, - ; - - private final String label; - - private AggregateFunction(String label) - { - this.label = label; - } - - public final String getLabel() - { - return label; - } - - /** - * Aggregates the specified array of numbers to one number. - * - * @param values an array with at least one value. - */ - public abstract double aggregate(double[] values); -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/basic/dto/AminoAcid.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/basic/dto/AminoAcid.java deleted file mode 100644 index 65afabc07f7195e3d22c43153abe88d11098eb03..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/basic/dto/AminoAcid.java +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright 2011 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto; - -/** - * Amino acid symbols and names. - * - * @author Franz-Josef Elmer - */ -public enum AminoAcid -{ - A("Alanine", "Ala"), - R("Arginine", "Arg"), - N("Asparagine", "Asn"), - D("Aspartic acid", "Asp"), - C("Cysteine", "Cys"), - E("Glutamic acid", "Glu"), - Q("Glutamine", "Gln"), - G("Glycine", "Gly"), - H("Histidine", "His"), - I("Isoleucine", "Ile"), - L("Leucine", "Leu"), - K("Lysine", "Lys"), - M("Methionine", "Met"), - F("Phenylalanine", "Phe"), - P("Proline", "Pro"), - S("Serine", "Ser"), - T("Threonine", "Thr"), - W("Tryptophan", "Trp"), - Y("Tyrosine", "Tyr"), - V("Valine", "Val"); - - private final String name; - - private final String longSymbol; - - private AminoAcid(String name, String longSymbol) - { - this.name = name; - this.longSymbol = longSymbol; - } - - public String getName() - { - return name; - } - - public String getLongSymbol() - { - return longSymbol; - } - -} \ No newline at end of file diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/basic/dto/DataSetProtein.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/basic/dto/DataSetProtein.java deleted file mode 100644 index 24bcfe9de562a1785b2e33ff3ef35198e959b2c9..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/basic/dto/DataSetProtein.java +++ /dev/null @@ -1,103 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto; - -import java.io.Serializable; - -import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ServiceVersionHolder; - -/** - * @author Franz-Josef Elmer - */ -public class DataSetProtein implements Serializable -{ - private static final long serialVersionUID = ServiceVersionHolder.VERSION; - - private String dataSetPermID; - - private TechId dataSetID; - - private TechId proteinID; - - private String sequenceName; - - private int peptideCount; - - private double falseDiscoveryRate; - - public final String getDataSetPermID() - { - return dataSetPermID; - } - - public final void setDataSetPermID(String dataSetPermID) - { - this.dataSetPermID = dataSetPermID; - } - - public final TechId getDataSetID() - { - return dataSetID; - } - - public final void setDataSetID(TechId dataSetID) - { - this.dataSetID = dataSetID; - } - - public final TechId getProteinID() - { - return proteinID; - } - - public final void setProteinID(TechId proteinID) - { - this.proteinID = proteinID; - } - - public final String getSequenceName() - { - return sequenceName; - } - - public final void setSequenceName(String sequenceName) - { - this.sequenceName = sequenceName; - } - - public final int getPeptideCount() - { - return peptideCount; - } - - public final void setPeptideCount(int peptideCount) - { - this.peptideCount = peptideCount; - } - - public final double getFalseDiscoveryRate() - { - return falseDiscoveryRate; - } - - public final void setFalseDiscoveryRate(double falseDiscoveryRate) - { - this.falseDiscoveryRate = falseDiscoveryRate; - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/basic/dto/IBasicProteinInfo.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/basic/dto/IBasicProteinInfo.java deleted file mode 100644 index 03174e43498357553b6db4edfad417c90206c7dc..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/basic/dto/IBasicProteinInfo.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright 2011 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto; - -import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; - -/** - * Common interface of DTOs with protein informations. - * - * @author Franz-Josef Elmer - */ -public interface IBasicProteinInfo -{ - - public TechId getId(); - - public String getAccessionNumber(); - - public String getDescription(); - -} \ No newline at end of file diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/basic/dto/IndistinguishableProteinInfo.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/basic/dto/IndistinguishableProteinInfo.java deleted file mode 100644 index 2aa9840b46eefdf7138b2d59f81164342c9adcaa..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/basic/dto/IndistinguishableProteinInfo.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright 2010 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto; - -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ServiceVersionHolder; - -/** - * @author Franz-Josef Elmer - */ -public class IndistinguishableProteinInfo extends AccessionNumberProvider -{ - private static final long serialVersionUID = ServiceVersionHolder.VERSION; - - private String sequence; - - private String description; - - private double coverage; - - public final String getSequence() - { - return sequence; - } - - public final void setSequence(String sequence) - { - this.sequence = sequence; - } - - public final String getDescription() - { - return description; - } - - public final void setDescription(String description) - { - this.description = description; - } - - public void setCoverage(double coverage) - { - this.coverage = coverage; - } - - public double getCoverage() - { - return coverage; - } -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/basic/dto/Occurrence.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/basic/dto/Occurrence.java deleted file mode 100644 index d6d48313e6914c049f1381fc075d75f40b70dfef..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/basic/dto/Occurrence.java +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto; - -/** - * The occurrence of a word in a text. Occurrences are comparable by their start indexes. - * - * @author Tomasz Pylak - */ -public class Occurrence implements Comparable<Occurrence> -{ - private final String word; - - private final int startIndex; - - /** - * Creates a new instance of the specified word which appears at the specified start index. - */ - public Occurrence(String word, int startIndex) - { - this.word = word; - this.startIndex = startIndex; - } - - public String getWord() - { - return word; - } - - public int getStartIndex() - { - return startIndex; - } - - public int getEndIndex() - { - return startIndex + word.length() - 1; - } - - @Override - public int compareTo(Occurrence o) - { - return getStartIndex() - o.getStartIndex(); - } - - @Override - public String toString() - { - return "[" + word + "@" + startIndex + "]"; - } -} \ No newline at end of file diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/basic/dto/OccurrenceUtil.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/basic/dto/OccurrenceUtil.java deleted file mode 100644 index 37ec915c463858a3809ecd3fa9fcaf6067c941b0..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/basic/dto/OccurrenceUtil.java +++ /dev/null @@ -1,91 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.List; - -/** - * Helper class for calculating peptide on protein coverage. - * - * @author Franz-Josef Elmer - */ -public class OccurrenceUtil -{ - /** - * Returns a list of non-overlapping sequences built by the specified peptides covering the specified protein. - */ - public static List<Occurrence> getCoverage(String protein, Collection<String> peptides) - { - ArrayList<Occurrence> list = new ArrayList<Occurrence>(); - List<Occurrence> sortedList = calcSortedOccurrences(protein, peptides); - if (sortedList.isEmpty() == false) - { - Occurrence current = sortedList.get(0); - for (int i = 1; i < sortedList.size(); i++) - { - String currentPeptide = current.getWord(); - Occurrence next = sortedList.get(i); - int diff = next.getStartIndex() - current.getStartIndex(); - if (current.getWord().length() < diff) - { - list.add(current); - current = next; - } else if (current.getEndIndex() < next.getEndIndex()) - { - String mergedPeptides = currentPeptide.substring(0, diff) + next.getWord(); - current = new Occurrence(mergedPeptides, current.getStartIndex()); - } - } - list.add(current); - } - return list; - } - - // calculates a list of all words occurences, sorts it be starting position - private static List<Occurrence> calcSortedOccurrences(String protein, Collection<String> peptides) - { - List<Occurrence> result = new ArrayList<Occurrence>(); - for (String word : peptides) - { - result.addAll(findAllOccurrences(protein, word)); - } - Collections.sort(result); - return result; - } - - public static List<Occurrence> findAllOccurrences(String protein, String peptide) - { - List<Occurrence> result = new ArrayList<Occurrence>(); - int startIndex = 0; - while (true) - { - int occurrenceIndex = protein.indexOf(peptide, startIndex); - if (occurrenceIndex == -1) - { - break; - } - result.add(new Occurrence(peptide, occurrenceIndex)); - startIndex = occurrenceIndex + 1; // maybe the word overlaps with itself? - } - Collections.sort(result); - return result; - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/basic/dto/Peptide.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/basic/dto/Peptide.java deleted file mode 100644 index d38fe54e9d78182e6c908a651166b0a2b1853613..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/basic/dto/Peptide.java +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto; - -import java.io.Serializable; -import java.util.ArrayList; -import java.util.List; - -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ServiceVersionHolder; - -/** - * Peptide sequence and optional modifications. - * - * @author Tomasz Pylak - */ -public class Peptide implements Serializable -{ - private static final long serialVersionUID = ServiceVersionHolder.VERSION; - - private String sequence; - - private List<PeptideModification> modifications = new ArrayList<PeptideModification>(); - - public String getSequence() - { - return sequence; - } - - public void setSequence(String sequence) - { - this.sequence = sequence; - } - - public List<PeptideModification> getModifications() - { - return modifications; - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/basic/dto/PeptideModification.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/basic/dto/PeptideModification.java deleted file mode 100644 index 4a16ac6928c34a53f90e8c35cad0753aa3ac7e27..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/basic/dto/PeptideModification.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright 2011 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto; - -import java.io.Serializable; - -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ServiceVersionHolder; - -/** - * Position and mass of a modified amino acid in a peptide. - * - * @author Franz-Josef Elmer - */ -public class PeptideModification implements Serializable -{ - private static final long serialVersionUID = ServiceVersionHolder.VERSION; - - private int position; - - private double mass; - - public int getPosition() - { - return position; - } - - public void setPosition(int position) - { - this.position = position; - } - - public double getMass() - { - return mass; - } - - public void setMass(double mass) - { - this.mass = mass; - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/basic/dto/ProteinByExperiment.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/basic/dto/ProteinByExperiment.java deleted file mode 100644 index 842a9de87b678669ce9cd6cc11046bfa3d530f12..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/basic/dto/ProteinByExperiment.java +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto; - -import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ServiceVersionHolder; - -/** - * @author Franz-Josef Elmer - */ -public class ProteinByExperiment extends AccessionNumberProvider implements IBasicProteinInfo -{ - private static final long serialVersionUID = ServiceVersionHolder.VERSION; - - private TechId id; - - private String description; - - private ProteinDetails details; - - @Override - public final String getDescription() - { - return description; - } - - public final void setDescription(String description) - { - this.description = description; - } - - public ProteinDetails getDetails() - { - return details; - } - - public void setDetails(ProteinDetails details) - { - this.details = details; - } - - @Override - public final TechId getId() - { - return id; - } - - public final void setId(TechId id) - { - this.id = id; - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/basic/dto/ProteinDetails.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/basic/dto/ProteinDetails.java deleted file mode 100644 index 2edd1672ba6a1e4871f70de5798af47e8aab199f..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/basic/dto/ProteinDetails.java +++ /dev/null @@ -1,164 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto; - -import java.io.Serializable; -import java.util.List; - -import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ServiceVersionHolder; - -/** - * @author Tomasz Pylak - */ -public class ProteinDetails implements Serializable -{ - private static final long serialVersionUID = ServiceVersionHolder.VERSION; - - private String sequence; - - private String databaseNameAndVersion; - - private double probability; - - private double coverage; - - private double falseDiscoveryRate; - - private String dataSetPermID; - - private Long dataSetTechID; - - private String dataSetTypeCode; - - private TechId proteinID; - - private List<Peptide> peptides; - - private List<IndistinguishableProteinInfo> indistinguishableProteinInfos; - - public String getSequence() - { - return sequence; - } - - public void setSequence(String sequence) - { - this.sequence = sequence; - } - - public String getDatabaseNameAndVersion() - { - return databaseNameAndVersion; - } - - public void setDatabaseNameAndVersion(String databaseNameAndVersion) - { - this.databaseNameAndVersion = databaseNameAndVersion; - } - - public double getFalseDiscoveryRate() - { - return falseDiscoveryRate; - } - - public double getProbability() - { - return probability; - } - - public void setProbability(double probability) - { - this.probability = probability; - } - - public void setCoverage(double coverage) - { - this.coverage = coverage; - } - - public double getCoverage() - { - return coverage; - } - - public void setFalseDiscoveryRate(double falseDiscoveryRate) - { - this.falseDiscoveryRate = falseDiscoveryRate; - } - - public String getDataSetPermID() - { - return dataSetPermID; - } - - public void setDataSetPermID(String dataSetPermID) - { - this.dataSetPermID = dataSetPermID; - } - - public final TechId getProteinID() - { - return proteinID; - } - - public final void setProteinID(TechId proteinID) - { - this.proteinID = proteinID; - } - - public List<Peptide> getPeptides() - { - return peptides; - } - - public void setPeptides(List<Peptide> peptides) - { - this.peptides = peptides; - } - - public Long getDataSetTechID() - { - return dataSetTechID; - } - - public void setDataSetTechID(Long dataSetTechID) - { - this.dataSetTechID = dataSetTechID; - } - - public String getDataSetTypeCode() - { - return dataSetTypeCode; - } - - public void setDataSetTypeCode(String dataSetTypeCode) - { - this.dataSetTypeCode = dataSetTypeCode; - } - - public void setIndistinguishableProteinInfos( - List<IndistinguishableProteinInfo> indistinguishableProteinInfos) - { - this.indistinguishableProteinInfos = indistinguishableProteinInfos; - } - - public List<IndistinguishableProteinInfo> getIndistinguishableProteinInfos() - { - return indistinguishableProteinInfos; - } -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/basic/dto/ProteinInfo.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/basic/dto/ProteinInfo.java deleted file mode 100644 index 10c4a395c4e98dd957ef4eb30c66f965f7bdb72d..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/basic/dto/ProteinInfo.java +++ /dev/null @@ -1,119 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto; - -import java.io.Serializable; -import java.util.Map; - -import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ServiceVersionHolder; - -/** - * @author Franz-Josef Elmer - */ -public class ProteinInfo implements Serializable, IBasicProteinInfo -{ - private static final long serialVersionUID = ServiceVersionHolder.VERSION; - - private TechId id; - - private String accessionNumber; - - private TechId experimentID; - - private String dataSetPermID; - - private String description; - - private double coverage; - - private Map<Long, Double> abundances; - - @Override - public final TechId getId() - { - return id; - } - - public final void setId(TechId id) - { - this.id = id; - } - - public final TechId getExperimentID() - { - return experimentID; - } - - public final void setExperimentID(TechId experimentID) - { - this.experimentID = experimentID; - } - - public final String getDataSetPermID() - { - return dataSetPermID; - } - - public final void setDataSetPermID(String dataSetPermID) - { - this.dataSetPermID = dataSetPermID; - } - - @Override - public final String getAccessionNumber() - { - return accessionNumber; - } - - public final void setAccessionNumber(String accessionNumber) - { - this.accessionNumber = accessionNumber; - } - - @Override - public final String getDescription() - { - return description; - } - - public final void setDescription(String description) - { - this.description = description; - } - - public final Map<Long, Double> getAbundances() - { - return abundances; - } - - public final void setAbundances(Map<Long, Double> abundances) - { - this.abundances = abundances; - } - - public void setCoverage(double coverage) - { - this.coverage = coverage; - } - - public double getCoverage() - { - return coverage; - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/basic/dto/ProteinRelatedSample.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/basic/dto/ProteinRelatedSample.java deleted file mode 100644 index d1198c0e951183e160d238b9b1151ddc070c2c74..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/basic/dto/ProteinRelatedSample.java +++ /dev/null @@ -1,181 +0,0 @@ -/* - * Copyright 2011 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto; - -import java.io.Serializable; -import java.util.List; - -import ch.systemsx.cisd.openbis.generic.shared.basic.IEntityInformationHolderWithProperties; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.BasicEntityType; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityKind; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IEntityProperty; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ServiceVersionHolder; - -/** - * Sample related to a protein. Contains information about abundance and amino-acid modification. - * - * @author Franz-Josef Elmer - */ -public class ProteinRelatedSample implements Serializable, IEntityInformationHolderWithProperties -{ - private static final long serialVersionUID = ServiceVersionHolder.VERSION; - - private Long id; - - private String permId; - - private String code; - - private String identifier; - - private BasicEntityType entityType; - - private List<IEntityProperty> properties; - - private Double abundance; - - private char modifiedAminoAcid; - - private Long modificationPosition; - - private Double modificationMass; - - private Double modificationFraction; - - @Override - public Long getId() - { - return id; - } - - public void setId(Long id) - { - this.id = id; - } - - @Override - public String getPermId() - { - return permId; - } - - public void setPermId(String permId) - { - this.permId = permId; - } - - @Override - public String getCode() - { - return code; - } - - public void setCode(String code) - { - this.code = code; - } - - @Override - public BasicEntityType getEntityType() - { - return entityType; - } - - public void setEntityType(BasicEntityType entityType) - { - this.entityType = entityType; - } - - @Override - public String getIdentifier() - { - return identifier; - } - - public void setIdentifier(String identifier) - { - this.identifier = identifier; - } - - public Double getAbundance() - { - return abundance; - } - - public void setAbundance(Double abundance) - { - this.abundance = abundance; - } - - public char getModifiedAminoAcid() - { - return modifiedAminoAcid; - } - - public void setModifiedAminoAcid(char modifiedAminoAcid) - { - this.modifiedAminoAcid = modifiedAminoAcid; - } - - public Long getModificationPosition() - { - return modificationPosition; - } - - public void setModificationPosition(Long modificationPosition) - { - this.modificationPosition = modificationPosition; - } - - public Double getModificationMass() - { - return modificationMass; - } - - public void setModificationMass(Double modificationMass) - { - this.modificationMass = modificationMass; - } - - public Double getModificationFraction() - { - return modificationFraction; - } - - public void setModificationFraction(Double modificationFraction) - { - this.modificationFraction = modificationFraction; - } - - @Override - public EntityKind getEntityKind() - { - return EntityKind.SAMPLE; - } - - @Override - public List<IEntityProperty> getProperties() - { - return properties; - } - - public void setProperties(List<IEntityProperty> properties) - { - this.properties = properties; - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/basic/dto/ProteinSequence.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/basic/dto/ProteinSequence.java deleted file mode 100644 index 7f9a97bd49449a6fb2021f3e07971cce41443a49..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/basic/dto/ProteinSequence.java +++ /dev/null @@ -1,91 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto; - -import java.io.Serializable; - -import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ServiceVersionHolder; - -/** - * @author Franz-Josef Elmer - */ -public class ProteinSequence implements Serializable -{ - private static final long serialVersionUID = ServiceVersionHolder.VERSION; - - private String shortName; - - private TechId id; - - private TechId databaseID; - - private String sequence; - - private String databaseNameAndVersion; - - public final String getShortName() - { - return shortName; - } - - public final void setShortName(String version) - { - this.shortName = version; - } - - public final TechId getId() - { - return id; - } - - public final void setId(TechId id) - { - this.id = id; - } - - public final TechId getDatabaseID() - { - return databaseID; - } - - public final void setDatabaseID(TechId databaseID) - { - this.databaseID = databaseID; - } - - public final String getSequence() - { - return sequence; - } - - public final void setSequence(String sequence) - { - this.sequence = sequence; - } - - public final String getDatabaseNameAndVersion() - { - return databaseNameAndVersion; - } - - public final void setDatabaseNameAndVersion(String databaseNameAndVersion) - { - this.databaseNameAndVersion = databaseNameAndVersion; - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/basic/dto/ProteinSummary.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/basic/dto/ProteinSummary.java deleted file mode 100644 index db708980a9f4eb632357246a66845b9037bdb743..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/basic/dto/ProteinSummary.java +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto; - -import java.io.Serializable; - -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ServiceVersionHolder; - -/** - * @author Franz-Josef Elmer - */ -public class ProteinSummary implements Serializable -{ - private static final long serialVersionUID = ServiceVersionHolder.VERSION; - - private double fdr; - - private int proteinCount; - - private int decoyProteinCount; - - private int peptideCount; - - private int decoyPeptideCount; - - public double getFDR() - { - return fdr; - } - - public void setFDR(double fdr) - { - this.fdr = fdr; - } - - public int getProteinCount() - { - return proteinCount; - } - - public void setProteinCount(int proteinCount) - { - this.proteinCount = proteinCount; - } - - public int getPeptideCount() - { - return peptideCount; - } - - public void setPeptideCount(int peptideCount) - { - this.peptideCount = peptideCount; - } - - public void setDecoyProteinCount(int decoyProteinCount) - { - this.decoyProteinCount = decoyProteinCount; - } - - public int getDecoyProteinCount() - { - return decoyProteinCount; - } - - public void setDecoyPeptideCount(int decoyPeptideCount) - { - this.decoyPeptideCount = decoyPeptideCount; - } - - public int getDecoyPeptideCount() - { - return decoyPeptideCount; - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/basic/dto/RawDataSampleGridIDs.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/basic/dto/RawDataSampleGridIDs.java deleted file mode 100644 index 35e9064d0fbe5e776aca3c547235ac6525e919a3..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/basic/dto/RawDataSampleGridIDs.java +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright 2010 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto; - -/** - * @author Franz-Josef Elmer - */ -public class RawDataSampleGridIDs -{ - public static final String EXPERIMENT = "EXPERIMENT"; - - public static final String PARENT = "PARENT"; - - public static final String REGISTRATION_DATE = "REGISTRATION_DATE"; - - public static final String CODE = "CODE"; - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/basic/dto/SampleWithPropertiesAndAbundance.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/basic/dto/SampleWithPropertiesAndAbundance.java deleted file mode 100644 index a91dfd0f7861564d8fdd2a145017cf8263481c00..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/basic/dto/SampleWithPropertiesAndAbundance.java +++ /dev/null @@ -1,138 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto; - -import java.io.Serializable; -import java.util.List; - -import ch.systemsx.cisd.openbis.generic.shared.basic.IEntityInformationHolderWithPermId; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityKind; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityType; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IEntityPropertiesHolder; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IEntityProperty; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SampleType; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ServiceVersionHolder; - -/** - * @author Franz-Josef Elmer - */ -public class SampleWithPropertiesAndAbundance implements Serializable, - IEntityInformationHolderWithPermId, IEntityPropertiesHolder -{ - private static final long serialVersionUID = ServiceVersionHolder.VERSION; - - private Long id; - - private String permId; - - private String identifier; - - private String code; - - private SampleType sampleType; - - private List<IEntityProperty> properties; - - private double abundance; - - @Override - public final Long getId() - { - return id; - } - - public final void setId(Long id) - { - this.id = id; - } - - public final String getIdentifier() - { - return identifier; - } - - public final void setIdentifier(String identifier) - { - this.identifier = identifier; - } - - @Override - public final String getCode() - { - return code; - } - - public void setCode(final String code) - { - this.code = code; - } - - @Override - public EntityType getEntityType() - { - return getSampleType(); - } - - @Override - public EntityKind getEntityKind() - { - return EntityKind.SAMPLE; - } - - public SampleType getSampleType() - { - return sampleType; - } - - public void setSampleType(final SampleType sampleType) - { - this.sampleType = sampleType; - } - - @Override - public List<IEntityProperty> getProperties() - { - return properties; - } - - public final void setProperties(List<IEntityProperty> properties) - { - this.properties = properties; - } - - public final double getAbundance() - { - return abundance; - } - - public final void setAbundance(double abundance) - { - this.abundance = abundance; - } - - @Override - public String getPermId() - { - return permId; - } - - public void setPermId(String permId) - { - this.permId = permId; - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/basic/dto/Treatment.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/basic/dto/Treatment.java deleted file mode 100644 index 1b2e630e2b6b9f7af6424461b268e9f966ef0f5e..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/basic/dto/Treatment.java +++ /dev/null @@ -1,117 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto; - -import java.io.Serializable; - -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ServiceVersionHolder; - -/** - * @author Franz-Josef Elmer - */ -public class Treatment implements Serializable, Comparable<Treatment> -{ - private static final long serialVersionUID = ServiceVersionHolder.VERSION; - - private String value; - - private String type; - - private String typeCode; - - private String valueType; - - public final String getValue() - { - return value; - } - - public final void setValue(String value) - { - this.value = value; - } - - public final String getValueType() - { - return valueType; - } - - public final void setValueType(String valueType) - { - this.valueType = valueType; - } - - public final String getType() - { - return type; - } - - public final void setType(String type) - { - this.type = type; - } - - public final String getTypeCode() - { - return typeCode; - } - - public final void setTypeCode(String typeCode) - { - this.typeCode = typeCode; - } - - public final String getLabel() - { - return value + " " + type; - } - - @Override - public int compareTo(Treatment that) - { - int typeComparisonResult = this.type.toLowerCase().compareTo(that.type.toLowerCase()); - if (typeComparisonResult != 0) - { - return typeComparisonResult; - } - double thisNumber = convert(this.value); - double thatNumber = convert(that.value); - if (Double.isNaN(thisNumber) || Double.isNaN(thatNumber)) - { - return this.value.compareTo(that.value); - } - return Double.compare(thisNumber, thatNumber); - } - - private double convert(String numberOrString) - { - try - { - return Double.parseDouble(numberOrString); - } catch (NumberFormatException e) - { - return Double.NaN; - } - } - - @Override - public String toString() - { - return getLabel(); - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/dto/AbstractDTOWithID.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/dto/AbstractDTOWithID.java deleted file mode 100644 index 1151a854d381c9b4f9857a7e90cfaaf59827ce04..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/dto/AbstractDTOWithID.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.shared.dto; - -import java.io.Serializable; - -import net.lemnik.eodsql.ResultColumn; - -/** - * @author Franz-Josef Elmer - */ -abstract class AbstractDTOWithID implements Serializable -{ - private static final long serialVersionUID = 1L; - - @ResultColumn("id") - private long id; - - public final long getId() - { - return id; - } - - public final void setId(long id) - { - this.id = id; - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/dto/AbstractSample.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/dto/AbstractSample.java deleted file mode 100644 index e1759e519c657b0627f871b9118e85181ddb10c1..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/dto/AbstractSample.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright 2011 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.shared.dto; - -import net.lemnik.eodsql.ResultColumn; - -/** - * Abstract super class of sample. - * - * @author Franz-Josef Elmer - */ -public abstract class AbstractSample extends AbstractDTOWithID -{ - private static final long serialVersionUID = 1L; - - @ResultColumn("perm_id") - private String samplePermID; - - public final String getSamplePermID() - { - return samplePermID; - } - - public final void setSamplePermID(String samplePermID) - { - this.samplePermID = samplePermID; - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/dto/IdentifiedProtein.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/dto/IdentifiedProtein.java deleted file mode 100644 index 8ad58fd5700db6593e127446f22d7232b0c468d9..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/dto/IdentifiedProtein.java +++ /dev/null @@ -1,157 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.shared.dto; - -import net.lemnik.eodsql.ResultColumn; - -/** - * @author Franz-Josef Elmer - */ -public class IdentifiedProtein extends AbstractDTOWithID -{ - private static final long serialVersionUID = 1L; - - @ResultColumn("data_set_id") - private long dataSetID; - - @ResultColumn("data_set_perm_id") - private String dataSetPermID; - - @ResultColumn("protein_id") - private long proteinID; - - @ResultColumn("peptide_count") - private int peptideCount; - - @ResultColumn("amino_acid_sequence") - private String sequence; - - @ResultColumn("db_id") - private long databaseID; - - @ResultColumn("name_and_version") - private String databaseNameAndVersion; - - @ResultColumn("probability") - private double probability; - - @ResultColumn("coverage") - private double coverage; - - private double falseDiscoveryRate; - - public final String getDataSetPermID() - { - return dataSetPermID; - } - - public final void setDataSetPermID(String dataSetPermID) - { - this.dataSetPermID = dataSetPermID; - } - - public final int getPeptideCount() - { - return peptideCount; - } - - public final void setPeptideCount(int accessionNumber) - { - this.peptideCount = accessionNumber; - } - - public final String getSequence() - { - return sequence; - } - - public final void setSequence(String description) - { - this.sequence = description; - } - - public final long getDataSetID() - { - return dataSetID; - } - - public final void setDataSetID(long dataSetID) - { - this.dataSetID = dataSetID; - } - - public final long getProteinID() - { - return proteinID; - } - - public final void setProteinID(long proteinID) - { - this.proteinID = proteinID; - } - - public final double getProbability() - { - return probability; - } - - public final void setProbability(double probability) - { - this.probability = probability; - } - - public void setCoverage(double coverage) - { - this.coverage = coverage; - } - - public double getCoverage() - { - return coverage; - } - - public final double getFalseDiscoveryRate() - { - return falseDiscoveryRate; - } - - public final void setFalseDiscoveryRate(double falseDiscoveryRate) - { - this.falseDiscoveryRate = falseDiscoveryRate; - } - - public final long getDatabaseID() - { - return databaseID; - } - - public final void setDatabase(long databaseID) - { - this.databaseID = databaseID; - } - - public final String getDatabaseNameAndVersion() - { - return databaseNameAndVersion; - } - - public final void setDatabaseNameAndVersion(String databaseNameAndVersion) - { - this.databaseNameAndVersion = databaseNameAndVersion; - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/dto/IndistinguishableProtein.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/dto/IndistinguishableProtein.java deleted file mode 100644 index 874b525c03df1cd725b2711dea58bf3145a2f9aa..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/dto/IndistinguishableProtein.java +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Copyright 2010 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.shared.dto; - -import net.lemnik.eodsql.ResultColumn; - -/** - * @author Franz-Josef Elmer - */ -public class IndistinguishableProtein extends ProteinReference -{ - private static final long serialVersionUID = 1L; - - @ResultColumn("amino_acid_sequence") - private String sequence; - - @ResultColumn("coverage") - private double coverage; - - public void setSequence(String sequence) - { - this.sequence = sequence; - } - - public String getSequence() - { - return sequence; - } - - public void setCoverage(double coverage) - { - this.coverage = coverage; - } - - public double getCoverage() - { - return coverage; - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/dto/MsInjectionSample.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/dto/MsInjectionSample.java deleted file mode 100644 index 5f3b22888cc8a8242fdec322ce5fc55c1826bf90..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/dto/MsInjectionSample.java +++ /dev/null @@ -1,91 +0,0 @@ -/* - * Copyright 2010 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.shared.dto; - -import java.util.Collection; -import java.util.Date; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; - -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.AbstractExternalData; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample; - -/** - * @author Franz-Josef Elmer - */ -public class MsInjectionSample -{ - private final Sample sample; - - private final Map<String, AbstractExternalData> latestDataSets = new LinkedHashMap<String, AbstractExternalData>(); - - private final List<AbstractExternalData> dataSets; - - public MsInjectionSample(Sample sample, List<AbstractExternalData> dataSets) - { - this.sample = sample; - this.dataSets = dataSets; - add(dataSets); - } - - private void add(Collection<AbstractExternalData> datasets) - { - if (datasets != null) - { - for (AbstractExternalData dataSet : datasets) - { - addLatestDataSet(dataSet); - add(dataSet.getChildren()); - } - } - } - - public Sample getSample() - { - return sample; - } - - public final List<AbstractExternalData> getDataSets() - { - return dataSets; - } - - public Map<String, AbstractExternalData> getLatestDataSets() - { - return latestDataSets; - } - - private void addLatestDataSet(AbstractExternalData dataSet) - { - String dataSetTypeCode = dataSet.getDataSetType().getCode(); - Date registrationDate = dataSet.getRegistrationDate(); - AbstractExternalData latestDataSet = latestDataSets.get(dataSetTypeCode); - if (latestDataSet == null - || latestDataSet.getRegistrationDate().getTime() < registrationDate.getTime()) - { - latestDataSets.put(dataSetTypeCode, dataSet); - } - } - - @Override - public String toString() - { - return sample.getIdentifier() + ":" + latestDataSets; - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/dto/PeptideWithModification.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/dto/PeptideWithModification.java deleted file mode 100644 index 9258feb2f41aa0d02bab574099f4eca661828354..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/dto/PeptideWithModification.java +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.shared.dto; - -import net.lemnik.eodsql.ResultColumn; - -/** - * @author Franz-Josef Elmer - */ -public class PeptideWithModification extends AbstractDTOWithID -{ - private static final long serialVersionUID = 1L; - - @ResultColumn("sequence") - private String sequence; - - @ResultColumn("pos") - private Integer position; - - @ResultColumn("mass") - private Double mass; - - public final String getSequence() - { - return sequence; - } - - public final void setSequence(String sequence) - { - this.sequence = sequence; - } - - public Integer getPosition() - { - return position; - } - - public void setPosition(Integer position) - { - this.position = position; - } - - public Double getMass() - { - return mass; - } - - public void setMass(Double mass) - { - this.mass = mass; - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/dto/ProbabilityFDRMapping.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/dto/ProbabilityFDRMapping.java deleted file mode 100644 index f3f365e9495d4fd2e49493f4cd167aeeddf4773c..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/dto/ProbabilityFDRMapping.java +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.shared.dto; - -import net.lemnik.eodsql.ResultColumn; - -/** - * @author Franz-Josef Elmer - */ -public class ProbabilityFDRMapping -{ - @ResultColumn("probability") - private double probability; - - @ResultColumn("false_discovery_rate") - private double falseDiscoveryRate; - - public final double getProbability() - { - return probability; - } - - public final void setProbability(double probability) - { - this.probability = probability; - } - - public final double getFalseDiscoveryRate() - { - return falseDiscoveryRate; - } - - public final void setFalseDiscoveryRate(double falseDiscoveryRate) - { - this.falseDiscoveryRate = falseDiscoveryRate; - } -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/dto/ProteinAbundance.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/dto/ProteinAbundance.java deleted file mode 100644 index 348751605172f4b15eacf0df3ccbf20249662434..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/dto/ProteinAbundance.java +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright 2010 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.shared.dto; - -import java.io.Serializable; - -import net.lemnik.eodsql.ResultColumn; - -/** - * @author Franz-Josef Elmer - */ -public class ProteinAbundance extends AbstractDTOWithID implements Serializable -{ - private static final long serialVersionUID = 1L; - - @ResultColumn("value") - private double abundance; - - @ResultColumn("perm_id") - private String samplePermID; - - public double getAbundance() - { - return abundance; - } - - public void setAbundance(double abundance) - { - this.abundance = abundance; - } - - public String getSamplePermID() - { - return samplePermID; - } - - public void setSampleID(String samplePermID) - { - this.samplePermID = samplePermID; - } -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/dto/ProteinReference.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/dto/ProteinReference.java deleted file mode 100644 index ef998e95d3c710f2773a2bbc5c39ce89fe83592a..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/dto/ProteinReference.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.shared.dto; - -import java.io.Serializable; - -import net.lemnik.eodsql.ResultColumn; - -/** - * @author Franz-Josef Elmer - */ -public class ProteinReference extends AbstractDTOWithID implements Serializable -{ - private static final long serialVersionUID = 1L; - - @ResultColumn("accession_number") - private String accessionNumber; - - @ResultColumn("description") - private String description; - - public final String getAccessionNumber() - { - return accessionNumber; - } - - public final void setAccessionNumber(String accessionNumber) - { - this.accessionNumber = accessionNumber; - } - - public final String getDescription() - { - return description; - } - - public final void setDescription(String description) - { - this.description = description; - } - -} \ No newline at end of file diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/dto/ProteinReferenceWithProbability.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/dto/ProteinReferenceWithProbability.java deleted file mode 100644 index 8d30c84c2903577bb751ec218945059303479080..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/dto/ProteinReferenceWithProbability.java +++ /dev/null @@ -1,95 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.shared.dto; - -import java.io.Serializable; - -import net.lemnik.eodsql.ResultColumn; - -/** - * @author Franz-Josef Elmer - */ -public class ProteinReferenceWithProbability extends ProteinReference implements Serializable -{ - private static final long serialVersionUID = 1L; - - @ResultColumn("data_set_id") - private long dataSetID; - - @ResultColumn("probability") - private double probability; - - @ResultColumn("coverage") - private double coverage; - - @ResultColumn("abundance") - private Double abundance; - - @ResultColumn("sample_perm_id") - private String samplePermID; - - public final long getDataSetID() - { - return dataSetID; - } - - public final void setDataSetID(long dataSetID) - { - this.dataSetID = dataSetID; - } - - public final double getProbability() - { - return probability; - } - - public final void setProbability(double probability) - { - this.probability = probability; - } - - public final Double getAbundance() - { - return abundance; - } - - public final void setAbundance(Double abundance) - { - this.abundance = abundance; - } - - public final String getSamplePermID() - { - return samplePermID; - } - - public final void setSamplePermID(String samplePermID) - { - this.samplePermID = samplePermID; - } - - public void setCoverage(double coverage) - { - this.coverage = coverage; - } - - public double getCoverage() - { - return coverage; - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/dto/ProteinReferenceWithProbabilityAndPeptide.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/dto/ProteinReferenceWithProbabilityAndPeptide.java deleted file mode 100644 index 5f75d2fb2a1a0d497e8d57a73368b7dd3785942f..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/dto/ProteinReferenceWithProbabilityAndPeptide.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.shared.dto; - -import net.lemnik.eodsql.ResultColumn; - -/** - * @author Franz-Josef Elmer - */ -public class ProteinReferenceWithProbabilityAndPeptide extends ProteinReferenceWithProbability -{ - private static final long serialVersionUID = 1L; - - @ResultColumn("sequence") - private String peptideSequence; - - public String getPeptideSequence() - { - return peptideSequence; - } - - public void setPeptideSequence(String peptideSequence) - { - this.peptideSequence = peptideSequence; - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/dto/ProteinReferenceWithProtein.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/dto/ProteinReferenceWithProtein.java deleted file mode 100644 index bf572eea798ca4168786f7e25719e9db88f1559a..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/dto/ProteinReferenceWithProtein.java +++ /dev/null @@ -1,82 +0,0 @@ -/* - * Copyright 2010 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.shared.dto; - -import java.io.Serializable; - -import net.lemnik.eodsql.ResultColumn; - -/** - * @author Franz-Josef Elmer - */ -public class ProteinReferenceWithProtein extends ProteinReference implements Serializable -{ - private static final long serialVersionUID = 1L; - - @ResultColumn("data_set_id") - private long dataSetID; - - @ResultColumn("protein_id") - private long proteinID; - - @ResultColumn("probability") - private double probability; - - @ResultColumn("coverage") - private double coverage; - - public final long getDataSetID() - { - return dataSetID; - } - - public final void setDataSetID(long dataSetID) - { - this.dataSetID = dataSetID; - } - - public long getProteinID() - { - return proteinID; - } - - public void setProteinID(long proteinID) - { - this.proteinID = proteinID; - } - - public final double getProbability() - { - return probability; - } - - public final void setProbability(double probability) - { - this.probability = probability; - } - - public void setCoverage(double coverage) - { - this.coverage = coverage; - } - - public double getCoverage() - { - return coverage; - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/dto/ProteinWithAbundances.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/dto/ProteinWithAbundances.java deleted file mode 100644 index 1d12fa3b75f1292e5672f6c3c359a75de25ad231..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/dto/ProteinWithAbundances.java +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.shared.dto; - -import it.unimi.dsi.fastutil.doubles.DoubleArrayList; - -import java.util.LinkedHashMap; -import java.util.Map; -import java.util.Set; - -/** - * @author Franz-Josef Elmer - */ -public class ProteinWithAbundances extends ProteinReference -{ - private static final long serialVersionUID = 1L; - - private static final double[] EMPTY_ARRAY = new double[0]; - - private double coverage; - - private final Map<Long, DoubleArrayList> abundances = new LinkedHashMap<Long, DoubleArrayList>(); - - public double getCoverage() - { - return coverage; - } - - public void setCoverage(double coverage) - { - this.coverage = coverage; - } - - public void addAbundanceFor(long sampleID, double abundance) - { - DoubleArrayList list = abundances.get(sampleID); - if (list == null) - { - list = new DoubleArrayList(); - abundances.put(sampleID, list); - } - list.add(abundance); - } - - public Set<Long> getSampleIDs() - { - return abundances.keySet(); - } - - public double[] getAbundancesForSample(long sampleID) - { - DoubleArrayList list = abundances.get(sampleID); - return list == null ? EMPTY_ARRAY : list.toDoubleArray(); - } -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/dto/SampleAbundance.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/dto/SampleAbundance.java deleted file mode 100644 index aa93de91f45e65a91e69621a78fa2dea94a5059e..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/dto/SampleAbundance.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.shared.dto; - -import net.lemnik.eodsql.ResultColumn; - -/** - * @author Franz-Josef Elmer - */ -public class SampleAbundance extends AbstractSample -{ - private static final long serialVersionUID = 1L; - - @ResultColumn("value") - private double abundance; - - public final double getAbundance() - { - return abundance; - } - - public final void setAbundance(double abundance) - { - this.abundance = abundance; - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/dto/SamplePeptideModification.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/dto/SamplePeptideModification.java deleted file mode 100644 index 8a4de328d767caa736e470ba01792eeb57c2199c..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/dto/SamplePeptideModification.java +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Copyright 2011 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.shared.dto; - -import net.lemnik.eodsql.ResultColumn; - -/** - * @author Franz-Josef Elmer - */ -public class SamplePeptideModification extends AbstractSample -{ - private static final long serialVersionUID = 1L; - - @ResultColumn("fraction") - private double fraction; - - @ResultColumn("pos") - private int position; - - @ResultColumn("mass") - private double mass; - - @ResultColumn("sequence") - private String sequence; - - public double getFraction() - { - return fraction; - } - - public void setFraction(double fraction) - { - this.fraction = fraction; - } - - public int getPosition() - { - return position; - } - - public void setPosition(int position) - { - this.position = position; - } - - public double getMass() - { - return mass; - } - - public void setMass(double mass) - { - this.mass = mass; - } - - public String getSequence() - { - return sequence; - } - - public void setSequence(String sequence) - { - this.sequence = sequence; - } - -} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/dto/Sequence.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/dto/Sequence.java deleted file mode 100644 index 69a91f9365599b5255fe45d77fa574dff9ec6fc5..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/dto/Sequence.java +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.shared.dto; - -import net.lemnik.eodsql.ResultColumn; - -/** - * @author Franz-Josef Elmer - */ -public class Sequence extends AbstractDTOWithID -{ - private static final long serialVersionUID = 1L; - - @ResultColumn("amino_acid_sequence") - private String sequence; - - @ResultColumn("db_id") - private long databaseID; - - @ResultColumn("name_and_version") - private String databaseNameAndVersion; - - public final String getSequence() - { - return sequence; - } - - public final void setSequence(String sequence) - { - this.sequence = sequence; - } - - public final long getDatabaseID() - { - return databaseID; - } - - public final void setDatabaseID(long databaseID) - { - this.databaseID = databaseID; - } - - public final String getDatabaseNameAndVersion() - { - return databaseNameAndVersion; - } - - public final void setDatabaseNameAndVersion(String databaseNameAndVersion) - { - this.databaseNameAndVersion = databaseNameAndVersion; - } - -} diff --git a/rtd_phosphonetx/source/java/proteomics-applicationContext.xml b/rtd_phosphonetx/source/java/proteomics-applicationContext.xml deleted file mode 100644 index a67901501d179841daa04964339269b83944ff06..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/proteomics-applicationContext.xml +++ /dev/null @@ -1,13 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<beans xmlns="http://www.springframework.org/schema/beans" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xmlns:tx="http://www.springframework.org/schema/tx" - xsi:schemaLocation="http://www.springframework.org/schema/beans - http://www.springframework.org/schema/beans/spring-beans-2.5.xsd - http://www.springframework.org/schema/tx - http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"> - - <import resource="applicationContext.xml"/> - <import resource="proteomics-plugin-applicationContext.xml"/> - -</beans> \ No newline at end of file diff --git a/rtd_phosphonetx/source/java/proteomics-plugin-applicationContext.xml b/rtd_phosphonetx/source/java/proteomics-plugin-applicationContext.xml deleted file mode 100644 index ea3245ffbb5affceb8b2267a5f57c12f0c64e2d8..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/proteomics-plugin-applicationContext.xml +++ /dev/null @@ -1,64 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<beans xmlns="http://www.springframework.org/schema/beans" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xmlns:tx="http://www.springframework.org/schema/tx" - xsi:schemaLocation="http://www.springframework.org/schema/beans - http://www.springframework.org/schema/beans/spring-beans-2.5.xsd - http://www.springframework.org/schema/tx - http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"> - - <bean id="proteomics-dao-factory" - class="ch.systemsx.cisd.openbis.plugin.proteomics.server.dataaccess.db.PhosphoNetXDAOFactory"> - <constructor-arg ref="dss-based-data-source-provider"/> - <constructor-arg ref="dao-factory"/> - </bean> - - <bean id="proteomics-bo-factory" - class="ch.systemsx.cisd.openbis.plugin.proteomics.server.business.BusinessObjectFactory"> - <constructor-arg ref="dao-factory"/> - <constructor-arg ref="proteomics-dao-factory"/> - <constructor-arg ref="common-business-object-factory" /> - </bean> - - <!-- - // Proteomics Data Server - --> - - <bean id="proteomics-data-service-internal" - class="ch.systemsx.cisd.openbis.plugin.proteomics.server.ProteomicsDataServiceInternal" - init-method="replaceAutoWiredSesseionManagerByConstructorSessionManager"> - <constructor-arg> - <bean class="ch.systemsx.cisd.openbis.generic.server.OpenBisSessionManager"> - <constructor-arg> - <bean class="ch.systemsx.cisd.openbis.generic.server.SessionFactory" /> - </constructor-arg> - <constructor-arg> - <bean class="ch.systemsx.cisd.openbis.generic.shared.LogMessagePrefixGenerator" /> - </constructor-arg> - <constructor-arg ref="dummy-authentication-service" /> - <constructor-arg> - <bean class="ch.systemsx.cisd.common.servlet.RequestContextProviderAdapter"> - <constructor-arg ref="request-context-provider" /> - </bean> - </constructor-arg> - <constructor-arg value="${session-timeout}" /> - <constructor-arg value="${session-timeout-no-login}" /> - <constructor-arg ref="dao-factory"/> - </bean> - </constructor-arg> - <constructor-arg ref="dao-factory"/> - <constructor-arg ref="common-business-object-factory" /> - <constructor-arg ref="proteomics-bo-factory" /> - <constructor-arg ref="managed-property-evaluator-factory" /> - </bean> - - <bean id="proteomics-data-service-web" - class="ch.systemsx.cisd.openbis.plugin.proteomics.server.ProteomicsDataServiceInternal"> - <constructor-arg ref="session-manager" /> - <constructor-arg ref="dao-factory"/> - <constructor-arg ref="common-business-object-factory" /> - <constructor-arg ref="proteomics-bo-factory" /> - <constructor-arg ref="managed-property-evaluator-factory" /> - </bean> - -</beans> \ No newline at end of file diff --git a/rtd_phosphonetx/source/java/service.properties b/rtd_phosphonetx/source/java/service.properties deleted file mode 100644 index ecb4704b89224aace477828a2e8da280f0c2a165..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/java/service.properties +++ /dev/null @@ -1,67 +0,0 @@ -authentication-service = dummy-authentication-service - -# The time after which an inactive session is expired by the service (in minutes). -session-timeout = 720 - -# Authorization -# Supported: 'no-authorization' and 'active-authorization' -authorization-component-factory = active-authorization - -authorization.project-level.enabled = true -authorization.project-level.users = .*\\_pa\\_on - -dss-rpc.put.dss-code = DSS1 - -script-folder = ../openbis/source/ - -# Supported: currently only 'postgresql' is supported -database.engine = postgresql -database.create-from-scratch = false -# For debugging set this value to true. -database.script-single-step-mode = false -database.url-host-part = -database.kind = phosphonetx -# database.kind = system_test -# database.kind = system_test_strict -# database.kind = system_test_plates_on_demand -# database.kind = system_test_multi_groups -database.owner = -database.owner-password = -database.admin-user = -database.admin-password = - -crowd.service.host = crowd.systemsx.ch -crowd.service.port = 8443 -crowd.application.name = lims -crowd.application.password = - -# The database instance local unique identifier. Used when the new database is created. -database-instance = CISD - -# The URL of the CIFEX server -cifex-url = https://cifex.ethz.ch:443 - -trusted-cross-origin-domains= * - -# Hibernate Search -# The working directory. -hibernate.search.index-base = ./targets/indices_${database.kind} -# One of NO_INDEX, SKIP_IF_MARKER_FOUND, INDEX_FROM_SCRATCH. -# If not specified, default (SKIP_IF_MARKER_FOUND) is taken. -hibernate.search.index-mode = SKIP_IF_MARKER_FOUND -# Defines the maximum number of elements indexed before flushing the transaction-bound queue. -# Default is 1000. -hibernate.search.batch-size = 1000 -# Maximum number of search results -hibernate.search.maxResults = 100000 - -web-client-configuration-file = etc/web-client.properties - -proteomics-database-kind = dev - -core-plugins-folder = source/core-plugins - - - - -jython-version=2.7 diff --git a/rtd_phosphonetx/source/sql/proteomics/postgresql/001/schema-001.dez b/rtd_phosphonetx/source/sql/proteomics/postgresql/001/schema-001.dez deleted file mode 100644 index 8fb86063bc3c09ea2b676e3bd6a8348b31683cd4..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/sql/proteomics/postgresql/001/schema-001.dez +++ /dev/null @@ -1,26083 +0,0 @@ -<?xml version="1.0" encoding="iso-8859-1"?><dezign> - -<FILEFORMATVERSION>51</FILEFORMATVERSION> -<VERSION> -<PROJECTSETTINGS> -<PROJECTFILENAME>D:\User\felmer\dev-workspace\rtd_phosphonetx\source\sql\postgresql\phosphonetx.dez</PROJECTFILENAME> -<MODIFIED>2009-09-28</MODIFIED> -<CREATED>2009-06-29</CREATED> -<CREATED2></CREATED2> -<PROJECTNAME></PROJECTNAME> -<DESCRIPTION></DESCRIPTION> -<AUTHOR></AUTHOR> -<COPYRIGHT></COPYRIGHT> -<LASTGENERATEDFILES>N:\user\cisd\felmer\phosphonetx\schema-001.sql;N:\user\cisd\felmer\phosphonetx\drop.sql;C:\Users\felmer\Documents\CreateDBLog_200909281.txt</LASTGENERATEDFILES> -</PROJECTSETTINGS> -<CONNECTIONSETTINGS> -<SQLFILE>D:\User\felmer\dev-workspace\rtd_phosphonetx\source\sql\postgresql\001\schema-001.sql</SQLFILE> -<CONNECTIONTYPE>SQLFILE</CONNECTIONTYPE> -<DBID>postgresql8</DBID> -</CONNECTIONSETTINGS> -<DATADICT> -<DBID>postgresql8</DBID> -<LASTID>175</LASTID> -<DDSETTINGS> -<PKCONNAMETEMPLATE>PK_%table%</PKCONNAMETEMPLATE> -<FKCONNAMETEMPLATE>%relname%</FKCONNAMETEMPLATE> -<CCONNAMETEMPLATE>CC_%table%_%column%</CCONNAMETEMPLATE> -<NOTNULLCONNAMETEMPLATE>NN_%column%</NOTNULLCONNAMETEMPLATE> -<DEFAULTCONNAMETEMPLATE>DEF_%table%_%column%</DEFAULTCONNAMETEMPLATE> -<TUCONNAMETEMPLATE>TUC_%table%_%counter%</TUCONNAMETEMPLATE> -<TCCONNAMETEMPLATE>TCC_%table%_%counter%</TCCONNAMETEMPLATE> -<RELNAMETEMPLATE>%parent%_%child%</RELNAMETEMPLATE> -<INDEXNAMETEMPLATE>IDX_%table%_%counter%</INDEXNAMETEMPLATE> -<DEFTABLEOPTIONS></DEFTABLEOPTIONS> -<DEFINDEXOPTIONS></DEFINDEXOPTIONS> -<BEGINDATABASESCRIPT></BEGINDATABASESCRIPT> -<ENDDATABASESCRIP></ENDDATABASESCRIP> -<BEGINALTERDATABASESCRIPT></BEGINALTERDATABASESCRIPT> -<ENDALTERDATABASESCRIP></ENDALTERDATABASESCRIP> -<BEGINDROPDATABASESCRIPT></BEGINDROPDATABASESCRIPT> -<ENDDROPDATABASESCRIP></ENDDROPDATABASESCRIP> -<GENDIALOGSELECTEDOBJECTS></GENDIALOGSELECTEDOBJECTS> -<GENTABLES>1</GENTABLES> -<GENTABLEOPTIONS>1</GENTABLEOPTIONS> -<GENCONSTRAINTS>1</GENCONSTRAINTS> -<GENINDEXES>1</GENINDEXES> -<GENTRIGGERS>1</GENTRIGGERS> -<GENVIEWS>1</GENVIEWS> -<GENPROCEDURES>1</GENPROCEDURES> -<GENSEQUENCES>1</GENSEQUENCES> -<GENRELATIONSHIPS>1</GENRELATIONSHIPS> -<GENBEGINENDTABLESCRIPTS>1</GENBEGINENDTABLESCRIPTS> -<GENBEGINENDDBSCRIPTS>1</GENBEGINENDDBSCRIPTS> -<GLOBALPREFIX></GLOBALPREFIX> -<AUTOCREATEINDEXESONKEYS>0</AUTOCREATEINDEXESONKEYS> -<CONVERTDOMAINS>0</CONVERTDOMAINS> -<IGNORECOMMENTS>0</IGNORECOMMENTS> -<USESCHEMANAMES>0</USESCHEMANAMES> -<UCONNAMETEMPLATE></UCONNAMETEMPLATE> -<SQLCREATEFILE>N:\user\cisd\felmer\phosphonetx\schema-001.sql</SQLCREATEFILE> -<SQLDROPFILE>N:\user\cisd\felmer\phosphonetx\drop.sql</SQLDROPFILE> -</DDSETTINGS> -<DOMAINS> -<DOMAIN> -<NAME>CHECKSUM</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>8</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>CODE</NAME> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>DESCRIPTION</NAME> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>2000</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>INTEGER_NUMBER</NAME> -<ID>7</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>INTEGER</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>REAL_NUMBER</NAME> -<ID>8</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>LONG_SEQUENCE</NAME> -<ID>9</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>TEXT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>SHORT_DESCRIPTION</NAME> -<ID>11</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>200</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>TECH_ID</NAME> -<ID>12</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>SHORT_SEQUENCE</NAME> -<ID>69</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>1000</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>ACCESSION_NUMBER</NAME> -<ID>109</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>256</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>SPECTRUM_REFERENCE</NAME> -<ID>171</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>100</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -</DOMAINS> -<ENTITIES> -<ENT> -<NAME>EXPERIMENTS</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>16</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>3</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_EXPERIMENTS</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PERM_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>5</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_EXPERIMENTS_1</NAME> -<NAMETEMPLATE>TUC_%table%_%counter%</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -<ENT> -<NAME>DATA_SETS</NAME> -<NAMETEMPLATE>IX_FK_DATA_SETS_EXPERIMENTS</NAMETEMPLATE> -<ID>17</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>6</ATTRLASTID> -<IDXLASTID>3</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_DATA_SETS</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>EXPE_ID</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>SAMP_ID</NAME> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -<ATTR> -<NAME>DB_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>6</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PERM_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>5</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<INDEXES> -<INDEX> -<NAME>IX_FK_DATA_SETS_EXPERIMENTS</NAME> -<NAMETEMPLATE>IX_FK_DATA_SETS_EXPERIMENTS</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>EXPE_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>4</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -<INDEX> -<NAME>IX_FK_DATA_SETS_SAMPLES</NAME> -<NAMETEMPLATE>IX_FK_DATA_SETS_SAMPLES</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>SAMP_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>5</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -</INDEXES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_DATA_SETS_1</NAME> -<NAMETEMPLATE>TUC_%table%_%counter%</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -<ENT> -<NAME>MODIFICATIONS</NAME> -<NAMETEMPLATE>IX_FK_MODIFICATIONS_PEPTIDES</NAMETEMPLATE> -<ID>19</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>7</ATTRLASTID> -<IDXLASTID>5</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_MODIFICATIONS</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>MOPE_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>7</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>7</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>POS</NAME> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>7</DOMAINID> -<DT> -<DTLISTNAME>INTEGER</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>MASS</NAME> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>6</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -</ENT> -<ENT> -<NAME>PEPTIDES</NAME> -<NAMETEMPLATE>IX_FK_PEPTIDES_ABUNDANCES</NAMETEMPLATE> -<ID>21</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>10</ATTRLASTID> -<IDXLASTID>5</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_PEPTIDES</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PROT_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>SEQUENCE</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>10</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>69</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>1000</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>10</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>CHARGE</NAME> -<ID>7</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>7</DOMAINID> -<DT> -<DTLISTNAME>INTEGER</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>7</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<INDEXES> -<INDEX> -<NAME>IX_FK_PEPTIDES_PROTEINS</NAME> -<NAMETEMPLATE>IX_FK_PEPTIDES_PROTEINS</NAMETEMPLATE> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>PROT_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>3</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -</INDEXES> -</ENT> -<ENT> -<NAME>PROTEINS</NAME> -<NAMETEMPLATE>IX_FK_PROTEINS_DATA_SETS</NAMETEMPLATE> -<ID>23</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>11</ATTRLASTID> -<IDXLASTID>7</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_PROTEINS</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>DASE_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>10</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>10</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PROBABILITY</NAME> -<ID>9</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>9</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<INDEXES> -<INDEX> -<NAME>IDX_PROTEINS_1</NAME> -<NAMETEMPLATE>IDX_%table%_%counter%</NAMETEMPLATE> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>DASE_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>10</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -</INDEXES> -</ENT> -<ENT> -<NAME>SAMPLES</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>24</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>4</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_SAMPLES</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PERM_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>5</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>EXPE_ID</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_SAMPLES_1</NAME> -<NAMETEMPLATE>TUC_%table%_%counter%</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -<ENT> -<NAME>SEQUENCES</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>25</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>6</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_SEQUENCES</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>DB_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PRRE_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>6</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>AMINO_ACID_SEQUENCE</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>9</DOMAINID> -<DT> -<DTLISTNAME>TEXT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>CHECKSUM</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>4</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>8</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -</ENT> -<ENT> -<NAME>IDENTIFIED_PROTEINS</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>47</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>5</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_IDENTIFIED_PROTEINS</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PROT_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>SEQU_ID</NAME> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -</ENT> -<ENT> -<NAME>ABUNDANCES</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>91</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>6</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_ABUNDANCES</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PROT_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>SAMP_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>VALUE</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>6</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -</ENT> -<ENT> -<NAME>PROBABILITY_FDR_MAPPINGS</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>96</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>5</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_PROBABILITY_FDR_MAPPINGS</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>DASE_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PROBABILITY</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>FALSE_DISCOVERY_RATE</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -</ENT> -<ENT> -<NAME>PROTEIN_REFERENCES</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>98</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>4</ATTRLASTID> -<IDXLASTID>2</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_PROTEIN_REFERENCES</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>ACCESSION_NUMBER</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>109</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>256</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>DESCRIPTION</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>6</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>2000</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -</ATTRIBUTES> -<INDEXES> -<INDEX> -<NAME>IDX_PROTEIN_REFERENCES_1</NAME> -<NAMETEMPLATE>IDX_%table%_%counter%</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>ACCESSION_NUMBER</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>3</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -</INDEXES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_PROTEIN_REFERENCES_1</NAME> -<NAMETEMPLATE>TUC_%table%_%counter%</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -<ENT> -<NAME>DATABASES</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>110</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>3</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_DATABASES</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>NAME_AND_VERSION</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>11</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>200</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_DATABASES_1</NAME> -<NAMETEMPLATE>TUC_%table%_%counter%</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -<ENT> -<NAME>MODIFIED_PEPTIDES</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>136</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>5</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_MODIFIED_PEPTIDES</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PEPT_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>NTERM_MASS</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>CTERM_MASS</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -</ENT> -<ENT> -<NAME>SPECTRUM_REFERENCES</NAME> -<ID>160</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>4</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_SPECTRUM_REFERENCES</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PEPT_ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>REFERENCE</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>171</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>100</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -</ENT> -<ENT> -<NAME>MODIFICATION_FRACTIONS</NAME> -<ID>173</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>5</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_MODIFICATION_FRACTIONS</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>MODI_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>SAMP_ID</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -<ATTR> -<NAME>FRACTION</NAME> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -</ENT> -</ENTITIES> -<SUBCATEGORIES> -</SUBCATEGORIES> -<TEXTAREAS> -</TEXTAREAS> -<GROUPBOXES> -</GROUPBOXES> -<STAMPS> -</STAMPS> -<SEQUENCES> -</SEQUENCES> -<PROCEDURES> -</PROCEDURES> -<VIEWS> -</VIEWS> -<RELATIONSHIPS> -<REL> -<NAME>DA_EX_FK</NAME> -<NAMETEMPLATE>DA_EX_FK</NAMETEMPLATE> -<ID>29</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>16</PARENTOBJECTID> -<CHILDOBJECTID>17</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>DA_EX_FK</NAME> -<NAMETEMPLATE>DA_EX_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>4</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>DA_SA_FK</NAME> -<NAMETEMPLATE>DA_SA_FK</NAMETEMPLATE> -<ID>30</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>24</PARENTOBJECTID> -<CHILDOBJECTID>17</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>0</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>DA_SA_FK</NAME> -<NAMETEMPLATE>DA_SA_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>5</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>PE_PR_FK</NAME> -<NAMETEMPLATE>PE_PR_FK</NAMETEMPLATE> -<ID>36</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>23</PARENTOBJECTID> -<CHILDOBJECTID>21</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>PE_PR_FK</NAME> -<NAMETEMPLATE>PE_PR_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>3</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>DATA_SETS_PROTEINS</NAME> -<NAMETEMPLATE>%parent%_%child%</NAMETEMPLATE> -<ID>46</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>17</PARENTOBJECTID> -<CHILDOBJECTID>23</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>DATA_SETS_PROTEINS</NAME> -<NAMETEMPLATE>%relname%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>10</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>10</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>PROTEINS_IDENTIFIED_PROTEINS</NAME> -<NAMETEMPLATE>%parent%_%child%</NAMETEMPLATE> -<ID>48</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>23</PARENTOBJECTID> -<CHILDOBJECTID>47</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>PROTEINS_IDENTIFIED_PROTEINS</NAME> -<NAMETEMPLATE>%relname%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>3</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>SEQUENCES_IDENTIFIED_PROTEINS</NAME> -<NAMETEMPLATE>%parent%_%child%</NAMETEMPLATE> -<ID>50</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>25</PARENTOBJECTID> -<CHILDOBJECTID>47</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>SEQUENCES_IDENTIFIED_PROTEINS</NAME> -<NAMETEMPLATE>%relname%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>5</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>SAMPLES_ABUNDANCES</NAME> -<NAMETEMPLATE>%parent%_%child%</NAMETEMPLATE> -<ID>92</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>24</PARENTOBJECTID> -<CHILDOBJECTID>91</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>SAMPLES_ABUNDANCES</NAME> -<NAMETEMPLATE>%relname%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>4</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>PROTEINS_ABUNDANCES</NAME> -<NAMETEMPLATE>%parent%_%child%</NAMETEMPLATE> -<ID>94</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>23</PARENTOBJECTID> -<CHILDOBJECTID>91</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>PROTEINS_ABUNDANCES</NAME> -<NAMETEMPLATE>%relname%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>3</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>DATA_SETS_PROBABILITY_FDR_MAPPINGS</NAME> -<NAMETEMPLATE>%parent%_%child%</NAMETEMPLATE> -<ID>97</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>17</PARENTOBJECTID> -<CHILDOBJECTID>96</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>DATA_SETS_PROBABILITY_FDR_MAPPINGS</NAME> -<NAMETEMPLATE>%relname%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>5</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>DATABASES_SEQUENCES</NAME> -<NAMETEMPLATE>%parent%_%child%</NAMETEMPLATE> -<ID>111</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>110</PARENTOBJECTID> -<CHILDOBJECTID>25</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>DATABASES_SEQUENCES</NAME> -<NAMETEMPLATE>%relname%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>5</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>PROTEIN_REFERENCES_SEQUENCES</NAME> -<NAMETEMPLATE>%parent%_%child%</NAMETEMPLATE> -<ID>112</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>98</PARENTOBJECTID> -<CHILDOBJECTID>25</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>PROTEIN_REFERENCES_SEQUENCES</NAME> -<NAMETEMPLATE>%relname%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>6</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>6</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>DATABASES_DATA_SETS</NAME> -<NAMETEMPLATE>%parent%_%child%</NAMETEMPLATE> -<ID>125</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>110</PARENTOBJECTID> -<CHILDOBJECTID>17</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>DATABASES_DATA_SETS</NAME> -<NAMETEMPLATE>%relname%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>6</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>6</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>PEPTIDES_MODIFIED_PEPTIDES</NAME> -<NAMETEMPLATE>%parent%_%child%</NAMETEMPLATE> -<ID>138</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>21</PARENTOBJECTID> -<CHILDOBJECTID>136</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>PEPTIDES_MODIFIED_PEPTIDES</NAME> -<NAMETEMPLATE>%relname%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>3</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>MODIFIED_PEPTIDES_MODIFICATIONS</NAME> -<NAMETEMPLATE>%parent%_%child%</NAMETEMPLATE> -<ID>139</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>136</PARENTOBJECTID> -<CHILDOBJECTID>19</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>MODIFIED_PEPTIDES_MODIFICATIONS</NAME> -<NAMETEMPLATE>%relname%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>7</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>7</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>PEPTIDES_SPECTRUM_REFERENCES</NAME> -<NAMETEMPLATE>%parent%_%child%</NAMETEMPLATE> -<ID>172</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>21</PARENTOBJECTID> -<CHILDOBJECTID>160</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>PEPTIDES_SPECTRUM_REFERENCES</NAME> -<NAMETEMPLATE>%relname%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>2</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>MODIFICATIONS_MODIFICATION_FRACTIONS</NAME> -<NAMETEMPLATE>%parent%_%child%</NAMETEMPLATE> -<ID>174</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>19</PARENTOBJECTID> -<CHILDOBJECTID>173</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>MODIFICATIONS_MODIFICATION_FRACTIONS</NAME> -<NAMETEMPLATE>%relname%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>3</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>SAMPLES_MODIFICATION_FRACTIONS</NAME> -<NAMETEMPLATE>%parent%_%child%</NAMETEMPLATE> -<ID>175</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>24</PARENTOBJECTID> -<CHILDOBJECTID>173</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>0</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>SAMPLES_MODIFICATION_FRACTIONS</NAME> -<NAMETEMPLATE>%relname%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>4</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -</RELATIONSHIPS> -<SUBCATEGORYCONNECTIONS> -</SUBCATEGORYCONNECTIONS> -</DATADICT> -<DIAGRAMS> -<DisplayPreferences> -<USEINDICATORLINE>0</USEINDICATORLINE> -<INDICATORBITMAPS>0</INDICATORBITMAPS> -<PKINDICATOR>PK</PKINDICATOR> -<FKINDICATOR>FK</FKINDICATOR> -<PFINDICATOR>PF</PFINDICATOR> -<NOTNULLINDICATOR>*</NOTNULLINDICATOR> -<INDICATORPOSITION>0</INDICATORPOSITION> -<DEFTEXTAREACOLOR>16777215</DEFTEXTAREACOLOR> -<DEFENTCOLOR>16777215</DEFENTCOLOR> -<DEFSTAMPCOLOR>16777215</DEFSTAMPCOLOR> -<DEFGROUPBOXCOLOR>8421504</DEFGROUPBOXCOLOR> -<DEFTEXTAREALINECOLOR>0</DEFTEXTAREALINECOLOR> -<DEFENTLINECOLOR>0</DEFENTLINECOLOR> -<DEFSTAMPLINECOLOR>0</DEFSTAMPLINECOLOR> -<DEFSUBCATLINECOLOR>0</DEFSUBCATLINECOLOR> -<DEFCONLINECOLOR>0</DEFCONLINECOLOR> -<DEFGROUPBOXLINECOLOR>0</DEFGROUPBOXLINECOLOR> -<DEFTEXTAREATRANSPARENT>0</DEFTEXTAREATRANSPARENT> -<DEFSTAMPTRANSPARENT>0</DEFSTAMPTRANSPARENT> -<DEFTEXTAREALINEWIDTH>1</DEFTEXTAREALINEWIDTH> -<DEFSTAMPLINEWIDTH>1</DEFSTAMPLINEWIDTH> -<DEFGROUPBOXLINEWIDTH>0</DEFGROUPBOXLINEWIDTH> -<DEFTEXTAREALINESTYLE>0</DEFTEXTAREALINESTYLE> -<DEFSTAMPLINESTYLE>0</DEFSTAMPLINESTYLE> -<DEFGROUPBOXLINESTYLE>0</DEFGROUPBOXLINESTYLE> -<ENTNAMEFONT>Arial,9,B,0,clNavy,0</ENTNAMEFONT> -<ENTPKFONT>Arial,8,B,0,clWindowText,0</ENTPKFONT> -<ENTFKFONT>Arial,8,I,0,clWindowText,0</ENTFKFONT> -<ENTATTRFONT>Arial,8,,0,clWindowText,0</ENTATTRFONT> -<TEXTAREAFONT>Arial,8,,0,clWindowText,0</TEXTAREAFONT> -<GROUPBOXFONT>Arial,8,,0,clWindowText,0</GROUPBOXFONT> -<CAPTIONFONT>Arial,8,,0,clWindowText,0</CAPTIONFONT> -</DisplayPreferences> -<DIAGRAM> -<ID>1</ID> -<NAME>Main Diagram</NAME> -<DESC></DESC> -<TODO></TODO> -<ISMAINDIAGRAM>1</ISMAINDIAGRAM> -<BGCOLOR>16777215</BGCOLOR> -<DISPLAYLEVEL>0</DISPLAYLEVEL> -<VISIBLEATTR>2</VISIBLEATTR> -<CAPTIONSTYLE>0</CAPTIONSTYLE> -<SHOWPKINDICATOR>1</SHOWPKINDICATOR> -<SHOWFKINDICATOR>1</SHOWFKINDICATOR> -<SHOWNOTNULLINDICATOR>1</SHOWNOTNULLINDICATOR> -<NOTATION>0</NOTATION> -</DIAGRAM> -<CONTROLS> -<ENTITYCONTROLS> -<ENTC> -<ID>16</ID> -<DIAGRAMID>1</DIAGRAMID> -<W>136</W> -<H>63</H> -<L>544</L> -<T>11</T> -<BRUSH>0,16777215</BRUSH> -<PEN>0,1,4,0</PEN> -<FONT>Arial,8,,0,clWindowText,0</FONT> -<TR>0</TR> -<AS>1</AS> -</ENTC> -<ENTC> -<ID>17</ID> -<DIAGRAMID>1</DIAGRAMID> -<W>139</W> -<H>108</H> -<L>295</L> -<T>11</T> -<BRUSH>0,16777215</BRUSH> -<PEN>0,1,4,0</PEN> -<FONT>Arial,8,,0,clWindowText,0</FONT> -<TR>0</TR> -<AS>1</AS> -</ENTC> -<ENTC> -<ID>19</ID> -<DIAGRAMID>1</DIAGRAMID> -<W>177</W> -<H>93</H> -<L>12</L> -<T>628</T> -<BRUSH>0,16777215</BRUSH> -<PEN>0,1,4,0</PEN> -<FONT>Arial,8,,0,clWindowText,0</FONT> -<TR>0</TR> -<AS>1</AS> -</ENTC> -<ENTC> -<ID>21</ID> -<DIAGRAMID>1</DIAGRAMID> -<W>187</W> -<H>93</H> -<L>271</L> -<T>480</T> -<BRUSH>0,16777215</BRUSH> -<PEN>0,1,4,0</PEN> -<FONT>Arial,8,,0,clWindowText,0</FONT> -<TR>0</TR> -<AS>1</AS> -</ENTC> -<ENTC> -<ID>23</ID> -<DIAGRAMID>1</DIAGRAMID> -<W>180</W> -<H>78</H> -<L>274</L> -<T>328</T> -<BRUSH>0,16777215</BRUSH> -<PEN>0,1,4,0</PEN> -<FONT>Arial,8,,0,clWindowText,0</FONT> -<TR>0</TR> -<AS>1</AS> -</ENTC> -<ENTC> -<ID>24</ID> -<DIAGRAMID>1</DIAGRAMID> -<W>136</W> -<H>78</H> -<L>12</L> -<T>11</T> -<BRUSH>0,16777215</BRUSH> -<PEN>0,1,4,0</PEN> -<FONT>Arial,8,,0,clWindowText,0</FONT> -<TR>0</TR> -<AS>1</AS> -</ENTC> -<ENTC> -<ID>25</ID> -<DIAGRAMID>1</DIAGRAMID> -<W>250</W> -<H>108</H> -<L>736</L> -<T>328</T> -<BRUSH>0,16777215</BRUSH> -<PEN>0,1,4,0</PEN> -<FONT>Arial,8,,0,clWindowText,0</FONT> -<TR>0</TR> -<AS>1</AS> -</ENTC> -<ENTC> -<ID>47</ID> -<DIAGRAMID>1</DIAGRAMID> -<W>142</W> -<H>78</H> -<L>541</L> -<T>328</T> -<BRUSH>0,16777215</BRUSH> -<PEN>0,1,4,0</PEN> -<FONT>Arial,8,,0,clWindowText,0</FONT> -<TR>0</TR> -<AS>1</AS> -</ENTC> -<ENTC> -<ID>91</ID> -<DIAGRAMID>1</DIAGRAMID> -<W>161</W> -<H>93</H> -<L>114</L> -<T>182</T> -<BRUSH>0,16777215</BRUSH> -<PEN>0,1,4,0</PEN> -<FONT>Arial,8,,0,clWindowText,0</FONT> -<TR>0</TR> -<AS>1</AS> -</ENTC> -<ENTC> -<ID>96</ID> -<DIAGRAMID>1</DIAGRAMID> -<W>245</W> -<H>93</H> -<L>490</L> -<T>182</T> -<BRUSH>0,16777215</BRUSH> -<PEN>0,1,4,0</PEN> -<FONT>Arial,8,,0,clWindowText,0</FONT> -<TR>0</TR> -<AS>1</AS> -</ENTC> -<ENTC> -<ID>98</ID> -<DIAGRAMID>1</DIAGRAMID> -<W>252</W> -<H>78</H> -<L>734</L> -<T>480</T> -<BRUSH>0,16777215</BRUSH> -<PEN>0,1,4,0</PEN> -<FONT>Arial,8,,0,clWindowText,0</FONT> -<TR>0</TR> -<AS>1</AS> -</ENTC> -<ENTC> -<ID>110</ID> -<DIAGRAMID>1</DIAGRAMID> -<W>252</W> -<H>63</H> -<L>734</L> -<T>107</T> -<BRUSH>0,16777215</BRUSH> -<PEN>0,1,4,0</PEN> -<FONT>Arial,8,,0,clWindowText,0</FONT> -<TR>0</TR> -<AS>1</AS> -</ENTC> -<ENTC> -<ID>136</ID> -<DIAGRAMID>1</DIAGRAMID> -<W>183</W> -<H>93</H> -<L>273</L> -<T>628</T> -<BRUSH>0,16777215</BRUSH> -<PEN>0,1,4,0</PEN> -<FONT>Arial,8,,0,clWindowText,0</FONT> -<TR>0</TR> -<AS>1</AS> -</ENTC> -<ENTC> -<ID>160</ID> -<DIAGRAMID>1</DIAGRAMID> -<W>214</W> -<H>78</H> -<L>505</L> -<T>480</T> -<BRUSH>0,16777215</BRUSH> -<PEN>0,1,4,0</PEN> -<FONT>Arial,8,,0,clWindowText,0</FONT> -<TR>0</TR> -<AS>1</AS> -</ENTC> -<ENTC> -<ID>173</ID> -<DIAGRAMID>1</DIAGRAMID> -<W>164</W> -<H>93</H> -<L>12</L> -<T>480</T> -<BRUSH>0,16777215</BRUSH> -<PEN>0,1,4,0</PEN> -<FONT>Arial,8,,0,clWindowText,0</FONT> -<TR>0</TR> -<AS>1</AS> -</ENTC> -</ENTITYCONTROLS> -<SUBCATEGORYCONTROLS> -</SUBCATEGORYCONTROLS> -<TEXTAREACONTROLS> -</TEXTAREACONTROLS> -<STAMPCONTROLS> -</STAMPCONTROLS> -<GROUPBOXESCONTROLS> -</GROUPBOXESCONTROLS> -<RELATIONSHIPCONNECTORS> -<RELC> -<ID>29</ID> -<DIAGRAMID>1</DIAGRAMID> -<FONT>Arial,8,,0,clWindowText,0</FONT> -<PEN>1,1,4,0</PEN> -<FROMRELATIVEX>5000</FROMRELATIVEX> -<FROMRELATIVEY>4921</FROMRELATIVEY> -<TORELATIVEX>5000</TORELATIVEX> -<TORELATIVEY>2870</TORELATIVEY> -<POINTS> -<POINT> -<X>543</X> -<Y>42</Y> -</POINT> -<POINT> -<X>480</X> -<Y>42</Y> -</POINT> -<POINT> -<X>480</X> -<Y>42</Y> -</POINT> -<POINT> -<X>434</X> -<Y>42</Y> -</POINT> -</POINTS> -</RELC> -<RELC> -<ID>30</ID> -<DIAGRAMID>1</DIAGRAMID> -<FONT>Arial,8,,0,clWindowText,0</FONT> -<PEN>1,1,4,0</PEN> -<FROMRELATIVEX>5000</FROMRELATIVEX> -<FROMRELATIVEY>5000</FROMRELATIVEY> -<TORELATIVEX>5000</TORELATIVEX> -<TORELATIVEY>3611</TORELATIVEY> -<POINTS> -<POINT> -<X>148</X> -<Y>50</Y> -</POINT> -<POINT> -<X>219</X> -<Y>50</Y> -</POINT> -<POINT> -<X>219</X> -<Y>50</Y> -</POINT> -<POINT> -<X>294</X> -<Y>50</Y> -</POINT> -</POINTS> -</RELC> -<RELC> -<ID>36</ID> -<DIAGRAMID>1</DIAGRAMID> -<FONT>Arial,8,,0,clWindowText,0</FONT> -<PEN>1,1,4,0</PEN> -<FROMRELATIVEX>5000</FROMRELATIVEX> -<FROMRELATIVEY>5000</FROMRELATIVEY> -<TORELATIVEX>4973</TORELATIVEX> -<TORELATIVEY>5000</TORELATIVEY> -<POINTS> -<POINT> -<X>364</X> -<Y>406</Y> -</POINT> -<POINT> -<X>364</X> -<Y>428</Y> -</POINT> -<POINT> -<X>364</X> -<Y>428</Y> -</POINT> -<POINT> -<X>364</X> -<Y>479</Y> -</POINT> -</POINTS> -</RELC> -<RELC> -<ID>46</ID> -<DIAGRAMID>1</DIAGRAMID> -<FONT>Arial,8,,0,clWindowText,0</FONT> -<PEN>1,1,4,0</PEN> -<FROMRELATIVEX>4964</FROMRELATIVEX> -<FROMRELATIVEY>5000</FROMRELATIVEY> -<TORELATIVEX>5000</TORELATIVEX> -<TORELATIVEY>5000</TORELATIVEY> -<POINTS> -<POINT> -<X>364</X> -<Y>119</Y> -</POINT> -<POINT> -<X>364</X> -<Y>183</Y> -</POINT> -<POINT> -<X>364</X> -<Y>183</Y> -</POINT> -<POINT> -<X>364</X> -<Y>327</Y> -</POINT> -</POINTS> -</RELC> -<RELC> -<ID>48</ID> -<DIAGRAMID>1</DIAGRAMID> -<FONT>Arial,8,,0,clWindowText,0</FONT> -<PEN>1,1,4,0</PEN> -<FROMRELATIVEX>5000</FROMRELATIVEX> -<FROMRELATIVEY>5000</FROMRELATIVEY> -<TORELATIVEX>5000</TORELATIVEX> -<TORELATIVEY>5000</TORELATIVEY> -<POINTS> -<POINT> -<X>454</X> -<Y>367</Y> -</POINT> -<POINT> -<X>489</X> -<Y>367</Y> -</POINT> -<POINT> -<X>489</X> -<Y>367</Y> -</POINT> -<POINT> -<X>540</X> -<Y>367</Y> -</POINT> -</POINTS> -</RELC> -<RELC> -<ID>50</ID> -<DIAGRAMID>1</DIAGRAMID> -<FONT>Arial,8,,0,clWindowText,0</FONT> -<PEN>1,1,4,0</PEN> -<FROMRELATIVEX>2840</FROMRELATIVEX> -<FROMRELATIVEY>3611</FROMRELATIVEY> -<TORELATIVEX>5000</TORELATIVEX> -<TORELATIVEY>5000</TORELATIVEY> -<POINTS> -<POINT> -<X>735</X> -<Y>367</Y> -</POINT> -<POINT> -<X>705</X> -<Y>367</Y> -</POINT> -<POINT> -<X>705</X> -<Y>367</Y> -</POINT> -<POINT> -<X>683</X> -<Y>367</Y> -</POINT> -</POINTS> -</RELC> -<RELC> -<ID>92</ID> -<DIAGRAMID>1</DIAGRAMID> -<FONT>Arial,8,,0,clWindowText,0</FONT> -<PEN>1,1,4,0</PEN> -<FROMRELATIVEX>8750</FROMRELATIVEX> -<FROMRELATIVEY>5000</FROMRELATIVEY> -<TORELATIVEX>1056</TORELATIVEX> -<TORELATIVEY>5000</TORELATIVEY> -<POINTS> -<POINT> -<X>131</X> -<Y>89</Y> -</POINT> -<POINT> -<X>131</X> -<Y>143</Y> -</POINT> -<POINT> -<X>131</X> -<Y>143</Y> -</POINT> -<POINT> -<X>131</X> -<Y>181</Y> -</POINT> -</POINTS> -</RELC> -<RELC> -<ID>94</ID> -<DIAGRAMID>1</DIAGRAMID> -<FONT>Arial,8,,0,clWindowText,0</FONT> -<PEN>1,1,4,0</PEN> -<FROMRELATIVEX>0</FROMRELATIVEX> -<FROMRELATIVEY>5000</FROMRELATIVEY> -<TORELATIVEX>9938</TORELATIVEX> -<TORELATIVEY>4194</TORELATIVEY> -<POINTS> -<POINT> -<X>274</X> -<Y>327</Y> -</POINT> -<POINT> -<X>274</X> -<Y>299</Y> -</POINT> -<POINT> -<X>274</X> -<Y>299</Y> -</POINT> -<POINT> -<X>274</X> -<Y>275</Y> -</POINT> -</POINTS> -</RELC> -<RELC> -<ID>97</ID> -<DIAGRAMID>1</DIAGRAMID> -<FONT>Arial,8,,0,clWindowText,0</FONT> -<PEN>1,1,4,0</PEN> -<FROMRELATIVEX>8369</FROMRELATIVEX> -<FROMRELATIVEY>5000</FROMRELATIVEY> -<TORELATIVEX>5000</TORELATIVEX> -<TORELATIVEY>5000</TORELATIVEY> -<POINTS> -<POINT> -<X>411</X> -<Y>119</Y> -</POINT> -<POINT> -<X>411</X> -<Y>161</Y> -</POINT> -<POINT> -<X>612</X> -<Y>161</Y> -</POINT> -<POINT> -<X>612</X> -<Y>181</Y> -</POINT> -</POINTS> -</RELC> -<RELC> -<ID>111</ID> -<DIAGRAMID>1</DIAGRAMID> -<FONT>Arial,8,,0,clWindowText,0</FONT> -<PEN>1,1,4,0</PEN> -<FROMRELATIVEX>5040</FROMRELATIVEX> -<FROMRELATIVEY>7619</FROMRELATIVEY> -<TORELATIVEX>5000</TORELATIVEX> -<TORELATIVEY>1296</TORELATIVEY> -<POINTS> -<POINT> -<X>861</X> -<Y>170</Y> -</POINT> -<POINT> -<X>861</X> -<Y>235</Y> -</POINT> -<POINT> -<X>861</X> -<Y>235</Y> -</POINT> -<POINT> -<X>861</X> -<Y>327</Y> -</POINT> -</POINTS> -</RELC> -<RELC> -<ID>112</ID> -<DIAGRAMID>1</DIAGRAMID> -<FONT>Arial,8,,0,clWindowText,0</FONT> -<PEN>1,1,4,0</PEN> -<FROMRELATIVEX>5040</FROMRELATIVEX> -<FROMRELATIVEY>5000</FROMRELATIVEY> -<TORELATIVEX>5000</TORELATIVEX> -<TORELATIVEY>3611</TORELATIVEY> -<POINTS> -<POINT> -<X>861</X> -<Y>479</Y> -</POINT> -<POINT> -<X>861</X> -<Y>447</Y> -</POINT> -<POINT> -<X>861</X> -<Y>447</Y> -</POINT> -<POINT> -<X>861</X> -<Y>436</Y> -</POINT> -</POINTS> -</RELC> -<RELC> -<ID>125</ID> -<DIAGRAMID>1</DIAGRAMID> -<FONT>Arial,8,,0,clWindowText,0</FONT> -<PEN>1,1,4,0</PEN> -<FROMRELATIVEX>5000</FROMRELATIVEX> -<FROMRELATIVEY>952</FROMRELATIVEY> -<TORELATIVEX>5000</TORELATIVEX> -<TORELATIVEY>9444</TORELATIVEY> -<POINTS> -<POINT> -<X>733</X> -<Y>113</Y> -</POINT> -<POINT> -<X>578</X> -<Y>113</Y> -</POINT> -<POINT> -<X>578</X> -<Y>113</Y> -</POINT> -<POINT> -<X>434</X> -<Y>113</Y> -</POINT> -</POINTS> -</RELC> -<RELC> -<ID>138</ID> -<DIAGRAMID>1</DIAGRAMID> -<FONT>Arial,8,,0,clWindowText,0</FONT> -<PEN>1,1,4,0</PEN> -<FROMRELATIVEX>4973</FROMRELATIVEX> -<FROMRELATIVEY>5000</FROMRELATIVEY> -<TORELATIVEX>4973</TORELATIVEX> -<TORELATIVEY>5000</TORELATIVEY> -<POINTS> -<POINT> -<X>364</X> -<Y>573</Y> -</POINT> -<POINT> -<X>364</X> -<Y>585</Y> -</POINT> -<POINT> -<X>364</X> -<Y>585</Y> -</POINT> -<POINT> -<X>364</X> -<Y>627</Y> -</POINT> -</POINTS> -</RELC> -<RELC> -<ID>139</ID> -<DIAGRAMID>1</DIAGRAMID> -<FONT>Arial,8,,0,clWindowText,0</FONT> -<PEN>1,1,4,0</PEN> -<FROMRELATIVEX>929</FROMRELATIVEX> -<FROMRELATIVEY>4946</FROMRELATIVEY> -<TORELATIVEX>5000</TORELATIVEX> -<TORELATIVEY>4946</TORELATIVEY> -<POINTS> -<POINT> -<X>272</X> -<Y>674</Y> -</POINT> -<POINT> -<X>237</X> -<Y>674</Y> -</POINT> -<POINT> -<X>237</X> -<Y>674</Y> -</POINT> -<POINT> -<X>189</X> -<Y>674</Y> -</POINT> -</POINTS> -</RELC> -<RELC> -<ID>172</ID> -<DIAGRAMID>1</DIAGRAMID> -<FONT>Arial,8,,0,clWindowText,0</FONT> -<PEN>1,1,4,0</PEN> -<FROMRELATIVEX>5000</FROMRELATIVEX> -<FROMRELATIVEY>4194</FROMRELATIVEY> -<TORELATIVEX>5000</TORELATIVEX> -<TORELATIVEY>5000</TORELATIVEY> -<POINTS> -<POINT> -<X>458</X> -<Y>519</Y> -</POINT> -<POINT> -<X>469</X> -<Y>519</Y> -</POINT> -<POINT> -<X>469</X> -<Y>519</Y> -</POINT> -<POINT> -<X>504</X> -<Y>519</Y> -</POINT> -</POINTS> -</RELC> -<RELC> -<ID>174</ID> -<DIAGRAMID>1</DIAGRAMID> -<FONT>Arial,8,,0,clWindowText,0</FONT> -<PEN>1,1,4,0</PEN> -<FROMRELATIVEX>4633</FROMRELATIVEX> -<FROMRELATIVEY>5000</FROMRELATIVEY> -<TORELATIVEX>5000</TORELATIVEX> -<TORELATIVEY>5000</TORELATIVEY> -<POINTS> -<POINT> -<X>94</X> -<Y>627</Y> -</POINT> -<POINT> -<X>94</X> -<Y>585</Y> -</POINT> -<POINT> -<X>94</X> -<Y>585</Y> -</POINT> -<POINT> -<X>94</X> -<Y>573</Y> -</POINT> -</POINTS> -</RELC> -<RELC> -<ID>175</ID> -<DIAGRAMID>1</DIAGRAMID> -<FONT>Arial,8,,0,clWindowText,0</FONT> -<PEN>1,1,4,0</PEN> -<FROMRELATIVEX>5000</FROMRELATIVEX> -<FROMRELATIVEY>5000</FROMRELATIVEY> -<TORELATIVEX>4146</TORELATIVEX> -<TORELATIVEY>5000</TORELATIVEY> -<POINTS> -<POINT> -<X>80</X> -<Y>89</Y> -</POINT> -<POINT> -<X>80</X> -<Y>202</Y> -</POINT> -<POINT> -<X>80</X> -<Y>202</Y> -</POINT> -<POINT> -<X>80</X> -<Y>479</Y> -</POINT> -</POINTS> -</RELC> -</RELATIONSHIPCONNECTORS> -<SUBCATEGORYCONNECTORS> -</SUBCATEGORYCONNECTORS> -</CONTROLS> -</DIAGRAMS> -</VERSION><VERSION> -<VERSIONINFO> -<VERSIONNUMBER>1</VERSIONNUMBER> -<VERSIONLABEL>Version 2009-06-29</VERSIONLABEL> -<VERSIONDATE>2009-06-29 10:58</VERSIONDATE> -<VERSIONCOMMENTS></VERSIONCOMMENTS> -<VERSIONTYPE>DB</VERSIONTYPE> -<VERSIONTYPEDESC>Data dictionary only (no diagrams)</VERSIONTYPEDESC> -</VERSIONINFO> -<DATADICT> -<DBID>postgresql8</DBID> -<LASTID>46</LASTID> -<DDSETTINGS> -<PKCONNAMETEMPLATE>PK_%table%</PKCONNAMETEMPLATE> -<FKCONNAMETEMPLATE>%relname%</FKCONNAMETEMPLATE> -<CCONNAMETEMPLATE>CC_%table%_%column%</CCONNAMETEMPLATE> -<NOTNULLCONNAMETEMPLATE>NN_%column%</NOTNULLCONNAMETEMPLATE> -<DEFAULTCONNAMETEMPLATE>DEF_%table%_%column%</DEFAULTCONNAMETEMPLATE> -<TUCONNAMETEMPLATE>TUC_%table%_%counter%</TUCONNAMETEMPLATE> -<TCCONNAMETEMPLATE>TCC_%table%_%counter%</TCCONNAMETEMPLATE> -<RELNAMETEMPLATE>%parent%_%child%</RELNAMETEMPLATE> -<INDEXNAMETEMPLATE>IDX_%table%_%counter%</INDEXNAMETEMPLATE> -<DEFTABLEOPTIONS></DEFTABLEOPTIONS> -<DEFINDEXOPTIONS></DEFINDEXOPTIONS> -<BEGINDATABASESCRIPT></BEGINDATABASESCRIPT> -<ENDDATABASESCRIP></ENDDATABASESCRIP> -<BEGINALTERDATABASESCRIPT></BEGINALTERDATABASESCRIPT> -<ENDALTERDATABASESCRIP></ENDALTERDATABASESCRIP> -<BEGINDROPDATABASESCRIPT></BEGINDROPDATABASESCRIPT> -<ENDDROPDATABASESCRIP></ENDDROPDATABASESCRIP> -<GENDIALOGSELECTEDOBJECTS></GENDIALOGSELECTEDOBJECTS> -<GENTABLES>1</GENTABLES> -<GENTABLEOPTIONS>1</GENTABLEOPTIONS> -<GENCONSTRAINTS>1</GENCONSTRAINTS> -<GENINDEXES>1</GENINDEXES> -<GENTRIGGERS>1</GENTRIGGERS> -<GENVIEWS>1</GENVIEWS> -<GENPROCEDURES>1</GENPROCEDURES> -<GENSEQUENCES>1</GENSEQUENCES> -<GENRELATIONSHIPS>1</GENRELATIONSHIPS> -<GENBEGINENDTABLESCRIPTS>1</GENBEGINENDTABLESCRIPTS> -<GENBEGINENDDBSCRIPTS>1</GENBEGINENDDBSCRIPTS> -<GLOBALPREFIX></GLOBALPREFIX> -<AUTOCREATEINDEXESONKEYS>0</AUTOCREATEINDEXESONKEYS> -<CONVERTDOMAINS>0</CONVERTDOMAINS> -<IGNORECOMMENTS>0</IGNORECOMMENTS> -<USESCHEMANAMES>0</USESCHEMANAMES> -<UCONNAMETEMPLATE></UCONNAMETEMPLATE> -<SQLCREATEFILE>D:\User\felmer\dev-workspace\rtd_phosphonetx\source\sql\postgresql\001\schema-001.sql</SQLCREATEFILE> -<SQLDROPFILE>D:\User\felmer\dev-workspace\rtd_phosphonetx\targets\drop.sql</SQLDROPFILE> -</DDSETTINGS> -<DOMAINS> -<DOMAIN> -<NAME>BINARY_DATA</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>BYTEA</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>CHECKSUM</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>8</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>CODE</NAME> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>DESCRIPTION</NAME> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>2000</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>INTEGER_NUMBER</NAME> -<ID>7</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>INTEGER</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>REAL_NUMBER</NAME> -<ID>8</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>SEQUENCE</NAME> -<ID>9</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>TEXT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>SHORT_DESCRIPTION</NAME> -<ID>11</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>200</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>TECH_ID</NAME> -<ID>12</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -</DOMAINS> -<ENTITIES> -<ENT> -<NAME>ABUNDANCES_TYPES</NAME> -<ID>14</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>4</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_ABUNDANCES_TYPES</NAME> -<NAMETEMPLATE>PK_ABUNDANCES_TYPES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>CODE</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>5</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>DESCRIPTION</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>11</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>200</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -</ATTRIBUTES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_ABUNDANCES_TYPES_1</NAME> -<NAMETEMPLATE>TUC_ABUNDANCES_TYPES_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -<ENT> -<NAME>EXPERIMENTS</NAME> -<ID>16</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>3</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_EXPERIMENTS</NAME> -<NAMETEMPLATE>PK_EXPERIMENTS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PERM_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>5</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_EXPERIMENTS_1</NAME> -<NAMETEMPLATE>TUC_EXPERIMENTS_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -<ENT> -<NAME>DATA_SETS</NAME> -<NAMETEMPLATE>IX_FK_DATA_SETS_EXPERIMENTS</NAMETEMPLATE> -<ID>17</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>5</ATTRLASTID> -<IDXLASTID>3</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_DATA_SETS</NAME> -<NAMETEMPLATE>PK_DATA_SETS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>EXPE_ID</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>SAMP_ID</NAME> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PERM_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>5</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<INDEXES> -<INDEX> -<NAME>IX_FK_DATA_SETS_EXPERIMENTS</NAME> -<NAMETEMPLATE>IX_FK_DATA_SETS_EXPERIMENTS</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>EXPE_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>4</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -<INDEX> -<NAME>IX_FK_DATA_SETS_SAMPLES</NAME> -<NAMETEMPLATE>IX_FK_DATA_SETS_SAMPLES</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>SAMP_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>5</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -</INDEXES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_DATA_SETS_1</NAME> -<NAMETEMPLATE>TUC_DATA_SETS_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -<ENT> -<NAME>IDENTIFICATION_DATA</NAME> -<NAMETEMPLATE>IX_FK_IDENTIFICATION_DATA_SPECTRA</NAMETEMPLATE> -<ID>18</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>4</ATTRLASTID> -<IDXLASTID>2</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_IDENTIFICATION_DATA</NAME> -<NAMETEMPLATE>PK_IDENTIFICATION_DATA</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>SPEC_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -<ATTR> -<NAME>SPECTRA_COUNT</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>7</DOMAINID> -<DT> -<DTLISTNAME>INTEGER</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -</ATTRIBUTES> -<INDEXES> -<INDEX> -<NAME>IX_FK_IDENTIFICATION_DATA_SPECTRA</NAME> -<NAMETEMPLATE>IX_FK_IDENTIFICATION_DATA_SPECTRA</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>SPEC_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>3</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -</INDEXES> -</ENT> -<ENT> -<NAME>MODIFICATIONS</NAME> -<NAMETEMPLATE>IX_FK_MODIFICATIONS_PEPTIDES</NAMETEMPLATE> -<ID>19</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>6</ATTRLASTID> -<IDXLASTID>3</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_MODIFICATIONS</NAME> -<NAMETEMPLATE>PK_MODIFICATIONS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PEPT_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>MOTY_ID</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>POS</NAME> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>7</DOMAINID> -<DT> -<DTLISTNAME>INTEGER</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>MASS</NAME> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>6</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<INDEXES> -<INDEX> -<NAME>IX_FK_MODIFICATIONS_PEPTIDES</NAME> -<NAMETEMPLATE>IX_FK_MODIFICATIONS_PEPTIDES</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>PEPT_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>3</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -<INDEX> -<NAME>IX_FK_MODIFICATIONS_MODIFICATION_TYPES</NAME> -<NAMETEMPLATE>IX_FK_MODIFICATIONS_MODIFICATION_TYPES</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>MOTY_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>4</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -</INDEXES> -</ENT> -<ENT> -<NAME>MODIFICATION_TYPES</NAME> -<ID>20</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>6</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_MODIFICATION_TYPES</NAME> -<NAMETEMPLATE>PK_MODIFICATION_TYPES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>CODE</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>5</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>DESCRIPTION</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>11</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>200</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -<ATTR> -<NAME>MASS</NAME> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -<ATTR> -<NAME>DELTA_MASS</NAME> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -</ATTRIBUTES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_MODIFICATION_TYPES_1</NAME> -<NAMETEMPLATE>TUC_MODIFICATION_TYPES_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -<ENT> -<NAME>PEPTIDES</NAME> -<NAMETEMPLATE>IX_FK_PEPTIDES_ABUNDANCES</NAMETEMPLATE> -<ID>21</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>9</ATTRLASTID> -<IDXLASTID>5</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_PEPTIDES</NAME> -<NAMETEMPLATE>PK_PEPTIDES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PROT_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>SEQU_ID</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>ABTY_ID</NAME> -<ID>8</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -<ATTR> -<NAME>IDDA_ID</NAME> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -<ATTR> -<NAME>CHARGE</NAME> -<ID>7</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>7</DOMAINID> -<DT> -<DTLISTNAME>INTEGER</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>7</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>ABUNDANCE</NAME> -<ID>9</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -</ATTRIBUTES> -<INDEXES> -<INDEX> -<NAME>IX_FK_PEPTIDES_IDENTIFICATION_DATA</NAME> -<NAMETEMPLATE>IX_FK_PEPTIDES_IDENTIFICATION_DATA</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>IDDA_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>6</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -<INDEX> -<NAME>IX_FK_PEPTIDES_PROTEINS</NAME> -<NAMETEMPLATE>IX_FK_PEPTIDES_PROTEINS</NAMETEMPLATE> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>PROT_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>3</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -<INDEX> -<NAME>IX_FK_PEPTIDES_SEQUENCES</NAME> -<NAMETEMPLATE>IX_FK_PEPTIDES_SEQUENCES</NAMETEMPLATE> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>SEQU_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>4</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -</INDEXES> -</ENT> -<ENT> -<NAME>PROTEIN_STATISTICS</NAME> -<ID>22</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>2</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_PROTEIN_STATISTICS</NAME> -<NAMETEMPLATE>PK_PROTEIN_STATISTICS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -</ENT> -<ENT> -<NAME>PROTEINS</NAME> -<NAMETEMPLATE>IX_FK_PROTEINS_DATA_SETS</NAMETEMPLATE> -<ID>23</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>10</ATTRLASTID> -<IDXLASTID>5</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_PROTEINS</NAME> -<NAMETEMPLATE>PK_PROTEINS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>DASE_ID</NAME> -<ID>10</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>10</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>SEQU_ID</NAME> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -<ATTR> -<NAME>ABTY_ID</NAME> -<ID>8</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -<ATTR> -<NAME>PRST_ID</NAME> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -<ATTR> -<NAME>DESCRIPTION</NAME> -<ID>7</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>6</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>2000</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>7</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>ABUNDANCE</NAME> -<ID>9</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -</ATTRIBUTES> -<INDEXES> -<INDEX> -<NAME>IX_FK_PROTEINS_SEQUENCES</NAME> -<NAMETEMPLATE>IX_FK_PROTEINS_SEQUENCES</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>SEQU_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>5</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -<INDEX> -<NAME>IX_FK_PROTEINS_PROTEIN_STATISTICS</NAME> -<NAMETEMPLATE>IX_FK_PROTEINS_PROTEIN_STATISTICS</NAMETEMPLATE> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>PRST_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>6</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -</INDEXES> -</ENT> -<ENT> -<NAME>SAMPLES</NAME> -<ID>24</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>4</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_SAMPLES</NAME> -<NAMETEMPLATE>PK_SAMPLES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PERM_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>5</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>EXPE_ID</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_SAMPLES_1</NAME> -<NAMETEMPLATE>TUC_SAMPLES_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -<ENT> -<NAME>SEQUENCES</NAME> -<ID>25</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>4</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_SEQUENCES</NAME> -<NAMETEMPLATE>PK_SEQUENCES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>AMINO_ACID_SEQUENCE</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>9</DOMAINID> -<DT> -<DTLISTNAME>TEXT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>CHECKSUM</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>4</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>8</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -</ENT> -<ENT> -<NAME>SPECTRA</NAME> -<ID>26</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>3</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_SPECTRA</NAME> -<NAMETEMPLATE>PK_SPECTRA</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>DATA</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>3</DOMAINID> -<DT> -<DTLISTNAME>BYTEA</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -</ENT> -</ENTITIES> -<SUBCATEGORIES> -</SUBCATEGORIES> -<TEXTAREAS> -</TEXTAREAS> -<GROUPBOXES> -</GROUPBOXES> -<STAMPS> -</STAMPS> -<SEQUENCES> -<SEQUENCE> -<NAME>SEQ</NAME> -<ID>10</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<INCREMENT>1</INCREMENT> -<SEED>0</SEED> -<MAX>NOMAXVALUE</MAX> -<MIN>NOMINVALUE</MIN> -<CACHE></CACHE> -<CACHECODE></CACHECODE> -<CYCLE></CYCLE> -<ORDER></ORDER> -</SEQUENCE> -</SEQUENCES> -<PROCEDURES> -</PROCEDURES> -<VIEWS> -</VIEWS> -<RELATIONSHIPS> -<REL> -<NAME>DA_EX_FK</NAME> -<NAMETEMPLATE>DA_EX_FK</NAMETEMPLATE> -<ID>29</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>16</PARENTOBJECTID> -<CHILDOBJECTID>17</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>DA_EX_FK</NAME> -<NAMETEMPLATE>DA_EX_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>4</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>DA_SA_FK</NAME> -<NAMETEMPLATE>DA_SA_FK</NAMETEMPLATE> -<ID>30</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>24</PARENTOBJECTID> -<CHILDOBJECTID>17</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>DA_SA_FK</NAME> -<NAMETEMPLATE>DA_SA_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>5</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>ID_SP_FK</NAME> -<NAMETEMPLATE>ID_SP_FK</NAMETEMPLATE> -<ID>31</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>26</PARENTOBJECTID> -<CHILDOBJECTID>18</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>0</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>ID_SP_FK</NAME> -<NAMETEMPLATE>ID_SP_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>3</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>MO_PE_FK</NAME> -<NAMETEMPLATE>MO_PE_FK</NAMETEMPLATE> -<ID>32</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>21</PARENTOBJECTID> -<CHILDOBJECTID>19</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>MO_PE_FK</NAME> -<NAMETEMPLATE>MO_PE_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>3</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>MO_MT_FK</NAME> -<NAMETEMPLATE>MO_MT_FK</NAMETEMPLATE> -<ID>33</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>20</PARENTOBJECTID> -<CHILDOBJECTID>19</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>MO_MT_FK</NAME> -<NAMETEMPLATE>MO_MT_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>4</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>PE_ID_FK</NAME> -<NAMETEMPLATE>PE_ID_FK</NAMETEMPLATE> -<ID>35</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>18</PARENTOBJECTID> -<CHILDOBJECTID>21</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>0</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>PE_ID_FK</NAME> -<NAMETEMPLATE>PE_ID_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>6</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>6</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>PE_PR_FK</NAME> -<NAMETEMPLATE>PE_PR_FK</NAMETEMPLATE> -<ID>36</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>23</PARENTOBJECTID> -<CHILDOBJECTID>21</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>PE_PR_FK</NAME> -<NAMETEMPLATE>PE_PR_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>3</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>PE_SE_FK</NAME> -<NAMETEMPLATE>PE_SE_FK</NAMETEMPLATE> -<ID>37</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>25</PARENTOBJECTID> -<CHILDOBJECTID>21</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>PE_SE_FK</NAME> -<NAMETEMPLATE>PE_SE_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>4</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>PR_SE_FK</NAME> -<NAMETEMPLATE>PR_SE_FK</NAMETEMPLATE> -<ID>39</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>25</PARENTOBJECTID> -<CHILDOBJECTID>23</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>0</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>PR_SE_FK</NAME> -<NAMETEMPLATE>PR_SE_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>5</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>PR_PS_FK</NAME> -<NAMETEMPLATE>PR_PS_FK</NAMETEMPLATE> -<ID>41</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>22</PARENTOBJECTID> -<CHILDOBJECTID>23</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>0</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>PR_PS_FK</NAME> -<NAMETEMPLATE>PR_PS_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>6</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>6</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>ABUNDANCES_TYPES_PROTEINS</NAME> -<NAMETEMPLATE>ABUNDANCES_TYPES_PROTEINS</NAMETEMPLATE> -<ID>43</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>14</PARENTOBJECTID> -<CHILDOBJECTID>23</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>0</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>ABUNDANCES_TYPES_PROTEINS</NAME> -<NAMETEMPLATE>ABUNDANCES_TYPES_PROTEINS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>8</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>8</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>ABUNDANCES_TYPES_PEPTIDES</NAME> -<NAMETEMPLATE>ABUNDANCES_TYPES_PEPTIDES</NAMETEMPLATE> -<ID>44</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>14</PARENTOBJECTID> -<CHILDOBJECTID>21</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>0</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>ABUNDANCES_TYPES_PEPTIDES</NAME> -<NAMETEMPLATE>ABUNDANCES_TYPES_PEPTIDES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>8</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>8</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>DATA_SETS_PROTEINS</NAME> -<NAMETEMPLATE>DATA_SETS_PROTEINS</NAMETEMPLATE> -<ID>46</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>17</PARENTOBJECTID> -<CHILDOBJECTID>23</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>DATA_SETS_PROTEINS</NAME> -<NAMETEMPLATE>DATA_SETS_PROTEINS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>10</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>10</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -</RELATIONSHIPS> -<SUBCATEGORYCONNECTIONS> -</SUBCATEGORYCONNECTIONS> -</DATADICT> -</VERSION> -<VERSION> -<VERSIONINFO> -<VERSIONNUMBER>2</VERSIONNUMBER> -<VERSIONLABEL>Version 2009-06-29 1</VERSIONLABEL> -<VERSIONDATE>2009-06-29 11:02</VERSIONDATE> -<VERSIONCOMMENTS></VERSIONCOMMENTS> -<VERSIONTYPE>DB</VERSIONTYPE> -<VERSIONTYPEDESC>Data dictionary only (no diagrams)</VERSIONTYPEDESC> -</VERSIONINFO> -<DATADICT> -<DBID>postgresql8</DBID> -<LASTID>46</LASTID> -<DDSETTINGS> -<PKCONNAMETEMPLATE>PK_%table%</PKCONNAMETEMPLATE> -<FKCONNAMETEMPLATE>%relname%</FKCONNAMETEMPLATE> -<CCONNAMETEMPLATE>CC_%table%_%column%</CCONNAMETEMPLATE> -<NOTNULLCONNAMETEMPLATE>NN_%column%</NOTNULLCONNAMETEMPLATE> -<DEFAULTCONNAMETEMPLATE>DEF_%table%_%column%</DEFAULTCONNAMETEMPLATE> -<TUCONNAMETEMPLATE>TUC_%table%_%counter%</TUCONNAMETEMPLATE> -<TCCONNAMETEMPLATE>TCC_%table%_%counter%</TCCONNAMETEMPLATE> -<RELNAMETEMPLATE>%parent%_%child%</RELNAMETEMPLATE> -<INDEXNAMETEMPLATE>IDX_%table%_%counter%</INDEXNAMETEMPLATE> -<DEFTABLEOPTIONS></DEFTABLEOPTIONS> -<DEFINDEXOPTIONS></DEFINDEXOPTIONS> -<BEGINDATABASESCRIPT></BEGINDATABASESCRIPT> -<ENDDATABASESCRIP></ENDDATABASESCRIP> -<BEGINALTERDATABASESCRIPT></BEGINALTERDATABASESCRIPT> -<ENDALTERDATABASESCRIP></ENDALTERDATABASESCRIP> -<BEGINDROPDATABASESCRIPT></BEGINDROPDATABASESCRIPT> -<ENDDROPDATABASESCRIP></ENDDROPDATABASESCRIP> -<GENDIALOGSELECTEDOBJECTS></GENDIALOGSELECTEDOBJECTS> -<GENTABLES>1</GENTABLES> -<GENTABLEOPTIONS>1</GENTABLEOPTIONS> -<GENCONSTRAINTS>1</GENCONSTRAINTS> -<GENINDEXES>1</GENINDEXES> -<GENTRIGGERS>1</GENTRIGGERS> -<GENVIEWS>1</GENVIEWS> -<GENPROCEDURES>1</GENPROCEDURES> -<GENSEQUENCES>1</GENSEQUENCES> -<GENRELATIONSHIPS>1</GENRELATIONSHIPS> -<GENBEGINENDTABLESCRIPTS>1</GENBEGINENDTABLESCRIPTS> -<GENBEGINENDDBSCRIPTS>1</GENBEGINENDDBSCRIPTS> -<GLOBALPREFIX></GLOBALPREFIX> -<AUTOCREATEINDEXESONKEYS>0</AUTOCREATEINDEXESONKEYS> -<CONVERTDOMAINS>0</CONVERTDOMAINS> -<IGNORECOMMENTS>0</IGNORECOMMENTS> -<USESCHEMANAMES>0</USESCHEMANAMES> -<UCONNAMETEMPLATE></UCONNAMETEMPLATE> -<SQLCREATEFILE>D:\User\felmer\dev-workspace\rtd_phosphonetx\source\sql\postgresql\001\schema-001.sql</SQLCREATEFILE> -<SQLDROPFILE>D:\User\felmer\dev-workspace\rtd_phosphonetx\targets\drop.sql</SQLDROPFILE> -</DDSETTINGS> -<DOMAINS> -<DOMAIN> -<NAME>BINARY_DATA</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>BYTEA</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>CHECKSUM</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>8</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>CODE</NAME> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>DESCRIPTION</NAME> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>2000</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>INTEGER_NUMBER</NAME> -<ID>7</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>INTEGER</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>REAL_NUMBER</NAME> -<ID>8</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>SEQUENCE</NAME> -<ID>9</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>TEXT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>SHORT_DESCRIPTION</NAME> -<ID>11</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>200</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>TECH_ID</NAME> -<ID>12</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -</DOMAINS> -<ENTITIES> -<ENT> -<NAME>ABUNDANCES_TYPES</NAME> -<ID>14</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>4</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_ABUNDANCES_TYPES</NAME> -<NAMETEMPLATE>PK_ABUNDANCES_TYPES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>CODE</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>5</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>DESCRIPTION</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>11</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>200</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -</ATTRIBUTES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_ABUNDANCES_TYPES_1</NAME> -<NAMETEMPLATE>TUC_ABUNDANCES_TYPES_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -<ENT> -<NAME>EXPERIMENTS</NAME> -<ID>16</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>3</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_EXPERIMENTS</NAME> -<NAMETEMPLATE>PK_EXPERIMENTS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PERM_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>5</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_EXPERIMENTS_1</NAME> -<NAMETEMPLATE>TUC_EXPERIMENTS_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -<ENT> -<NAME>DATA_SETS</NAME> -<NAMETEMPLATE>IX_FK_DATA_SETS_EXPERIMENTS</NAMETEMPLATE> -<ID>17</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>5</ATTRLASTID> -<IDXLASTID>3</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_DATA_SETS</NAME> -<NAMETEMPLATE>PK_DATA_SETS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>EXPE_ID</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>SAMP_ID</NAME> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PERM_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>5</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<INDEXES> -<INDEX> -<NAME>IX_FK_DATA_SETS_EXPERIMENTS</NAME> -<NAMETEMPLATE>IX_FK_DATA_SETS_EXPERIMENTS</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>EXPE_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>4</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -<INDEX> -<NAME>IX_FK_DATA_SETS_SAMPLES</NAME> -<NAMETEMPLATE>IX_FK_DATA_SETS_SAMPLES</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>SAMP_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>5</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -</INDEXES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_DATA_SETS_1</NAME> -<NAMETEMPLATE>TUC_DATA_SETS_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -<ENT> -<NAME>IDENTIFICATION_DATA</NAME> -<NAMETEMPLATE>IX_FK_IDENTIFICATION_DATA_SPECTRA</NAMETEMPLATE> -<ID>18</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>4</ATTRLASTID> -<IDXLASTID>2</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_IDENTIFICATION_DATA</NAME> -<NAMETEMPLATE>PK_IDENTIFICATION_DATA</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>SPEC_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -<ATTR> -<NAME>SPECTRA_COUNT</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>7</DOMAINID> -<DT> -<DTLISTNAME>INTEGER</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -</ATTRIBUTES> -<INDEXES> -<INDEX> -<NAME>IX_FK_IDENTIFICATION_DATA_SPECTRA</NAME> -<NAMETEMPLATE>IX_FK_IDENTIFICATION_DATA_SPECTRA</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>SPEC_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>3</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -</INDEXES> -</ENT> -<ENT> -<NAME>MODIFICATIONS</NAME> -<NAMETEMPLATE>IX_FK_MODIFICATIONS_PEPTIDES</NAMETEMPLATE> -<ID>19</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>6</ATTRLASTID> -<IDXLASTID>3</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_MODIFICATIONS</NAME> -<NAMETEMPLATE>PK_MODIFICATIONS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PEPT_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>MOTY_ID</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>POS</NAME> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>7</DOMAINID> -<DT> -<DTLISTNAME>INTEGER</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>MASS</NAME> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>6</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<INDEXES> -<INDEX> -<NAME>IX_FK_MODIFICATIONS_PEPTIDES</NAME> -<NAMETEMPLATE>IX_FK_MODIFICATIONS_PEPTIDES</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>PEPT_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>3</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -<INDEX> -<NAME>IX_FK_MODIFICATIONS_MODIFICATION_TYPES</NAME> -<NAMETEMPLATE>IX_FK_MODIFICATIONS_MODIFICATION_TYPES</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>MOTY_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>4</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -</INDEXES> -</ENT> -<ENT> -<NAME>MODIFICATION_TYPES</NAME> -<ID>20</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>6</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_MODIFICATION_TYPES</NAME> -<NAMETEMPLATE>PK_MODIFICATION_TYPES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>CODE</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>5</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>DESCRIPTION</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>11</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>200</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -<ATTR> -<NAME>MASS</NAME> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -<ATTR> -<NAME>DELTA_MASS</NAME> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -</ATTRIBUTES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_MODIFICATION_TYPES_1</NAME> -<NAMETEMPLATE>TUC_MODIFICATION_TYPES_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -<ENT> -<NAME>PEPTIDES</NAME> -<NAMETEMPLATE>IX_FK_PEPTIDES_ABUNDANCES</NAMETEMPLATE> -<ID>21</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>9</ATTRLASTID> -<IDXLASTID>5</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_PEPTIDES</NAME> -<NAMETEMPLATE>PK_PEPTIDES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PROT_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>SEQU_ID</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>ABTY_ID</NAME> -<ID>8</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -<ATTR> -<NAME>IDDA_ID</NAME> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -<ATTR> -<NAME>CHARGE</NAME> -<ID>7</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>7</DOMAINID> -<DT> -<DTLISTNAME>INTEGER</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>7</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>ABUNDANCE</NAME> -<ID>9</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -</ATTRIBUTES> -<INDEXES> -<INDEX> -<NAME>IX_FK_PEPTIDES_IDENTIFICATION_DATA</NAME> -<NAMETEMPLATE>IX_FK_PEPTIDES_IDENTIFICATION_DATA</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>IDDA_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>6</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -<INDEX> -<NAME>IX_FK_PEPTIDES_PROTEINS</NAME> -<NAMETEMPLATE>IX_FK_PEPTIDES_PROTEINS</NAMETEMPLATE> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>PROT_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>3</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -<INDEX> -<NAME>IX_FK_PEPTIDES_SEQUENCES</NAME> -<NAMETEMPLATE>IX_FK_PEPTIDES_SEQUENCES</NAMETEMPLATE> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>SEQU_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>4</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -</INDEXES> -</ENT> -<ENT> -<NAME>PROTEIN_STATISTICS</NAME> -<ID>22</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>2</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_PROTEIN_STATISTICS</NAME> -<NAMETEMPLATE>PK_PROTEIN_STATISTICS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -</ENT> -<ENT> -<NAME>PROTEINS</NAME> -<NAMETEMPLATE>IX_FK_PROTEINS_DATA_SETS</NAMETEMPLATE> -<ID>23</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>10</ATTRLASTID> -<IDXLASTID>7</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_PROTEINS</NAME> -<NAMETEMPLATE>PK_PROTEINS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>DASE_ID</NAME> -<ID>10</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>10</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>SEQU_ID</NAME> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -<ATTR> -<NAME>ABTY_ID</NAME> -<ID>8</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -<ATTR> -<NAME>PRST_ID</NAME> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -<ATTR> -<NAME>DESCRIPTION</NAME> -<ID>7</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>6</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>2000</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>7</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>ABUNDANCE</NAME> -<ID>9</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -</ATTRIBUTES> -<INDEXES> -<INDEX> -<NAME>IX_FK_PROTEINS_SEQUENCES</NAME> -<NAMETEMPLATE>IX_FK_PROTEINS_SEQUENCES</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>SEQU_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>5</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -<INDEX> -<NAME>IX_FK_PROTEINS_PROTEIN_STATISTICS</NAME> -<NAMETEMPLATE>IX_FK_PROTEINS_PROTEIN_STATISTICS</NAMETEMPLATE> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>PRST_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>6</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -<INDEX> -<NAME>IDX_PROTEINS_3</NAME> -<NAMETEMPLATE>IDX_PROTEINS_3</NAMETEMPLATE> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>DASE_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>10</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -</INDEXES> -</ENT> -<ENT> -<NAME>SAMPLES</NAME> -<ID>24</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>4</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_SAMPLES</NAME> -<NAMETEMPLATE>PK_SAMPLES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PERM_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>5</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>EXPE_ID</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_SAMPLES_1</NAME> -<NAMETEMPLATE>TUC_SAMPLES_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -<ENT> -<NAME>SEQUENCES</NAME> -<ID>25</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>4</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_SEQUENCES</NAME> -<NAMETEMPLATE>PK_SEQUENCES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>AMINO_ACID_SEQUENCE</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>9</DOMAINID> -<DT> -<DTLISTNAME>TEXT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>CHECKSUM</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>4</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>8</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -</ENT> -<ENT> -<NAME>SPECTRA</NAME> -<ID>26</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>3</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_SPECTRA</NAME> -<NAMETEMPLATE>PK_SPECTRA</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>DATA</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>3</DOMAINID> -<DT> -<DTLISTNAME>BYTEA</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -</ENT> -</ENTITIES> -<SUBCATEGORIES> -</SUBCATEGORIES> -<TEXTAREAS> -</TEXTAREAS> -<GROUPBOXES> -</GROUPBOXES> -<STAMPS> -</STAMPS> -<SEQUENCES> -</SEQUENCES> -<PROCEDURES> -</PROCEDURES> -<VIEWS> -</VIEWS> -<RELATIONSHIPS> -<REL> -<NAME>DA_EX_FK</NAME> -<NAMETEMPLATE>DA_EX_FK</NAMETEMPLATE> -<ID>29</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>16</PARENTOBJECTID> -<CHILDOBJECTID>17</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>DA_EX_FK</NAME> -<NAMETEMPLATE>DA_EX_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>4</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>DA_SA_FK</NAME> -<NAMETEMPLATE>DA_SA_FK</NAMETEMPLATE> -<ID>30</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>24</PARENTOBJECTID> -<CHILDOBJECTID>17</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>DA_SA_FK</NAME> -<NAMETEMPLATE>DA_SA_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>5</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>ID_SP_FK</NAME> -<NAMETEMPLATE>ID_SP_FK</NAMETEMPLATE> -<ID>31</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>26</PARENTOBJECTID> -<CHILDOBJECTID>18</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>0</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>ID_SP_FK</NAME> -<NAMETEMPLATE>ID_SP_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>3</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>MO_PE_FK</NAME> -<NAMETEMPLATE>MO_PE_FK</NAMETEMPLATE> -<ID>32</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>21</PARENTOBJECTID> -<CHILDOBJECTID>19</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>MO_PE_FK</NAME> -<NAMETEMPLATE>MO_PE_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>3</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>MO_MT_FK</NAME> -<NAMETEMPLATE>MO_MT_FK</NAMETEMPLATE> -<ID>33</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>20</PARENTOBJECTID> -<CHILDOBJECTID>19</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>MO_MT_FK</NAME> -<NAMETEMPLATE>MO_MT_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>4</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>PE_ID_FK</NAME> -<NAMETEMPLATE>PE_ID_FK</NAMETEMPLATE> -<ID>35</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>18</PARENTOBJECTID> -<CHILDOBJECTID>21</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>0</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>PE_ID_FK</NAME> -<NAMETEMPLATE>PE_ID_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>6</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>6</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>PE_PR_FK</NAME> -<NAMETEMPLATE>PE_PR_FK</NAMETEMPLATE> -<ID>36</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>23</PARENTOBJECTID> -<CHILDOBJECTID>21</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>PE_PR_FK</NAME> -<NAMETEMPLATE>PE_PR_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>3</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>PE_SE_FK</NAME> -<NAMETEMPLATE>PE_SE_FK</NAMETEMPLATE> -<ID>37</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>25</PARENTOBJECTID> -<CHILDOBJECTID>21</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>PE_SE_FK</NAME> -<NAMETEMPLATE>PE_SE_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>4</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>PR_SE_FK</NAME> -<NAMETEMPLATE>PR_SE_FK</NAMETEMPLATE> -<ID>39</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>25</PARENTOBJECTID> -<CHILDOBJECTID>23</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>0</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>PR_SE_FK</NAME> -<NAMETEMPLATE>PR_SE_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>5</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>PR_PS_FK</NAME> -<NAMETEMPLATE>PR_PS_FK</NAMETEMPLATE> -<ID>41</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>22</PARENTOBJECTID> -<CHILDOBJECTID>23</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>0</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>PR_PS_FK</NAME> -<NAMETEMPLATE>PR_PS_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>6</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>6</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>ABUNDANCES_TYPES_PROTEINS</NAME> -<NAMETEMPLATE>ABUNDANCES_TYPES_PROTEINS</NAMETEMPLATE> -<ID>43</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>14</PARENTOBJECTID> -<CHILDOBJECTID>23</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>0</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>ABUNDANCES_TYPES_PROTEINS</NAME> -<NAMETEMPLATE>ABUNDANCES_TYPES_PROTEINS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>8</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>8</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>ABUNDANCES_TYPES_PEPTIDES</NAME> -<NAMETEMPLATE>ABUNDANCES_TYPES_PEPTIDES</NAMETEMPLATE> -<ID>44</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>14</PARENTOBJECTID> -<CHILDOBJECTID>21</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>0</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>ABUNDANCES_TYPES_PEPTIDES</NAME> -<NAMETEMPLATE>ABUNDANCES_TYPES_PEPTIDES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>8</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>8</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>DATA_SETS_PROTEINS</NAME> -<NAMETEMPLATE>DATA_SETS_PROTEINS</NAMETEMPLATE> -<ID>46</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>17</PARENTOBJECTID> -<CHILDOBJECTID>23</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>DATA_SETS_PROTEINS</NAME> -<NAMETEMPLATE>DATA_SETS_PROTEINS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>10</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>10</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -</RELATIONSHIPS> -<SUBCATEGORYCONNECTIONS> -</SUBCATEGORYCONNECTIONS> -</DATADICT> -</VERSION> -<VERSION> -<VERSIONINFO> -<VERSIONNUMBER>3</VERSIONNUMBER> -<VERSIONLABEL>Version 2009-06-29 2</VERSIONLABEL> -<VERSIONDATE>2009-06-29 12:29</VERSIONDATE> -<VERSIONCOMMENTS></VERSIONCOMMENTS> -<VERSIONTYPE>DB</VERSIONTYPE> -<VERSIONTYPEDESC>Data dictionary only (no diagrams)</VERSIONTYPEDESC> -</VERSIONINFO> -<DATADICT> -<DBID>postgresql8</DBID> -<LASTID>48</LASTID> -<DDSETTINGS> -<PKCONNAMETEMPLATE>PK_%table%</PKCONNAMETEMPLATE> -<FKCONNAMETEMPLATE>%relname%</FKCONNAMETEMPLATE> -<CCONNAMETEMPLATE>CC_%table%_%column%</CCONNAMETEMPLATE> -<NOTNULLCONNAMETEMPLATE>NN_%column%</NOTNULLCONNAMETEMPLATE> -<DEFAULTCONNAMETEMPLATE>DEF_%table%_%column%</DEFAULTCONNAMETEMPLATE> -<TUCONNAMETEMPLATE>TUC_%table%_%counter%</TUCONNAMETEMPLATE> -<TCCONNAMETEMPLATE>TCC_%table%_%counter%</TCCONNAMETEMPLATE> -<RELNAMETEMPLATE>%parent%_%child%</RELNAMETEMPLATE> -<INDEXNAMETEMPLATE>IDX_%table%_%counter%</INDEXNAMETEMPLATE> -<DEFTABLEOPTIONS></DEFTABLEOPTIONS> -<DEFINDEXOPTIONS></DEFINDEXOPTIONS> -<BEGINDATABASESCRIPT></BEGINDATABASESCRIPT> -<ENDDATABASESCRIP></ENDDATABASESCRIP> -<BEGINALTERDATABASESCRIPT></BEGINALTERDATABASESCRIPT> -<ENDALTERDATABASESCRIP></ENDALTERDATABASESCRIP> -<BEGINDROPDATABASESCRIPT></BEGINDROPDATABASESCRIPT> -<ENDDROPDATABASESCRIP></ENDDROPDATABASESCRIP> -<GENDIALOGSELECTEDOBJECTS></GENDIALOGSELECTEDOBJECTS> -<GENTABLES>1</GENTABLES> -<GENTABLEOPTIONS>1</GENTABLEOPTIONS> -<GENCONSTRAINTS>1</GENCONSTRAINTS> -<GENINDEXES>1</GENINDEXES> -<GENTRIGGERS>1</GENTRIGGERS> -<GENVIEWS>1</GENVIEWS> -<GENPROCEDURES>1</GENPROCEDURES> -<GENSEQUENCES>1</GENSEQUENCES> -<GENRELATIONSHIPS>1</GENRELATIONSHIPS> -<GENBEGINENDTABLESCRIPTS>1</GENBEGINENDTABLESCRIPTS> -<GENBEGINENDDBSCRIPTS>1</GENBEGINENDDBSCRIPTS> -<GLOBALPREFIX></GLOBALPREFIX> -<AUTOCREATEINDEXESONKEYS>0</AUTOCREATEINDEXESONKEYS> -<CONVERTDOMAINS>0</CONVERTDOMAINS> -<IGNORECOMMENTS>0</IGNORECOMMENTS> -<USESCHEMANAMES>0</USESCHEMANAMES> -<UCONNAMETEMPLATE></UCONNAMETEMPLATE> -<SQLCREATEFILE>D:\User\felmer\dev-workspace\rtd_phosphonetx\source\sql\postgresql\001\schema-001.sql</SQLCREATEFILE> -<SQLDROPFILE>D:\User\felmer\dev-workspace\rtd_phosphonetx\targets\drop.sql</SQLDROPFILE> -</DDSETTINGS> -<DOMAINS> -<DOMAIN> -<NAME>BINARY_DATA</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>BYTEA</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>CHECKSUM</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>8</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>CODE</NAME> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>DESCRIPTION</NAME> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>2000</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>INTEGER_NUMBER</NAME> -<ID>7</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>INTEGER</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>REAL_NUMBER</NAME> -<ID>8</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>SEQUENCE</NAME> -<ID>9</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>TEXT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>SHORT_DESCRIPTION</NAME> -<ID>11</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>200</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>TECH_ID</NAME> -<ID>12</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -</DOMAINS> -<ENTITIES> -<ENT> -<NAME>ABUNDANCES_TYPES</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>14</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>4</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_ABUNDANCES_TYPES</NAME> -<NAMETEMPLATE>PK_ABUNDANCES_TYPES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>CODE</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>5</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>DESCRIPTION</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>11</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>200</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -</ATTRIBUTES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_ABUNDANCES_TYPES_1</NAME> -<NAMETEMPLATE>TUC_ABUNDANCES_TYPES_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -<ENT> -<NAME>EXPERIMENTS</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>16</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>3</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_EXPERIMENTS</NAME> -<NAMETEMPLATE>PK_EXPERIMENTS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PERM_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>5</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_EXPERIMENTS_1</NAME> -<NAMETEMPLATE>TUC_EXPERIMENTS_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -<ENT> -<NAME>DATA_SETS</NAME> -<NAMETEMPLATE>IX_FK_DATA_SETS_EXPERIMENTS</NAMETEMPLATE> -<ID>17</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>5</ATTRLASTID> -<IDXLASTID>3</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_DATA_SETS</NAME> -<NAMETEMPLATE>PK_DATA_SETS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>EXPE_ID</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>SAMP_ID</NAME> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PERM_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>5</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<INDEXES> -<INDEX> -<NAME>IX_FK_DATA_SETS_EXPERIMENTS</NAME> -<NAMETEMPLATE>IX_FK_DATA_SETS_EXPERIMENTS</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>EXPE_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>4</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -<INDEX> -<NAME>IX_FK_DATA_SETS_SAMPLES</NAME> -<NAMETEMPLATE>IX_FK_DATA_SETS_SAMPLES</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>SAMP_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>5</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -</INDEXES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_DATA_SETS_1</NAME> -<NAMETEMPLATE>TUC_DATA_SETS_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -<ENT> -<NAME>IDENTIFICATION_DATA</NAME> -<NAMETEMPLATE>IX_FK_IDENTIFICATION_DATA_SPECTRA</NAMETEMPLATE> -<ID>18</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>4</ATTRLASTID> -<IDXLASTID>2</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_IDENTIFICATION_DATA</NAME> -<NAMETEMPLATE>PK_IDENTIFICATION_DATA</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>SPEC_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -<ATTR> -<NAME>SPECTRA_COUNT</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>7</DOMAINID> -<DT> -<DTLISTNAME>INTEGER</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -</ATTRIBUTES> -<INDEXES> -<INDEX> -<NAME>IX_FK_IDENTIFICATION_DATA_SPECTRA</NAME> -<NAMETEMPLATE>IX_FK_IDENTIFICATION_DATA_SPECTRA</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>SPEC_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>3</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -</INDEXES> -</ENT> -<ENT> -<NAME>MODIFICATIONS</NAME> -<NAMETEMPLATE>IX_FK_MODIFICATIONS_PEPTIDES</NAMETEMPLATE> -<ID>19</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>6</ATTRLASTID> -<IDXLASTID>3</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_MODIFICATIONS</NAME> -<NAMETEMPLATE>PK_MODIFICATIONS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PEPT_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>MOTY_ID</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>POS</NAME> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>7</DOMAINID> -<DT> -<DTLISTNAME>INTEGER</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>MASS</NAME> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>6</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<INDEXES> -<INDEX> -<NAME>IX_FK_MODIFICATIONS_PEPTIDES</NAME> -<NAMETEMPLATE>IX_FK_MODIFICATIONS_PEPTIDES</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>PEPT_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>3</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -<INDEX> -<NAME>IX_FK_MODIFICATIONS_MODIFICATION_TYPES</NAME> -<NAMETEMPLATE>IX_FK_MODIFICATIONS_MODIFICATION_TYPES</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>MOTY_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>4</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -</INDEXES> -</ENT> -<ENT> -<NAME>MODIFICATION_TYPES</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>20</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>6</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_MODIFICATION_TYPES</NAME> -<NAMETEMPLATE>PK_MODIFICATION_TYPES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>CODE</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>5</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>DESCRIPTION</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>11</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>200</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -<ATTR> -<NAME>MASS</NAME> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -<ATTR> -<NAME>DELTA_MASS</NAME> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -</ATTRIBUTES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_MODIFICATION_TYPES_1</NAME> -<NAMETEMPLATE>TUC_MODIFICATION_TYPES_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -<ENT> -<NAME>PEPTIDES</NAME> -<NAMETEMPLATE>IX_FK_PEPTIDES_ABUNDANCES</NAMETEMPLATE> -<ID>21</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>9</ATTRLASTID> -<IDXLASTID>5</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_PEPTIDES</NAME> -<NAMETEMPLATE>PK_PEPTIDES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PROT_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>SEQU_ID</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>ABTY_ID</NAME> -<ID>8</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -<ATTR> -<NAME>IDDA_ID</NAME> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -<ATTR> -<NAME>CHARGE</NAME> -<ID>7</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>7</DOMAINID> -<DT> -<DTLISTNAME>INTEGER</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>7</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>ABUNDANCE</NAME> -<ID>9</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -</ATTRIBUTES> -<INDEXES> -<INDEX> -<NAME>IX_FK_PEPTIDES_IDENTIFICATION_DATA</NAME> -<NAMETEMPLATE>IX_FK_PEPTIDES_IDENTIFICATION_DATA</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>IDDA_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>6</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -<INDEX> -<NAME>IX_FK_PEPTIDES_PROTEINS</NAME> -<NAMETEMPLATE>IX_FK_PEPTIDES_PROTEINS</NAMETEMPLATE> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>PROT_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>3</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -<INDEX> -<NAME>IX_FK_PEPTIDES_SEQUENCES</NAME> -<NAMETEMPLATE>IX_FK_PEPTIDES_SEQUENCES</NAMETEMPLATE> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>SEQU_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>4</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -</INDEXES> -</ENT> -<ENT> -<NAME>PROTEIN_STATISTICS</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>22</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>2</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_PROTEIN_STATISTICS</NAME> -<NAMETEMPLATE>PK_PROTEIN_STATISTICS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -</ENT> -<ENT> -<NAME>PROTEINS</NAME> -<NAMETEMPLATE>IX_FK_PROTEINS_DATA_SETS</NAMETEMPLATE> -<ID>23</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>10</ATTRLASTID> -<IDXLASTID>7</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_PROTEINS</NAME> -<NAMETEMPLATE>PK_PROTEINS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>DASE_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>10</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>10</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>SEQU_ID</NAME> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -<ATTR> -<NAME>ABTY_ID</NAME> -<ID>8</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -<ATTR> -<NAME>PRST_ID</NAME> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -<ATTR> -<NAME>ABUNDANCE</NAME> -<ID>9</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -</ATTRIBUTES> -<INDEXES> -<INDEX> -<NAME>IX_FK_PROTEINS_SEQUENCES</NAME> -<NAMETEMPLATE>IX_FK_PROTEINS_SEQUENCES</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>SEQU_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>5</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -<INDEX> -<NAME>IX_FK_PROTEINS_PROTEIN_STATISTICS</NAME> -<NAMETEMPLATE>IX_FK_PROTEINS_PROTEIN_STATISTICS</NAMETEMPLATE> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>PRST_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>6</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -<INDEX> -<NAME>IDX_PROTEINS_3</NAME> -<NAMETEMPLATE>IDX_PROTEINS_3</NAMETEMPLATE> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>DASE_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>10</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -</INDEXES> -</ENT> -<ENT> -<NAME>SAMPLES</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>24</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>4</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_SAMPLES</NAME> -<NAMETEMPLATE>PK_SAMPLES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PERM_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>5</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>EXPE_ID</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_SAMPLES_1</NAME> -<NAMETEMPLATE>TUC_SAMPLES_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -<ENT> -<NAME>SEQUENCES</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>25</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>4</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_SEQUENCES</NAME> -<NAMETEMPLATE>PK_SEQUENCES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>AMINO_ACID_SEQUENCE</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>9</DOMAINID> -<DT> -<DTLISTNAME>TEXT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>CHECKSUM</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>4</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>8</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -</ENT> -<ENT> -<NAME>SPECTRA</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>26</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>3</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_SPECTRA</NAME> -<NAMETEMPLATE>PK_SPECTRA</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>DATA</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>3</DOMAINID> -<DT> -<DTLISTNAME>BYTEA</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -</ENT> -<ENT> -<NAME>IDENTIFIED_PROTEINS</NAME> -<ID>47</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>4</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_IDENTIFIED_PROTEINS</NAME> -<NAMETEMPLATE>PK_IDENTIFIED_PROTEINS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PROT_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>DESCRIPTION</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>6</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>2000</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -</ENT> -</ENTITIES> -<SUBCATEGORIES> -</SUBCATEGORIES> -<TEXTAREAS> -</TEXTAREAS> -<GROUPBOXES> -</GROUPBOXES> -<STAMPS> -</STAMPS> -<SEQUENCES> -</SEQUENCES> -<PROCEDURES> -</PROCEDURES> -<VIEWS> -</VIEWS> -<RELATIONSHIPS> -<REL> -<NAME>DA_EX_FK</NAME> -<NAMETEMPLATE>DA_EX_FK</NAMETEMPLATE> -<ID>29</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>16</PARENTOBJECTID> -<CHILDOBJECTID>17</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>DA_EX_FK</NAME> -<NAMETEMPLATE>DA_EX_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>4</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>DA_SA_FK</NAME> -<NAMETEMPLATE>DA_SA_FK</NAMETEMPLATE> -<ID>30</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>24</PARENTOBJECTID> -<CHILDOBJECTID>17</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>DA_SA_FK</NAME> -<NAMETEMPLATE>DA_SA_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>5</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>ID_SP_FK</NAME> -<NAMETEMPLATE>ID_SP_FK</NAMETEMPLATE> -<ID>31</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>26</PARENTOBJECTID> -<CHILDOBJECTID>18</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>0</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>ID_SP_FK</NAME> -<NAMETEMPLATE>ID_SP_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>3</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>MO_PE_FK</NAME> -<NAMETEMPLATE>MO_PE_FK</NAMETEMPLATE> -<ID>32</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>21</PARENTOBJECTID> -<CHILDOBJECTID>19</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>MO_PE_FK</NAME> -<NAMETEMPLATE>MO_PE_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>3</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>MO_MT_FK</NAME> -<NAMETEMPLATE>MO_MT_FK</NAMETEMPLATE> -<ID>33</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>20</PARENTOBJECTID> -<CHILDOBJECTID>19</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>MO_MT_FK</NAME> -<NAMETEMPLATE>MO_MT_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>4</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>PE_ID_FK</NAME> -<NAMETEMPLATE>PE_ID_FK</NAMETEMPLATE> -<ID>35</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>18</PARENTOBJECTID> -<CHILDOBJECTID>21</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>0</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>PE_ID_FK</NAME> -<NAMETEMPLATE>PE_ID_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>6</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>6</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>PE_PR_FK</NAME> -<NAMETEMPLATE>PE_PR_FK</NAMETEMPLATE> -<ID>36</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>23</PARENTOBJECTID> -<CHILDOBJECTID>21</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>PE_PR_FK</NAME> -<NAMETEMPLATE>PE_PR_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>3</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>PE_SE_FK</NAME> -<NAMETEMPLATE>PE_SE_FK</NAMETEMPLATE> -<ID>37</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>25</PARENTOBJECTID> -<CHILDOBJECTID>21</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>PE_SE_FK</NAME> -<NAMETEMPLATE>PE_SE_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>4</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>PR_SE_FK</NAME> -<NAMETEMPLATE>PR_SE_FK</NAMETEMPLATE> -<ID>39</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>25</PARENTOBJECTID> -<CHILDOBJECTID>23</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>0</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>PR_SE_FK</NAME> -<NAMETEMPLATE>PR_SE_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>5</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>PR_PS_FK</NAME> -<NAMETEMPLATE>PR_PS_FK</NAMETEMPLATE> -<ID>41</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>22</PARENTOBJECTID> -<CHILDOBJECTID>23</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>0</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>PR_PS_FK</NAME> -<NAMETEMPLATE>PR_PS_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>6</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>6</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>ABUNDANCES_TYPES_PROTEINS</NAME> -<NAMETEMPLATE>ABUNDANCES_TYPES_PROTEINS</NAMETEMPLATE> -<ID>43</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>14</PARENTOBJECTID> -<CHILDOBJECTID>23</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>0</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>ABUNDANCES_TYPES_PROTEINS</NAME> -<NAMETEMPLATE>ABUNDANCES_TYPES_PROTEINS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>8</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>8</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>ABUNDANCES_TYPES_PEPTIDES</NAME> -<NAMETEMPLATE>ABUNDANCES_TYPES_PEPTIDES</NAMETEMPLATE> -<ID>44</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>14</PARENTOBJECTID> -<CHILDOBJECTID>21</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>0</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>ABUNDANCES_TYPES_PEPTIDES</NAME> -<NAMETEMPLATE>ABUNDANCES_TYPES_PEPTIDES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>8</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>8</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>DATA_SETS_PROTEINS</NAME> -<NAMETEMPLATE>DATA_SETS_PROTEINS</NAMETEMPLATE> -<ID>46</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>17</PARENTOBJECTID> -<CHILDOBJECTID>23</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>DATA_SETS_PROTEINS</NAME> -<NAMETEMPLATE>DATA_SETS_PROTEINS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>10</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>10</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>PROTEINS_IDENTIFIED_PROTEINS</NAME> -<NAMETEMPLATE>PROTEINS_IDENTIFIED_PROTEINS</NAMETEMPLATE> -<ID>48</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>23</PARENTOBJECTID> -<CHILDOBJECTID>47</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>PROTEINS_IDENTIFIED_PROTEINS</NAME> -<NAMETEMPLATE>PROTEINS_IDENTIFIED_PROTEINS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>3</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -</RELATIONSHIPS> -<SUBCATEGORYCONNECTIONS> -</SUBCATEGORYCONNECTIONS> -</DATADICT> -</VERSION> -<VERSION> -<VERSIONINFO> -<VERSIONNUMBER>4</VERSIONNUMBER> -<VERSIONLABEL>Version 2009-06-30</VERSIONLABEL> -<VERSIONDATE>2009-06-30 09:00</VERSIONDATE> -<VERSIONCOMMENTS></VERSIONCOMMENTS> -<VERSIONTYPE>DB</VERSIONTYPE> -<VERSIONTYPEDESC>Data dictionary only (no diagrams)</VERSIONTYPEDESC> -</VERSIONINFO> -<DATADICT> -<DBID>postgresql8</DBID> -<LASTID>97</LASTID> -<DDSETTINGS> -<PKCONNAMETEMPLATE>PK_%table%</PKCONNAMETEMPLATE> -<FKCONNAMETEMPLATE>%relname%</FKCONNAMETEMPLATE> -<CCONNAMETEMPLATE>CC_%table%_%column%</CCONNAMETEMPLATE> -<NOTNULLCONNAMETEMPLATE>NN_%column%</NOTNULLCONNAMETEMPLATE> -<DEFAULTCONNAMETEMPLATE>DEF_%table%_%column%</DEFAULTCONNAMETEMPLATE> -<TUCONNAMETEMPLATE>TUC_%table%_%counter%</TUCONNAMETEMPLATE> -<TCCONNAMETEMPLATE>TCC_%table%_%counter%</TCCONNAMETEMPLATE> -<RELNAMETEMPLATE>%parent%_%child%</RELNAMETEMPLATE> -<INDEXNAMETEMPLATE>IDX_%table%_%counter%</INDEXNAMETEMPLATE> -<DEFTABLEOPTIONS></DEFTABLEOPTIONS> -<DEFINDEXOPTIONS></DEFINDEXOPTIONS> -<BEGINDATABASESCRIPT></BEGINDATABASESCRIPT> -<ENDDATABASESCRIP></ENDDATABASESCRIP> -<BEGINALTERDATABASESCRIPT></BEGINALTERDATABASESCRIPT> -<ENDALTERDATABASESCRIP></ENDALTERDATABASESCRIP> -<BEGINDROPDATABASESCRIPT></BEGINDROPDATABASESCRIPT> -<ENDDROPDATABASESCRIP></ENDDROPDATABASESCRIP> -<GENDIALOGSELECTEDOBJECTS></GENDIALOGSELECTEDOBJECTS> -<GENTABLES>1</GENTABLES> -<GENTABLEOPTIONS>1</GENTABLEOPTIONS> -<GENCONSTRAINTS>1</GENCONSTRAINTS> -<GENINDEXES>1</GENINDEXES> -<GENTRIGGERS>1</GENTRIGGERS> -<GENVIEWS>1</GENVIEWS> -<GENPROCEDURES>1</GENPROCEDURES> -<GENSEQUENCES>1</GENSEQUENCES> -<GENRELATIONSHIPS>1</GENRELATIONSHIPS> -<GENBEGINENDTABLESCRIPTS>1</GENBEGINENDTABLESCRIPTS> -<GENBEGINENDDBSCRIPTS>1</GENBEGINENDDBSCRIPTS> -<GLOBALPREFIX></GLOBALPREFIX> -<AUTOCREATEINDEXESONKEYS>0</AUTOCREATEINDEXESONKEYS> -<CONVERTDOMAINS>0</CONVERTDOMAINS> -<IGNORECOMMENTS>0</IGNORECOMMENTS> -<USESCHEMANAMES>0</USESCHEMANAMES> -<UCONNAMETEMPLATE></UCONNAMETEMPLATE> -<SQLCREATEFILE>D:\User\felmer\dev-workspace\rtd_phosphonetx\source\sql\postgresql\001\schema-001.sql</SQLCREATEFILE> -<SQLDROPFILE>D:\User\felmer\dev-workspace\rtd_phosphonetx\targets\drop.sql</SQLDROPFILE> -</DDSETTINGS> -<DOMAINS> -<DOMAIN> -<NAME>BINARY_DATA</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>BYTEA</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>CHECKSUM</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>8</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>CODE</NAME> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>DESCRIPTION</NAME> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>2000</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>INTEGER_NUMBER</NAME> -<ID>7</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>INTEGER</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>REAL_NUMBER</NAME> -<ID>8</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>LONG_SEQUENCE</NAME> -<ID>9</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>TEXT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>SHORT_DESCRIPTION</NAME> -<ID>11</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>200</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>TECH_ID</NAME> -<ID>12</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>SHORT_SEQUENCE</NAME> -<ID>69</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>1000</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -</DOMAINS> -<ENTITIES> -<ENT> -<NAME>ABUNDANCES_TYPES</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>14</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>4</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_ABUNDANCES_TYPES</NAME> -<NAMETEMPLATE>PK_ABUNDANCES_TYPES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>CODE</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>5</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>DESCRIPTION</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>11</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>200</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -</ATTRIBUTES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_ABUNDANCES_TYPES_1</NAME> -<NAMETEMPLATE>TUC_ABUNDANCES_TYPES_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -<ENT> -<NAME>EXPERIMENTS</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>16</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>3</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_EXPERIMENTS</NAME> -<NAMETEMPLATE>PK_EXPERIMENTS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PERM_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>5</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_EXPERIMENTS_1</NAME> -<NAMETEMPLATE>TUC_EXPERIMENTS_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -<ENT> -<NAME>DATA_SETS</NAME> -<NAMETEMPLATE>IX_FK_DATA_SETS_EXPERIMENTS</NAMETEMPLATE> -<ID>17</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>5</ATTRLASTID> -<IDXLASTID>3</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_DATA_SETS</NAME> -<NAMETEMPLATE>PK_DATA_SETS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>EXPE_ID</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>SAMP_ID</NAME> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PERM_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>5</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<INDEXES> -<INDEX> -<NAME>IX_FK_DATA_SETS_EXPERIMENTS</NAME> -<NAMETEMPLATE>IX_FK_DATA_SETS_EXPERIMENTS</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>EXPE_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>4</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -<INDEX> -<NAME>IX_FK_DATA_SETS_SAMPLES</NAME> -<NAMETEMPLATE>IX_FK_DATA_SETS_SAMPLES</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>SAMP_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>5</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -</INDEXES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_DATA_SETS_1</NAME> -<NAMETEMPLATE>TUC_DATA_SETS_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -<ENT> -<NAME>MODIFICATIONS</NAME> -<NAMETEMPLATE>IX_FK_MODIFICATIONS_PEPTIDES</NAMETEMPLATE> -<ID>19</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>6</ATTRLASTID> -<IDXLASTID>3</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_MODIFICATIONS</NAME> -<NAMETEMPLATE>PK_MODIFICATIONS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PEPT_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>MOTY_ID</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>POS</NAME> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>7</DOMAINID> -<DT> -<DTLISTNAME>INTEGER</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>MASS</NAME> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>6</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<INDEXES> -<INDEX> -<NAME>IX_FK_MODIFICATIONS_PEPTIDES</NAME> -<NAMETEMPLATE>IX_FK_MODIFICATIONS_PEPTIDES</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>PEPT_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>3</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -<INDEX> -<NAME>IX_FK_MODIFICATIONS_MODIFICATION_TYPES</NAME> -<NAMETEMPLATE>IX_FK_MODIFICATIONS_MODIFICATION_TYPES</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>MOTY_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>4</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -</INDEXES> -</ENT> -<ENT> -<NAME>MODIFICATION_TYPES</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>20</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>6</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_MODIFICATION_TYPES</NAME> -<NAMETEMPLATE>PK_MODIFICATION_TYPES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>CODE</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>5</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>DESCRIPTION</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>11</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>200</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -<ATTR> -<NAME>MASS</NAME> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -<ATTR> -<NAME>DELTA_MASS</NAME> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -</ATTRIBUTES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_MODIFICATION_TYPES_1</NAME> -<NAMETEMPLATE>TUC_MODIFICATION_TYPES_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -<ENT> -<NAME>PEPTIDES</NAME> -<NAMETEMPLATE>IX_FK_PEPTIDES_ABUNDANCES</NAMETEMPLATE> -<ID>21</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>10</ATTRLASTID> -<IDXLASTID>5</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_PEPTIDES</NAME> -<NAMETEMPLATE>PK_PEPTIDES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PROT_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>SEQUENCE</NAME> -<ID>10</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>69</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>1000</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>10</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>CHARGE</NAME> -<ID>7</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>7</DOMAINID> -<DT> -<DTLISTNAME>INTEGER</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>7</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<INDEXES> -<INDEX> -<NAME>IX_FK_PEPTIDES_PROTEINS</NAME> -<NAMETEMPLATE>IX_FK_PEPTIDES_PROTEINS</NAMETEMPLATE> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>PROT_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>3</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -</INDEXES> -</ENT> -<ENT> -<NAME>PROTEINS</NAME> -<NAMETEMPLATE>IX_FK_PROTEINS_DATA_SETS</NAMETEMPLATE> -<ID>23</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>11</ATTRLASTID> -<IDXLASTID>7</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_PROTEINS</NAME> -<NAMETEMPLATE>PK_PROTEINS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>DASE_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>10</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>10</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PROBABILITY</NAME> -<ID>9</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>9</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<INDEXES> -<INDEX> -<NAME>IDX_PROTEINS_1</NAME> -<NAMETEMPLATE>IDX_PROTEINS_1</NAMETEMPLATE> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>DASE_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>10</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -</INDEXES> -</ENT> -<ENT> -<NAME>SAMPLES</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>24</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>4</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_SAMPLES</NAME> -<NAMETEMPLATE>PK_SAMPLES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PERM_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>5</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>EXPE_ID</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_SAMPLES_1</NAME> -<NAMETEMPLATE>TUC_SAMPLES_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -<ENT> -<NAME>SEQUENCES</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>25</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>4</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_SEQUENCES</NAME> -<NAMETEMPLATE>PK_SEQUENCES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>AMINO_ACID_SEQUENCE</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>9</DOMAINID> -<DT> -<DTLISTNAME>TEXT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>CHECKSUM</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>4</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>8</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -</ENT> -<ENT> -<NAME>IDENTIFIED_PROTEINS</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>47</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>5</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_IDENTIFIED_PROTEINS</NAME> -<NAMETEMPLATE>PK_IDENTIFIED_PROTEINS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PROT_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>SEQU_ID</NAME> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -<ATTR> -<NAME>DESCRIPTION</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>6</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>2000</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -</ENT> -<ENT> -<NAME>ABUNDANCES</NAME> -<ID>91</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>6</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_ABUNDANCES</NAME> -<NAMETEMPLATE>PK_ABUNDANCES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PROT_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>SAMP_ID</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>ABTY_ID</NAME> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>VALUE</NAME> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>6</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -</ENT> -<ENT> -<NAME>PROBABILITY_FDR_MAPPINGS</NAME> -<ID>96</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>5</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_PROBABILITY_FDR_MAPPINGS</NAME> -<NAMETEMPLATE>PK_PROBABILITY_FDR_MAPPINGS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>DASE_ID</NAME> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PROBABILITY</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>FALSE_DISCOVERY_RATE</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -</ENT> -</ENTITIES> -<SUBCATEGORIES> -</SUBCATEGORIES> -<TEXTAREAS> -</TEXTAREAS> -<GROUPBOXES> -</GROUPBOXES> -<STAMPS> -</STAMPS> -<SEQUENCES> -</SEQUENCES> -<PROCEDURES> -</PROCEDURES> -<VIEWS> -</VIEWS> -<RELATIONSHIPS> -<REL> -<NAME>DA_EX_FK</NAME> -<NAMETEMPLATE>DA_EX_FK</NAMETEMPLATE> -<ID>29</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>16</PARENTOBJECTID> -<CHILDOBJECTID>17</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>DA_EX_FK</NAME> -<NAMETEMPLATE>DA_EX_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>4</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>DA_SA_FK</NAME> -<NAMETEMPLATE>DA_SA_FK</NAMETEMPLATE> -<ID>30</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>24</PARENTOBJECTID> -<CHILDOBJECTID>17</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>DA_SA_FK</NAME> -<NAMETEMPLATE>DA_SA_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>5</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>MO_PE_FK</NAME> -<NAMETEMPLATE>MO_PE_FK</NAMETEMPLATE> -<ID>32</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>21</PARENTOBJECTID> -<CHILDOBJECTID>19</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>MO_PE_FK</NAME> -<NAMETEMPLATE>MO_PE_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>3</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>MO_MT_FK</NAME> -<NAMETEMPLATE>MO_MT_FK</NAMETEMPLATE> -<ID>33</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>20</PARENTOBJECTID> -<CHILDOBJECTID>19</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>MO_MT_FK</NAME> -<NAMETEMPLATE>MO_MT_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>4</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>PE_PR_FK</NAME> -<NAMETEMPLATE>PE_PR_FK</NAMETEMPLATE> -<ID>36</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>23</PARENTOBJECTID> -<CHILDOBJECTID>21</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>PE_PR_FK</NAME> -<NAMETEMPLATE>PE_PR_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>3</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>DATA_SETS_PROTEINS</NAME> -<NAMETEMPLATE>DATA_SETS_PROTEINS</NAMETEMPLATE> -<ID>46</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>17</PARENTOBJECTID> -<CHILDOBJECTID>23</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>DATA_SETS_PROTEINS</NAME> -<NAMETEMPLATE>DATA_SETS_PROTEINS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>10</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>10</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>PROTEINS_IDENTIFIED_PROTEINS</NAME> -<NAMETEMPLATE>PROTEINS_IDENTIFIED_PROTEINS</NAMETEMPLATE> -<ID>48</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>23</PARENTOBJECTID> -<CHILDOBJECTID>47</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>PROTEINS_IDENTIFIED_PROTEINS</NAME> -<NAMETEMPLATE>PROTEINS_IDENTIFIED_PROTEINS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>3</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>SEQUENCES_IDENTIFIED_PROTEINS</NAME> -<NAMETEMPLATE>SEQUENCES_IDENTIFIED_PROTEINS</NAMETEMPLATE> -<ID>50</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>25</PARENTOBJECTID> -<CHILDOBJECTID>47</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>0</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>SEQUENCES_IDENTIFIED_PROTEINS</NAME> -<NAMETEMPLATE>SEQUENCES_IDENTIFIED_PROTEINS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>5</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>SAMPLES_ABUNDANCES</NAME> -<NAMETEMPLATE>SAMPLES_ABUNDANCES</NAMETEMPLATE> -<ID>92</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>24</PARENTOBJECTID> -<CHILDOBJECTID>91</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>SAMPLES_ABUNDANCES</NAME> -<NAMETEMPLATE>SAMPLES_ABUNDANCES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>4</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>ABUNDANCES_TYPES_ABUNDANCES</NAME> -<NAMETEMPLATE>ABUNDANCES_TYPES_ABUNDANCES</NAMETEMPLATE> -<ID>93</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>14</PARENTOBJECTID> -<CHILDOBJECTID>91</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>ABUNDANCES_TYPES_ABUNDANCES</NAME> -<NAMETEMPLATE>ABUNDANCES_TYPES_ABUNDANCES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>5</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>PROTEINS_ABUNDANCES</NAME> -<NAMETEMPLATE>PROTEINS_ABUNDANCES</NAMETEMPLATE> -<ID>94</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>23</PARENTOBJECTID> -<CHILDOBJECTID>91</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>PROTEINS_ABUNDANCES</NAME> -<NAMETEMPLATE>PROTEINS_ABUNDANCES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>3</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>DATA_SETS_PROBABILITY_FDR_MAPPINGS</NAME> -<NAMETEMPLATE>DATA_SETS_PROBABILITY_FDR_MAPPINGS</NAMETEMPLATE> -<ID>97</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>17</PARENTOBJECTID> -<CHILDOBJECTID>96</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>DATA_SETS_PROBABILITY_FDR_MAPPINGS</NAME> -<NAMETEMPLATE>DATA_SETS_PROBABILITY_FDR_MAPPINGS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>5</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -</RELATIONSHIPS> -<SUBCATEGORYCONNECTIONS> -</SUBCATEGORYCONNECTIONS> -</DATADICT> -</VERSION> -<VERSION> -<VERSIONINFO> -<VERSIONNUMBER>5</VERSIONNUMBER> -<VERSIONLABEL>Version 2009-07-06</VERSIONLABEL> -<VERSIONDATE>2009-07-06 13:15</VERSIONDATE> -<VERSIONCOMMENTS></VERSIONCOMMENTS> -<VERSIONTYPE>DB</VERSIONTYPE> -<VERSIONTYPEDESC>Data dictionary only (no diagrams)</VERSIONTYPEDESC> -</VERSIONINFO> -<DATADICT> -<DBID>postgresql8</DBID> -<LASTID>135</LASTID> -<DDSETTINGS> -<PKCONNAMETEMPLATE>PK_%table%</PKCONNAMETEMPLATE> -<FKCONNAMETEMPLATE>%relname%</FKCONNAMETEMPLATE> -<CCONNAMETEMPLATE>CC_%table%_%column%</CCONNAMETEMPLATE> -<NOTNULLCONNAMETEMPLATE>NN_%column%</NOTNULLCONNAMETEMPLATE> -<DEFAULTCONNAMETEMPLATE>DEF_%table%_%column%</DEFAULTCONNAMETEMPLATE> -<TUCONNAMETEMPLATE>TUC_%table%_%counter%</TUCONNAMETEMPLATE> -<TCCONNAMETEMPLATE>TCC_%table%_%counter%</TCCONNAMETEMPLATE> -<RELNAMETEMPLATE>%parent%_%child%</RELNAMETEMPLATE> -<INDEXNAMETEMPLATE>IDX_%table%_%counter%</INDEXNAMETEMPLATE> -<DEFTABLEOPTIONS></DEFTABLEOPTIONS> -<DEFINDEXOPTIONS></DEFINDEXOPTIONS> -<BEGINDATABASESCRIPT></BEGINDATABASESCRIPT> -<ENDDATABASESCRIP></ENDDATABASESCRIP> -<BEGINALTERDATABASESCRIPT></BEGINALTERDATABASESCRIPT> -<ENDALTERDATABASESCRIP></ENDALTERDATABASESCRIP> -<BEGINDROPDATABASESCRIPT></BEGINDROPDATABASESCRIPT> -<ENDDROPDATABASESCRIP></ENDDROPDATABASESCRIP> -<GENDIALOGSELECTEDOBJECTS></GENDIALOGSELECTEDOBJECTS> -<GENTABLES>1</GENTABLES> -<GENTABLEOPTIONS>1</GENTABLEOPTIONS> -<GENCONSTRAINTS>1</GENCONSTRAINTS> -<GENINDEXES>1</GENINDEXES> -<GENTRIGGERS>1</GENTRIGGERS> -<GENVIEWS>1</GENVIEWS> -<GENPROCEDURES>1</GENPROCEDURES> -<GENSEQUENCES>1</GENSEQUENCES> -<GENRELATIONSHIPS>1</GENRELATIONSHIPS> -<GENBEGINENDTABLESCRIPTS>1</GENBEGINENDTABLESCRIPTS> -<GENBEGINENDDBSCRIPTS>1</GENBEGINENDDBSCRIPTS> -<GLOBALPREFIX></GLOBALPREFIX> -<AUTOCREATEINDEXESONKEYS>0</AUTOCREATEINDEXESONKEYS> -<CONVERTDOMAINS>0</CONVERTDOMAINS> -<IGNORECOMMENTS>0</IGNORECOMMENTS> -<USESCHEMANAMES>0</USESCHEMANAMES> -<UCONNAMETEMPLATE></UCONNAMETEMPLATE> -<SQLCREATEFILE>N:\user\cisd\felmer\phosphonetx\schema-001.sql</SQLCREATEFILE> -<SQLDROPFILE>N:\user\cisd\felmer\phosphonetx\drop.sql</SQLDROPFILE> -</DDSETTINGS> -<DOMAINS> -<DOMAIN> -<NAME>CHECKSUM</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>8</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>CODE</NAME> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>DESCRIPTION</NAME> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>2000</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>INTEGER_NUMBER</NAME> -<ID>7</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>INTEGER</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>REAL_NUMBER</NAME> -<ID>8</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>LONG_SEQUENCE</NAME> -<ID>9</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>TEXT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>SHORT_DESCRIPTION</NAME> -<ID>11</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>200</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>TECH_ID</NAME> -<ID>12</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>SHORT_SEQUENCE</NAME> -<ID>69</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>1000</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>UNIPROT_ACCESSION_NUMBER</NAME> -<ID>109</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -</DOMAINS> -<ENTITIES> -<ENT> -<NAME>ABUNDANCES_TYPES</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>14</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>4</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_ABUNDANCES_TYPES</NAME> -<NAMETEMPLATE>PK_ABUNDANCES_TYPES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>CODE</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>5</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>DESCRIPTION</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>11</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>200</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -</ATTRIBUTES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_ABUNDANCES_TYPES_1</NAME> -<NAMETEMPLATE>TUC_ABUNDANCES_TYPES_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -<ENT> -<NAME>EXPERIMENTS</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>16</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>3</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_EXPERIMENTS</NAME> -<NAMETEMPLATE>PK_EXPERIMENTS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PERM_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>5</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_EXPERIMENTS_1</NAME> -<NAMETEMPLATE>TUC_EXPERIMENTS_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -<ENT> -<NAME>DATA_SETS</NAME> -<NAMETEMPLATE>IX_FK_DATA_SETS_EXPERIMENTS</NAMETEMPLATE> -<ID>17</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>6</ATTRLASTID> -<IDXLASTID>3</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_DATA_SETS</NAME> -<NAMETEMPLATE>PK_DATA_SETS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>EXPE_ID</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>SAMP_ID</NAME> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>DB_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>6</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PERM_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>5</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<INDEXES> -<INDEX> -<NAME>IX_FK_DATA_SETS_EXPERIMENTS</NAME> -<NAMETEMPLATE>IX_FK_DATA_SETS_EXPERIMENTS</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>EXPE_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>4</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -<INDEX> -<NAME>IX_FK_DATA_SETS_SAMPLES</NAME> -<NAMETEMPLATE>IX_FK_DATA_SETS_SAMPLES</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>SAMP_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>5</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -</INDEXES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_DATA_SETS_1</NAME> -<NAMETEMPLATE>TUC_DATA_SETS_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -<ENT> -<NAME>MODIFICATIONS</NAME> -<NAMETEMPLATE>IX_FK_MODIFICATIONS_PEPTIDES</NAMETEMPLATE> -<ID>19</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>6</ATTRLASTID> -<IDXLASTID>3</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_MODIFICATIONS</NAME> -<NAMETEMPLATE>PK_MODIFICATIONS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PEPT_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>MOTY_ID</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>POS</NAME> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>7</DOMAINID> -<DT> -<DTLISTNAME>INTEGER</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>MASS</NAME> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>6</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<INDEXES> -<INDEX> -<NAME>IX_FK_MODIFICATIONS_PEPTIDES</NAME> -<NAMETEMPLATE>IX_FK_MODIFICATIONS_PEPTIDES</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>PEPT_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>3</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -<INDEX> -<NAME>IX_FK_MODIFICATIONS_MODIFICATION_TYPES</NAME> -<NAMETEMPLATE>IX_FK_MODIFICATIONS_MODIFICATION_TYPES</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>MOTY_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>4</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -</INDEXES> -</ENT> -<ENT> -<NAME>MODIFICATION_TYPES</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>20</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>7</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_MODIFICATION_TYPES</NAME> -<NAMETEMPLATE>PK_MODIFICATION_TYPES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>CODE</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>5</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>DESCRIPTION</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>11</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>200</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -<ATTR> -<NAME>AMINO_ACID</NAME> -<ID>7</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER</DTLISTNAME> -<LE>1</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -<ATTR> -<NAME>MASS</NAME> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -<ATTR> -<NAME>MASS_TOLERANCE</NAME> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -</ATTRIBUTES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_MODIFICATION_TYPES_1</NAME> -<NAMETEMPLATE>TUC_MODIFICATION_TYPES_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -<ENT> -<NAME>PEPTIDES</NAME> -<NAMETEMPLATE>IX_FK_PEPTIDES_ABUNDANCES</NAMETEMPLATE> -<ID>21</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>10</ATTRLASTID> -<IDXLASTID>5</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_PEPTIDES</NAME> -<NAMETEMPLATE>PK_PEPTIDES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PROT_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>SEQUENCE</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>10</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>69</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>1000</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>10</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>CHARGE</NAME> -<ID>7</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>7</DOMAINID> -<DT> -<DTLISTNAME>INTEGER</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>7</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<INDEXES> -<INDEX> -<NAME>IX_FK_PEPTIDES_PROTEINS</NAME> -<NAMETEMPLATE>IX_FK_PEPTIDES_PROTEINS</NAMETEMPLATE> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>PROT_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>3</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -</INDEXES> -</ENT> -<ENT> -<NAME>PROTEINS</NAME> -<NAMETEMPLATE>IX_FK_PROTEINS_DATA_SETS</NAMETEMPLATE> -<ID>23</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>11</ATTRLASTID> -<IDXLASTID>7</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_PROTEINS</NAME> -<NAMETEMPLATE>PK_PROTEINS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>DASE_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>10</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>10</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PROBABILITY</NAME> -<ID>9</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>9</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<INDEXES> -<INDEX> -<NAME>IDX_PROTEINS_1</NAME> -<NAMETEMPLATE>IDX_PROTEINS_1</NAMETEMPLATE> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>DASE_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>10</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -</INDEXES> -</ENT> -<ENT> -<NAME>SAMPLES</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>24</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>4</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_SAMPLES</NAME> -<NAMETEMPLATE>PK_SAMPLES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PERM_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>5</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>EXPE_ID</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_SAMPLES_1</NAME> -<NAMETEMPLATE>TUC_SAMPLES_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -<ENT> -<NAME>SEQUENCES</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>25</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>6</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_SEQUENCES</NAME> -<NAMETEMPLATE>PK_SEQUENCES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>DB_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PRRE_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>6</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>AMINO_ACID_SEQUENCE</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>9</DOMAINID> -<DT> -<DTLISTNAME>TEXT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>CHECKSUM</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>4</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>8</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -</ENT> -<ENT> -<NAME>IDENTIFIED_PROTEINS</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>47</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>5</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_IDENTIFIED_PROTEINS</NAME> -<NAMETEMPLATE>PK_IDENTIFIED_PROTEINS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PROT_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>SEQU_ID</NAME> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -</ENT> -<ENT> -<NAME>ABUNDANCES</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>91</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>6</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_ABUNDANCES</NAME> -<NAMETEMPLATE>PK_ABUNDANCES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PROT_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>SAMP_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>ABTY_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>VALUE</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>6</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -</ENT> -<ENT> -<NAME>PROBABILITY_FDR_MAPPINGS</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>96</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>5</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_PROBABILITY_FDR_MAPPINGS</NAME> -<NAMETEMPLATE>PK_PROBABILITY_FDR_MAPPINGS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>DASE_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PROBABILITY</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>FALSE_DISCOVERY_RATE</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -</ENT> -<ENT> -<NAME>PROTEIN_REFERENCES</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>98</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>4</ATTRLASTID> -<IDXLASTID>2</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_PROTEIN_REFERENCES</NAME> -<NAMETEMPLATE>PK_PROTEIN_REFERENCES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>UNIPROT_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>109</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>DESCRIPTION</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>6</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>2000</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -</ATTRIBUTES> -<INDEXES> -<INDEX> -<NAME>IDX_PROTEIN_REFERENCES_1</NAME> -<NAMETEMPLATE>IDX_PROTEIN_REFERENCES_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>UNIPROT_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>3</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -</INDEXES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_PROTEIN_REFERENCES_1</NAME> -<NAMETEMPLATE>TUC_PROTEIN_REFERENCES_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -<ENT> -<NAME>DATABASES</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>110</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>3</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_DATABASES</NAME> -<NAMETEMPLATE>PK_DATABASES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>NAME_AND_VERSION</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>69</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>1000</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_DATABASES_1</NAME> -<NAMETEMPLATE>TUC_DATABASES_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -</ENTITIES> -<SUBCATEGORIES> -</SUBCATEGORIES> -<TEXTAREAS> -</TEXTAREAS> -<GROUPBOXES> -</GROUPBOXES> -<STAMPS> -</STAMPS> -<SEQUENCES> -</SEQUENCES> -<PROCEDURES> -</PROCEDURES> -<VIEWS> -</VIEWS> -<RELATIONSHIPS> -<REL> -<NAME>DA_EX_FK</NAME> -<NAMETEMPLATE>DA_EX_FK</NAMETEMPLATE> -<ID>29</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>16</PARENTOBJECTID> -<CHILDOBJECTID>17</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>DA_EX_FK</NAME> -<NAMETEMPLATE>DA_EX_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>4</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>DA_SA_FK</NAME> -<NAMETEMPLATE>DA_SA_FK</NAMETEMPLATE> -<ID>30</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>24</PARENTOBJECTID> -<CHILDOBJECTID>17</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>DA_SA_FK</NAME> -<NAMETEMPLATE>DA_SA_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>5</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>MO_PE_FK</NAME> -<NAMETEMPLATE>MO_PE_FK</NAMETEMPLATE> -<ID>32</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>21</PARENTOBJECTID> -<CHILDOBJECTID>19</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>MO_PE_FK</NAME> -<NAMETEMPLATE>MO_PE_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>3</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>MO_MT_FK</NAME> -<NAMETEMPLATE>MO_MT_FK</NAMETEMPLATE> -<ID>33</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>20</PARENTOBJECTID> -<CHILDOBJECTID>19</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>MO_MT_FK</NAME> -<NAMETEMPLATE>MO_MT_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>4</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>PE_PR_FK</NAME> -<NAMETEMPLATE>PE_PR_FK</NAMETEMPLATE> -<ID>36</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>23</PARENTOBJECTID> -<CHILDOBJECTID>21</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>PE_PR_FK</NAME> -<NAMETEMPLATE>PE_PR_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>3</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>DATA_SETS_PROTEINS</NAME> -<NAMETEMPLATE>DATA_SETS_PROTEINS</NAMETEMPLATE> -<ID>46</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>17</PARENTOBJECTID> -<CHILDOBJECTID>23</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>DATA_SETS_PROTEINS</NAME> -<NAMETEMPLATE>DATA_SETS_PROTEINS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>10</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>10</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>PROTEINS_IDENTIFIED_PROTEINS</NAME> -<NAMETEMPLATE>PROTEINS_IDENTIFIED_PROTEINS</NAMETEMPLATE> -<ID>48</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>23</PARENTOBJECTID> -<CHILDOBJECTID>47</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>PROTEINS_IDENTIFIED_PROTEINS</NAME> -<NAMETEMPLATE>PROTEINS_IDENTIFIED_PROTEINS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>3</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>SEQUENCES_IDENTIFIED_PROTEINS</NAME> -<NAMETEMPLATE>SEQUENCES_IDENTIFIED_PROTEINS</NAMETEMPLATE> -<ID>50</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>25</PARENTOBJECTID> -<CHILDOBJECTID>47</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>SEQUENCES_IDENTIFIED_PROTEINS</NAME> -<NAMETEMPLATE>SEQUENCES_IDENTIFIED_PROTEINS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>5</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>SAMPLES_ABUNDANCES</NAME> -<NAMETEMPLATE>SAMPLES_ABUNDANCES</NAMETEMPLATE> -<ID>92</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>24</PARENTOBJECTID> -<CHILDOBJECTID>91</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>SAMPLES_ABUNDANCES</NAME> -<NAMETEMPLATE>SAMPLES_ABUNDANCES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>4</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>ABUNDANCES_TYPES_ABUNDANCES</NAME> -<NAMETEMPLATE>ABUNDANCES_TYPES_ABUNDANCES</NAMETEMPLATE> -<ID>93</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>14</PARENTOBJECTID> -<CHILDOBJECTID>91</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>ABUNDANCES_TYPES_ABUNDANCES</NAME> -<NAMETEMPLATE>ABUNDANCES_TYPES_ABUNDANCES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>5</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>PROTEINS_ABUNDANCES</NAME> -<NAMETEMPLATE>PROTEINS_ABUNDANCES</NAMETEMPLATE> -<ID>94</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>23</PARENTOBJECTID> -<CHILDOBJECTID>91</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>PROTEINS_ABUNDANCES</NAME> -<NAMETEMPLATE>PROTEINS_ABUNDANCES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>3</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>DATA_SETS_PROBABILITY_FDR_MAPPINGS</NAME> -<NAMETEMPLATE>DATA_SETS_PROBABILITY_FDR_MAPPINGS</NAMETEMPLATE> -<ID>97</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>17</PARENTOBJECTID> -<CHILDOBJECTID>96</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>DATA_SETS_PROBABILITY_FDR_MAPPINGS</NAME> -<NAMETEMPLATE>DATA_SETS_PROBABILITY_FDR_MAPPINGS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>5</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>DATABASES_SEQUENCES</NAME> -<NAMETEMPLATE>DATABASES_SEQUENCES</NAMETEMPLATE> -<ID>111</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>110</PARENTOBJECTID> -<CHILDOBJECTID>25</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>DATABASES_SEQUENCES</NAME> -<NAMETEMPLATE>DATABASES_SEQUENCES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>5</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>PROTEIN_REFERENCES_SEQUENCES</NAME> -<NAMETEMPLATE>PROTEIN_REFERENCES_SEQUENCES</NAMETEMPLATE> -<ID>112</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>98</PARENTOBJECTID> -<CHILDOBJECTID>25</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>PROTEIN_REFERENCES_SEQUENCES</NAME> -<NAMETEMPLATE>PROTEIN_REFERENCES_SEQUENCES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>6</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>6</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>DATABASES_DATA_SETS</NAME> -<NAMETEMPLATE>DATABASES_DATA_SETS</NAMETEMPLATE> -<ID>125</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>110</PARENTOBJECTID> -<CHILDOBJECTID>17</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>DATABASES_DATA_SETS</NAME> -<NAMETEMPLATE>DATABASES_DATA_SETS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>6</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>6</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -</RELATIONSHIPS> -<SUBCATEGORYCONNECTIONS> -</SUBCATEGORYCONNECTIONS> -</DATADICT> -</VERSION> -<VERSION> -<VERSIONINFO> -<VERSIONNUMBER>6</VERSIONNUMBER> -<VERSIONLABEL>Version 2009-07-06 1</VERSIONLABEL> -<VERSIONDATE>2009-07-06 13:30</VERSIONDATE> -<VERSIONCOMMENTS></VERSIONCOMMENTS> -<VERSIONTYPE>DB</VERSIONTYPE> -<VERSIONTYPEDESC>Data dictionary only (no diagrams)</VERSIONTYPEDESC> -</VERSIONINFO> -<DATADICT> -<DBID>postgresql8</DBID> -<LASTID>135</LASTID> -<DDSETTINGS> -<PKCONNAMETEMPLATE>PK_%table%</PKCONNAMETEMPLATE> -<FKCONNAMETEMPLATE>%relname%</FKCONNAMETEMPLATE> -<CCONNAMETEMPLATE>CC_%table%_%column%</CCONNAMETEMPLATE> -<NOTNULLCONNAMETEMPLATE>NN_%column%</NOTNULLCONNAMETEMPLATE> -<DEFAULTCONNAMETEMPLATE>DEF_%table%_%column%</DEFAULTCONNAMETEMPLATE> -<TUCONNAMETEMPLATE>TUC_%table%_%counter%</TUCONNAMETEMPLATE> -<TCCONNAMETEMPLATE>TCC_%table%_%counter%</TCCONNAMETEMPLATE> -<RELNAMETEMPLATE>%parent%_%child%</RELNAMETEMPLATE> -<INDEXNAMETEMPLATE>IDX_%table%_%counter%</INDEXNAMETEMPLATE> -<DEFTABLEOPTIONS></DEFTABLEOPTIONS> -<DEFINDEXOPTIONS></DEFINDEXOPTIONS> -<BEGINDATABASESCRIPT></BEGINDATABASESCRIPT> -<ENDDATABASESCRIP></ENDDATABASESCRIP> -<BEGINALTERDATABASESCRIPT></BEGINALTERDATABASESCRIPT> -<ENDALTERDATABASESCRIP></ENDALTERDATABASESCRIP> -<BEGINDROPDATABASESCRIPT></BEGINDROPDATABASESCRIPT> -<ENDDROPDATABASESCRIP></ENDDROPDATABASESCRIP> -<GENDIALOGSELECTEDOBJECTS></GENDIALOGSELECTEDOBJECTS> -<GENTABLES>1</GENTABLES> -<GENTABLEOPTIONS>1</GENTABLEOPTIONS> -<GENCONSTRAINTS>1</GENCONSTRAINTS> -<GENINDEXES>1</GENINDEXES> -<GENTRIGGERS>1</GENTRIGGERS> -<GENVIEWS>1</GENVIEWS> -<GENPROCEDURES>1</GENPROCEDURES> -<GENSEQUENCES>1</GENSEQUENCES> -<GENRELATIONSHIPS>1</GENRELATIONSHIPS> -<GENBEGINENDTABLESCRIPTS>1</GENBEGINENDTABLESCRIPTS> -<GENBEGINENDDBSCRIPTS>1</GENBEGINENDDBSCRIPTS> -<GLOBALPREFIX></GLOBALPREFIX> -<AUTOCREATEINDEXESONKEYS>0</AUTOCREATEINDEXESONKEYS> -<CONVERTDOMAINS>0</CONVERTDOMAINS> -<IGNORECOMMENTS>0</IGNORECOMMENTS> -<USESCHEMANAMES>0</USESCHEMANAMES> -<UCONNAMETEMPLATE></UCONNAMETEMPLATE> -<SQLCREATEFILE>N:\user\cisd\felmer\phosphonetx\schema-001.sql</SQLCREATEFILE> -<SQLDROPFILE>N:\user\cisd\felmer\phosphonetx\drop.sql</SQLDROPFILE> -</DDSETTINGS> -<DOMAINS> -<DOMAIN> -<NAME>CHECKSUM</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>8</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>CODE</NAME> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>DESCRIPTION</NAME> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>2000</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>INTEGER_NUMBER</NAME> -<ID>7</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>INTEGER</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>REAL_NUMBER</NAME> -<ID>8</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>LONG_SEQUENCE</NAME> -<ID>9</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>TEXT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>SHORT_DESCRIPTION</NAME> -<ID>11</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>200</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>TECH_ID</NAME> -<ID>12</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>SHORT_SEQUENCE</NAME> -<ID>69</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>1000</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>UNIPROT_ACCESSION_NUMBER</NAME> -<ID>109</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -</DOMAINS> -<ENTITIES> -<ENT> -<NAME>ABUNDANCES_TYPES</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>14</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>4</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_ABUNDANCES_TYPES</NAME> -<NAMETEMPLATE>PK_ABUNDANCES_TYPES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>CODE</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>5</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>DESCRIPTION</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>11</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>200</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -</ATTRIBUTES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_ABUNDANCES_TYPES_1</NAME> -<NAMETEMPLATE>TUC_ABUNDANCES_TYPES_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -<ENT> -<NAME>EXPERIMENTS</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>16</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>3</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_EXPERIMENTS</NAME> -<NAMETEMPLATE>PK_EXPERIMENTS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PERM_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>5</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_EXPERIMENTS_1</NAME> -<NAMETEMPLATE>TUC_EXPERIMENTS_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -<ENT> -<NAME>DATA_SETS</NAME> -<NAMETEMPLATE>IX_FK_DATA_SETS_EXPERIMENTS</NAMETEMPLATE> -<ID>17</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>6</ATTRLASTID> -<IDXLASTID>3</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_DATA_SETS</NAME> -<NAMETEMPLATE>PK_DATA_SETS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>EXPE_ID</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>SAMP_ID</NAME> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>DB_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>6</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PERM_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>5</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<INDEXES> -<INDEX> -<NAME>IX_FK_DATA_SETS_EXPERIMENTS</NAME> -<NAMETEMPLATE>IX_FK_DATA_SETS_EXPERIMENTS</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>EXPE_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>4</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -<INDEX> -<NAME>IX_FK_DATA_SETS_SAMPLES</NAME> -<NAMETEMPLATE>IX_FK_DATA_SETS_SAMPLES</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>SAMP_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>5</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -</INDEXES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_DATA_SETS_1</NAME> -<NAMETEMPLATE>TUC_DATA_SETS_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -<ENT> -<NAME>MODIFICATIONS</NAME> -<NAMETEMPLATE>IX_FK_MODIFICATIONS_PEPTIDES</NAMETEMPLATE> -<ID>19</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>6</ATTRLASTID> -<IDXLASTID>3</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_MODIFICATIONS</NAME> -<NAMETEMPLATE>PK_MODIFICATIONS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PEPT_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>MOTY_ID</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>POS</NAME> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>7</DOMAINID> -<DT> -<DTLISTNAME>INTEGER</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>MASS</NAME> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>6</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<INDEXES> -<INDEX> -<NAME>IX_FK_MODIFICATIONS_PEPTIDES</NAME> -<NAMETEMPLATE>IX_FK_MODIFICATIONS_PEPTIDES</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>PEPT_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>3</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -<INDEX> -<NAME>IX_FK_MODIFICATIONS_MODIFICATION_TYPES</NAME> -<NAMETEMPLATE>IX_FK_MODIFICATIONS_MODIFICATION_TYPES</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>MOTY_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>4</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -</INDEXES> -</ENT> -<ENT> -<NAME>MODIFICATION_TYPES</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>20</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>7</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_MODIFICATION_TYPES</NAME> -<NAMETEMPLATE>PK_MODIFICATION_TYPES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>CODE</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>5</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>DESCRIPTION</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>11</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>200</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -<ATTR> -<NAME>AMINO_ACID</NAME> -<ID>7</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER</DTLISTNAME> -<LE>1</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -<ATTR> -<NAME>MASS</NAME> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -<ATTR> -<NAME>MASS_TOLERANCE</NAME> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -</ATTRIBUTES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_MODIFICATION_TYPES_1</NAME> -<NAMETEMPLATE>TUC_MODIFICATION_TYPES_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -<ENT> -<NAME>PEPTIDES</NAME> -<NAMETEMPLATE>IX_FK_PEPTIDES_ABUNDANCES</NAMETEMPLATE> -<ID>21</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>10</ATTRLASTID> -<IDXLASTID>5</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_PEPTIDES</NAME> -<NAMETEMPLATE>PK_PEPTIDES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PROT_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>SEQUENCE</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>10</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>69</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>1000</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>10</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>CHARGE</NAME> -<ID>7</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>7</DOMAINID> -<DT> -<DTLISTNAME>INTEGER</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>7</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<INDEXES> -<INDEX> -<NAME>IX_FK_PEPTIDES_PROTEINS</NAME> -<NAMETEMPLATE>IX_FK_PEPTIDES_PROTEINS</NAMETEMPLATE> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>PROT_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>3</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -</INDEXES> -</ENT> -<ENT> -<NAME>PROTEINS</NAME> -<NAMETEMPLATE>IX_FK_PROTEINS_DATA_SETS</NAMETEMPLATE> -<ID>23</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>11</ATTRLASTID> -<IDXLASTID>7</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_PROTEINS</NAME> -<NAMETEMPLATE>PK_PROTEINS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>DASE_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>10</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>10</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PROBABILITY</NAME> -<ID>9</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>9</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<INDEXES> -<INDEX> -<NAME>IDX_PROTEINS_1</NAME> -<NAMETEMPLATE>IDX_PROTEINS_1</NAMETEMPLATE> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>DASE_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>10</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -</INDEXES> -</ENT> -<ENT> -<NAME>SAMPLES</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>24</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>4</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_SAMPLES</NAME> -<NAMETEMPLATE>PK_SAMPLES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PERM_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>5</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>EXPE_ID</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_SAMPLES_1</NAME> -<NAMETEMPLATE>TUC_SAMPLES_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -<ENT> -<NAME>SEQUENCES</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>25</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>6</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_SEQUENCES</NAME> -<NAMETEMPLATE>PK_SEQUENCES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>DB_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PRRE_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>6</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>AMINO_ACID_SEQUENCE</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>9</DOMAINID> -<DT> -<DTLISTNAME>TEXT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>CHECKSUM</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>4</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>8</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -</ENT> -<ENT> -<NAME>IDENTIFIED_PROTEINS</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>47</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>5</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_IDENTIFIED_PROTEINS</NAME> -<NAMETEMPLATE>PK_IDENTIFIED_PROTEINS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PROT_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>SEQU_ID</NAME> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -</ENT> -<ENT> -<NAME>ABUNDANCES</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>91</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>6</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_ABUNDANCES</NAME> -<NAMETEMPLATE>PK_ABUNDANCES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PROT_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>SAMP_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>ABTY_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>VALUE</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>6</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -</ENT> -<ENT> -<NAME>PROBABILITY_FDR_MAPPINGS</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>96</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>5</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_PROBABILITY_FDR_MAPPINGS</NAME> -<NAMETEMPLATE>PK_PROBABILITY_FDR_MAPPINGS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>DASE_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PROBABILITY</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>FALSE_DISCOVERY_RATE</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -</ENT> -<ENT> -<NAME>PROTEIN_REFERENCES</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>98</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>4</ATTRLASTID> -<IDXLASTID>2</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_PROTEIN_REFERENCES</NAME> -<NAMETEMPLATE>PK_PROTEIN_REFERENCES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>UNIPROT_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>109</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>DESCRIPTION</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>6</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>2000</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -</ATTRIBUTES> -<INDEXES> -<INDEX> -<NAME>IDX_PROTEIN_REFERENCES_1</NAME> -<NAMETEMPLATE>IDX_PROTEIN_REFERENCES_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>UNIPROT_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>3</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -</INDEXES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_PROTEIN_REFERENCES_1</NAME> -<NAMETEMPLATE>TUC_PROTEIN_REFERENCES_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -<ENT> -<NAME>DATABASES</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>110</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>3</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_DATABASES</NAME> -<NAMETEMPLATE>PK_DATABASES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>NAME_AND_VERSION</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>11</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>200</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_DATABASES_1</NAME> -<NAMETEMPLATE>TUC_DATABASES_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -</ENTITIES> -<SUBCATEGORIES> -</SUBCATEGORIES> -<TEXTAREAS> -</TEXTAREAS> -<GROUPBOXES> -</GROUPBOXES> -<STAMPS> -</STAMPS> -<SEQUENCES> -</SEQUENCES> -<PROCEDURES> -</PROCEDURES> -<VIEWS> -</VIEWS> -<RELATIONSHIPS> -<REL> -<NAME>DA_EX_FK</NAME> -<NAMETEMPLATE>DA_EX_FK</NAMETEMPLATE> -<ID>29</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>16</PARENTOBJECTID> -<CHILDOBJECTID>17</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>DA_EX_FK</NAME> -<NAMETEMPLATE>DA_EX_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>4</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>DA_SA_FK</NAME> -<NAMETEMPLATE>DA_SA_FK</NAMETEMPLATE> -<ID>30</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>24</PARENTOBJECTID> -<CHILDOBJECTID>17</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>DA_SA_FK</NAME> -<NAMETEMPLATE>DA_SA_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>5</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>MO_PE_FK</NAME> -<NAMETEMPLATE>MO_PE_FK</NAMETEMPLATE> -<ID>32</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>21</PARENTOBJECTID> -<CHILDOBJECTID>19</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>MO_PE_FK</NAME> -<NAMETEMPLATE>MO_PE_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>3</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>MO_MT_FK</NAME> -<NAMETEMPLATE>MO_MT_FK</NAMETEMPLATE> -<ID>33</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>20</PARENTOBJECTID> -<CHILDOBJECTID>19</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>MO_MT_FK</NAME> -<NAMETEMPLATE>MO_MT_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>4</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>PE_PR_FK</NAME> -<NAMETEMPLATE>PE_PR_FK</NAMETEMPLATE> -<ID>36</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>23</PARENTOBJECTID> -<CHILDOBJECTID>21</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>PE_PR_FK</NAME> -<NAMETEMPLATE>PE_PR_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>3</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>DATA_SETS_PROTEINS</NAME> -<NAMETEMPLATE>DATA_SETS_PROTEINS</NAMETEMPLATE> -<ID>46</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>17</PARENTOBJECTID> -<CHILDOBJECTID>23</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>DATA_SETS_PROTEINS</NAME> -<NAMETEMPLATE>DATA_SETS_PROTEINS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>10</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>10</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>PROTEINS_IDENTIFIED_PROTEINS</NAME> -<NAMETEMPLATE>PROTEINS_IDENTIFIED_PROTEINS</NAMETEMPLATE> -<ID>48</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>23</PARENTOBJECTID> -<CHILDOBJECTID>47</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>PROTEINS_IDENTIFIED_PROTEINS</NAME> -<NAMETEMPLATE>PROTEINS_IDENTIFIED_PROTEINS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>3</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>SEQUENCES_IDENTIFIED_PROTEINS</NAME> -<NAMETEMPLATE>SEQUENCES_IDENTIFIED_PROTEINS</NAMETEMPLATE> -<ID>50</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>25</PARENTOBJECTID> -<CHILDOBJECTID>47</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>SEQUENCES_IDENTIFIED_PROTEINS</NAME> -<NAMETEMPLATE>SEQUENCES_IDENTIFIED_PROTEINS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>5</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>SAMPLES_ABUNDANCES</NAME> -<NAMETEMPLATE>SAMPLES_ABUNDANCES</NAMETEMPLATE> -<ID>92</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>24</PARENTOBJECTID> -<CHILDOBJECTID>91</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>SAMPLES_ABUNDANCES</NAME> -<NAMETEMPLATE>SAMPLES_ABUNDANCES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>4</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>ABUNDANCES_TYPES_ABUNDANCES</NAME> -<NAMETEMPLATE>ABUNDANCES_TYPES_ABUNDANCES</NAMETEMPLATE> -<ID>93</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>14</PARENTOBJECTID> -<CHILDOBJECTID>91</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>ABUNDANCES_TYPES_ABUNDANCES</NAME> -<NAMETEMPLATE>ABUNDANCES_TYPES_ABUNDANCES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>5</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>PROTEINS_ABUNDANCES</NAME> -<NAMETEMPLATE>PROTEINS_ABUNDANCES</NAMETEMPLATE> -<ID>94</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>23</PARENTOBJECTID> -<CHILDOBJECTID>91</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>PROTEINS_ABUNDANCES</NAME> -<NAMETEMPLATE>PROTEINS_ABUNDANCES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>3</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>DATA_SETS_PROBABILITY_FDR_MAPPINGS</NAME> -<NAMETEMPLATE>DATA_SETS_PROBABILITY_FDR_MAPPINGS</NAMETEMPLATE> -<ID>97</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>17</PARENTOBJECTID> -<CHILDOBJECTID>96</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>DATA_SETS_PROBABILITY_FDR_MAPPINGS</NAME> -<NAMETEMPLATE>DATA_SETS_PROBABILITY_FDR_MAPPINGS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>5</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>DATABASES_SEQUENCES</NAME> -<NAMETEMPLATE>DATABASES_SEQUENCES</NAMETEMPLATE> -<ID>111</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>110</PARENTOBJECTID> -<CHILDOBJECTID>25</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>DATABASES_SEQUENCES</NAME> -<NAMETEMPLATE>DATABASES_SEQUENCES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>5</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>PROTEIN_REFERENCES_SEQUENCES</NAME> -<NAMETEMPLATE>PROTEIN_REFERENCES_SEQUENCES</NAMETEMPLATE> -<ID>112</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>98</PARENTOBJECTID> -<CHILDOBJECTID>25</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>PROTEIN_REFERENCES_SEQUENCES</NAME> -<NAMETEMPLATE>PROTEIN_REFERENCES_SEQUENCES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>6</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>6</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>DATABASES_DATA_SETS</NAME> -<NAMETEMPLATE>DATABASES_DATA_SETS</NAMETEMPLATE> -<ID>125</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>110</PARENTOBJECTID> -<CHILDOBJECTID>17</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>DATABASES_DATA_SETS</NAME> -<NAMETEMPLATE>DATABASES_DATA_SETS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>6</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>6</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -</RELATIONSHIPS> -<SUBCATEGORYCONNECTIONS> -</SUBCATEGORYCONNECTIONS> -</DATADICT> -</VERSION> -<VERSION> -<VERSIONINFO> -<VERSIONNUMBER>7</VERSIONNUMBER> -<VERSIONLABEL>Version 2009-07-07</VERSIONLABEL> -<VERSIONDATE>2009-07-07 08:01</VERSIONDATE> -<VERSIONCOMMENTS></VERSIONCOMMENTS> -<VERSIONTYPE>DB</VERSIONTYPE> -<VERSIONTYPEDESC>Data dictionary only (no diagrams)</VERSIONTYPEDESC> -</VERSIONINFO> -<DATADICT> -<DBID>postgresql8</DBID> -<LASTID>135</LASTID> -<DDSETTINGS> -<PKCONNAMETEMPLATE>PK_%table%</PKCONNAMETEMPLATE> -<FKCONNAMETEMPLATE>%relname%</FKCONNAMETEMPLATE> -<CCONNAMETEMPLATE>CC_%table%_%column%</CCONNAMETEMPLATE> -<NOTNULLCONNAMETEMPLATE>NN_%column%</NOTNULLCONNAMETEMPLATE> -<DEFAULTCONNAMETEMPLATE>DEF_%table%_%column%</DEFAULTCONNAMETEMPLATE> -<TUCONNAMETEMPLATE>TUC_%table%_%counter%</TUCONNAMETEMPLATE> -<TCCONNAMETEMPLATE>TCC_%table%_%counter%</TCCONNAMETEMPLATE> -<RELNAMETEMPLATE>%parent%_%child%</RELNAMETEMPLATE> -<INDEXNAMETEMPLATE>IDX_%table%_%counter%</INDEXNAMETEMPLATE> -<DEFTABLEOPTIONS></DEFTABLEOPTIONS> -<DEFINDEXOPTIONS></DEFINDEXOPTIONS> -<BEGINDATABASESCRIPT></BEGINDATABASESCRIPT> -<ENDDATABASESCRIP></ENDDATABASESCRIP> -<BEGINALTERDATABASESCRIPT></BEGINALTERDATABASESCRIPT> -<ENDALTERDATABASESCRIP></ENDALTERDATABASESCRIP> -<BEGINDROPDATABASESCRIPT></BEGINDROPDATABASESCRIPT> -<ENDDROPDATABASESCRIP></ENDDROPDATABASESCRIP> -<GENDIALOGSELECTEDOBJECTS></GENDIALOGSELECTEDOBJECTS> -<GENTABLES>1</GENTABLES> -<GENTABLEOPTIONS>1</GENTABLEOPTIONS> -<GENCONSTRAINTS>1</GENCONSTRAINTS> -<GENINDEXES>1</GENINDEXES> -<GENTRIGGERS>1</GENTRIGGERS> -<GENVIEWS>1</GENVIEWS> -<GENPROCEDURES>1</GENPROCEDURES> -<GENSEQUENCES>1</GENSEQUENCES> -<GENRELATIONSHIPS>1</GENRELATIONSHIPS> -<GENBEGINENDTABLESCRIPTS>1</GENBEGINENDTABLESCRIPTS> -<GENBEGINENDDBSCRIPTS>1</GENBEGINENDDBSCRIPTS> -<GLOBALPREFIX></GLOBALPREFIX> -<AUTOCREATEINDEXESONKEYS>0</AUTOCREATEINDEXESONKEYS> -<CONVERTDOMAINS>0</CONVERTDOMAINS> -<IGNORECOMMENTS>0</IGNORECOMMENTS> -<USESCHEMANAMES>0</USESCHEMANAMES> -<UCONNAMETEMPLATE></UCONNAMETEMPLATE> -<SQLCREATEFILE>N:\user\cisd\felmer\phosphonetx\schema-001.sql</SQLCREATEFILE> -<SQLDROPFILE>N:\user\cisd\felmer\phosphonetx\drop.sql</SQLDROPFILE> -</DDSETTINGS> -<DOMAINS> -<DOMAIN> -<NAME>CHECKSUM</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>8</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>CODE</NAME> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>DESCRIPTION</NAME> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>2000</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>INTEGER_NUMBER</NAME> -<ID>7</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>INTEGER</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>REAL_NUMBER</NAME> -<ID>8</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>LONG_SEQUENCE</NAME> -<ID>9</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>TEXT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>SHORT_DESCRIPTION</NAME> -<ID>11</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>200</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>TECH_ID</NAME> -<ID>12</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>SHORT_SEQUENCE</NAME> -<ID>69</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>1000</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>UNIPROT_ACCESSION_NUMBER</NAME> -<ID>109</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -</DOMAINS> -<ENTITIES> -<ENT> -<NAME>EXPERIMENTS</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>16</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>3</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_EXPERIMENTS</NAME> -<NAMETEMPLATE>PK_EXPERIMENTS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PERM_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>5</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_EXPERIMENTS_1</NAME> -<NAMETEMPLATE>TUC_EXPERIMENTS_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -<ENT> -<NAME>DATA_SETS</NAME> -<NAMETEMPLATE>IX_FK_DATA_SETS_EXPERIMENTS</NAMETEMPLATE> -<ID>17</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>6</ATTRLASTID> -<IDXLASTID>3</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_DATA_SETS</NAME> -<NAMETEMPLATE>PK_DATA_SETS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>EXPE_ID</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>SAMP_ID</NAME> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>DB_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>6</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PERM_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>5</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<INDEXES> -<INDEX> -<NAME>IX_FK_DATA_SETS_EXPERIMENTS</NAME> -<NAMETEMPLATE>IX_FK_DATA_SETS_EXPERIMENTS</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>EXPE_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>4</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -<INDEX> -<NAME>IX_FK_DATA_SETS_SAMPLES</NAME> -<NAMETEMPLATE>IX_FK_DATA_SETS_SAMPLES</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>SAMP_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>5</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -</INDEXES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_DATA_SETS_1</NAME> -<NAMETEMPLATE>TUC_DATA_SETS_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -<ENT> -<NAME>MODIFICATIONS</NAME> -<NAMETEMPLATE>IX_FK_MODIFICATIONS_PEPTIDES</NAMETEMPLATE> -<ID>19</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>6</ATTRLASTID> -<IDXLASTID>3</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_MODIFICATIONS</NAME> -<NAMETEMPLATE>PK_MODIFICATIONS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PEPT_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>MOTY_ID</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>POS</NAME> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>7</DOMAINID> -<DT> -<DTLISTNAME>INTEGER</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>MASS</NAME> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>6</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<INDEXES> -<INDEX> -<NAME>IX_FK_MODIFICATIONS_PEPTIDES</NAME> -<NAMETEMPLATE>IX_FK_MODIFICATIONS_PEPTIDES</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>PEPT_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>3</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -<INDEX> -<NAME>IX_FK_MODIFICATIONS_MODIFICATION_TYPES</NAME> -<NAMETEMPLATE>IX_FK_MODIFICATIONS_MODIFICATION_TYPES</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>MOTY_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>4</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -</INDEXES> -</ENT> -<ENT> -<NAME>MODIFICATION_TYPES</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>20</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>7</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_MODIFICATION_TYPES</NAME> -<NAMETEMPLATE>PK_MODIFICATION_TYPES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>CODE</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>5</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>DESCRIPTION</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>11</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>200</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -<ATTR> -<NAME>AMINO_ACID</NAME> -<ID>7</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER</DTLISTNAME> -<LE>1</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -<ATTR> -<NAME>MASS</NAME> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -<ATTR> -<NAME>MASS_TOLERANCE</NAME> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -</ATTRIBUTES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_MODIFICATION_TYPES_1</NAME> -<NAMETEMPLATE>TUC_MODIFICATION_TYPES_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -<ENT> -<NAME>PEPTIDES</NAME> -<NAMETEMPLATE>IX_FK_PEPTIDES_ABUNDANCES</NAMETEMPLATE> -<ID>21</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>10</ATTRLASTID> -<IDXLASTID>5</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_PEPTIDES</NAME> -<NAMETEMPLATE>PK_PEPTIDES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PROT_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>SEQUENCE</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>10</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>69</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>1000</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>10</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>CHARGE</NAME> -<ID>7</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>7</DOMAINID> -<DT> -<DTLISTNAME>INTEGER</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>7</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<INDEXES> -<INDEX> -<NAME>IX_FK_PEPTIDES_PROTEINS</NAME> -<NAMETEMPLATE>IX_FK_PEPTIDES_PROTEINS</NAMETEMPLATE> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>PROT_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>3</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -</INDEXES> -</ENT> -<ENT> -<NAME>PROTEINS</NAME> -<NAMETEMPLATE>IX_FK_PROTEINS_DATA_SETS</NAMETEMPLATE> -<ID>23</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>11</ATTRLASTID> -<IDXLASTID>7</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_PROTEINS</NAME> -<NAMETEMPLATE>PK_PROTEINS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>DASE_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>10</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>10</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PROBABILITY</NAME> -<ID>9</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>9</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<INDEXES> -<INDEX> -<NAME>IDX_PROTEINS_1</NAME> -<NAMETEMPLATE>IDX_PROTEINS_1</NAMETEMPLATE> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>DASE_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>10</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -</INDEXES> -</ENT> -<ENT> -<NAME>SAMPLES</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>24</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>4</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_SAMPLES</NAME> -<NAMETEMPLATE>PK_SAMPLES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PERM_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>5</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>EXPE_ID</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_SAMPLES_1</NAME> -<NAMETEMPLATE>TUC_SAMPLES_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -<ENT> -<NAME>SEQUENCES</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>25</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>6</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_SEQUENCES</NAME> -<NAMETEMPLATE>PK_SEQUENCES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>DB_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PRRE_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>6</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>AMINO_ACID_SEQUENCE</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>9</DOMAINID> -<DT> -<DTLISTNAME>TEXT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>CHECKSUM</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>4</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>8</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -</ENT> -<ENT> -<NAME>IDENTIFIED_PROTEINS</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>47</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>5</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_IDENTIFIED_PROTEINS</NAME> -<NAMETEMPLATE>PK_IDENTIFIED_PROTEINS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PROT_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>SEQU_ID</NAME> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -</ENT> -<ENT> -<NAME>ABUNDANCES</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>91</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>6</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_ABUNDANCES</NAME> -<NAMETEMPLATE>PK_ABUNDANCES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PROT_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>SAMP_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>VALUE</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>6</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -</ENT> -<ENT> -<NAME>PROBABILITY_FDR_MAPPINGS</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>96</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>5</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_PROBABILITY_FDR_MAPPINGS</NAME> -<NAMETEMPLATE>PK_PROBABILITY_FDR_MAPPINGS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>DASE_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PROBABILITY</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>FALSE_DISCOVERY_RATE</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -</ENT> -<ENT> -<NAME>PROTEIN_REFERENCES</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>98</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>4</ATTRLASTID> -<IDXLASTID>2</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_PROTEIN_REFERENCES</NAME> -<NAMETEMPLATE>PK_PROTEIN_REFERENCES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>UNIPROT_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>109</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>DESCRIPTION</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>6</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>2000</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -</ATTRIBUTES> -<INDEXES> -<INDEX> -<NAME>IDX_PROTEIN_REFERENCES_1</NAME> -<NAMETEMPLATE>IDX_PROTEIN_REFERENCES_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>UNIPROT_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>3</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -</INDEXES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_PROTEIN_REFERENCES_1</NAME> -<NAMETEMPLATE>TUC_PROTEIN_REFERENCES_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -<ENT> -<NAME>DATABASES</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>110</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>3</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_DATABASES</NAME> -<NAMETEMPLATE>PK_DATABASES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>NAME_AND_VERSION</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>11</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>200</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_DATABASES_1</NAME> -<NAMETEMPLATE>TUC_DATABASES_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -</ENTITIES> -<SUBCATEGORIES> -</SUBCATEGORIES> -<TEXTAREAS> -</TEXTAREAS> -<GROUPBOXES> -</GROUPBOXES> -<STAMPS> -</STAMPS> -<SEQUENCES> -</SEQUENCES> -<PROCEDURES> -</PROCEDURES> -<VIEWS> -</VIEWS> -<RELATIONSHIPS> -<REL> -<NAME>DA_EX_FK</NAME> -<NAMETEMPLATE>DA_EX_FK</NAMETEMPLATE> -<ID>29</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>16</PARENTOBJECTID> -<CHILDOBJECTID>17</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>DA_EX_FK</NAME> -<NAMETEMPLATE>DA_EX_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>4</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>DA_SA_FK</NAME> -<NAMETEMPLATE>DA_SA_FK</NAMETEMPLATE> -<ID>30</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>24</PARENTOBJECTID> -<CHILDOBJECTID>17</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>DA_SA_FK</NAME> -<NAMETEMPLATE>DA_SA_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>5</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>MO_PE_FK</NAME> -<NAMETEMPLATE>MO_PE_FK</NAMETEMPLATE> -<ID>32</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>21</PARENTOBJECTID> -<CHILDOBJECTID>19</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>MO_PE_FK</NAME> -<NAMETEMPLATE>MO_PE_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>3</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>MO_MT_FK</NAME> -<NAMETEMPLATE>MO_MT_FK</NAMETEMPLATE> -<ID>33</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>20</PARENTOBJECTID> -<CHILDOBJECTID>19</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>MO_MT_FK</NAME> -<NAMETEMPLATE>MO_MT_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>4</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>PE_PR_FK</NAME> -<NAMETEMPLATE>PE_PR_FK</NAMETEMPLATE> -<ID>36</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>23</PARENTOBJECTID> -<CHILDOBJECTID>21</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>PE_PR_FK</NAME> -<NAMETEMPLATE>PE_PR_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>3</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>DATA_SETS_PROTEINS</NAME> -<NAMETEMPLATE>DATA_SETS_PROTEINS</NAMETEMPLATE> -<ID>46</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>17</PARENTOBJECTID> -<CHILDOBJECTID>23</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>DATA_SETS_PROTEINS</NAME> -<NAMETEMPLATE>DATA_SETS_PROTEINS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>10</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>10</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>PROTEINS_IDENTIFIED_PROTEINS</NAME> -<NAMETEMPLATE>PROTEINS_IDENTIFIED_PROTEINS</NAMETEMPLATE> -<ID>48</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>23</PARENTOBJECTID> -<CHILDOBJECTID>47</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>PROTEINS_IDENTIFIED_PROTEINS</NAME> -<NAMETEMPLATE>PROTEINS_IDENTIFIED_PROTEINS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>3</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>SEQUENCES_IDENTIFIED_PROTEINS</NAME> -<NAMETEMPLATE>SEQUENCES_IDENTIFIED_PROTEINS</NAMETEMPLATE> -<ID>50</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>25</PARENTOBJECTID> -<CHILDOBJECTID>47</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>SEQUENCES_IDENTIFIED_PROTEINS</NAME> -<NAMETEMPLATE>SEQUENCES_IDENTIFIED_PROTEINS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>5</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>SAMPLES_ABUNDANCES</NAME> -<NAMETEMPLATE>SAMPLES_ABUNDANCES</NAMETEMPLATE> -<ID>92</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>24</PARENTOBJECTID> -<CHILDOBJECTID>91</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>SAMPLES_ABUNDANCES</NAME> -<NAMETEMPLATE>SAMPLES_ABUNDANCES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>4</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>PROTEINS_ABUNDANCES</NAME> -<NAMETEMPLATE>PROTEINS_ABUNDANCES</NAMETEMPLATE> -<ID>94</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>23</PARENTOBJECTID> -<CHILDOBJECTID>91</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>PROTEINS_ABUNDANCES</NAME> -<NAMETEMPLATE>PROTEINS_ABUNDANCES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>3</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>DATA_SETS_PROBABILITY_FDR_MAPPINGS</NAME> -<NAMETEMPLATE>DATA_SETS_PROBABILITY_FDR_MAPPINGS</NAMETEMPLATE> -<ID>97</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>17</PARENTOBJECTID> -<CHILDOBJECTID>96</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>DATA_SETS_PROBABILITY_FDR_MAPPINGS</NAME> -<NAMETEMPLATE>DATA_SETS_PROBABILITY_FDR_MAPPINGS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>5</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>DATABASES_SEQUENCES</NAME> -<NAMETEMPLATE>DATABASES_SEQUENCES</NAMETEMPLATE> -<ID>111</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>110</PARENTOBJECTID> -<CHILDOBJECTID>25</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>DATABASES_SEQUENCES</NAME> -<NAMETEMPLATE>DATABASES_SEQUENCES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>5</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>PROTEIN_REFERENCES_SEQUENCES</NAME> -<NAMETEMPLATE>PROTEIN_REFERENCES_SEQUENCES</NAMETEMPLATE> -<ID>112</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>98</PARENTOBJECTID> -<CHILDOBJECTID>25</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>PROTEIN_REFERENCES_SEQUENCES</NAME> -<NAMETEMPLATE>PROTEIN_REFERENCES_SEQUENCES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>6</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>6</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>DATABASES_DATA_SETS</NAME> -<NAMETEMPLATE>DATABASES_DATA_SETS</NAMETEMPLATE> -<ID>125</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>110</PARENTOBJECTID> -<CHILDOBJECTID>17</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>DATABASES_DATA_SETS</NAME> -<NAMETEMPLATE>DATABASES_DATA_SETS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>6</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>6</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -</RELATIONSHIPS> -<SUBCATEGORYCONNECTIONS> -</SUBCATEGORYCONNECTIONS> -</DATADICT> -</VERSION> -<VERSION> -<VERSIONINFO> -<VERSIONNUMBER>8</VERSIONNUMBER> -<VERSIONLABEL>Version 2009-07-15</VERSIONLABEL> -<VERSIONDATE>2009-07-15 15:52</VERSIONDATE> -<VERSIONCOMMENTS></VERSIONCOMMENTS> -<VERSIONTYPE>DB</VERSIONTYPE> -<VERSIONTYPEDESC>Data dictionary only (no diagrams)</VERSIONTYPEDESC> -</VERSIONINFO> -<DATADICT> -<DBID>postgresql8</DBID> -<LASTID>139</LASTID> -<DDSETTINGS> -<PKCONNAMETEMPLATE>PK_%table%</PKCONNAMETEMPLATE> -<FKCONNAMETEMPLATE>%relname%</FKCONNAMETEMPLATE> -<CCONNAMETEMPLATE>CC_%table%_%column%</CCONNAMETEMPLATE> -<NOTNULLCONNAMETEMPLATE>NN_%column%</NOTNULLCONNAMETEMPLATE> -<DEFAULTCONNAMETEMPLATE>DEF_%table%_%column%</DEFAULTCONNAMETEMPLATE> -<TUCONNAMETEMPLATE>TUC_%table%_%counter%</TUCONNAMETEMPLATE> -<TCCONNAMETEMPLATE>TCC_%table%_%counter%</TCCONNAMETEMPLATE> -<RELNAMETEMPLATE>%parent%_%child%</RELNAMETEMPLATE> -<INDEXNAMETEMPLATE>IDX_%table%_%counter%</INDEXNAMETEMPLATE> -<DEFTABLEOPTIONS></DEFTABLEOPTIONS> -<DEFINDEXOPTIONS></DEFINDEXOPTIONS> -<BEGINDATABASESCRIPT></BEGINDATABASESCRIPT> -<ENDDATABASESCRIP></ENDDATABASESCRIP> -<BEGINALTERDATABASESCRIPT></BEGINALTERDATABASESCRIPT> -<ENDALTERDATABASESCRIP></ENDALTERDATABASESCRIP> -<BEGINDROPDATABASESCRIPT></BEGINDROPDATABASESCRIPT> -<ENDDROPDATABASESCRIP></ENDDROPDATABASESCRIP> -<GENDIALOGSELECTEDOBJECTS></GENDIALOGSELECTEDOBJECTS> -<GENTABLES>1</GENTABLES> -<GENTABLEOPTIONS>1</GENTABLEOPTIONS> -<GENCONSTRAINTS>1</GENCONSTRAINTS> -<GENINDEXES>1</GENINDEXES> -<GENTRIGGERS>1</GENTRIGGERS> -<GENVIEWS>1</GENVIEWS> -<GENPROCEDURES>1</GENPROCEDURES> -<GENSEQUENCES>1</GENSEQUENCES> -<GENRELATIONSHIPS>1</GENRELATIONSHIPS> -<GENBEGINENDTABLESCRIPTS>1</GENBEGINENDTABLESCRIPTS> -<GENBEGINENDDBSCRIPTS>1</GENBEGINENDDBSCRIPTS> -<GLOBALPREFIX></GLOBALPREFIX> -<AUTOCREATEINDEXESONKEYS>0</AUTOCREATEINDEXESONKEYS> -<CONVERTDOMAINS>0</CONVERTDOMAINS> -<IGNORECOMMENTS>0</IGNORECOMMENTS> -<USESCHEMANAMES>0</USESCHEMANAMES> -<UCONNAMETEMPLATE></UCONNAMETEMPLATE> -<SQLCREATEFILE>D:\User\felmer\dev-workspace\rtd_phosphonetx\source\sql\postgresql\001\schema-001.sql</SQLCREATEFILE> -<SQLDROPFILE>D:\User\felmer\dev-workspace\rtd_phosphonetx\source\sql\postgresql\001\drop.sql</SQLDROPFILE> -</DDSETTINGS> -<DOMAINS> -<DOMAIN> -<NAME>CHECKSUM</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>8</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>CODE</NAME> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>DESCRIPTION</NAME> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>2000</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>INTEGER_NUMBER</NAME> -<ID>7</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>INTEGER</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>REAL_NUMBER</NAME> -<ID>8</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>LONG_SEQUENCE</NAME> -<ID>9</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>TEXT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>SHORT_DESCRIPTION</NAME> -<ID>11</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>200</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>TECH_ID</NAME> -<ID>12</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>SHORT_SEQUENCE</NAME> -<ID>69</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>1000</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>UNIPROT_ACCESSION_NUMBER</NAME> -<ID>109</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -</DOMAINS> -<ENTITIES> -<ENT> -<NAME>EXPERIMENTS</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>16</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>3</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_EXPERIMENTS</NAME> -<NAMETEMPLATE>PK_EXPERIMENTS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PERM_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>5</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_EXPERIMENTS_1</NAME> -<NAMETEMPLATE>TUC_EXPERIMENTS_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -<ENT> -<NAME>DATA_SETS</NAME> -<NAMETEMPLATE>IX_FK_DATA_SETS_EXPERIMENTS</NAMETEMPLATE> -<ID>17</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>6</ATTRLASTID> -<IDXLASTID>3</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_DATA_SETS</NAME> -<NAMETEMPLATE>PK_DATA_SETS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>EXPE_ID</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>SAMP_ID</NAME> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>DB_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>6</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PERM_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>5</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<INDEXES> -<INDEX> -<NAME>IX_FK_DATA_SETS_EXPERIMENTS</NAME> -<NAMETEMPLATE>IX_FK_DATA_SETS_EXPERIMENTS</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>EXPE_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>4</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -<INDEX> -<NAME>IX_FK_DATA_SETS_SAMPLES</NAME> -<NAMETEMPLATE>IX_FK_DATA_SETS_SAMPLES</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>SAMP_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>5</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -</INDEXES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_DATA_SETS_1</NAME> -<NAMETEMPLATE>TUC_DATA_SETS_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -<ENT> -<NAME>MODIFICATIONS</NAME> -<NAMETEMPLATE>IX_FK_MODIFICATIONS_PEPTIDES</NAMETEMPLATE> -<ID>19</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>7</ATTRLASTID> -<IDXLASTID>5</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_MODIFICATIONS</NAME> -<NAMETEMPLATE>PK_MODIFICATIONS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>MOPE_ID</NAME> -<ID>7</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>7</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>POS</NAME> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>7</DOMAINID> -<DT> -<DTLISTNAME>INTEGER</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>MASS</NAME> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>6</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -</ENT> -<ENT> -<NAME>PEPTIDES</NAME> -<NAMETEMPLATE>IX_FK_PEPTIDES_ABUNDANCES</NAMETEMPLATE> -<ID>21</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>10</ATTRLASTID> -<IDXLASTID>5</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_PEPTIDES</NAME> -<NAMETEMPLATE>PK_PEPTIDES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PROT_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>SEQUENCE</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>10</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>69</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>1000</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>10</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>CHARGE</NAME> -<ID>7</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>7</DOMAINID> -<DT> -<DTLISTNAME>INTEGER</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>7</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<INDEXES> -<INDEX> -<NAME>IX_FK_PEPTIDES_PROTEINS</NAME> -<NAMETEMPLATE>IX_FK_PEPTIDES_PROTEINS</NAMETEMPLATE> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>PROT_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>3</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -</INDEXES> -</ENT> -<ENT> -<NAME>PROTEINS</NAME> -<NAMETEMPLATE>IX_FK_PROTEINS_DATA_SETS</NAMETEMPLATE> -<ID>23</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>11</ATTRLASTID> -<IDXLASTID>7</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_PROTEINS</NAME> -<NAMETEMPLATE>PK_PROTEINS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>DASE_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>10</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>10</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PROBABILITY</NAME> -<ID>9</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>9</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<INDEXES> -<INDEX> -<NAME>IDX_PROTEINS_1</NAME> -<NAMETEMPLATE>IDX_PROTEINS_1</NAMETEMPLATE> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>DASE_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>10</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -</INDEXES> -</ENT> -<ENT> -<NAME>SAMPLES</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>24</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>4</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_SAMPLES</NAME> -<NAMETEMPLATE>PK_SAMPLES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PERM_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>5</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>EXPE_ID</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_SAMPLES_1</NAME> -<NAMETEMPLATE>TUC_SAMPLES_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -<ENT> -<NAME>SEQUENCES</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>25</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>6</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_SEQUENCES</NAME> -<NAMETEMPLATE>PK_SEQUENCES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>DB_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PRRE_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>6</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>AMINO_ACID_SEQUENCE</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>9</DOMAINID> -<DT> -<DTLISTNAME>TEXT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>CHECKSUM</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>4</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>8</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -</ENT> -<ENT> -<NAME>IDENTIFIED_PROTEINS</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>47</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>5</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_IDENTIFIED_PROTEINS</NAME> -<NAMETEMPLATE>PK_IDENTIFIED_PROTEINS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PROT_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>SEQU_ID</NAME> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -</ENT> -<ENT> -<NAME>ABUNDANCES</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>91</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>6</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_ABUNDANCES</NAME> -<NAMETEMPLATE>PK_ABUNDANCES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PROT_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>SAMP_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>VALUE</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>6</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -</ENT> -<ENT> -<NAME>PROBABILITY_FDR_MAPPINGS</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>96</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>5</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_PROBABILITY_FDR_MAPPINGS</NAME> -<NAMETEMPLATE>PK_PROBABILITY_FDR_MAPPINGS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>DASE_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PROBABILITY</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>FALSE_DISCOVERY_RATE</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -</ENT> -<ENT> -<NAME>PROTEIN_REFERENCES</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>98</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>4</ATTRLASTID> -<IDXLASTID>2</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_PROTEIN_REFERENCES</NAME> -<NAMETEMPLATE>PK_PROTEIN_REFERENCES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>UNIPROT_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>109</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>DESCRIPTION</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>6</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>2000</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -</ATTRIBUTES> -<INDEXES> -<INDEX> -<NAME>IDX_PROTEIN_REFERENCES_1</NAME> -<NAMETEMPLATE>IDX_PROTEIN_REFERENCES_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>UNIPROT_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>3</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -</INDEXES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_PROTEIN_REFERENCES_1</NAME> -<NAMETEMPLATE>TUC_PROTEIN_REFERENCES_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -<ENT> -<NAME>DATABASES</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>110</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>3</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_DATABASES</NAME> -<NAMETEMPLATE>PK_DATABASES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>NAME_AND_VERSION</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>11</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>200</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_DATABASES_1</NAME> -<NAMETEMPLATE>TUC_DATABASES_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -<ENT> -<NAME>MODIFIED_PEPTIDES</NAME> -<ID>136</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>5</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_MODIFIED_PEPTIDES</NAME> -<NAMETEMPLATE>PK_MODIFIED_PEPTIDES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PEPT_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>NTERM_MASS</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>CTERM_MASS</NAME> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -</ENT> -</ENTITIES> -<SUBCATEGORIES> -</SUBCATEGORIES> -<TEXTAREAS> -</TEXTAREAS> -<GROUPBOXES> -</GROUPBOXES> -<STAMPS> -</STAMPS> -<SEQUENCES> -</SEQUENCES> -<PROCEDURES> -</PROCEDURES> -<VIEWS> -</VIEWS> -<RELATIONSHIPS> -<REL> -<NAME>DA_EX_FK</NAME> -<NAMETEMPLATE>DA_EX_FK</NAMETEMPLATE> -<ID>29</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>16</PARENTOBJECTID> -<CHILDOBJECTID>17</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>DA_EX_FK</NAME> -<NAMETEMPLATE>DA_EX_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>4</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>DA_SA_FK</NAME> -<NAMETEMPLATE>DA_SA_FK</NAMETEMPLATE> -<ID>30</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>24</PARENTOBJECTID> -<CHILDOBJECTID>17</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>DA_SA_FK</NAME> -<NAMETEMPLATE>DA_SA_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>5</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>PE_PR_FK</NAME> -<NAMETEMPLATE>PE_PR_FK</NAMETEMPLATE> -<ID>36</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>23</PARENTOBJECTID> -<CHILDOBJECTID>21</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>PE_PR_FK</NAME> -<NAMETEMPLATE>PE_PR_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>3</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>DATA_SETS_PROTEINS</NAME> -<NAMETEMPLATE>DATA_SETS_PROTEINS</NAMETEMPLATE> -<ID>46</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>17</PARENTOBJECTID> -<CHILDOBJECTID>23</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>DATA_SETS_PROTEINS</NAME> -<NAMETEMPLATE>DATA_SETS_PROTEINS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>10</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>10</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>PROTEINS_IDENTIFIED_PROTEINS</NAME> -<NAMETEMPLATE>PROTEINS_IDENTIFIED_PROTEINS</NAMETEMPLATE> -<ID>48</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>23</PARENTOBJECTID> -<CHILDOBJECTID>47</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>PROTEINS_IDENTIFIED_PROTEINS</NAME> -<NAMETEMPLATE>PROTEINS_IDENTIFIED_PROTEINS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>3</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>SEQUENCES_IDENTIFIED_PROTEINS</NAME> -<NAMETEMPLATE>SEQUENCES_IDENTIFIED_PROTEINS</NAMETEMPLATE> -<ID>50</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>25</PARENTOBJECTID> -<CHILDOBJECTID>47</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>SEQUENCES_IDENTIFIED_PROTEINS</NAME> -<NAMETEMPLATE>SEQUENCES_IDENTIFIED_PROTEINS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>5</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>SAMPLES_ABUNDANCES</NAME> -<NAMETEMPLATE>SAMPLES_ABUNDANCES</NAMETEMPLATE> -<ID>92</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>24</PARENTOBJECTID> -<CHILDOBJECTID>91</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>SAMPLES_ABUNDANCES</NAME> -<NAMETEMPLATE>SAMPLES_ABUNDANCES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>4</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>PROTEINS_ABUNDANCES</NAME> -<NAMETEMPLATE>PROTEINS_ABUNDANCES</NAMETEMPLATE> -<ID>94</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>23</PARENTOBJECTID> -<CHILDOBJECTID>91</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>PROTEINS_ABUNDANCES</NAME> -<NAMETEMPLATE>PROTEINS_ABUNDANCES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>3</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>DATA_SETS_PROBABILITY_FDR_MAPPINGS</NAME> -<NAMETEMPLATE>DATA_SETS_PROBABILITY_FDR_MAPPINGS</NAMETEMPLATE> -<ID>97</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>17</PARENTOBJECTID> -<CHILDOBJECTID>96</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>DATA_SETS_PROBABILITY_FDR_MAPPINGS</NAME> -<NAMETEMPLATE>DATA_SETS_PROBABILITY_FDR_MAPPINGS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>5</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>DATABASES_SEQUENCES</NAME> -<NAMETEMPLATE>DATABASES_SEQUENCES</NAMETEMPLATE> -<ID>111</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>110</PARENTOBJECTID> -<CHILDOBJECTID>25</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>DATABASES_SEQUENCES</NAME> -<NAMETEMPLATE>DATABASES_SEQUENCES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>5</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>PROTEIN_REFERENCES_SEQUENCES</NAME> -<NAMETEMPLATE>PROTEIN_REFERENCES_SEQUENCES</NAMETEMPLATE> -<ID>112</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>98</PARENTOBJECTID> -<CHILDOBJECTID>25</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>PROTEIN_REFERENCES_SEQUENCES</NAME> -<NAMETEMPLATE>PROTEIN_REFERENCES_SEQUENCES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>6</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>6</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>DATABASES_DATA_SETS</NAME> -<NAMETEMPLATE>DATABASES_DATA_SETS</NAMETEMPLATE> -<ID>125</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>110</PARENTOBJECTID> -<CHILDOBJECTID>17</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>DATABASES_DATA_SETS</NAME> -<NAMETEMPLATE>DATABASES_DATA_SETS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>6</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>6</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>PEPTIDES_MODIFIED_PEPTIDES</NAME> -<NAMETEMPLATE>PEPTIDES_MODIFIED_PEPTIDES</NAMETEMPLATE> -<ID>138</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>21</PARENTOBJECTID> -<CHILDOBJECTID>136</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>PEPTIDES_MODIFIED_PEPTIDES</NAME> -<NAMETEMPLATE>PEPTIDES_MODIFIED_PEPTIDES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>3</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>MODIFIED_PEPTIDES_MODIFICATIONS</NAME> -<NAMETEMPLATE>MODIFIED_PEPTIDES_MODIFICATIONS</NAMETEMPLATE> -<ID>139</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>136</PARENTOBJECTID> -<CHILDOBJECTID>19</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>MODIFIED_PEPTIDES_MODIFICATIONS</NAME> -<NAMETEMPLATE>MODIFIED_PEPTIDES_MODIFICATIONS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>7</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>7</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -</RELATIONSHIPS> -<SUBCATEGORYCONNECTIONS> -</SUBCATEGORYCONNECTIONS> -</DATADICT> -</VERSION> -<VERSION> -<VERSIONINFO> -<VERSIONNUMBER>9</VERSIONNUMBER> -<VERSIONLABEL>Version 2009-07-15 1</VERSIONLABEL> -<VERSIONDATE>2009-07-15 15:53</VERSIONDATE> -<VERSIONCOMMENTS></VERSIONCOMMENTS> -<VERSIONTYPE>DB</VERSIONTYPE> -<VERSIONTYPEDESC>Data dictionary only (no diagrams)</VERSIONTYPEDESC> -</VERSIONINFO> -<DATADICT> -<DBID>postgresql8</DBID> -<LASTID>139</LASTID> -<DDSETTINGS> -<PKCONNAMETEMPLATE>PK_%table%</PKCONNAMETEMPLATE> -<FKCONNAMETEMPLATE>%relname%</FKCONNAMETEMPLATE> -<CCONNAMETEMPLATE>CC_%table%_%column%</CCONNAMETEMPLATE> -<NOTNULLCONNAMETEMPLATE>NN_%column%</NOTNULLCONNAMETEMPLATE> -<DEFAULTCONNAMETEMPLATE>DEF_%table%_%column%</DEFAULTCONNAMETEMPLATE> -<TUCONNAMETEMPLATE>TUC_%table%_%counter%</TUCONNAMETEMPLATE> -<TCCONNAMETEMPLATE>TCC_%table%_%counter%</TCCONNAMETEMPLATE> -<RELNAMETEMPLATE>%parent%_%child%</RELNAMETEMPLATE> -<INDEXNAMETEMPLATE>IDX_%table%_%counter%</INDEXNAMETEMPLATE> -<DEFTABLEOPTIONS></DEFTABLEOPTIONS> -<DEFINDEXOPTIONS></DEFINDEXOPTIONS> -<BEGINDATABASESCRIPT></BEGINDATABASESCRIPT> -<ENDDATABASESCRIP></ENDDATABASESCRIP> -<BEGINALTERDATABASESCRIPT></BEGINALTERDATABASESCRIPT> -<ENDALTERDATABASESCRIP></ENDALTERDATABASESCRIP> -<BEGINDROPDATABASESCRIPT></BEGINDROPDATABASESCRIPT> -<ENDDROPDATABASESCRIP></ENDDROPDATABASESCRIP> -<GENDIALOGSELECTEDOBJECTS></GENDIALOGSELECTEDOBJECTS> -<GENTABLES>1</GENTABLES> -<GENTABLEOPTIONS>1</GENTABLEOPTIONS> -<GENCONSTRAINTS>1</GENCONSTRAINTS> -<GENINDEXES>1</GENINDEXES> -<GENTRIGGERS>1</GENTRIGGERS> -<GENVIEWS>1</GENVIEWS> -<GENPROCEDURES>1</GENPROCEDURES> -<GENSEQUENCES>1</GENSEQUENCES> -<GENRELATIONSHIPS>1</GENRELATIONSHIPS> -<GENBEGINENDTABLESCRIPTS>1</GENBEGINENDTABLESCRIPTS> -<GENBEGINENDDBSCRIPTS>1</GENBEGINENDDBSCRIPTS> -<GLOBALPREFIX></GLOBALPREFIX> -<AUTOCREATEINDEXESONKEYS>0</AUTOCREATEINDEXESONKEYS> -<CONVERTDOMAINS>0</CONVERTDOMAINS> -<IGNORECOMMENTS>0</IGNORECOMMENTS> -<USESCHEMANAMES>0</USESCHEMANAMES> -<UCONNAMETEMPLATE></UCONNAMETEMPLATE> -<SQLCREATEFILE>D:\User\felmer\dev-workspace\rtd_phosphonetx\source\sql\postgresql\001\schema-001.sql</SQLCREATEFILE> -<SQLDROPFILE>D:\User\felmer\dev-workspace\rtd_phosphonetx\source\sql\postgresql\001\drop.sql</SQLDROPFILE> -</DDSETTINGS> -<DOMAINS> -<DOMAIN> -<NAME>CHECKSUM</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>8</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>CODE</NAME> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>DESCRIPTION</NAME> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>2000</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>INTEGER_NUMBER</NAME> -<ID>7</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>INTEGER</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>REAL_NUMBER</NAME> -<ID>8</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>LONG_SEQUENCE</NAME> -<ID>9</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>TEXT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>SHORT_DESCRIPTION</NAME> -<ID>11</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>200</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>TECH_ID</NAME> -<ID>12</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>SHORT_SEQUENCE</NAME> -<ID>69</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>1000</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>UNIPROT_ACCESSION_NUMBER</NAME> -<ID>109</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -</DOMAINS> -<ENTITIES> -<ENT> -<NAME>EXPERIMENTS</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>16</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>3</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_EXPERIMENTS</NAME> -<NAMETEMPLATE>PK_EXPERIMENTS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PERM_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>5</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_EXPERIMENTS_1</NAME> -<NAMETEMPLATE>TUC_EXPERIMENTS_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -<ENT> -<NAME>DATA_SETS</NAME> -<NAMETEMPLATE>IX_FK_DATA_SETS_EXPERIMENTS</NAMETEMPLATE> -<ID>17</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>6</ATTRLASTID> -<IDXLASTID>3</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_DATA_SETS</NAME> -<NAMETEMPLATE>PK_DATA_SETS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>EXPE_ID</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>SAMP_ID</NAME> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>DB_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>6</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PERM_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>5</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<INDEXES> -<INDEX> -<NAME>IX_FK_DATA_SETS_EXPERIMENTS</NAME> -<NAMETEMPLATE>IX_FK_DATA_SETS_EXPERIMENTS</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>EXPE_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>4</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -<INDEX> -<NAME>IX_FK_DATA_SETS_SAMPLES</NAME> -<NAMETEMPLATE>IX_FK_DATA_SETS_SAMPLES</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>SAMP_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>5</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -</INDEXES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_DATA_SETS_1</NAME> -<NAMETEMPLATE>TUC_DATA_SETS_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -<ENT> -<NAME>MODIFICATIONS</NAME> -<NAMETEMPLATE>IX_FK_MODIFICATIONS_PEPTIDES</NAMETEMPLATE> -<ID>19</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>7</ATTRLASTID> -<IDXLASTID>5</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_MODIFICATIONS</NAME> -<NAMETEMPLATE>PK_MODIFICATIONS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>MOPE_ID</NAME> -<ID>7</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>7</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>POS</NAME> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>7</DOMAINID> -<DT> -<DTLISTNAME>INTEGER</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>MASS</NAME> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>6</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -</ENT> -<ENT> -<NAME>PEPTIDES</NAME> -<NAMETEMPLATE>IX_FK_PEPTIDES_ABUNDANCES</NAMETEMPLATE> -<ID>21</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>10</ATTRLASTID> -<IDXLASTID>5</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_PEPTIDES</NAME> -<NAMETEMPLATE>PK_PEPTIDES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PROT_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>SEQUENCE</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>10</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>69</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>1000</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>10</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>CHARGE</NAME> -<ID>7</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>7</DOMAINID> -<DT> -<DTLISTNAME>INTEGER</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>7</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<INDEXES> -<INDEX> -<NAME>IX_FK_PEPTIDES_PROTEINS</NAME> -<NAMETEMPLATE>IX_FK_PEPTIDES_PROTEINS</NAMETEMPLATE> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>PROT_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>3</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -</INDEXES> -</ENT> -<ENT> -<NAME>PROTEINS</NAME> -<NAMETEMPLATE>IX_FK_PROTEINS_DATA_SETS</NAMETEMPLATE> -<ID>23</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>11</ATTRLASTID> -<IDXLASTID>7</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_PROTEINS</NAME> -<NAMETEMPLATE>PK_PROTEINS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>DASE_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>10</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>10</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PROBABILITY</NAME> -<ID>9</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>9</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<INDEXES> -<INDEX> -<NAME>IDX_PROTEINS_1</NAME> -<NAMETEMPLATE>IDX_PROTEINS_1</NAMETEMPLATE> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>DASE_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>10</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -</INDEXES> -</ENT> -<ENT> -<NAME>SAMPLES</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>24</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>4</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_SAMPLES</NAME> -<NAMETEMPLATE>PK_SAMPLES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PERM_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>5</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>EXPE_ID</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_SAMPLES_1</NAME> -<NAMETEMPLATE>TUC_SAMPLES_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -<ENT> -<NAME>SEQUENCES</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>25</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>6</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_SEQUENCES</NAME> -<NAMETEMPLATE>PK_SEQUENCES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>DB_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PRRE_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>6</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>AMINO_ACID_SEQUENCE</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>9</DOMAINID> -<DT> -<DTLISTNAME>TEXT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>CHECKSUM</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>4</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>8</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -</ENT> -<ENT> -<NAME>IDENTIFIED_PROTEINS</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>47</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>5</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_IDENTIFIED_PROTEINS</NAME> -<NAMETEMPLATE>PK_IDENTIFIED_PROTEINS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PROT_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>SEQU_ID</NAME> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -</ENT> -<ENT> -<NAME>ABUNDANCES</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>91</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>6</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_ABUNDANCES</NAME> -<NAMETEMPLATE>PK_ABUNDANCES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PROT_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>SAMP_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>VALUE</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>6</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -</ENT> -<ENT> -<NAME>PROBABILITY_FDR_MAPPINGS</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>96</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>5</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_PROBABILITY_FDR_MAPPINGS</NAME> -<NAMETEMPLATE>PK_PROBABILITY_FDR_MAPPINGS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>DASE_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PROBABILITY</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>FALSE_DISCOVERY_RATE</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -</ENT> -<ENT> -<NAME>PROTEIN_REFERENCES</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>98</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>4</ATTRLASTID> -<IDXLASTID>2</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_PROTEIN_REFERENCES</NAME> -<NAMETEMPLATE>PK_PROTEIN_REFERENCES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>UNIPROT_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>109</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>DESCRIPTION</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>6</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>2000</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -</ATTRIBUTES> -<INDEXES> -<INDEX> -<NAME>IDX_PROTEIN_REFERENCES_1</NAME> -<NAMETEMPLATE>IDX_PROTEIN_REFERENCES_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>UNIPROT_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>3</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -</INDEXES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_PROTEIN_REFERENCES_1</NAME> -<NAMETEMPLATE>TUC_PROTEIN_REFERENCES_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -<ENT> -<NAME>DATABASES</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>110</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>3</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_DATABASES</NAME> -<NAMETEMPLATE>PK_DATABASES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>NAME_AND_VERSION</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>11</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>200</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_DATABASES_1</NAME> -<NAMETEMPLATE>TUC_DATABASES_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -<ENT> -<NAME>MODIFIED_PEPTIDES</NAME> -<ID>136</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>5</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_MODIFIED_PEPTIDES</NAME> -<NAMETEMPLATE>PK_MODIFIED_PEPTIDES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PEPT_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>NTERM_MASS</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>CTERM_MASS</NAME> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -</ENT> -</ENTITIES> -<SUBCATEGORIES> -</SUBCATEGORIES> -<TEXTAREAS> -</TEXTAREAS> -<GROUPBOXES> -</GROUPBOXES> -<STAMPS> -</STAMPS> -<SEQUENCES> -</SEQUENCES> -<PROCEDURES> -</PROCEDURES> -<VIEWS> -</VIEWS> -<RELATIONSHIPS> -<REL> -<NAME>DA_EX_FK</NAME> -<NAMETEMPLATE>DA_EX_FK</NAMETEMPLATE> -<ID>29</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>16</PARENTOBJECTID> -<CHILDOBJECTID>17</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>DA_EX_FK</NAME> -<NAMETEMPLATE>DA_EX_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>4</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>DA_SA_FK</NAME> -<NAMETEMPLATE>DA_SA_FK</NAMETEMPLATE> -<ID>30</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>24</PARENTOBJECTID> -<CHILDOBJECTID>17</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>DA_SA_FK</NAME> -<NAMETEMPLATE>DA_SA_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>5</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>PE_PR_FK</NAME> -<NAMETEMPLATE>PE_PR_FK</NAMETEMPLATE> -<ID>36</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>23</PARENTOBJECTID> -<CHILDOBJECTID>21</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>PE_PR_FK</NAME> -<NAMETEMPLATE>PE_PR_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>3</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>DATA_SETS_PROTEINS</NAME> -<NAMETEMPLATE>DATA_SETS_PROTEINS</NAMETEMPLATE> -<ID>46</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>17</PARENTOBJECTID> -<CHILDOBJECTID>23</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>DATA_SETS_PROTEINS</NAME> -<NAMETEMPLATE>DATA_SETS_PROTEINS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>10</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>10</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>PROTEINS_IDENTIFIED_PROTEINS</NAME> -<NAMETEMPLATE>PROTEINS_IDENTIFIED_PROTEINS</NAMETEMPLATE> -<ID>48</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>23</PARENTOBJECTID> -<CHILDOBJECTID>47</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>PROTEINS_IDENTIFIED_PROTEINS</NAME> -<NAMETEMPLATE>PROTEINS_IDENTIFIED_PROTEINS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>3</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>SEQUENCES_IDENTIFIED_PROTEINS</NAME> -<NAMETEMPLATE>SEQUENCES_IDENTIFIED_PROTEINS</NAMETEMPLATE> -<ID>50</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>25</PARENTOBJECTID> -<CHILDOBJECTID>47</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>SEQUENCES_IDENTIFIED_PROTEINS</NAME> -<NAMETEMPLATE>SEQUENCES_IDENTIFIED_PROTEINS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>5</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>SAMPLES_ABUNDANCES</NAME> -<NAMETEMPLATE>SAMPLES_ABUNDANCES</NAMETEMPLATE> -<ID>92</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>24</PARENTOBJECTID> -<CHILDOBJECTID>91</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>SAMPLES_ABUNDANCES</NAME> -<NAMETEMPLATE>SAMPLES_ABUNDANCES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>4</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>PROTEINS_ABUNDANCES</NAME> -<NAMETEMPLATE>PROTEINS_ABUNDANCES</NAMETEMPLATE> -<ID>94</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>23</PARENTOBJECTID> -<CHILDOBJECTID>91</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>PROTEINS_ABUNDANCES</NAME> -<NAMETEMPLATE>PROTEINS_ABUNDANCES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>3</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>DATA_SETS_PROBABILITY_FDR_MAPPINGS</NAME> -<NAMETEMPLATE>DATA_SETS_PROBABILITY_FDR_MAPPINGS</NAMETEMPLATE> -<ID>97</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>17</PARENTOBJECTID> -<CHILDOBJECTID>96</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>DATA_SETS_PROBABILITY_FDR_MAPPINGS</NAME> -<NAMETEMPLATE>DATA_SETS_PROBABILITY_FDR_MAPPINGS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>5</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>DATABASES_SEQUENCES</NAME> -<NAMETEMPLATE>DATABASES_SEQUENCES</NAMETEMPLATE> -<ID>111</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>110</PARENTOBJECTID> -<CHILDOBJECTID>25</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>DATABASES_SEQUENCES</NAME> -<NAMETEMPLATE>DATABASES_SEQUENCES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>5</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>PROTEIN_REFERENCES_SEQUENCES</NAME> -<NAMETEMPLATE>PROTEIN_REFERENCES_SEQUENCES</NAMETEMPLATE> -<ID>112</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>98</PARENTOBJECTID> -<CHILDOBJECTID>25</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>PROTEIN_REFERENCES_SEQUENCES</NAME> -<NAMETEMPLATE>PROTEIN_REFERENCES_SEQUENCES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>6</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>6</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>DATABASES_DATA_SETS</NAME> -<NAMETEMPLATE>DATABASES_DATA_SETS</NAMETEMPLATE> -<ID>125</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>110</PARENTOBJECTID> -<CHILDOBJECTID>17</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>DATABASES_DATA_SETS</NAME> -<NAMETEMPLATE>DATABASES_DATA_SETS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>6</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>6</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>PEPTIDES_MODIFIED_PEPTIDES</NAME> -<NAMETEMPLATE>PEPTIDES_MODIFIED_PEPTIDES</NAMETEMPLATE> -<ID>138</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>21</PARENTOBJECTID> -<CHILDOBJECTID>136</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>PEPTIDES_MODIFIED_PEPTIDES</NAME> -<NAMETEMPLATE>PEPTIDES_MODIFIED_PEPTIDES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>3</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>MODIFIED_PEPTIDES_MODIFICATIONS</NAME> -<NAMETEMPLATE>MODIFIED_PEPTIDES_MODIFICATIONS</NAMETEMPLATE> -<ID>139</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>136</PARENTOBJECTID> -<CHILDOBJECTID>19</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>MODIFIED_PEPTIDES_MODIFICATIONS</NAME> -<NAMETEMPLATE>MODIFIED_PEPTIDES_MODIFICATIONS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>7</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>7</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -</RELATIONSHIPS> -<SUBCATEGORYCONNECTIONS> -</SUBCATEGORYCONNECTIONS> -</DATADICT> -</VERSION> - -</dezign> \ No newline at end of file diff --git a/rtd_phosphonetx/source/sql/proteomics/postgresql/001/schema-001.png b/rtd_phosphonetx/source/sql/proteomics/postgresql/001/schema-001.png deleted file mode 100644 index 69f33d205fd55433318b8e294148b3eb20267d5d..0000000000000000000000000000000000000000 Binary files a/rtd_phosphonetx/source/sql/proteomics/postgresql/001/schema-001.png and /dev/null differ diff --git a/rtd_phosphonetx/source/sql/proteomics/postgresql/001/schema-001.sql b/rtd_phosphonetx/source/sql/proteomics/postgresql/001/schema-001.sql deleted file mode 100644 index 5aaa048555bba96d45fcc2fa27e0976638a3de3c..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/sql/proteomics/postgresql/001/schema-001.sql +++ /dev/null @@ -1,284 +0,0 @@ -/* ---------------------------------------------------------------------- */ -/* Script generated with: DeZign for Databases v5.2.3 */ -/* Target DBMS: PostgreSQL 8 */ -/* Project file: schema-001.dez */ -/* Project name: */ -/* Author: */ -/* Script type: Database creation script */ -/* Created on: 2009-09-28 08:43 */ -/* Model version: Version 2009-09-28 */ -/* ---------------------------------------------------------------------- */ - - -/* ---------------------------------------------------------------------- */ -/* Domains */ -/* ---------------------------------------------------------------------- */ - -CREATE DOMAIN CHECKSUM AS CHARACTER VARYING(8); - -CREATE DOMAIN CODE AS CHARACTER VARYING(40); - -CREATE DOMAIN DESCRIPTION AS CHARACTER VARYING(2000); - -CREATE DOMAIN INTEGER_NUMBER AS INTEGER; - -CREATE DOMAIN REAL_NUMBER AS DOUBLE PRECISION; - -CREATE DOMAIN LONG_SEQUENCE AS TEXT; - -CREATE DOMAIN SHORT_DESCRIPTION AS CHARACTER VARYING(200); - -CREATE DOMAIN TECH_ID AS BIGINT; - -CREATE DOMAIN SHORT_SEQUENCE AS CHARACTER VARYING(1000); - -CREATE DOMAIN ACCESSION_NUMBER AS CHARACTER VARYING(256); - -CREATE DOMAIN SPECTRUM_REFERENCE AS CHARACTER VARYING(100); - -/* ---------------------------------------------------------------------- */ -/* Tables */ -/* ---------------------------------------------------------------------- */ - -/* ---------------------------------------------------------------------- */ -/* Add table "EXPERIMENTS" */ -/* ---------------------------------------------------------------------- */ - -CREATE TABLE EXPERIMENTS ( - ID BIGSERIAL NOT NULL, - PERM_ID CODE NOT NULL, - CONSTRAINT PK_EXPERIMENTS PRIMARY KEY (ID), - CONSTRAINT TUC_EXPERIMENTS_1 UNIQUE (PERM_ID) -); - -/* ---------------------------------------------------------------------- */ -/* Add table "DATA_SETS" */ -/* ---------------------------------------------------------------------- */ - -CREATE TABLE DATA_SETS ( - ID BIGSERIAL NOT NULL, - EXPE_ID TECH_ID NOT NULL, - SAMP_ID TECH_ID, - DB_ID TECH_ID NOT NULL, - PERM_ID CODE NOT NULL, - CONSTRAINT PK_DATA_SETS PRIMARY KEY (ID), - CONSTRAINT TUC_DATA_SETS_1 UNIQUE (PERM_ID) -); - -CREATE INDEX IX_FK_DATA_SETS_EXPERIMENTS ON DATA_SETS (EXPE_ID); - -CREATE INDEX IX_FK_DATA_SETS_SAMPLES ON DATA_SETS (SAMP_ID); - -/* ---------------------------------------------------------------------- */ -/* Add table "MODIFICATIONS" */ -/* ---------------------------------------------------------------------- */ - -CREATE TABLE MODIFICATIONS ( - ID BIGSERIAL NOT NULL, - MOPE_ID TECH_ID NOT NULL, - POS INTEGER_NUMBER NOT NULL, - MASS REAL_NUMBER NOT NULL, - CONSTRAINT PK_MODIFICATIONS PRIMARY KEY (ID) -); - -/* ---------------------------------------------------------------------- */ -/* Add table "PEPTIDES" */ -/* ---------------------------------------------------------------------- */ - -CREATE TABLE PEPTIDES ( - ID BIGSERIAL NOT NULL, - PROT_ID TECH_ID NOT NULL, - SEQUENCE SHORT_SEQUENCE NOT NULL, - CHARGE INTEGER_NUMBER NOT NULL, - CONSTRAINT PK_PEPTIDES PRIMARY KEY (ID) -); - -CREATE INDEX IX_FK_PEPTIDES_PROTEINS ON PEPTIDES (PROT_ID); - -/* ---------------------------------------------------------------------- */ -/* Add table "PROTEINS" */ -/* ---------------------------------------------------------------------- */ - -CREATE TABLE PROTEINS ( - ID BIGSERIAL NOT NULL, - DASE_ID TECH_ID NOT NULL, - PROBABILITY REAL_NUMBER NOT NULL, - CONSTRAINT PK_PROTEINS PRIMARY KEY (ID) -); - -CREATE INDEX IDX_PROTEINS_1 ON PROTEINS (DASE_ID); - -/* ---------------------------------------------------------------------- */ -/* Add table "SAMPLES" */ -/* ---------------------------------------------------------------------- */ - -CREATE TABLE SAMPLES ( - ID BIGSERIAL NOT NULL, - PERM_ID CODE NOT NULL, - EXPE_ID TECH_ID NOT NULL, - CONSTRAINT PK_SAMPLES PRIMARY KEY (ID), - CONSTRAINT TUC_SAMPLES_1 UNIQUE (PERM_ID) -); - -/* ---------------------------------------------------------------------- */ -/* Add table "SEQUENCES" */ -/* ---------------------------------------------------------------------- */ - -CREATE TABLE SEQUENCES ( - ID BIGSERIAL NOT NULL, - DB_ID TECH_ID NOT NULL, - PRRE_ID TECH_ID NOT NULL, - AMINO_ACID_SEQUENCE LONG_SEQUENCE NOT NULL, - CHECKSUM CHECKSUM NOT NULL, - CONSTRAINT PK_SEQUENCES PRIMARY KEY (ID) -); - -/* ---------------------------------------------------------------------- */ -/* Add table "IDENTIFIED_PROTEINS" */ -/* ---------------------------------------------------------------------- */ - -CREATE TABLE IDENTIFIED_PROTEINS ( - ID BIGSERIAL NOT NULL, - PROT_ID TECH_ID NOT NULL, - SEQU_ID TECH_ID NOT NULL, - CONSTRAINT PK_IDENTIFIED_PROTEINS PRIMARY KEY (ID) -); - -/* ---------------------------------------------------------------------- */ -/* Add table "ABUNDANCES" */ -/* ---------------------------------------------------------------------- */ - -CREATE TABLE ABUNDANCES ( - ID BIGSERIAL NOT NULL, - PROT_ID TECH_ID NOT NULL, - SAMP_ID TECH_ID NOT NULL, - VALUE REAL_NUMBER NOT NULL, - CONSTRAINT PK_ABUNDANCES PRIMARY KEY (ID) -); - -/* ---------------------------------------------------------------------- */ -/* Add table "PROBABILITY_FDR_MAPPINGS" */ -/* ---------------------------------------------------------------------- */ - -CREATE TABLE PROBABILITY_FDR_MAPPINGS ( - ID BIGSERIAL NOT NULL, - DASE_ID TECH_ID NOT NULL, - PROBABILITY REAL_NUMBER NOT NULL, - FALSE_DISCOVERY_RATE REAL_NUMBER NOT NULL, - CONSTRAINT PK_PROBABILITY_FDR_MAPPINGS PRIMARY KEY (ID) -); - -/* ---------------------------------------------------------------------- */ -/* Add table "PROTEIN_REFERENCES" */ -/* ---------------------------------------------------------------------- */ - -CREATE TABLE PROTEIN_REFERENCES ( - ID BIGSERIAL NOT NULL, - ACCESSION_NUMBER ACCESSION_NUMBER NOT NULL, - DESCRIPTION DESCRIPTION, - CONSTRAINT PK_PROTEIN_REFERENCES PRIMARY KEY (ID), - CONSTRAINT TUC_PROTEIN_REFERENCES_1 UNIQUE (ACCESSION_NUMBER) -); - -CREATE INDEX IDX_PROTEIN_REFERENCES_1 ON PROTEIN_REFERENCES (ACCESSION_NUMBER); - -/* ---------------------------------------------------------------------- */ -/* Add table "DATABASES" */ -/* ---------------------------------------------------------------------- */ - -CREATE TABLE DATABASES ( - ID BIGSERIAL NOT NULL, - NAME_AND_VERSION SHORT_DESCRIPTION NOT NULL, - CONSTRAINT PK_DATABASES PRIMARY KEY (ID), - CONSTRAINT TUC_DATABASES_1 UNIQUE (NAME_AND_VERSION) -); - -/* ---------------------------------------------------------------------- */ -/* Add table "MODIFIED_PEPTIDES" */ -/* ---------------------------------------------------------------------- */ - -CREATE TABLE MODIFIED_PEPTIDES ( - ID BIGSERIAL NOT NULL, - PEPT_ID TECH_ID NOT NULL, - NTERM_MASS REAL_NUMBER NOT NULL, - CTERM_MASS REAL_NUMBER NOT NULL, - CONSTRAINT PK_MODIFIED_PEPTIDES PRIMARY KEY (ID) -); - -/* ---------------------------------------------------------------------- */ -/* Add table "SPECTRUM_REFERENCES" */ -/* ---------------------------------------------------------------------- */ - -CREATE TABLE SPECTRUM_REFERENCES ( - ID BIGSERIAL NOT NULL, - PEPT_ID TECH_ID NOT NULL, - REFERENCE SPECTRUM_REFERENCE NOT NULL, - CONSTRAINT PK_SPECTRUM_REFERENCES PRIMARY KEY (ID) -); - -/* ---------------------------------------------------------------------- */ -/* Add table "MODIFICATION_FRACTIONS" */ -/* ---------------------------------------------------------------------- */ - -CREATE TABLE MODIFICATION_FRACTIONS ( - ID BIGSERIAL NOT NULL, - MODI_ID TECH_ID NOT NULL, - SAMP_ID TECH_ID, - FRACTION REAL_NUMBER NOT NULL, - CONSTRAINT PK_MODIFICATION_FRACTIONS PRIMARY KEY (ID) -); - -/* ---------------------------------------------------------------------- */ -/* Foreign key constraints */ -/* ---------------------------------------------------------------------- */ - -ALTER TABLE DATA_SETS ADD CONSTRAINT DA_EX_FK - FOREIGN KEY (EXPE_ID) REFERENCES EXPERIMENTS (ID); - -ALTER TABLE DATA_SETS ADD CONSTRAINT DA_SA_FK - FOREIGN KEY (SAMP_ID) REFERENCES SAMPLES (ID); - -ALTER TABLE DATA_SETS ADD CONSTRAINT DATABASES_DATA_SETS - FOREIGN KEY (DB_ID) REFERENCES DATABASES (ID); - -ALTER TABLE MODIFICATIONS ADD CONSTRAINT MODIFIED_PEPTIDES_MODIFICATIONS - FOREIGN KEY (MOPE_ID) REFERENCES MODIFIED_PEPTIDES (ID); - -ALTER TABLE PEPTIDES ADD CONSTRAINT PE_PR_FK - FOREIGN KEY (PROT_ID) REFERENCES PROTEINS (ID); - -ALTER TABLE PROTEINS ADD CONSTRAINT DATA_SETS_PROTEINS - FOREIGN KEY (DASE_ID) REFERENCES DATA_SETS (ID); - -ALTER TABLE SEQUENCES ADD CONSTRAINT DATABASES_SEQUENCES - FOREIGN KEY (DB_ID) REFERENCES DATABASES (ID); - -ALTER TABLE SEQUENCES ADD CONSTRAINT PROTEIN_REFERENCES_SEQUENCES - FOREIGN KEY (PRRE_ID) REFERENCES PROTEIN_REFERENCES (ID); - -ALTER TABLE IDENTIFIED_PROTEINS ADD CONSTRAINT PROTEINS_IDENTIFIED_PROTEINS - FOREIGN KEY (PROT_ID) REFERENCES PROTEINS (ID); - -ALTER TABLE IDENTIFIED_PROTEINS ADD CONSTRAINT SEQUENCES_IDENTIFIED_PROTEINS - FOREIGN KEY (SEQU_ID) REFERENCES SEQUENCES (ID); - -ALTER TABLE ABUNDANCES ADD CONSTRAINT SAMPLES_ABUNDANCES - FOREIGN KEY (SAMP_ID) REFERENCES SAMPLES (ID); - -ALTER TABLE ABUNDANCES ADD CONSTRAINT PROTEINS_ABUNDANCES - FOREIGN KEY (PROT_ID) REFERENCES PROTEINS (ID); - -ALTER TABLE PROBABILITY_FDR_MAPPINGS ADD CONSTRAINT DATA_SETS_PROBABILITY_FDR_MAPPINGS - FOREIGN KEY (DASE_ID) REFERENCES DATA_SETS (ID); - -ALTER TABLE MODIFIED_PEPTIDES ADD CONSTRAINT PEPTIDES_MODIFIED_PEPTIDES - FOREIGN KEY (PEPT_ID) REFERENCES PEPTIDES (ID); - -ALTER TABLE SPECTRUM_REFERENCES ADD CONSTRAINT PEPTIDES_SPECTRUM_REFERENCES - FOREIGN KEY (PEPT_ID) REFERENCES PEPTIDES (ID); - -ALTER TABLE MODIFICATION_FRACTIONS ADD CONSTRAINT MODIFICATIONS_MODIFICATION_FRACTIONS - FOREIGN KEY (MODI_ID) REFERENCES MODIFICATIONS (ID); - -ALTER TABLE MODIFICATION_FRACTIONS ADD CONSTRAINT SAMPLES_MODIFICATION_FRACTIONS - FOREIGN KEY (SAMP_ID) REFERENCES SAMPLES (ID); diff --git a/rtd_phosphonetx/source/sql/proteomics/postgresql/002/schema-002.png b/rtd_phosphonetx/source/sql/proteomics/postgresql/002/schema-002.png deleted file mode 100755 index 69f33d205fd55433318b8e294148b3eb20267d5d..0000000000000000000000000000000000000000 Binary files a/rtd_phosphonetx/source/sql/proteomics/postgresql/002/schema-002.png and /dev/null differ diff --git a/rtd_phosphonetx/source/sql/proteomics/postgresql/002/schema-002.sql b/rtd_phosphonetx/source/sql/proteomics/postgresql/002/schema-002.sql deleted file mode 100755 index 4d4128aa57edc9996323abd3542d5de110d9395c..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/sql/proteomics/postgresql/002/schema-002.sql +++ /dev/null @@ -1,292 +0,0 @@ -/* ---------------------------------------------------------------------- */ -/* Script generated with: DeZign for Databases v5.2.3 */ -/* Target DBMS: PostgreSQL 8 */ -/* Project file: schema.dez */ -/* Project name: */ -/* Author: */ -/* Script type: Database creation script */ -/* Created on: 2009-12-07 11:03 */ -/* Model version: Version 2009-12-07 */ -/* ---------------------------------------------------------------------- */ - - -/* ---------------------------------------------------------------------- */ -/* Domains */ -/* ---------------------------------------------------------------------- */ - -CREATE DOMAIN CHECKSUM AS CHARACTER VARYING(8); - -CREATE DOMAIN CODE AS CHARACTER VARYING(40); - -CREATE DOMAIN DESCRIPTION AS CHARACTER VARYING(2000); - -CREATE DOMAIN INTEGER_NUMBER AS INTEGER; - -CREATE DOMAIN REAL_NUMBER AS DOUBLE PRECISION; - -CREATE DOMAIN LONG_SEQUENCE AS TEXT; - -CREATE DOMAIN SHORT_DESCRIPTION AS CHARACTER VARYING(200); - -CREATE DOMAIN TECH_ID AS BIGINT; - -CREATE DOMAIN SHORT_SEQUENCE AS CHARACTER VARYING(1000); - -CREATE DOMAIN ACCESSION_NUMBER AS CHARACTER VARYING(256); - -CREATE DOMAIN SPECTRUM_REFERENCE AS CHARACTER VARYING(100); - -/* ---------------------------------------------------------------------- */ -/* Tables */ -/* ---------------------------------------------------------------------- */ - -/* ---------------------------------------------------------------------- */ -/* Add table "EXPERIMENTS" */ -/* ---------------------------------------------------------------------- */ - -CREATE TABLE EXPERIMENTS ( - ID BIGSERIAL NOT NULL, - PERM_ID CODE NOT NULL, - CONSTRAINT PK_EXPERIMENTS PRIMARY KEY (ID), - CONSTRAINT TUC_EXPERIMENTS_1 UNIQUE (PERM_ID) -); - -/* ---------------------------------------------------------------------- */ -/* Add table "DATA_SETS" */ -/* ---------------------------------------------------------------------- */ - -CREATE TABLE DATA_SETS ( - ID BIGSERIAL NOT NULL, - EXPE_ID TECH_ID NOT NULL, - SAMP_ID TECH_ID, - DB_ID TECH_ID NOT NULL, - PERM_ID CODE NOT NULL, - CONSTRAINT PK_DATA_SETS PRIMARY KEY (ID), - CONSTRAINT TUC_DATA_SETS_1 UNIQUE (PERM_ID) -); - -CREATE INDEX IX_FK_DATA_SETS_EXPERIMENTS ON DATA_SETS (EXPE_ID); - -CREATE INDEX IX_FK_DATA_SETS_SAMPLES ON DATA_SETS (SAMP_ID); - -/* ---------------------------------------------------------------------- */ -/* Add table "MODIFICATIONS" */ -/* ---------------------------------------------------------------------- */ - -CREATE TABLE MODIFICATIONS ( - ID BIGSERIAL NOT NULL, - MOPE_ID TECH_ID NOT NULL, - POS INTEGER_NUMBER NOT NULL, - MASS REAL_NUMBER NOT NULL, - CONSTRAINT PK_MODIFICATIONS PRIMARY KEY (ID) -); - -/* ---------------------------------------------------------------------- */ -/* Add table "PEPTIDES" */ -/* ---------------------------------------------------------------------- */ - -CREATE TABLE PEPTIDES ( - ID BIGSERIAL NOT NULL, - PROT_ID TECH_ID NOT NULL, - SEQUENCE SHORT_SEQUENCE NOT NULL, - CHARGE INTEGER_NUMBER NOT NULL, - CONSTRAINT PK_PEPTIDES PRIMARY KEY (ID) -); - -CREATE INDEX IX_FK_PEPTIDES_PROTEINS ON PEPTIDES (PROT_ID); - -/* ---------------------------------------------------------------------- */ -/* Add table "PROTEINS" */ -/* ---------------------------------------------------------------------- */ - -CREATE TABLE PROTEINS ( - ID BIGSERIAL NOT NULL, - DASE_ID TECH_ID NOT NULL, - PROBABILITY REAL_NUMBER NOT NULL, - CONSTRAINT PK_PROTEINS PRIMARY KEY (ID) -); - -CREATE INDEX IDX_PROTEINS_1 ON PROTEINS (DASE_ID); - -/* ---------------------------------------------------------------------- */ -/* Add table "SAMPLES" */ -/* ---------------------------------------------------------------------- */ - -CREATE TABLE SAMPLES ( - ID BIGSERIAL NOT NULL, - PERM_ID CODE NOT NULL, - EXPE_ID TECH_ID NOT NULL, - CONSTRAINT PK_SAMPLES PRIMARY KEY (ID), - CONSTRAINT TUC_SAMPLES_1 UNIQUE (PERM_ID) -); - -/* ---------------------------------------------------------------------- */ -/* Add table "SEQUENCES" */ -/* ---------------------------------------------------------------------- */ - -CREATE TABLE SEQUENCES ( - ID BIGSERIAL NOT NULL, - DB_ID TECH_ID NOT NULL, - PRRE_ID TECH_ID NOT NULL, - AMINO_ACID_SEQUENCE LONG_SEQUENCE NOT NULL, - CHECKSUM CHECKSUM NOT NULL, - CONSTRAINT PK_SEQUENCES PRIMARY KEY (ID) -); - -/* ---------------------------------------------------------------------- */ -/* Add table "IDENTIFIED_PROTEINS" */ -/* ---------------------------------------------------------------------- */ - -CREATE TABLE IDENTIFIED_PROTEINS ( - ID BIGSERIAL NOT NULL, - PROT_ID TECH_ID NOT NULL, - SEQU_ID TECH_ID NOT NULL, - CONSTRAINT PK_IDENTIFIED_PROTEINS PRIMARY KEY (ID) -); - -/* ---------------------------------------------------------------------- */ -/* Add table "ABUNDANCES" */ -/* ---------------------------------------------------------------------- */ - -CREATE TABLE ABUNDANCES ( - ID BIGSERIAL NOT NULL, - PROT_ID TECH_ID NOT NULL, - SAMP_ID TECH_ID NOT NULL, - VALUE REAL_NUMBER NOT NULL, - CONSTRAINT PK_ABUNDANCES PRIMARY KEY (ID) -); - -/* ---------------------------------------------------------------------- */ -/* Add table "PROBABILITY_FDR_MAPPINGS" */ -/* ---------------------------------------------------------------------- */ - -CREATE TABLE PROBABILITY_FDR_MAPPINGS ( - ID BIGSERIAL NOT NULL, - DASE_ID TECH_ID NOT NULL, - PROBABILITY REAL_NUMBER NOT NULL, - FALSE_DISCOVERY_RATE REAL_NUMBER NOT NULL, - CONSTRAINT PK_PROBABILITY_FDR_MAPPINGS PRIMARY KEY (ID) -); - -/* ---------------------------------------------------------------------- */ -/* Add table "PROTEIN_REFERENCES" */ -/* ---------------------------------------------------------------------- */ - -CREATE TABLE PROTEIN_REFERENCES ( - ID BIGSERIAL NOT NULL, - ACCESSION_NUMBER ACCESSION_NUMBER NOT NULL, - DESCRIPTION DESCRIPTION, - CONSTRAINT PK_PROTEIN_REFERENCES PRIMARY KEY (ID), - CONSTRAINT TUC_PROTEIN_REFERENCES_1 UNIQUE (ACCESSION_NUMBER) -); - -CREATE INDEX IDX_PROTEIN_REFERENCES_1 ON PROTEIN_REFERENCES (ACCESSION_NUMBER); - -/* ---------------------------------------------------------------------- */ -/* Add table "DATABASES" */ -/* ---------------------------------------------------------------------- */ - -CREATE TABLE DATABASES ( - ID BIGSERIAL NOT NULL, - NAME_AND_VERSION SHORT_DESCRIPTION NOT NULL, - CONSTRAINT PK_DATABASES PRIMARY KEY (ID), - CONSTRAINT TUC_DATABASES_1 UNIQUE (NAME_AND_VERSION) -); - -/* ---------------------------------------------------------------------- */ -/* Add table "MODIFIED_PEPTIDES" */ -/* ---------------------------------------------------------------------- */ - -CREATE TABLE MODIFIED_PEPTIDES ( - ID BIGSERIAL NOT NULL, - PEPT_ID TECH_ID NOT NULL, - NTERM_MASS REAL_NUMBER NOT NULL, - CTERM_MASS REAL_NUMBER NOT NULL, - CONSTRAINT PK_MODIFIED_PEPTIDES PRIMARY KEY (ID) -); - -/* ---------------------------------------------------------------------- */ -/* Add table "SPECTRUM_REFERENCES" */ -/* ---------------------------------------------------------------------- */ - -CREATE TABLE SPECTRUM_REFERENCES ( - ID BIGSERIAL NOT NULL, - PEPT_ID TECH_ID NOT NULL, - REFERENCE SPECTRUM_REFERENCE NOT NULL, - CONSTRAINT PK_SPECTRUM_REFERENCES PRIMARY KEY (ID) -); - -/* ---------------------------------------------------------------------- */ -/* Add table "MODIFICATION_FRACTIONS" */ -/* ---------------------------------------------------------------------- */ - -CREATE TABLE MODIFICATION_FRACTIONS ( - ID BIGSERIAL NOT NULL, - MODI_ID TECH_ID NOT NULL, - SAMP_ID TECH_ID, - FRACTION REAL_NUMBER NOT NULL, - CONSTRAINT PK_MODIFICATION_FRACTIONS PRIMARY KEY (ID) -); - -/* ---------------------------------------------------------------------- */ -/* Add table "EVENTS" */ -/* ---------------------------------------------------------------------- */ - -CREATE TABLE EVENTS ( - LAST_SEEN_DELETION_EVENT_ID TECH_ID NOT NULL -); - -/* ---------------------------------------------------------------------- */ -/* Foreign key constraints */ -/* ---------------------------------------------------------------------- */ - -ALTER TABLE DATA_SETS ADD CONSTRAINT DA_EX_FK - FOREIGN KEY (EXPE_ID) REFERENCES EXPERIMENTS (ID); - -ALTER TABLE DATA_SETS ADD CONSTRAINT DA_SA_FK - FOREIGN KEY (SAMP_ID) REFERENCES SAMPLES (ID); - -ALTER TABLE DATA_SETS ADD CONSTRAINT DATABASES_DATA_SETS - FOREIGN KEY (DB_ID) REFERENCES DATABASES (ID); - -ALTER TABLE MODIFICATIONS ADD CONSTRAINT MODIFIED_PEPTIDES_MODIFICATIONS - FOREIGN KEY (MOPE_ID) REFERENCES MODIFIED_PEPTIDES (ID) ON DELETE CASCADE; - -ALTER TABLE PEPTIDES ADD CONSTRAINT PE_PR_FK - FOREIGN KEY (PROT_ID) REFERENCES PROTEINS (ID) ON DELETE CASCADE; - -ALTER TABLE PROTEINS ADD CONSTRAINT DATA_SETS_PROTEINS - FOREIGN KEY (DASE_ID) REFERENCES DATA_SETS (ID) ON DELETE CASCADE; - -ALTER TABLE SEQUENCES ADD CONSTRAINT DATABASES_SEQUENCES - FOREIGN KEY (DB_ID) REFERENCES DATABASES (ID); - -ALTER TABLE SEQUENCES ADD CONSTRAINT PROTEIN_REFERENCES_SEQUENCES - FOREIGN KEY (PRRE_ID) REFERENCES PROTEIN_REFERENCES (ID); - -ALTER TABLE IDENTIFIED_PROTEINS ADD CONSTRAINT PROTEINS_IDENTIFIED_PROTEINS - FOREIGN KEY (PROT_ID) REFERENCES PROTEINS (ID) ON DELETE CASCADE; - -ALTER TABLE IDENTIFIED_PROTEINS ADD CONSTRAINT SEQUENCES_IDENTIFIED_PROTEINS - FOREIGN KEY (SEQU_ID) REFERENCES SEQUENCES (ID); - -ALTER TABLE ABUNDANCES ADD CONSTRAINT SAMPLES_ABUNDANCES - FOREIGN KEY (SAMP_ID) REFERENCES SAMPLES (ID); - -ALTER TABLE ABUNDANCES ADD CONSTRAINT PROTEINS_ABUNDANCES - FOREIGN KEY (PROT_ID) REFERENCES PROTEINS (ID) ON DELETE CASCADE; - -ALTER TABLE PROBABILITY_FDR_MAPPINGS ADD CONSTRAINT DATA_SETS_PROBABILITY_FDR_MAPPINGS - FOREIGN KEY (DASE_ID) REFERENCES DATA_SETS (ID) ON DELETE CASCADE; - -ALTER TABLE MODIFIED_PEPTIDES ADD CONSTRAINT PEPTIDES_MODIFIED_PEPTIDES - FOREIGN KEY (PEPT_ID) REFERENCES PEPTIDES (ID) ON DELETE CASCADE; - -ALTER TABLE SPECTRUM_REFERENCES ADD CONSTRAINT PEPTIDES_SPECTRUM_REFERENCES - FOREIGN KEY (PEPT_ID) REFERENCES PEPTIDES (ID) ON DELETE CASCADE; - -ALTER TABLE MODIFICATION_FRACTIONS ADD CONSTRAINT MODIFICATIONS_MODIFICATION_FRACTIONS - FOREIGN KEY (MODI_ID) REFERENCES MODIFICATIONS (ID) ON DELETE CASCADE; - -ALTER TABLE MODIFICATION_FRACTIONS ADD CONSTRAINT SAMPLES_MODIFICATION_FRACTIONS - FOREIGN KEY (SAMP_ID) REFERENCES SAMPLES (ID); diff --git a/rtd_phosphonetx/source/sql/proteomics/postgresql/003/grant-003.sql b/rtd_phosphonetx/source/sql/proteomics/postgresql/003/grant-003.sql deleted file mode 100644 index 2e85f4fb1f6fcbb7f072005f9d1ab5ad9e1fe713..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/sql/proteomics/postgresql/003/grant-003.sql +++ /dev/null @@ -1,18 +0,0 @@ --- Granting SELECT privilege to group PHOSPHONETX_READONLY - -GRANT SELECT ON TABLE EXPERIMENTS TO GROUP PHOSPHONETX_READONLY; -GRANT SELECT ON TABLE DATA_SETS TO GROUP PHOSPHONETX_READONLY; -GRANT SELECT ON TABLE MODIFICATIONS TO GROUP PHOSPHONETX_READONLY; -GRANT SELECT ON TABLE PEPTIDES TO GROUP PHOSPHONETX_READONLY; -GRANT SELECT ON TABLE PROTEINS TO GROUP PHOSPHONETX_READONLY; -GRANT SELECT ON TABLE SAMPLES TO GROUP PHOSPHONETX_READONLY; -GRANT SELECT ON TABLE SEQUENCES TO GROUP PHOSPHONETX_READONLY; -GRANT SELECT ON TABLE IDENTIFIED_PROTEINS TO GROUP PHOSPHONETX_READONLY; -GRANT SELECT ON TABLE ABUNDANCES TO GROUP PHOSPHONETX_READONLY; -GRANT SELECT ON TABLE PROBABILITY_FDR_MAPPINGS TO GROUP PHOSPHONETX_READONLY; -GRANT SELECT ON TABLE PROTEIN_REFERENCES TO GROUP PHOSPHONETX_READONLY; -GRANT SELECT ON TABLE DATABASES TO GROUP PHOSPHONETX_READONLY; -GRANT SELECT ON TABLE MODIFIED_PEPTIDES TO GROUP PHOSPHONETX_READONLY; -GRANT SELECT ON TABLE SPECTRUM_REFERENCES TO GROUP PHOSPHONETX_READONLY; -GRANT SELECT ON TABLE MODIFICATION_FRACTIONS TO GROUP PHOSPHONETX_READONLY; -GRANT SELECT ON TABLE EVENTS TO GROUP PHOSPHONETX_READONLY; diff --git a/rtd_phosphonetx/source/sql/proteomics/postgresql/003/schema-003.png b/rtd_phosphonetx/source/sql/proteomics/postgresql/003/schema-003.png deleted file mode 100755 index da8cae484122317fee9b24a68fa70670bec52989..0000000000000000000000000000000000000000 Binary files a/rtd_phosphonetx/source/sql/proteomics/postgresql/003/schema-003.png and /dev/null differ diff --git a/rtd_phosphonetx/source/sql/proteomics/postgresql/003/schema-003.sql b/rtd_phosphonetx/source/sql/proteomics/postgresql/003/schema-003.sql deleted file mode 100755 index 4dd90b2711ca06f202543708fd0d7e3caef40f6c..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/sql/proteomics/postgresql/003/schema-003.sql +++ /dev/null @@ -1,293 +0,0 @@ -/* ---------------------------------------------------------------------- */ -/* Script generated with: DeZign for Databases v5.2.3 */ -/* Target DBMS: PostgreSQL 8 */ -/* Project file: schema.dez */ -/* Project name: */ -/* Author: */ -/* Script type: Database creation script */ -/* Created on: 2010-03-31 16:10 */ -/* Model version: Version 2010-03-31 */ -/* ---------------------------------------------------------------------- */ - - -/* ---------------------------------------------------------------------- */ -/* Domains */ -/* ---------------------------------------------------------------------- */ - -CREATE DOMAIN CHECKSUM AS CHARACTER VARYING(8); - -CREATE DOMAIN CODE AS CHARACTER VARYING(40); - -CREATE DOMAIN DESCRIPTION AS CHARACTER VARYING(2000); - -CREATE DOMAIN INTEGER_NUMBER AS INTEGER; - -CREATE DOMAIN REAL_NUMBER AS DOUBLE PRECISION; - -CREATE DOMAIN LONG_SEQUENCE AS TEXT; - -CREATE DOMAIN SHORT_DESCRIPTION AS CHARACTER VARYING(200); - -CREATE DOMAIN TECH_ID AS BIGINT; - -CREATE DOMAIN SHORT_SEQUENCE AS CHARACTER VARYING(1000); - -CREATE DOMAIN ACCESSION_NUMBER AS CHARACTER VARYING(256); - -CREATE DOMAIN SPECTRUM_REFERENCE AS CHARACTER VARYING(100); - -/* ---------------------------------------------------------------------- */ -/* Tables */ -/* ---------------------------------------------------------------------- */ - -/* ---------------------------------------------------------------------- */ -/* Add table "EXPERIMENTS" */ -/* ---------------------------------------------------------------------- */ - -CREATE TABLE EXPERIMENTS ( - ID BIGSERIAL NOT NULL, - PERM_ID CODE NOT NULL, - CONSTRAINT PK_EXPERIMENTS PRIMARY KEY (ID), - CONSTRAINT TUC_EXPERIMENTS_1 UNIQUE (PERM_ID) -); - -/* ---------------------------------------------------------------------- */ -/* Add table "DATA_SETS" */ -/* ---------------------------------------------------------------------- */ - -CREATE TABLE DATA_SETS ( - ID BIGSERIAL NOT NULL, - EXPE_ID TECH_ID NOT NULL, - SAMP_ID TECH_ID, - DB_ID TECH_ID NOT NULL, - PERM_ID CODE NOT NULL, - CONSTRAINT PK_DATA_SETS PRIMARY KEY (ID), - CONSTRAINT TUC_DATA_SETS_1 UNIQUE (PERM_ID) -); - -CREATE INDEX IX_FK_DATA_SETS_EXPERIMENTS ON DATA_SETS (EXPE_ID); - -CREATE INDEX IX_FK_DATA_SETS_SAMPLES ON DATA_SETS (SAMP_ID); - -/* ---------------------------------------------------------------------- */ -/* Add table "MODIFICATIONS" */ -/* ---------------------------------------------------------------------- */ - -CREATE TABLE MODIFICATIONS ( - ID BIGSERIAL NOT NULL, - MOPE_ID TECH_ID NOT NULL, - POS INTEGER_NUMBER NOT NULL, - MASS REAL_NUMBER NOT NULL, - CONSTRAINT PK_MODIFICATIONS PRIMARY KEY (ID) -); - -/* ---------------------------------------------------------------------- */ -/* Add table "PEPTIDES" */ -/* ---------------------------------------------------------------------- */ - -CREATE TABLE PEPTIDES ( - ID BIGSERIAL NOT NULL, - PROT_ID TECH_ID NOT NULL, - SEQUENCE SHORT_SEQUENCE NOT NULL, - CHARGE INTEGER_NUMBER NOT NULL, - CONSTRAINT PK_PEPTIDES PRIMARY KEY (ID) -); - -CREATE INDEX IX_FK_PEPTIDES_PROTEINS ON PEPTIDES (PROT_ID); - -/* ---------------------------------------------------------------------- */ -/* Add table "PROTEINS" */ -/* ---------------------------------------------------------------------- */ - -CREATE TABLE PROTEINS ( - ID BIGSERIAL NOT NULL, - DASE_ID TECH_ID NOT NULL, - PROBABILITY REAL_NUMBER NOT NULL, - CONSTRAINT PK_PROTEINS PRIMARY KEY (ID) -); - -CREATE INDEX IDX_PROTEINS_1 ON PROTEINS (DASE_ID); - -/* ---------------------------------------------------------------------- */ -/* Add table "SAMPLES" */ -/* ---------------------------------------------------------------------- */ - -CREATE TABLE SAMPLES ( - ID BIGSERIAL NOT NULL, - PERM_ID CODE NOT NULL, - EXPE_ID TECH_ID NOT NULL, - CONSTRAINT PK_SAMPLES PRIMARY KEY (ID), - CONSTRAINT TUC_SAMPLES_1 UNIQUE (PERM_ID) -); - -/* ---------------------------------------------------------------------- */ -/* Add table "SEQUENCES" */ -/* ---------------------------------------------------------------------- */ - -CREATE TABLE SEQUENCES ( - ID BIGSERIAL NOT NULL, - DB_ID TECH_ID NOT NULL, - PRRE_ID TECH_ID NOT NULL, - AMINO_ACID_SEQUENCE LONG_SEQUENCE NOT NULL, - CHECKSUM CHECKSUM NOT NULL, - CONSTRAINT PK_SEQUENCES PRIMARY KEY (ID) -); - -/* ---------------------------------------------------------------------- */ -/* Add table "IDENTIFIED_PROTEINS" */ -/* ---------------------------------------------------------------------- */ - -CREATE TABLE IDENTIFIED_PROTEINS ( - ID BIGSERIAL NOT NULL, - PROT_ID TECH_ID NOT NULL, - SEQU_ID TECH_ID NOT NULL, - COVERAGE REAL_NUMBER, - CONSTRAINT PK_IDENTIFIED_PROTEINS PRIMARY KEY (ID) -); - -/* ---------------------------------------------------------------------- */ -/* Add table "ABUNDANCES" */ -/* ---------------------------------------------------------------------- */ - -CREATE TABLE ABUNDANCES ( - ID BIGSERIAL NOT NULL, - PROT_ID TECH_ID NOT NULL, - SAMP_ID TECH_ID NOT NULL, - VALUE REAL_NUMBER NOT NULL, - CONSTRAINT PK_ABUNDANCES PRIMARY KEY (ID) -); - -/* ---------------------------------------------------------------------- */ -/* Add table "PROBABILITY_FDR_MAPPINGS" */ -/* ---------------------------------------------------------------------- */ - -CREATE TABLE PROBABILITY_FDR_MAPPINGS ( - ID BIGSERIAL NOT NULL, - DASE_ID TECH_ID NOT NULL, - PROBABILITY REAL_NUMBER NOT NULL, - FALSE_DISCOVERY_RATE REAL_NUMBER NOT NULL, - CONSTRAINT PK_PROBABILITY_FDR_MAPPINGS PRIMARY KEY (ID) -); - -/* ---------------------------------------------------------------------- */ -/* Add table "PROTEIN_REFERENCES" */ -/* ---------------------------------------------------------------------- */ - -CREATE TABLE PROTEIN_REFERENCES ( - ID BIGSERIAL NOT NULL, - ACCESSION_NUMBER ACCESSION_NUMBER NOT NULL, - DESCRIPTION DESCRIPTION, - CONSTRAINT PK_PROTEIN_REFERENCES PRIMARY KEY (ID), - CONSTRAINT TUC_PROTEIN_REFERENCES_1 UNIQUE (ACCESSION_NUMBER) -); - -CREATE INDEX IDX_PROTEIN_REFERENCES_1 ON PROTEIN_REFERENCES (ACCESSION_NUMBER); - -/* ---------------------------------------------------------------------- */ -/* Add table "DATABASES" */ -/* ---------------------------------------------------------------------- */ - -CREATE TABLE DATABASES ( - ID BIGSERIAL NOT NULL, - NAME_AND_VERSION SHORT_DESCRIPTION NOT NULL, - CONSTRAINT PK_DATABASES PRIMARY KEY (ID), - CONSTRAINT TUC_DATABASES_1 UNIQUE (NAME_AND_VERSION) -); - -/* ---------------------------------------------------------------------- */ -/* Add table "MODIFIED_PEPTIDES" */ -/* ---------------------------------------------------------------------- */ - -CREATE TABLE MODIFIED_PEPTIDES ( - ID BIGSERIAL NOT NULL, - PEPT_ID TECH_ID NOT NULL, - NTERM_MASS REAL_NUMBER NOT NULL, - CTERM_MASS REAL_NUMBER NOT NULL, - CONSTRAINT PK_MODIFIED_PEPTIDES PRIMARY KEY (ID) -); - -/* ---------------------------------------------------------------------- */ -/* Add table "SPECTRUM_REFERENCES" */ -/* ---------------------------------------------------------------------- */ - -CREATE TABLE SPECTRUM_REFERENCES ( - ID BIGSERIAL NOT NULL, - PEPT_ID TECH_ID NOT NULL, - REFERENCE SPECTRUM_REFERENCE NOT NULL, - CONSTRAINT PK_SPECTRUM_REFERENCES PRIMARY KEY (ID) -); - -/* ---------------------------------------------------------------------- */ -/* Add table "MODIFICATION_FRACTIONS" */ -/* ---------------------------------------------------------------------- */ - -CREATE TABLE MODIFICATION_FRACTIONS ( - ID BIGSERIAL NOT NULL, - MODI_ID TECH_ID NOT NULL, - SAMP_ID TECH_ID, - FRACTION REAL_NUMBER NOT NULL, - CONSTRAINT PK_MODIFICATION_FRACTIONS PRIMARY KEY (ID) -); - -/* ---------------------------------------------------------------------- */ -/* Add table "EVENTS" */ -/* ---------------------------------------------------------------------- */ - -CREATE TABLE EVENTS ( - LAST_SEEN_DELETION_EVENT_ID TECH_ID NOT NULL -); - -/* ---------------------------------------------------------------------- */ -/* Foreign key constraints */ -/* ---------------------------------------------------------------------- */ - -ALTER TABLE DATA_SETS ADD CONSTRAINT DA_EX_FK - FOREIGN KEY (EXPE_ID) REFERENCES EXPERIMENTS (ID); - -ALTER TABLE DATA_SETS ADD CONSTRAINT DA_SA_FK - FOREIGN KEY (SAMP_ID) REFERENCES SAMPLES (ID); - -ALTER TABLE DATA_SETS ADD CONSTRAINT DATABASES_DATA_SETS - FOREIGN KEY (DB_ID) REFERENCES DATABASES (ID); - -ALTER TABLE MODIFICATIONS ADD CONSTRAINT MODIFIED_PEPTIDES_MODIFICATIONS - FOREIGN KEY (MOPE_ID) REFERENCES MODIFIED_PEPTIDES (ID) ON DELETE CASCADE; - -ALTER TABLE PEPTIDES ADD CONSTRAINT PE_PR_FK - FOREIGN KEY (PROT_ID) REFERENCES PROTEINS (ID) ON DELETE CASCADE; - -ALTER TABLE PROTEINS ADD CONSTRAINT DATA_SETS_PROTEINS - FOREIGN KEY (DASE_ID) REFERENCES DATA_SETS (ID) ON DELETE CASCADE; - -ALTER TABLE SEQUENCES ADD CONSTRAINT DATABASES_SEQUENCES - FOREIGN KEY (DB_ID) REFERENCES DATABASES (ID); - -ALTER TABLE SEQUENCES ADD CONSTRAINT PROTEIN_REFERENCES_SEQUENCES - FOREIGN KEY (PRRE_ID) REFERENCES PROTEIN_REFERENCES (ID); - -ALTER TABLE IDENTIFIED_PROTEINS ADD CONSTRAINT PROTEINS_IDENTIFIED_PROTEINS - FOREIGN KEY (PROT_ID) REFERENCES PROTEINS (ID) ON DELETE CASCADE; - -ALTER TABLE IDENTIFIED_PROTEINS ADD CONSTRAINT SEQUENCES_IDENTIFIED_PROTEINS - FOREIGN KEY (SEQU_ID) REFERENCES SEQUENCES (ID); - -ALTER TABLE ABUNDANCES ADD CONSTRAINT SAMPLES_ABUNDANCES - FOREIGN KEY (SAMP_ID) REFERENCES SAMPLES (ID); - -ALTER TABLE ABUNDANCES ADD CONSTRAINT PROTEINS_ABUNDANCES - FOREIGN KEY (PROT_ID) REFERENCES PROTEINS (ID) ON DELETE CASCADE; - -ALTER TABLE PROBABILITY_FDR_MAPPINGS ADD CONSTRAINT DATA_SETS_PROBABILITY_FDR_MAPPINGS - FOREIGN KEY (DASE_ID) REFERENCES DATA_SETS (ID) ON DELETE CASCADE; - -ALTER TABLE MODIFIED_PEPTIDES ADD CONSTRAINT PEPTIDES_MODIFIED_PEPTIDES - FOREIGN KEY (PEPT_ID) REFERENCES PEPTIDES (ID) ON DELETE CASCADE; - -ALTER TABLE SPECTRUM_REFERENCES ADD CONSTRAINT PEPTIDES_SPECTRUM_REFERENCES - FOREIGN KEY (PEPT_ID) REFERENCES PEPTIDES (ID) ON DELETE CASCADE; - -ALTER TABLE MODIFICATION_FRACTIONS ADD CONSTRAINT MODIFICATIONS_MODIFICATION_FRACTIONS - FOREIGN KEY (MODI_ID) REFERENCES MODIFICATIONS (ID) ON DELETE CASCADE; - -ALTER TABLE MODIFICATION_FRACTIONS ADD CONSTRAINT SAMPLES_MODIFICATION_FRACTIONS - FOREIGN KEY (SAMP_ID) REFERENCES SAMPLES (ID); diff --git a/rtd_phosphonetx/source/sql/proteomics/postgresql/004/grant-004.sql b/rtd_phosphonetx/source/sql/proteomics/postgresql/004/grant-004.sql deleted file mode 100644 index 2e85f4fb1f6fcbb7f072005f9d1ab5ad9e1fe713..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/sql/proteomics/postgresql/004/grant-004.sql +++ /dev/null @@ -1,18 +0,0 @@ --- Granting SELECT privilege to group PHOSPHONETX_READONLY - -GRANT SELECT ON TABLE EXPERIMENTS TO GROUP PHOSPHONETX_READONLY; -GRANT SELECT ON TABLE DATA_SETS TO GROUP PHOSPHONETX_READONLY; -GRANT SELECT ON TABLE MODIFICATIONS TO GROUP PHOSPHONETX_READONLY; -GRANT SELECT ON TABLE PEPTIDES TO GROUP PHOSPHONETX_READONLY; -GRANT SELECT ON TABLE PROTEINS TO GROUP PHOSPHONETX_READONLY; -GRANT SELECT ON TABLE SAMPLES TO GROUP PHOSPHONETX_READONLY; -GRANT SELECT ON TABLE SEQUENCES TO GROUP PHOSPHONETX_READONLY; -GRANT SELECT ON TABLE IDENTIFIED_PROTEINS TO GROUP PHOSPHONETX_READONLY; -GRANT SELECT ON TABLE ABUNDANCES TO GROUP PHOSPHONETX_READONLY; -GRANT SELECT ON TABLE PROBABILITY_FDR_MAPPINGS TO GROUP PHOSPHONETX_READONLY; -GRANT SELECT ON TABLE PROTEIN_REFERENCES TO GROUP PHOSPHONETX_READONLY; -GRANT SELECT ON TABLE DATABASES TO GROUP PHOSPHONETX_READONLY; -GRANT SELECT ON TABLE MODIFIED_PEPTIDES TO GROUP PHOSPHONETX_READONLY; -GRANT SELECT ON TABLE SPECTRUM_REFERENCES TO GROUP PHOSPHONETX_READONLY; -GRANT SELECT ON TABLE MODIFICATION_FRACTIONS TO GROUP PHOSPHONETX_READONLY; -GRANT SELECT ON TABLE EVENTS TO GROUP PHOSPHONETX_READONLY; diff --git a/rtd_phosphonetx/source/sql/proteomics/postgresql/004/schema-004.png b/rtd_phosphonetx/source/sql/proteomics/postgresql/004/schema-004.png deleted file mode 100755 index fceffeedd9cb97b93e06432546eb207feba07418..0000000000000000000000000000000000000000 Binary files a/rtd_phosphonetx/source/sql/proteomics/postgresql/004/schema-004.png and /dev/null differ diff --git a/rtd_phosphonetx/source/sql/proteomics/postgresql/004/schema-004.sql b/rtd_phosphonetx/source/sql/proteomics/postgresql/004/schema-004.sql deleted file mode 100755 index 824269ff55a707aa7124dbd2b18b3e0f6c4f6a4a..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/sql/proteomics/postgresql/004/schema-004.sql +++ /dev/null @@ -1,296 +0,0 @@ -/* ---------------------------------------------------------------------- */ -/* Script generated with: DeZign for Databases v5.2.3 */ -/* Target DBMS: PostgreSQL 8 */ -/* Project file: schema.dez */ -/* Project name: */ -/* Author: */ -/* Script type: Database creation script */ -/* Created on: 2010-05-27 14:26 */ -/* Model version: Version 2010-05-27 */ -/* ---------------------------------------------------------------------- */ - - -/* ---------------------------------------------------------------------- */ -/* Domains */ -/* ---------------------------------------------------------------------- */ - -CREATE DOMAIN CHECKSUM AS CHARACTER VARYING(8); - -CREATE DOMAIN CODE AS CHARACTER VARYING(40); - -CREATE DOMAIN DESCRIPTION AS CHARACTER VARYING(2000); - -CREATE DOMAIN INTEGER_NUMBER AS INTEGER; - -CREATE DOMAIN REAL_NUMBER AS DOUBLE PRECISION; - -CREATE DOMAIN LONG_SEQUENCE AS TEXT; - -CREATE DOMAIN SHORT_DESCRIPTION AS CHARACTER VARYING(200); - -CREATE DOMAIN TECH_ID AS BIGINT; - -CREATE DOMAIN SHORT_SEQUENCE AS CHARACTER VARYING(1000); - -CREATE DOMAIN ACCESSION_NUMBER AS CHARACTER VARYING(256); - -CREATE DOMAIN SPECTRUM_REFERENCE AS CHARACTER VARYING(100); - -CREATE DOMAIN BOOLEAN_CHAR AS BOOLEAN DEFAULT FALSE; - -/* ---------------------------------------------------------------------- */ -/* Tables */ -/* ---------------------------------------------------------------------- */ - -/* ---------------------------------------------------------------------- */ -/* Add table "EXPERIMENTS" */ -/* ---------------------------------------------------------------------- */ - -CREATE TABLE EXPERIMENTS ( - ID BIGSERIAL NOT NULL, - PERM_ID CODE NOT NULL, - CONSTRAINT PK_EXPERIMENTS PRIMARY KEY (ID), - CONSTRAINT TUC_EXPERIMENTS_1 UNIQUE (PERM_ID) -); - -/* ---------------------------------------------------------------------- */ -/* Add table "DATA_SETS" */ -/* ---------------------------------------------------------------------- */ - -CREATE TABLE DATA_SETS ( - ID BIGSERIAL NOT NULL, - EXPE_ID TECH_ID NOT NULL, - SAMP_ID TECH_ID, - DB_ID TECH_ID NOT NULL, - PERM_ID CODE NOT NULL, - CONSTRAINT PK_DATA_SETS PRIMARY KEY (ID), - CONSTRAINT TUC_DATA_SETS_1 UNIQUE (PERM_ID) -); - -CREATE INDEX IX_FK_DATA_SETS_EXPERIMENTS ON DATA_SETS (EXPE_ID); - -CREATE INDEX IX_FK_DATA_SETS_SAMPLES ON DATA_SETS (SAMP_ID); - -/* ---------------------------------------------------------------------- */ -/* Add table "MODIFICATIONS" */ -/* ---------------------------------------------------------------------- */ - -CREATE TABLE MODIFICATIONS ( - ID BIGSERIAL NOT NULL, - MOPE_ID TECH_ID NOT NULL, - POS INTEGER_NUMBER NOT NULL, - MASS REAL_NUMBER NOT NULL, - CONSTRAINT PK_MODIFICATIONS PRIMARY KEY (ID) -); - -/* ---------------------------------------------------------------------- */ -/* Add table "PEPTIDES" */ -/* ---------------------------------------------------------------------- */ - -CREATE TABLE PEPTIDES ( - ID BIGSERIAL NOT NULL, - PROT_ID TECH_ID NOT NULL, - SEQUENCE SHORT_SEQUENCE NOT NULL, - CHARGE INTEGER_NUMBER NOT NULL, - CONSTRAINT PK_PEPTIDES PRIMARY KEY (ID) -); - -CREATE INDEX IX_FK_PEPTIDES_PROTEINS ON PEPTIDES (PROT_ID); - -/* ---------------------------------------------------------------------- */ -/* Add table "PROTEINS" */ -/* ---------------------------------------------------------------------- */ - -CREATE TABLE PROTEINS ( - ID BIGSERIAL NOT NULL, - DASE_ID TECH_ID NOT NULL, - PROBABILITY REAL_NUMBER NOT NULL, - CONSTRAINT PK_PROTEINS PRIMARY KEY (ID) -); - -CREATE INDEX IDX_PROTEINS_1 ON PROTEINS (DASE_ID); - -/* ---------------------------------------------------------------------- */ -/* Add table "SAMPLES" */ -/* ---------------------------------------------------------------------- */ - -CREATE TABLE SAMPLES ( - ID BIGSERIAL NOT NULL, - PERM_ID CODE NOT NULL, - EXPE_ID TECH_ID NOT NULL, - CONSTRAINT PK_SAMPLES PRIMARY KEY (ID), - CONSTRAINT TUC_SAMPLES_1 UNIQUE (PERM_ID) -); - -/* ---------------------------------------------------------------------- */ -/* Add table "SEQUENCES" */ -/* ---------------------------------------------------------------------- */ - -CREATE TABLE SEQUENCES ( - ID BIGSERIAL NOT NULL, - DB_ID TECH_ID NOT NULL, - PRRE_ID TECH_ID NOT NULL, - AMINO_ACID_SEQUENCE LONG_SEQUENCE NOT NULL, - CHECKSUM CHECKSUM NOT NULL, - CONSTRAINT PK_SEQUENCES PRIMARY KEY (ID) -); - -/* ---------------------------------------------------------------------- */ -/* Add table "IDENTIFIED_PROTEINS" */ -/* ---------------------------------------------------------------------- */ - -CREATE TABLE IDENTIFIED_PROTEINS ( - ID BIGSERIAL NOT NULL, - PROT_ID TECH_ID NOT NULL, - SEQU_ID TECH_ID NOT NULL, - COVERAGE REAL_NUMBER, - IS_PRIMARY BOOLEAN_CHAR NOT NULL, - CONSTRAINT PK_IDENTIFIED_PROTEINS PRIMARY KEY (ID) -); - -/* ---------------------------------------------------------------------- */ -/* Add table "ABUNDANCES" */ -/* ---------------------------------------------------------------------- */ - -CREATE TABLE ABUNDANCES ( - ID BIGSERIAL NOT NULL, - PROT_ID TECH_ID NOT NULL, - SAMP_ID TECH_ID NOT NULL, - VALUE REAL_NUMBER NOT NULL, - CONSTRAINT PK_ABUNDANCES PRIMARY KEY (ID) -); - -/* ---------------------------------------------------------------------- */ -/* Add table "PROBABILITY_FDR_MAPPINGS" */ -/* ---------------------------------------------------------------------- */ - -CREATE TABLE PROBABILITY_FDR_MAPPINGS ( - ID BIGSERIAL NOT NULL, - DASE_ID TECH_ID NOT NULL, - PROBABILITY REAL_NUMBER NOT NULL, - FALSE_DISCOVERY_RATE REAL_NUMBER NOT NULL, - CONSTRAINT PK_PROBABILITY_FDR_MAPPINGS PRIMARY KEY (ID) -); - -/* ---------------------------------------------------------------------- */ -/* Add table "PROTEIN_REFERENCES" */ -/* ---------------------------------------------------------------------- */ - -CREATE TABLE PROTEIN_REFERENCES ( - ID BIGSERIAL NOT NULL, - ACCESSION_NUMBER ACCESSION_NUMBER NOT NULL, - DESCRIPTION DESCRIPTION, - CONSTRAINT PK_PROTEIN_REFERENCES PRIMARY KEY (ID), - CONSTRAINT TUC_PROTEIN_REFERENCES_1 UNIQUE (ACCESSION_NUMBER) -); - -CREATE INDEX IDX_PROTEIN_REFERENCES_1 ON PROTEIN_REFERENCES (ACCESSION_NUMBER); - -/* ---------------------------------------------------------------------- */ -/* Add table "DATABASES" */ -/* ---------------------------------------------------------------------- */ - -CREATE TABLE DATABASES ( - ID BIGSERIAL NOT NULL, - NAME_AND_VERSION SHORT_DESCRIPTION NOT NULL, - CONSTRAINT PK_DATABASES PRIMARY KEY (ID), - CONSTRAINT TUC_DATABASES_1 UNIQUE (NAME_AND_VERSION) -); - -/* ---------------------------------------------------------------------- */ -/* Add table "MODIFIED_PEPTIDES" */ -/* ---------------------------------------------------------------------- */ - -CREATE TABLE MODIFIED_PEPTIDES ( - ID BIGSERIAL NOT NULL, - PEPT_ID TECH_ID NOT NULL, - NTERM_MASS REAL_NUMBER NOT NULL, - CTERM_MASS REAL_NUMBER NOT NULL, - CONSTRAINT PK_MODIFIED_PEPTIDES PRIMARY KEY (ID) -); - -/* ---------------------------------------------------------------------- */ -/* Add table "SPECTRUM_REFERENCES" */ -/* ---------------------------------------------------------------------- */ - -CREATE TABLE SPECTRUM_REFERENCES ( - ID BIGSERIAL NOT NULL, - PEPT_ID TECH_ID NOT NULL, - REFERENCE SPECTRUM_REFERENCE NOT NULL, - CONSTRAINT PK_SPECTRUM_REFERENCES PRIMARY KEY (ID) -); - -/* ---------------------------------------------------------------------- */ -/* Add table "MODIFICATION_FRACTIONS" */ -/* ---------------------------------------------------------------------- */ - -CREATE TABLE MODIFICATION_FRACTIONS ( - ID BIGSERIAL NOT NULL, - MODI_ID TECH_ID NOT NULL, - SAMP_ID TECH_ID, - FRACTION REAL_NUMBER NOT NULL, - CONSTRAINT PK_MODIFICATION_FRACTIONS PRIMARY KEY (ID) -); - -/* ---------------------------------------------------------------------- */ -/* Add table "EVENTS" */ -/* ---------------------------------------------------------------------- */ - -CREATE TABLE EVENTS ( - LAST_SEEN_DELETION_EVENT_ID TECH_ID NOT NULL -); - -/* ---------------------------------------------------------------------- */ -/* Foreign key constraints */ -/* ---------------------------------------------------------------------- */ - -ALTER TABLE DATA_SETS ADD CONSTRAINT DA_EX_FK - FOREIGN KEY (EXPE_ID) REFERENCES EXPERIMENTS (ID); - -ALTER TABLE DATA_SETS ADD CONSTRAINT DA_SA_FK - FOREIGN KEY (SAMP_ID) REFERENCES SAMPLES (ID); - -ALTER TABLE DATA_SETS ADD CONSTRAINT DATABASES_DATA_SETS - FOREIGN KEY (DB_ID) REFERENCES DATABASES (ID); - -ALTER TABLE MODIFICATIONS ADD CONSTRAINT MODIFIED_PEPTIDES_MODIFICATIONS - FOREIGN KEY (MOPE_ID) REFERENCES MODIFIED_PEPTIDES (ID) ON DELETE CASCADE; - -ALTER TABLE PEPTIDES ADD CONSTRAINT PE_PR_FK - FOREIGN KEY (PROT_ID) REFERENCES PROTEINS (ID) ON DELETE CASCADE; - -ALTER TABLE PROTEINS ADD CONSTRAINT DATA_SETS_PROTEINS - FOREIGN KEY (DASE_ID) REFERENCES DATA_SETS (ID) ON DELETE CASCADE; - -ALTER TABLE SEQUENCES ADD CONSTRAINT DATABASES_SEQUENCES - FOREIGN KEY (DB_ID) REFERENCES DATABASES (ID); - -ALTER TABLE SEQUENCES ADD CONSTRAINT PROTEIN_REFERENCES_SEQUENCES - FOREIGN KEY (PRRE_ID) REFERENCES PROTEIN_REFERENCES (ID); - -ALTER TABLE IDENTIFIED_PROTEINS ADD CONSTRAINT PROTEINS_IDENTIFIED_PROTEINS - FOREIGN KEY (PROT_ID) REFERENCES PROTEINS (ID) ON DELETE CASCADE; - -ALTER TABLE IDENTIFIED_PROTEINS ADD CONSTRAINT SEQUENCES_IDENTIFIED_PROTEINS - FOREIGN KEY (SEQU_ID) REFERENCES SEQUENCES (ID); - -ALTER TABLE ABUNDANCES ADD CONSTRAINT SAMPLES_ABUNDANCES - FOREIGN KEY (SAMP_ID) REFERENCES SAMPLES (ID); - -ALTER TABLE ABUNDANCES ADD CONSTRAINT PROTEINS_ABUNDANCES - FOREIGN KEY (PROT_ID) REFERENCES PROTEINS (ID) ON DELETE CASCADE; - -ALTER TABLE PROBABILITY_FDR_MAPPINGS ADD CONSTRAINT DATA_SETS_PROBABILITY_FDR_MAPPINGS - FOREIGN KEY (DASE_ID) REFERENCES DATA_SETS (ID) ON DELETE CASCADE; - -ALTER TABLE MODIFIED_PEPTIDES ADD CONSTRAINT PEPTIDES_MODIFIED_PEPTIDES - FOREIGN KEY (PEPT_ID) REFERENCES PEPTIDES (ID) ON DELETE CASCADE; - -ALTER TABLE SPECTRUM_REFERENCES ADD CONSTRAINT PEPTIDES_SPECTRUM_REFERENCES - FOREIGN KEY (PEPT_ID) REFERENCES PEPTIDES (ID) ON DELETE CASCADE; - -ALTER TABLE MODIFICATION_FRACTIONS ADD CONSTRAINT MODIFICATIONS_MODIFICATION_FRACTIONS - FOREIGN KEY (MODI_ID) REFERENCES MODIFICATIONS (ID) ON DELETE CASCADE; - -ALTER TABLE MODIFICATION_FRACTIONS ADD CONSTRAINT SAMPLES_MODIFICATION_FRACTIONS - FOREIGN KEY (SAMP_ID) REFERENCES SAMPLES (ID); diff --git a/rtd_phosphonetx/source/sql/proteomics/postgresql/005/grant-005.sql b/rtd_phosphonetx/source/sql/proteomics/postgresql/005/grant-005.sql deleted file mode 100644 index 2e85f4fb1f6fcbb7f072005f9d1ab5ad9e1fe713..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/sql/proteomics/postgresql/005/grant-005.sql +++ /dev/null @@ -1,18 +0,0 @@ --- Granting SELECT privilege to group PHOSPHONETX_READONLY - -GRANT SELECT ON TABLE EXPERIMENTS TO GROUP PHOSPHONETX_READONLY; -GRANT SELECT ON TABLE DATA_SETS TO GROUP PHOSPHONETX_READONLY; -GRANT SELECT ON TABLE MODIFICATIONS TO GROUP PHOSPHONETX_READONLY; -GRANT SELECT ON TABLE PEPTIDES TO GROUP PHOSPHONETX_READONLY; -GRANT SELECT ON TABLE PROTEINS TO GROUP PHOSPHONETX_READONLY; -GRANT SELECT ON TABLE SAMPLES TO GROUP PHOSPHONETX_READONLY; -GRANT SELECT ON TABLE SEQUENCES TO GROUP PHOSPHONETX_READONLY; -GRANT SELECT ON TABLE IDENTIFIED_PROTEINS TO GROUP PHOSPHONETX_READONLY; -GRANT SELECT ON TABLE ABUNDANCES TO GROUP PHOSPHONETX_READONLY; -GRANT SELECT ON TABLE PROBABILITY_FDR_MAPPINGS TO GROUP PHOSPHONETX_READONLY; -GRANT SELECT ON TABLE PROTEIN_REFERENCES TO GROUP PHOSPHONETX_READONLY; -GRANT SELECT ON TABLE DATABASES TO GROUP PHOSPHONETX_READONLY; -GRANT SELECT ON TABLE MODIFIED_PEPTIDES TO GROUP PHOSPHONETX_READONLY; -GRANT SELECT ON TABLE SPECTRUM_REFERENCES TO GROUP PHOSPHONETX_READONLY; -GRANT SELECT ON TABLE MODIFICATION_FRACTIONS TO GROUP PHOSPHONETX_READONLY; -GRANT SELECT ON TABLE EVENTS TO GROUP PHOSPHONETX_READONLY; diff --git a/rtd_phosphonetx/source/sql/proteomics/postgresql/005/schema-005.png b/rtd_phosphonetx/source/sql/proteomics/postgresql/005/schema-005.png deleted file mode 100755 index fceffeedd9cb97b93e06432546eb207feba07418..0000000000000000000000000000000000000000 Binary files a/rtd_phosphonetx/source/sql/proteomics/postgresql/005/schema-005.png and /dev/null differ diff --git a/rtd_phosphonetx/source/sql/proteomics/postgresql/005/schema-005.sql b/rtd_phosphonetx/source/sql/proteomics/postgresql/005/schema-005.sql deleted file mode 100755 index ac882b6f7f95c258cc5bced92fa286c8e844232b..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/sql/proteomics/postgresql/005/schema-005.sql +++ /dev/null @@ -1,310 +0,0 @@ -/* ---------------------------------------------------------------------- */ -/* Script generated with: DeZign for Databases v5.2.3 */ -/* Target DBMS: PostgreSQL 8 */ -/* Project file: schema.dez */ -/* Project name: */ -/* Author: */ -/* Script type: Database creation script */ -/* Created on: 2011-06-08 08:28 */ -/* Model version: Version 2011-06-08 */ -/* ---------------------------------------------------------------------- */ - - -/* ---------------------------------------------------------------------- */ -/* Domains */ -/* ---------------------------------------------------------------------- */ - -CREATE DOMAIN CHECKSUM AS CHARACTER VARYING(8); - -CREATE DOMAIN CODE AS CHARACTER VARYING(40); - -CREATE DOMAIN DESCRIPTION AS CHARACTER VARYING(2000); - -CREATE DOMAIN INTEGER_NUMBER AS INTEGER; - -CREATE DOMAIN REAL_NUMBER AS DOUBLE PRECISION; - -CREATE DOMAIN LONG_SEQUENCE AS TEXT; - -CREATE DOMAIN SHORT_DESCRIPTION AS CHARACTER VARYING(200); - -CREATE DOMAIN TECH_ID AS BIGINT; - -CREATE DOMAIN SHORT_SEQUENCE AS CHARACTER VARYING(1000); - -CREATE DOMAIN ACCESSION_NUMBER AS CHARACTER VARYING(256); - -CREATE DOMAIN SPECTRUM_REFERENCE AS CHARACTER VARYING(100); - -CREATE DOMAIN BOOLEAN_CHAR AS BOOLEAN DEFAULT FALSE; - -/* ---------------------------------------------------------------------- */ -/* Tables */ -/* ---------------------------------------------------------------------- */ - -/* ---------------------------------------------------------------------- */ -/* Add table "EXPERIMENTS" */ -/* ---------------------------------------------------------------------- */ - -CREATE TABLE EXPERIMENTS ( - ID BIGSERIAL NOT NULL, - PERM_ID CODE NOT NULL, - CONSTRAINT PK_EXPERIMENTS PRIMARY KEY (ID), - CONSTRAINT TUC_EXPERIMENTS_1 UNIQUE (PERM_ID) -); - -/* ---------------------------------------------------------------------- */ -/* Add table "DATA_SETS" */ -/* ---------------------------------------------------------------------- */ - -CREATE TABLE DATA_SETS ( - ID BIGSERIAL NOT NULL, - EXPE_ID TECH_ID NOT NULL, - SAMP_ID TECH_ID, - DB_ID TECH_ID NOT NULL, - PERM_ID CODE NOT NULL, - CONSTRAINT PK_DATA_SETS PRIMARY KEY (ID), - CONSTRAINT TUC_DATA_SETS_1 UNIQUE (PERM_ID) -); - -CREATE INDEX IX_FK_DATA_SETS_EXPERIMENTS ON DATA_SETS (EXPE_ID); - -CREATE INDEX IX_FK_DATA_SETS_SAMPLES ON DATA_SETS (SAMP_ID); - -/* ---------------------------------------------------------------------- */ -/* Add table "MODIFICATIONS" */ -/* ---------------------------------------------------------------------- */ - -CREATE TABLE MODIFICATIONS ( - ID BIGSERIAL NOT NULL, - MOPE_ID TECH_ID NOT NULL, - POS INTEGER_NUMBER NOT NULL, - MASS REAL_NUMBER NOT NULL, - CONSTRAINT PK_MODIFICATIONS PRIMARY KEY (ID) -); - -CREATE INDEX IX_FK_MODIFICATIONS_MODIFIED_PEPTIDES ON MODIFICATIONS (MOPE_ID); - -/* ---------------------------------------------------------------------- */ -/* Add table "PEPTIDES" */ -/* ---------------------------------------------------------------------- */ - -CREATE TABLE PEPTIDES ( - ID BIGSERIAL NOT NULL, - PROT_ID TECH_ID NOT NULL, - SEQUENCE SHORT_SEQUENCE NOT NULL, - CHARGE INTEGER_NUMBER NOT NULL, - CONSTRAINT PK_PEPTIDES PRIMARY KEY (ID) -); - -CREATE INDEX IX_FK_PEPTIDES_PROTEINS ON PEPTIDES (PROT_ID); - -/* ---------------------------------------------------------------------- */ -/* Add table "PROTEINS" */ -/* ---------------------------------------------------------------------- */ - -CREATE TABLE PROTEINS ( - ID BIGSERIAL NOT NULL, - DASE_ID TECH_ID NOT NULL, - PROBABILITY REAL_NUMBER NOT NULL, - CONSTRAINT PK_PROTEINS PRIMARY KEY (ID) -); - -CREATE INDEX IDX_PROTEINS_1 ON PROTEINS (DASE_ID); - -/* ---------------------------------------------------------------------- */ -/* Add table "SAMPLES" */ -/* ---------------------------------------------------------------------- */ - -CREATE TABLE SAMPLES ( - ID BIGSERIAL NOT NULL, - PERM_ID CODE NOT NULL, - EXPE_ID TECH_ID NOT NULL, - CONSTRAINT PK_SAMPLES PRIMARY KEY (ID), - CONSTRAINT TUC_SAMPLES_1 UNIQUE (PERM_ID) -); - -/* ---------------------------------------------------------------------- */ -/* Add table "SEQUENCES" */ -/* ---------------------------------------------------------------------- */ - -CREATE TABLE SEQUENCES ( - ID BIGSERIAL NOT NULL, - DB_ID TECH_ID NOT NULL, - PRRE_ID TECH_ID NOT NULL, - AMINO_ACID_SEQUENCE LONG_SEQUENCE NOT NULL, - CHECKSUM CHECKSUM NOT NULL, - CONSTRAINT PK_SEQUENCES PRIMARY KEY (ID) -); - -CREATE INDEX IX_FK_SEQUENCES_PROTEIN_REFERENCES ON SEQUENCES (PRRE_ID); - -/* ---------------------------------------------------------------------- */ -/* Add table "IDENTIFIED_PROTEINS" */ -/* ---------------------------------------------------------------------- */ - -CREATE TABLE IDENTIFIED_PROTEINS ( - ID BIGSERIAL NOT NULL, - PROT_ID TECH_ID NOT NULL, - SEQU_ID TECH_ID NOT NULL, - COVERAGE REAL_NUMBER, - IS_PRIMARY BOOLEAN_CHAR NOT NULL, - CONSTRAINT PK_IDENTIFIED_PROTEINS PRIMARY KEY (ID) -); - -CREATE INDEX IX_FK_IDENTIFIED_PROTEINS_PROTEINS ON IDENTIFIED_PROTEINS (PROT_ID); - -/* ---------------------------------------------------------------------- */ -/* Add table "ABUNDANCES" */ -/* ---------------------------------------------------------------------- */ - -CREATE TABLE ABUNDANCES ( - ID BIGSERIAL NOT NULL, - PROT_ID TECH_ID NOT NULL, - SAMP_ID TECH_ID NOT NULL, - VALUE REAL_NUMBER NOT NULL, - CONSTRAINT PK_ABUNDANCES PRIMARY KEY (ID) -); - -CREATE INDEX IX_FK_ABUNDANCES_PROTEINS ON ABUNDANCES (PROT_ID); - -/* ---------------------------------------------------------------------- */ -/* Add table "PROBABILITY_FDR_MAPPINGS" */ -/* ---------------------------------------------------------------------- */ - -CREATE TABLE PROBABILITY_FDR_MAPPINGS ( - ID BIGSERIAL NOT NULL, - DASE_ID TECH_ID NOT NULL, - PROBABILITY REAL_NUMBER NOT NULL, - FALSE_DISCOVERY_RATE REAL_NUMBER NOT NULL, - CONSTRAINT PK_PROBABILITY_FDR_MAPPINGS PRIMARY KEY (ID) -); - -CREATE INDEX IX_FK_PROBABILITY_FDR_MAPPINGS_DATA_SETS ON PROBABILITY_FDR_MAPPINGS (DASE_ID); - -/* ---------------------------------------------------------------------- */ -/* Add table "PROTEIN_REFERENCES" */ -/* ---------------------------------------------------------------------- */ - -CREATE TABLE PROTEIN_REFERENCES ( - ID BIGSERIAL NOT NULL, - ACCESSION_NUMBER ACCESSION_NUMBER NOT NULL, - DESCRIPTION DESCRIPTION, - CONSTRAINT PK_PROTEIN_REFERENCES PRIMARY KEY (ID), - CONSTRAINT TUC_PROTEIN_REFERENCES_1 UNIQUE (ACCESSION_NUMBER) -); - -CREATE INDEX IDX_PROTEIN_REFERENCES_1 ON PROTEIN_REFERENCES (ACCESSION_NUMBER); - -/* ---------------------------------------------------------------------- */ -/* Add table "DATABASES" */ -/* ---------------------------------------------------------------------- */ - -CREATE TABLE DATABASES ( - ID BIGSERIAL NOT NULL, - NAME_AND_VERSION SHORT_DESCRIPTION NOT NULL, - CONSTRAINT PK_DATABASES PRIMARY KEY (ID), - CONSTRAINT TUC_DATABASES_1 UNIQUE (NAME_AND_VERSION) -); - -/* ---------------------------------------------------------------------- */ -/* Add table "MODIFIED_PEPTIDES" */ -/* ---------------------------------------------------------------------- */ - -CREATE TABLE MODIFIED_PEPTIDES ( - ID BIGSERIAL NOT NULL, - PEPT_ID TECH_ID NOT NULL, - NTERM_MASS REAL_NUMBER NOT NULL, - CTERM_MASS REAL_NUMBER NOT NULL, - CONSTRAINT PK_MODIFIED_PEPTIDES PRIMARY KEY (ID) -); - -CREATE INDEX IX_FK_MODIFIED_PEPTIDES_PEPTIDES ON MODIFIED_PEPTIDES (PEPT_ID); - -/* ---------------------------------------------------------------------- */ -/* Add table "SPECTRUM_REFERENCES" */ -/* ---------------------------------------------------------------------- */ - -CREATE TABLE SPECTRUM_REFERENCES ( - ID BIGSERIAL NOT NULL, - PEPT_ID TECH_ID NOT NULL, - REFERENCE SPECTRUM_REFERENCE NOT NULL, - CONSTRAINT PK_SPECTRUM_REFERENCES PRIMARY KEY (ID) -); - -/* ---------------------------------------------------------------------- */ -/* Add table "MODIFICATION_FRACTIONS" */ -/* ---------------------------------------------------------------------- */ - -CREATE TABLE MODIFICATION_FRACTIONS ( - ID BIGSERIAL NOT NULL, - MODI_ID TECH_ID NOT NULL, - SAMP_ID TECH_ID, - FRACTION REAL_NUMBER NOT NULL, - CONSTRAINT PK_MODIFICATION_FRACTIONS PRIMARY KEY (ID) -); - -CREATE INDEX IX_FK_MODIFICATION_FRACTIONS_MODIFICATIONS ON MODIFICATION_FRACTIONS (MODI_ID); - -/* ---------------------------------------------------------------------- */ -/* Add table "EVENTS" */ -/* ---------------------------------------------------------------------- */ - -CREATE TABLE EVENTS ( - LAST_SEEN_DELETION_EVENT_ID TECH_ID NOT NULL -); - -/* ---------------------------------------------------------------------- */ -/* Foreign key constraints */ -/* ---------------------------------------------------------------------- */ - -ALTER TABLE DATA_SETS ADD CONSTRAINT DA_EX_FK - FOREIGN KEY (EXPE_ID) REFERENCES EXPERIMENTS (ID); - -ALTER TABLE DATA_SETS ADD CONSTRAINT DA_SA_FK - FOREIGN KEY (SAMP_ID) REFERENCES SAMPLES (ID); - -ALTER TABLE DATA_SETS ADD CONSTRAINT DATABASES_DATA_SETS - FOREIGN KEY (DB_ID) REFERENCES DATABASES (ID); - -ALTER TABLE MODIFICATIONS ADD CONSTRAINT MODIFIED_PEPTIDES_MODIFICATIONS - FOREIGN KEY (MOPE_ID) REFERENCES MODIFIED_PEPTIDES (ID) ON DELETE CASCADE; - -ALTER TABLE PEPTIDES ADD CONSTRAINT PE_PR_FK - FOREIGN KEY (PROT_ID) REFERENCES PROTEINS (ID) ON DELETE CASCADE; - -ALTER TABLE PROTEINS ADD CONSTRAINT DATA_SETS_PROTEINS - FOREIGN KEY (DASE_ID) REFERENCES DATA_SETS (ID) ON DELETE CASCADE; - -ALTER TABLE SEQUENCES ADD CONSTRAINT DATABASES_SEQUENCES - FOREIGN KEY (DB_ID) REFERENCES DATABASES (ID); - -ALTER TABLE SEQUENCES ADD CONSTRAINT PROTEIN_REFERENCES_SEQUENCES - FOREIGN KEY (PRRE_ID) REFERENCES PROTEIN_REFERENCES (ID); - -ALTER TABLE IDENTIFIED_PROTEINS ADD CONSTRAINT PROTEINS_IDENTIFIED_PROTEINS - FOREIGN KEY (PROT_ID) REFERENCES PROTEINS (ID) ON DELETE CASCADE; - -ALTER TABLE IDENTIFIED_PROTEINS ADD CONSTRAINT SEQUENCES_IDENTIFIED_PROTEINS - FOREIGN KEY (SEQU_ID) REFERENCES SEQUENCES (ID); - -ALTER TABLE ABUNDANCES ADD CONSTRAINT SAMPLES_ABUNDANCES - FOREIGN KEY (SAMP_ID) REFERENCES SAMPLES (ID); - -ALTER TABLE ABUNDANCES ADD CONSTRAINT PROTEINS_ABUNDANCES - FOREIGN KEY (PROT_ID) REFERENCES PROTEINS (ID) ON DELETE CASCADE; - -ALTER TABLE PROBABILITY_FDR_MAPPINGS ADD CONSTRAINT DATA_SETS_PROBABILITY_FDR_MAPPINGS - FOREIGN KEY (DASE_ID) REFERENCES DATA_SETS (ID) ON DELETE CASCADE; - -ALTER TABLE MODIFIED_PEPTIDES ADD CONSTRAINT PEPTIDES_MODIFIED_PEPTIDES - FOREIGN KEY (PEPT_ID) REFERENCES PEPTIDES (ID) ON DELETE CASCADE; - -ALTER TABLE SPECTRUM_REFERENCES ADD CONSTRAINT PEPTIDES_SPECTRUM_REFERENCES - FOREIGN KEY (PEPT_ID) REFERENCES PEPTIDES (ID) ON DELETE CASCADE; - -ALTER TABLE MODIFICATION_FRACTIONS ADD CONSTRAINT MODIFICATIONS_MODIFICATION_FRACTIONS - FOREIGN KEY (MODI_ID) REFERENCES MODIFICATIONS (ID) ON DELETE CASCADE; - -ALTER TABLE MODIFICATION_FRACTIONS ADD CONSTRAINT SAMPLES_MODIFICATION_FRACTIONS - FOREIGN KEY (SAMP_ID) REFERENCES SAMPLES (ID); diff --git a/rtd_phosphonetx/source/sql/proteomics/postgresql/migration/migration-001-002.sql b/rtd_phosphonetx/source/sql/proteomics/postgresql/migration/migration-001-002.sql deleted file mode 100644 index 36900c0353f3e94c6d1750a4517929ec58e96d1d..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/sql/proteomics/postgresql/migration/migration-001-002.sql +++ /dev/null @@ -1,41 +0,0 @@ -CREATE TABLE EVENTS ( - LAST_SEEN_DELETION_EVENT_ID TECH_ID NOT NULL -); - - -ALTER TABLE MODIFICATIONS DROP CONSTRAINT MODIFIED_PEPTIDES_MODIFICATIONS; -ALTER TABLE MODIFICATIONS ADD CONSTRAINT MODIFIED_PEPTIDES_MODIFICATIONS - FOREIGN KEY (MOPE_ID) REFERENCES MODIFIED_PEPTIDES (ID) ON DELETE CASCADE; - -ALTER TABLE PEPTIDES DROP CONSTRAINT PE_PR_FK; -ALTER TABLE PEPTIDES ADD CONSTRAINT PE_PR_FK - FOREIGN KEY (PROT_ID) REFERENCES PROTEINS (ID) ON DELETE CASCADE; - -ALTER TABLE PROTEINS DROP CONSTRAINT DATA_SETS_PROTEINS; -ALTER TABLE PROTEINS ADD CONSTRAINT DATA_SETS_PROTEINS - FOREIGN KEY (DASE_ID) REFERENCES DATA_SETS (ID) ON DELETE CASCADE; - -ALTER TABLE IDENTIFIED_PROTEINS DROP CONSTRAINT PROTEINS_IDENTIFIED_PROTEINS; -ALTER TABLE IDENTIFIED_PROTEINS ADD CONSTRAINT PROTEINS_IDENTIFIED_PROTEINS - FOREIGN KEY (PROT_ID) REFERENCES PROTEINS (ID) ON DELETE CASCADE; - -ALTER TABLE ABUNDANCES DROP CONSTRAINT PROTEINS_ABUNDANCES; -ALTER TABLE ABUNDANCES ADD CONSTRAINT PROTEINS_ABUNDANCES - FOREIGN KEY (PROT_ID) REFERENCES PROTEINS (ID) ON DELETE CASCADE; - -ALTER TABLE PROBABILITY_FDR_MAPPINGS DROP CONSTRAINT DATA_SETS_PROBABILITY_FDR_MAPPINGS; -ALTER TABLE PROBABILITY_FDR_MAPPINGS ADD CONSTRAINT DATA_SETS_PROBABILITY_FDR_MAPPINGS - FOREIGN KEY (DASE_ID) REFERENCES DATA_SETS (ID) ON DELETE CASCADE; - -ALTER TABLE MODIFIED_PEPTIDES DROP CONSTRAINT PEPTIDES_MODIFIED_PEPTIDES; -ALTER TABLE MODIFIED_PEPTIDES ADD CONSTRAINT PEPTIDES_MODIFIED_PEPTIDES - FOREIGN KEY (PEPT_ID) REFERENCES PEPTIDES (ID) ON DELETE CASCADE; - -ALTER TABLE SPECTRUM_REFERENCES DROP CONSTRAINT PEPTIDES_SPECTRUM_REFERENCES; -ALTER TABLE SPECTRUM_REFERENCES ADD CONSTRAINT PEPTIDES_SPECTRUM_REFERENCES - FOREIGN KEY (PEPT_ID) REFERENCES PEPTIDES (ID) ON DELETE CASCADE; - -ALTER TABLE MODIFICATION_FRACTIONS DROP CONSTRAINT MODIFICATIONS_MODIFICATION_FRACTIONS; -ALTER TABLE MODIFICATION_FRACTIONS ADD CONSTRAINT MODIFICATIONS_MODIFICATION_FRACTIONS - FOREIGN KEY (MODI_ID) REFERENCES MODIFICATIONS (ID) ON DELETE CASCADE; - \ No newline at end of file diff --git a/rtd_phosphonetx/source/sql/proteomics/postgresql/migration/migration-002-003.sql b/rtd_phosphonetx/source/sql/proteomics/postgresql/migration/migration-002-003.sql deleted file mode 100644 index 639f94657a5f066a34d862909c8e7ded53784ad6..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/sql/proteomics/postgresql/migration/migration-002-003.sql +++ /dev/null @@ -1,4 +0,0 @@ --- JAVA ch.systemsx.cisd.openbis.plugin.phosphonetx.server.dataaccess.db.migration.MigrationStepFrom002To003 - -ALTER TABLE IDENTIFIED_PROTEINS ADD COLUMN COVERAGE REAL_NUMBER; - diff --git a/rtd_phosphonetx/source/sql/proteomics/postgresql/migration/migration-003-004.sql b/rtd_phosphonetx/source/sql/proteomics/postgresql/migration/migration-003-004.sql deleted file mode 100644 index 84d3d8a841b803eab39cba657d98ffd029532b8d..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/sql/proteomics/postgresql/migration/migration-003-004.sql +++ /dev/null @@ -1,5 +0,0 @@ -CREATE DOMAIN BOOLEAN_CHAR AS BOOLEAN DEFAULT FALSE; - -ALTER TABLE IDENTIFIED_PROTEINS ADD COLUMN IS_PRIMARY BOOLEAN_CHAR NOT NULL; - -UPDATE IDENTIFIED_PROTEINS SET IS_PRIMARY = 'T' WHERE ID = ANY(SELECT MIN(ID) FROM IDENTIFIED_PROTEINS GROUP BY PROT_ID); diff --git a/rtd_phosphonetx/source/sql/proteomics/postgresql/migration/migration-004-005.sql b/rtd_phosphonetx/source/sql/proteomics/postgresql/migration/migration-004-005.sql deleted file mode 100644 index fb183f726adecd5629e15775891a7fef0c12d313..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/sql/proteomics/postgresql/migration/migration-004-005.sql +++ /dev/null @@ -1,14 +0,0 @@ -DROP INDEX IF EXISTS IX_FK_MODIFICATION_FRACTIONS_MODIFICATIONS; -CREATE INDEX IX_FK_MODIFICATION_FRACTIONS_MODIFICATIONS ON MODIFICATION_FRACTIONS (MODI_ID); -DROP INDEX IF EXISTS IX_FK_MODIFICATIONS_MODIFIED_PEPTIDES; -CREATE INDEX IX_FK_MODIFICATIONS_MODIFIED_PEPTIDES ON MODIFICATIONS (MOPE_ID); -DROP INDEX IF EXISTS IX_FK_MODIFIED_PEPTIDES_PEPTIDES; -CREATE INDEX IX_FK_MODIFIED_PEPTIDES_PEPTIDES ON MODIFIED_PEPTIDES (PEPT_ID); -DROP INDEX IF EXISTS IX_FK_ABUNDANCES_PROTEINS; -CREATE INDEX IX_FK_ABUNDANCES_PROTEINS ON ABUNDANCES (PROT_ID); -DROP INDEX IF EXISTS IX_FK_IDENTIFIED_PROTEINS_PROTEINS; -CREATE INDEX IX_FK_IDENTIFIED_PROTEINS_PROTEINS ON IDENTIFIED_PROTEINS (PROT_ID); -DROP INDEX IF EXISTS IX_FK_SEQUENCES_PROTEIN_REFERENCES; -CREATE INDEX IX_FK_SEQUENCES_PROTEIN_REFERENCES ON SEQUENCES (PRRE_ID); -DROP INDEX IF EXISTS IX_FK_PROBABILITY_FDR_MAPPINGS_DATA_SETS; -CREATE INDEX IX_FK_PROBABILITY_FDR_MAPPINGS_DATA_SETS ON PROBABILITY_FDR_MAPPINGS (DASE_ID); diff --git a/rtd_phosphonetx/source/sql/proteomics/postgresql/schema.dez b/rtd_phosphonetx/source/sql/proteomics/postgresql/schema.dez deleted file mode 100755 index 4c8ebf447f362fd14c27f10b342daf24861bbf42..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/source/sql/proteomics/postgresql/schema.dez +++ /dev/null @@ -1,26376 +0,0 @@ -<?xml version="1.0" encoding="iso-8859-1"?><dezign> - -<FILEFORMATVERSION>51</FILEFORMATVERSION> -<VERSION> -<PROJECTSETTINGS> -<PROJECTFILENAME>D:\User\felmer\dev-workspace\rtd_phosphonetx\source\sql\postgresql\phosphonetx.dez</PROJECTFILENAME> -<MODIFIED>2011-06-08</MODIFIED> -<CREATED>2009-06-29</CREATED> -<CREATED2></CREATED2> -<PROJECTNAME></PROJECTNAME> -<DESCRIPTION></DESCRIPTION> -<AUTHOR></AUTHOR> -<COPYRIGHT></COPYRIGHT> -<LASTGENERATEDFILES>G:\phosphonetx\datamodel\schema.sql;G:\phosphonetx\datamodel\drop.sql;\CreateDBLog_201106081.txt</LASTGENERATEDFILES> -</PROJECTSETTINGS> -<CONNECTIONSETTINGS> -<SQLFILE>D:\User\felmer\dev-workspace\rtd_phosphonetx\source\sql\postgresql\001\schema-001.sql</SQLFILE> -<CONNECTIONTYPE>SQLFILE</CONNECTIONTYPE> -<DBID>postgresql8</DBID> -</CONNECTIONSETTINGS> -<DATADICT> -<DBID>postgresql8</DBID> -<LASTID>236</LASTID> -<DDSETTINGS> -<PKCONNAMETEMPLATE>PK_%table%</PKCONNAMETEMPLATE> -<FKCONNAMETEMPLATE>%relname%</FKCONNAMETEMPLATE> -<CCONNAMETEMPLATE>CC_%table%_%column%</CCONNAMETEMPLATE> -<NOTNULLCONNAMETEMPLATE>NN_%column%</NOTNULLCONNAMETEMPLATE> -<DEFAULTCONNAMETEMPLATE>DEF_%table%_%column%</DEFAULTCONNAMETEMPLATE> -<TUCONNAMETEMPLATE>TUC_%table%_%counter%</TUCONNAMETEMPLATE> -<TCCONNAMETEMPLATE>TCC_%table%_%counter%</TCCONNAMETEMPLATE> -<RELNAMETEMPLATE>%parent%_%child%</RELNAMETEMPLATE> -<INDEXNAMETEMPLATE>IDX_%table%_%counter%</INDEXNAMETEMPLATE> -<DEFTABLEOPTIONS></DEFTABLEOPTIONS> -<DEFINDEXOPTIONS></DEFINDEXOPTIONS> -<BEGINDATABASESCRIPT></BEGINDATABASESCRIPT> -<ENDDATABASESCRIP></ENDDATABASESCRIP> -<BEGINALTERDATABASESCRIPT></BEGINALTERDATABASESCRIPT> -<ENDALTERDATABASESCRIP></ENDALTERDATABASESCRIP> -<BEGINDROPDATABASESCRIPT></BEGINDROPDATABASESCRIPT> -<ENDDROPDATABASESCRIP></ENDDROPDATABASESCRIP> -<GENDIALOGSELECTEDOBJECTS></GENDIALOGSELECTEDOBJECTS> -<GENTABLES>1</GENTABLES> -<GENTABLEOPTIONS>1</GENTABLEOPTIONS> -<GENCONSTRAINTS>1</GENCONSTRAINTS> -<GENINDEXES>1</GENINDEXES> -<GENTRIGGERS>1</GENTRIGGERS> -<GENVIEWS>1</GENVIEWS> -<GENPROCEDURES>1</GENPROCEDURES> -<GENSEQUENCES>1</GENSEQUENCES> -<GENRELATIONSHIPS>1</GENRELATIONSHIPS> -<GENBEGINENDTABLESCRIPTS>1</GENBEGINENDTABLESCRIPTS> -<GENBEGINENDDBSCRIPTS>1</GENBEGINENDDBSCRIPTS> -<GLOBALPREFIX></GLOBALPREFIX> -<AUTOCREATEINDEXESONKEYS>0</AUTOCREATEINDEXESONKEYS> -<CONVERTDOMAINS>0</CONVERTDOMAINS> -<IGNORECOMMENTS>0</IGNORECOMMENTS> -<USESCHEMANAMES>0</USESCHEMANAMES> -<UCONNAMETEMPLATE></UCONNAMETEMPLATE> -<SQLCREATEFILE>G:\phosphonetx\datamodel\schema.sql</SQLCREATEFILE> -<SQLDROPFILE>G:\phosphonetx\datamodel\drop.sql</SQLDROPFILE> -</DDSETTINGS> -<DOMAINS> -<DOMAIN> -<NAME>CHECKSUM</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>8</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>CODE</NAME> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>DESCRIPTION</NAME> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>2000</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>INTEGER_NUMBER</NAME> -<ID>7</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>INTEGER</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>REAL_NUMBER</NAME> -<ID>8</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>LONG_SEQUENCE</NAME> -<ID>9</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>TEXT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>SHORT_DESCRIPTION</NAME> -<ID>11</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>200</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>TECH_ID</NAME> -<ID>12</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>SHORT_SEQUENCE</NAME> -<ID>69</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>1000</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>ACCESSION_NUMBER</NAME> -<ID>109</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>256</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>SPECTRUM_REFERENCE</NAME> -<ID>171</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>100</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>BOOLEAN_CHAR</NAME> -<ID>188</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>BOOLEAN</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<DEFCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>FALSE</VALUE> -<CONLEVEL>0</CONLEVEL> -<CONTYPE>6</CONTYPE> -<ATTRIBUTEIDS> -</ATTRIBUTEIDS> -</DEFCON> -</DOMAIN> -</DOMAINS> -<ENTITIES> -<ENT> -<NAME>EXPERIMENTS</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>16</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>3</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_EXPERIMENTS</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PERM_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>5</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_EXPERIMENTS_1</NAME> -<NAMETEMPLATE>TUC_%table%_%counter%</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -<ENT> -<NAME>DATA_SETS</NAME> -<NAMETEMPLATE>IX_FK_DATA_SETS_EXPERIMENTS</NAMETEMPLATE> -<ID>17</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>6</ATTRLASTID> -<IDXLASTID>3</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_DATA_SETS</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>EXPE_ID</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>SAMP_ID</NAME> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -<ATTR> -<NAME>DB_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>6</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PERM_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>5</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<INDEXES> -<INDEX> -<NAME>IX_FK_DATA_SETS_EXPERIMENTS</NAME> -<NAMETEMPLATE>IX_FK_DATA_SETS_EXPERIMENTS</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>EXPE_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>4</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -<INDEX> -<NAME>IX_FK_DATA_SETS_SAMPLES</NAME> -<NAMETEMPLATE>IX_FK_DATA_SETS_SAMPLES</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>SAMP_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>5</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -</INDEXES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_DATA_SETS_1</NAME> -<NAMETEMPLATE>TUC_%table%_%counter%</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -<ENT> -<NAME>MODIFICATIONS</NAME> -<NAMETEMPLATE>IX_FK_MODIFICATIONS_PEPTIDES</NAMETEMPLATE> -<ID>19</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>7</ATTRLASTID> -<IDXLASTID>6</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_MODIFICATIONS</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>MOPE_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>7</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>7</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>POS</NAME> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>7</DOMAINID> -<DT> -<DTLISTNAME>INTEGER</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>MASS</NAME> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>6</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<INDEXES> -<INDEX> -<NAME>IX_FK_MODIFICATIONS_MODIFIED_PEPTIDES</NAME> -<NAMETEMPLATE>IX_FK_MODIFICATIONS_MODIFIED_PEPTIDES</NAMETEMPLATE> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>MOPE_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>7</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -</INDEXES> -</ENT> -<ENT> -<NAME>PEPTIDES</NAME> -<NAMETEMPLATE>IX_FK_PEPTIDES_ABUNDANCES</NAMETEMPLATE> -<ID>21</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>10</ATTRLASTID> -<IDXLASTID>5</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_PEPTIDES</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PROT_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>SEQUENCE</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>10</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>69</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>1000</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>10</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>CHARGE</NAME> -<ID>7</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>7</DOMAINID> -<DT> -<DTLISTNAME>INTEGER</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>7</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<INDEXES> -<INDEX> -<NAME>IX_FK_PEPTIDES_PROTEINS</NAME> -<NAMETEMPLATE>IX_FK_PEPTIDES_PROTEINS</NAMETEMPLATE> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>PROT_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>3</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -</INDEXES> -</ENT> -<ENT> -<NAME>PROTEINS</NAME> -<NAMETEMPLATE>IX_FK_PROTEINS_DATA_SETS</NAMETEMPLATE> -<ID>23</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>11</ATTRLASTID> -<IDXLASTID>7</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_PROTEINS</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>DASE_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>10</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>10</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PROBABILITY</NAME> -<ID>9</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>9</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<INDEXES> -<INDEX> -<NAME>IDX_PROTEINS_1</NAME> -<NAMETEMPLATE>IDX_%table%_%counter%</NAMETEMPLATE> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>DASE_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>10</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -</INDEXES> -</ENT> -<ENT> -<NAME>SAMPLES</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>24</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>4</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_SAMPLES</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PERM_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>5</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>EXPE_ID</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_SAMPLES_1</NAME> -<NAMETEMPLATE>TUC_%table%_%counter%</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -<ENT> -<NAME>SEQUENCES</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>25</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>6</ATTRLASTID> -<IDXLASTID>2</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_SEQUENCES</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>DB_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PRRE_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>6</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>AMINO_ACID_SEQUENCE</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>9</DOMAINID> -<DT> -<DTLISTNAME>TEXT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>CHECKSUM</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>4</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>8</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<INDEXES> -<INDEX> -<NAME>IX_FK_SEQUENCES_PROTEIN_REFERENCES</NAME> -<NAMETEMPLATE>IX_FK_SEQUENCES_PROTEIN_REFERENCES</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>PRRE_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>6</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -</INDEXES> -</ENT> -<ENT> -<NAME>IDENTIFIED_PROTEINS</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>47</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>7</ATTRLASTID> -<IDXLASTID>2</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_IDENTIFIED_PROTEINS</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PROT_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>SEQU_ID</NAME> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>COVERAGE</NAME> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -<ATTR> -<NAME>IS_PRIMARY</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>7</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>188</DOMAINID> -<DT> -<DTLISTNAME>BOOLEAN</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>7</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -<DEFCON> -<NAME></NAME> -<NAMETEMPLATE>DEF_%table%_%column%</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>FALSE</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>6</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>7</ATTRIBUTEID> -</ATTRIBUTEIDS> -</DEFCON> -</ATTR> -</ATTRIBUTES> -<INDEXES> -<INDEX> -<NAME>IX_FK_IDENTIFIED_PROTEINS_PROTEINS</NAME> -<NAMETEMPLATE>IX_FK_IDENTIFIED_PROTEINS_PROTEINS</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>PROT_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>3</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -</INDEXES> -</ENT> -<ENT> -<NAME>ABUNDANCES</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>91</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>6</ATTRLASTID> -<IDXLASTID>2</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_ABUNDANCES</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PROT_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>SAMP_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>VALUE</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>6</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<INDEXES> -<INDEX> -<NAME>IX_FK_ABUNDANCES_PROTEINS</NAME> -<NAMETEMPLATE>IX_FK_ABUNDANCES_PROTEINS</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>PROT_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>3</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -</INDEXES> -</ENT> -<ENT> -<NAME>PROBABILITY_FDR_MAPPINGS</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>96</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>5</ATTRLASTID> -<IDXLASTID>2</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_PROBABILITY_FDR_MAPPINGS</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>DASE_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PROBABILITY</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>FALSE_DISCOVERY_RATE</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<INDEXES> -<INDEX> -<NAME>IX_FK_PROBABILITY_FDR_MAPPINGS_DATA_SETS</NAME> -<NAMETEMPLATE>IX_FK_PROBABILITY_FDR_MAPPINGS_DATA_SETS</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>DASE_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>5</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -</INDEXES> -</ENT> -<ENT> -<NAME>PROTEIN_REFERENCES</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>98</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>4</ATTRLASTID> -<IDXLASTID>2</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_PROTEIN_REFERENCES</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>ACCESSION_NUMBER</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>109</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>256</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>DESCRIPTION</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>6</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>2000</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -</ATTRIBUTES> -<INDEXES> -<INDEX> -<NAME>IDX_PROTEIN_REFERENCES_1</NAME> -<NAMETEMPLATE>IDX_%table%_%counter%</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>ACCESSION_NUMBER</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>3</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -</INDEXES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_PROTEIN_REFERENCES_1</NAME> -<NAMETEMPLATE>TUC_%table%_%counter%</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -<ENT> -<NAME>DATABASES</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>110</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>3</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_DATABASES</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>NAME_AND_VERSION</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>11</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>200</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_DATABASES_1</NAME> -<NAMETEMPLATE>TUC_%table%_%counter%</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -<ENT> -<NAME>MODIFIED_PEPTIDES</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>136</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>5</ATTRLASTID> -<IDXLASTID>2</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_MODIFIED_PEPTIDES</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PEPT_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>NTERM_MASS</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>CTERM_MASS</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<INDEXES> -<INDEX> -<NAME>IX_FK_MODIFIED_PEPTIDES_PEPTIDES</NAME> -<NAMETEMPLATE>IX_FK_MODIFIED_PEPTIDES_PEPTIDES</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>PEPT_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>3</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -</INDEXES> -</ENT> -<ENT> -<NAME>SPECTRUM_REFERENCES</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>160</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>4</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_SPECTRUM_REFERENCES</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PEPT_ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>REFERENCE</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>171</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>100</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -</ENT> -<ENT> -<NAME>MODIFICATION_FRACTIONS</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>173</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>5</ATTRLASTID> -<IDXLASTID>2</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_MODIFICATION_FRACTIONS</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>MODI_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>SAMP_ID</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -<ATTR> -<NAME>FRACTION</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<INDEXES> -<INDEX> -<NAME>IX_FK_MODIFICATION_FRACTIONS_MODIFICATIONS</NAME> -<NAMETEMPLATE>IX_FK_MODIFICATION_FRACTIONS_MODIFICATIONS</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>MODI_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>3</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -</INDEXES> -</ENT> -<ENT> -<NAME>EVENTS</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>176</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>2</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<ATTRIBUTES> -<ATTR> -<NAME>LAST_SEEN_DELETION_EVENT_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -</ENT> -</ENTITIES> -<SUBCATEGORIES> -</SUBCATEGORIES> -<TEXTAREAS> -</TEXTAREAS> -<GROUPBOXES> -</GROUPBOXES> -<STAMPS> -</STAMPS> -<SEQUENCES> -</SEQUENCES> -<PROCEDURES> -</PROCEDURES> -<VIEWS> -</VIEWS> -<RELATIONSHIPS> -<REL> -<NAME>DA_EX_FK</NAME> -<NAMETEMPLATE>DA_EX_FK</NAMETEMPLATE> -<ID>29</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>16</PARENTOBJECTID> -<CHILDOBJECTID>17</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>DA_EX_FK</NAME> -<NAMETEMPLATE>DA_EX_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>4</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>DA_SA_FK</NAME> -<NAMETEMPLATE>DA_SA_FK</NAMETEMPLATE> -<ID>30</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>24</PARENTOBJECTID> -<CHILDOBJECTID>17</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>0</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>DA_SA_FK</NAME> -<NAMETEMPLATE>DA_SA_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>5</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>PE_PR_FK</NAME> -<NAMETEMPLATE>PE_PR_FK</NAMETEMPLATE> -<ID>36</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>23</PARENTOBJECTID> -<CHILDOBJECTID>21</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>2</DELETERULE> -<CONSTRAINT> -<NAME>PE_PR_FK</NAME> -<NAMETEMPLATE>PE_PR_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>3</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>DATA_SETS_PROTEINS</NAME> -<NAMETEMPLATE>%parent%_%child%</NAMETEMPLATE> -<ID>46</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>17</PARENTOBJECTID> -<CHILDOBJECTID>23</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>2</DELETERULE> -<CONSTRAINT> -<NAME>DATA_SETS_PROTEINS</NAME> -<NAMETEMPLATE>%relname%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>10</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>10</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>PROTEINS_IDENTIFIED_PROTEINS</NAME> -<NAMETEMPLATE>%parent%_%child%</NAMETEMPLATE> -<ID>48</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>23</PARENTOBJECTID> -<CHILDOBJECTID>47</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>2</DELETERULE> -<CONSTRAINT> -<NAME>PROTEINS_IDENTIFIED_PROTEINS</NAME> -<NAMETEMPLATE>%relname%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>3</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>SEQUENCES_IDENTIFIED_PROTEINS</NAME> -<NAMETEMPLATE>%parent%_%child%</NAMETEMPLATE> -<ID>50</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>25</PARENTOBJECTID> -<CHILDOBJECTID>47</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>SEQUENCES_IDENTIFIED_PROTEINS</NAME> -<NAMETEMPLATE>%relname%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>5</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>SAMPLES_ABUNDANCES</NAME> -<NAMETEMPLATE>%parent%_%child%</NAMETEMPLATE> -<ID>92</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>24</PARENTOBJECTID> -<CHILDOBJECTID>91</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>SAMPLES_ABUNDANCES</NAME> -<NAMETEMPLATE>%relname%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>4</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>PROTEINS_ABUNDANCES</NAME> -<NAMETEMPLATE>%parent%_%child%</NAMETEMPLATE> -<ID>94</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>23</PARENTOBJECTID> -<CHILDOBJECTID>91</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>2</DELETERULE> -<CONSTRAINT> -<NAME>PROTEINS_ABUNDANCES</NAME> -<NAMETEMPLATE>%relname%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>3</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>DATA_SETS_PROBABILITY_FDR_MAPPINGS</NAME> -<NAMETEMPLATE>%parent%_%child%</NAMETEMPLATE> -<ID>97</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>17</PARENTOBJECTID> -<CHILDOBJECTID>96</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>2</DELETERULE> -<CONSTRAINT> -<NAME>DATA_SETS_PROBABILITY_FDR_MAPPINGS</NAME> -<NAMETEMPLATE>%relname%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>5</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>DATABASES_SEQUENCES</NAME> -<NAMETEMPLATE>%parent%_%child%</NAMETEMPLATE> -<ID>111</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>110</PARENTOBJECTID> -<CHILDOBJECTID>25</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>DATABASES_SEQUENCES</NAME> -<NAMETEMPLATE>%relname%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>5</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>PROTEIN_REFERENCES_SEQUENCES</NAME> -<NAMETEMPLATE>%parent%_%child%</NAMETEMPLATE> -<ID>112</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>98</PARENTOBJECTID> -<CHILDOBJECTID>25</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>PROTEIN_REFERENCES_SEQUENCES</NAME> -<NAMETEMPLATE>%relname%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>6</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>6</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>DATABASES_DATA_SETS</NAME> -<NAMETEMPLATE>%parent%_%child%</NAMETEMPLATE> -<ID>125</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>110</PARENTOBJECTID> -<CHILDOBJECTID>17</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>DATABASES_DATA_SETS</NAME> -<NAMETEMPLATE>%relname%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>6</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>6</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>PEPTIDES_MODIFIED_PEPTIDES</NAME> -<NAMETEMPLATE>%parent%_%child%</NAMETEMPLATE> -<ID>138</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>21</PARENTOBJECTID> -<CHILDOBJECTID>136</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>2</DELETERULE> -<CONSTRAINT> -<NAME>PEPTIDES_MODIFIED_PEPTIDES</NAME> -<NAMETEMPLATE>%relname%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>3</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>MODIFIED_PEPTIDES_MODIFICATIONS</NAME> -<NAMETEMPLATE>%parent%_%child%</NAMETEMPLATE> -<ID>139</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>136</PARENTOBJECTID> -<CHILDOBJECTID>19</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>2</DELETERULE> -<CONSTRAINT> -<NAME>MODIFIED_PEPTIDES_MODIFICATIONS</NAME> -<NAMETEMPLATE>%relname%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>7</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>7</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>PEPTIDES_SPECTRUM_REFERENCES</NAME> -<NAMETEMPLATE>%parent%_%child%</NAMETEMPLATE> -<ID>172</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>21</PARENTOBJECTID> -<CHILDOBJECTID>160</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>2</DELETERULE> -<CONSTRAINT> -<NAME>PEPTIDES_SPECTRUM_REFERENCES</NAME> -<NAMETEMPLATE>%relname%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>2</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>MODIFICATIONS_MODIFICATION_FRACTIONS</NAME> -<NAMETEMPLATE>%parent%_%child%</NAMETEMPLATE> -<ID>174</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>19</PARENTOBJECTID> -<CHILDOBJECTID>173</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>2</DELETERULE> -<CONSTRAINT> -<NAME>MODIFICATIONS_MODIFICATION_FRACTIONS</NAME> -<NAMETEMPLATE>%relname%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>3</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>SAMPLES_MODIFICATION_FRACTIONS</NAME> -<NAMETEMPLATE>%parent%_%child%</NAMETEMPLATE> -<ID>175</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>24</PARENTOBJECTID> -<CHILDOBJECTID>173</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>0</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>SAMPLES_MODIFICATION_FRACTIONS</NAME> -<NAMETEMPLATE>%relname%</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>4</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -</RELATIONSHIPS> -<SUBCATEGORYCONNECTIONS> -</SUBCATEGORYCONNECTIONS> -</DATADICT> -<DIAGRAMS> -<DisplayPreferences> -<USEINDICATORLINE>0</USEINDICATORLINE> -<INDICATORBITMAPS>0</INDICATORBITMAPS> -<PKINDICATOR>PK</PKINDICATOR> -<FKINDICATOR>FK</FKINDICATOR> -<PFINDICATOR>PF</PFINDICATOR> -<NOTNULLINDICATOR>*</NOTNULLINDICATOR> -<INDICATORPOSITION>0</INDICATORPOSITION> -<DEFTEXTAREACOLOR>16777215</DEFTEXTAREACOLOR> -<DEFENTCOLOR>16777215</DEFENTCOLOR> -<DEFSTAMPCOLOR>16777215</DEFSTAMPCOLOR> -<DEFGROUPBOXCOLOR>8421504</DEFGROUPBOXCOLOR> -<DEFTEXTAREALINECOLOR>0</DEFTEXTAREALINECOLOR> -<DEFENTLINECOLOR>0</DEFENTLINECOLOR> -<DEFSTAMPLINECOLOR>0</DEFSTAMPLINECOLOR> -<DEFSUBCATLINECOLOR>0</DEFSUBCATLINECOLOR> -<DEFCONLINECOLOR>0</DEFCONLINECOLOR> -<DEFGROUPBOXLINECOLOR>0</DEFGROUPBOXLINECOLOR> -<DEFTEXTAREATRANSPARENT>0</DEFTEXTAREATRANSPARENT> -<DEFSTAMPTRANSPARENT>0</DEFSTAMPTRANSPARENT> -<DEFTEXTAREALINEWIDTH>1</DEFTEXTAREALINEWIDTH> -<DEFSTAMPLINEWIDTH>1</DEFSTAMPLINEWIDTH> -<DEFGROUPBOXLINEWIDTH>0</DEFGROUPBOXLINEWIDTH> -<DEFTEXTAREALINESTYLE>0</DEFTEXTAREALINESTYLE> -<DEFSTAMPLINESTYLE>0</DEFSTAMPLINESTYLE> -<DEFGROUPBOXLINESTYLE>0</DEFGROUPBOXLINESTYLE> -<ENTNAMEFONT>Arial,9,B,0,clNavy,0</ENTNAMEFONT> -<ENTPKFONT>Arial,8,B,0,clWindowText,0</ENTPKFONT> -<ENTFKFONT>Arial,8,I,0,clWindowText,0</ENTFKFONT> -<ENTATTRFONT>Arial,8,,0,clWindowText,0</ENTATTRFONT> -<TEXTAREAFONT>Arial,8,,0,clWindowText,0</TEXTAREAFONT> -<GROUPBOXFONT>Arial,8,,0,clWindowText,0</GROUPBOXFONT> -<CAPTIONFONT>Arial,8,,0,clWindowText,0</CAPTIONFONT> -</DisplayPreferences> -<DIAGRAM> -<ID>1</ID> -<NAME>Main Diagram</NAME> -<DESC></DESC> -<TODO></TODO> -<ISMAINDIAGRAM>1</ISMAINDIAGRAM> -<BGCOLOR>16777215</BGCOLOR> -<DISPLAYLEVEL>0</DISPLAYLEVEL> -<VISIBLEATTR>2</VISIBLEATTR> -<CAPTIONSTYLE>0</CAPTIONSTYLE> -<SHOWPKINDICATOR>1</SHOWPKINDICATOR> -<SHOWFKINDICATOR>1</SHOWFKINDICATOR> -<SHOWNOTNULLINDICATOR>1</SHOWNOTNULLINDICATOR> -<NOTATION>0</NOTATION> -</DIAGRAM> -<CONTROLS> -<ENTITYCONTROLS> -<ENTC> -<ID>16</ID> -<DIAGRAMID>1</DIAGRAMID> -<W>136</W> -<H>63</H> -<L>544</L> -<T>1</T> -<BRUSH>0,16777215</BRUSH> -<PEN>0,1,4,0</PEN> -<FONT>Arial,8,,0,clWindowText,0</FONT> -<TR>0</TR> -<AS>1</AS> -</ENTC> -<ENTC> -<ID>17</ID> -<DIAGRAMID>1</DIAGRAMID> -<W>139</W> -<H>108</H> -<L>295</L> -<T>1</T> -<BRUSH>0,16777215</BRUSH> -<PEN>0,1,4,0</PEN> -<FONT>Arial,8,,0,clWindowText,0</FONT> -<TR>0</TR> -<AS>1</AS> -</ENTC> -<ENTC> -<ID>19</ID> -<DIAGRAMID>1</DIAGRAMID> -<W>177</W> -<H>93</H> -<L>12</L> -<T>628</T> -<BRUSH>0,16777215</BRUSH> -<PEN>0,1,4,0</PEN> -<FONT>Arial,8,,0,clWindowText,0</FONT> -<TR>0</TR> -<AS>1</AS> -</ENTC> -<ENTC> -<ID>21</ID> -<DIAGRAMID>1</DIAGRAMID> -<W>187</W> -<H>93</H> -<L>271</L> -<T>480</T> -<BRUSH>0,16777215</BRUSH> -<PEN>0,1,4,0</PEN> -<FONT>Arial,8,,0,clWindowText,0</FONT> -<TR>0</TR> -<AS>1</AS> -</ENTC> -<ENTC> -<ID>23</ID> -<DIAGRAMID>1</DIAGRAMID> -<W>180</W> -<H>78</H> -<L>274</L> -<T>328</T> -<BRUSH>0,16777215</BRUSH> -<PEN>0,1,4,0</PEN> -<FONT>Arial,8,,0,clWindowText,0</FONT> -<TR>0</TR> -<AS>1</AS> -</ENTC> -<ENTC> -<ID>24</ID> -<DIAGRAMID>1</DIAGRAMID> -<W>136</W> -<H>78</H> -<L>12</L> -<T>1</T> -<BRUSH>0,16777215</BRUSH> -<PEN>0,1,4,0</PEN> -<FONT>Arial,8,,0,clWindowText,0</FONT> -<TR>0</TR> -<AS>1</AS> -</ENTC> -<ENTC> -<ID>25</ID> -<DIAGRAMID>1</DIAGRAMID> -<W>250</W> -<H>108</H> -<L>754</L> -<T>328</T> -<BRUSH>0,16777215</BRUSH> -<PEN>0,1,4,0</PEN> -<FONT>Arial,8,,0,clWindowText,0</FONT> -<TR>0</TR> -<AS>1</AS> -</ENTC> -<ENTC> -<ID>47</ID> -<DIAGRAMID>1</DIAGRAMID> -<W>184</W> -<H>108</H> -<L>518</L> -<T>328</T> -<BRUSH>0,16777215</BRUSH> -<PEN>0,1,4,0</PEN> -<FONT>Arial,8,,0,clWindowText,0</FONT> -<TR>0</TR> -<AS>1</AS> -</ENTC> -<ENTC> -<ID>91</ID> -<DIAGRAMID>1</DIAGRAMID> -<W>161</W> -<H>93</H> -<L>114</L> -<T>182</T> -<BRUSH>0,16777215</BRUSH> -<PEN>0,1,4,0</PEN> -<FONT>Arial,8,,0,clWindowText,0</FONT> -<TR>0</TR> -<AS>1</AS> -</ENTC> -<ENTC> -<ID>96</ID> -<DIAGRAMID>1</DIAGRAMID> -<W>243</W> -<H>93</H> -<L>490</L> -<T>182</T> -<BRUSH>0,16777215</BRUSH> -<PEN>0,1,4,0</PEN> -<FONT>Arial,8,,0,clWindowText,0</FONT> -<TR>0</TR> -<AS>1</AS> -</ENTC> -<ENTC> -<ID>98</ID> -<DIAGRAMID>1</DIAGRAMID> -<W>252</W> -<H>78</H> -<L>752</L> -<T>480</T> -<BRUSH>0,16777215</BRUSH> -<PEN>0,1,4,0</PEN> -<FONT>Arial,8,,0,clWindowText,0</FONT> -<TR>0</TR> -<AS>1</AS> -</ENTC> -<ENTC> -<ID>110</ID> -<DIAGRAMID>1</DIAGRAMID> -<W>252</W> -<H>63</H> -<L>752</L> -<T>91</T> -<BRUSH>0,16777215</BRUSH> -<PEN>0,1,4,0</PEN> -<FONT>Arial,8,,0,clWindowText,0</FONT> -<TR>0</TR> -<AS>1</AS> -</ENTC> -<ENTC> -<ID>136</ID> -<DIAGRAMID>1</DIAGRAMID> -<W>183</W> -<H>93</H> -<L>273</L> -<T>628</T> -<BRUSH>0,16777215</BRUSH> -<PEN>0,1,4,0</PEN> -<FONT>Arial,8,,0,clWindowText,0</FONT> -<TR>0</TR> -<AS>1</AS> -</ENTC> -<ENTC> -<ID>160</ID> -<DIAGRAMID>1</DIAGRAMID> -<W>214</W> -<H>78</H> -<L>505</L> -<T>480</T> -<BRUSH>0,16777215</BRUSH> -<PEN>0,1,4,0</PEN> -<FONT>Arial,8,,0,clWindowText,0</FONT> -<TR>0</TR> -<AS>1</AS> -</ENTC> -<ENTC> -<ID>173</ID> -<DIAGRAMID>1</DIAGRAMID> -<W>164</W> -<H>93</H> -<L>12</L> -<T>480</T> -<BRUSH>0,16777215</BRUSH> -<PEN>0,1,4,0</PEN> -<FONT>Arial,8,,0,clWindowText,0</FONT> -<TR>0</TR> -<AS>1</AS> -</ENTC> -<ENTC> -<ID>176</ID> -<DIAGRAMID>1</DIAGRAMID> -<W>226</W> -<H>48</H> -<L>778</L> -<T>1</T> -<BRUSH>0,16777215</BRUSH> -<PEN>0,1,4,0</PEN> -<FONT>Arial,8,,0,clWindowText,0</FONT> -<TR>0</TR> -<AS>1</AS> -</ENTC> -</ENTITYCONTROLS> -<SUBCATEGORYCONTROLS> -</SUBCATEGORYCONTROLS> -<TEXTAREACONTROLS> -</TEXTAREACONTROLS> -<STAMPCONTROLS> -</STAMPCONTROLS> -<GROUPBOXESCONTROLS> -</GROUPBOXESCONTROLS> -<RELATIONSHIPCONNECTORS> -<RELC> -<ID>29</ID> -<DIAGRAMID>1</DIAGRAMID> -<FONT>Arial,8,,0,clWindowText,0</FONT> -<PEN>1,1,4,0</PEN> -<FROMRELATIVEX>5000</FROMRELATIVEX> -<FROMRELATIVEY>4921</FROMRELATIVEY> -<TORELATIVEX>5000</TORELATIVEX> -<TORELATIVEY>2870</TORELATIVEY> -<POINTS> -<POINT> -<X>543</X> -<Y>32</Y> -</POINT> -<POINT> -<X>480</X> -<Y>32</Y> -</POINT> -<POINT> -<X>480</X> -<Y>32</Y> -</POINT> -<POINT> -<X>434</X> -<Y>32</Y> -</POINT> -</POINTS> -</RELC> -<RELC> -<ID>30</ID> -<DIAGRAMID>1</DIAGRAMID> -<FONT>Arial,8,,0,clWindowText,0</FONT> -<PEN>1,1,4,0</PEN> -<FROMRELATIVEX>5000</FROMRELATIVEX> -<FROMRELATIVEY>5000</FROMRELATIVEY> -<TORELATIVEX>5000</TORELATIVEX> -<TORELATIVEY>3611</TORELATIVEY> -<POINTS> -<POINT> -<X>148</X> -<Y>40</Y> -</POINT> -<POINT> -<X>219</X> -<Y>40</Y> -</POINT> -<POINT> -<X>219</X> -<Y>40</Y> -</POINT> -<POINT> -<X>294</X> -<Y>40</Y> -</POINT> -</POINTS> -</RELC> -<RELC> -<ID>36</ID> -<DIAGRAMID>1</DIAGRAMID> -<FONT>Arial,8,,0,clWindowText,0</FONT> -<PEN>1,1,4,0</PEN> -<FROMRELATIVEX>5000</FROMRELATIVEX> -<FROMRELATIVEY>5000</FROMRELATIVEY> -<TORELATIVEX>4973</TORELATIVEX> -<TORELATIVEY>5000</TORELATIVEY> -<POINTS> -<POINT> -<X>364</X> -<Y>406</Y> -</POINT> -<POINT> -<X>364</X> -<Y>428</Y> -</POINT> -<POINT> -<X>364</X> -<Y>428</Y> -</POINT> -<POINT> -<X>364</X> -<Y>479</Y> -</POINT> -</POINTS> -</RELC> -<RELC> -<ID>46</ID> -<DIAGRAMID>1</DIAGRAMID> -<FONT>Arial,8,,0,clWindowText,0</FONT> -<PEN>1,1,4,0</PEN> -<FROMRELATIVEX>4964</FROMRELATIVEX> -<FROMRELATIVEY>5000</FROMRELATIVEY> -<TORELATIVEX>5000</TORELATIVEX> -<TORELATIVEY>5000</TORELATIVEY> -<POINTS> -<POINT> -<X>364</X> -<Y>109</Y> -</POINT> -<POINT> -<X>364</X> -<Y>183</Y> -</POINT> -<POINT> -<X>364</X> -<Y>183</Y> -</POINT> -<POINT> -<X>364</X> -<Y>327</Y> -</POINT> -</POINTS> -</RELC> -<RELC> -<ID>48</ID> -<DIAGRAMID>1</DIAGRAMID> -<FONT>Arial,8,,0,clWindowText,0</FONT> -<PEN>1,1,4,0</PEN> -<FROMRELATIVEX>5000</FROMRELATIVEX> -<FROMRELATIVEY>5000</FROMRELATIVEY> -<TORELATIVEX>5000</TORELATIVEX> -<TORELATIVEY>3611</TORELATIVEY> -<POINTS> -<POINT> -<X>454</X> -<Y>367</Y> -</POINT> -<POINT> -<X>489</X> -<Y>367</Y> -</POINT> -<POINT> -<X>489</X> -<Y>367</Y> -</POINT> -<POINT> -<X>517</X> -<Y>367</Y> -</POINT> -</POINTS> -</RELC> -<RELC> -<ID>50</ID> -<DIAGRAMID>1</DIAGRAMID> -<FONT>Arial,8,,0,clWindowText,0</FONT> -<PEN>1,1,4,0</PEN> -<FROMRELATIVEX>2840</FROMRELATIVEX> -<FROMRELATIVEY>5000</FROMRELATIVEY> -<TORELATIVEX>5000</TORELATIVEX> -<TORELATIVEY>5000</TORELATIVEY> -<POINTS> -<POINT> -<X>753</X> -<Y>382</Y> -</POINT> -<POINT> -<X>722</X> -<Y>382</Y> -</POINT> -<POINT> -<X>722</X> -<Y>382</Y> -</POINT> -<POINT> -<X>702</X> -<Y>382</Y> -</POINT> -</POINTS> -</RELC> -<RELC> -<ID>92</ID> -<DIAGRAMID>1</DIAGRAMID> -<FONT>Arial,8,,0,clWindowText,0</FONT> -<PEN>1,1,4,0</PEN> -<FROMRELATIVEX>8750</FROMRELATIVEX> -<FROMRELATIVEY>5000</FROMRELATIVEY> -<TORELATIVEX>1056</TORELATIVEX> -<TORELATIVEY>5000</TORELATIVEY> -<POINTS> -<POINT> -<X>131</X> -<Y>79</Y> -</POINT> -<POINT> -<X>131</X> -<Y>143</Y> -</POINT> -<POINT> -<X>131</X> -<Y>143</Y> -</POINT> -<POINT> -<X>131</X> -<Y>181</Y> -</POINT> -</POINTS> -</RELC> -<RELC> -<ID>94</ID> -<DIAGRAMID>1</DIAGRAMID> -<FONT>Arial,8,,0,clWindowText,0</FONT> -<PEN>1,1,4,0</PEN> -<FROMRELATIVEX>0</FROMRELATIVEX> -<FROMRELATIVEY>5000</FROMRELATIVEY> -<TORELATIVEX>9938</TORELATIVEX> -<TORELATIVEY>4194</TORELATIVEY> -<POINTS> -<POINT> -<X>274</X> -<Y>327</Y> -</POINT> -<POINT> -<X>274</X> -<Y>299</Y> -</POINT> -<POINT> -<X>274</X> -<Y>299</Y> -</POINT> -<POINT> -<X>274</X> -<Y>275</Y> -</POINT> -</POINTS> -</RELC> -<RELC> -<ID>97</ID> -<DIAGRAMID>1</DIAGRAMID> -<FONT>Arial,8,,0,clWindowText,0</FONT> -<PEN>1,1,4,0</PEN> -<FROMRELATIVEX>8369</FROMRELATIVEX> -<FROMRELATIVEY>5000</FROMRELATIVEY> -<TORELATIVEX>5000</TORELATIVEX> -<TORELATIVEY>5000</TORELATIVEY> -<POINTS> -<POINT> -<X>411</X> -<Y>109</Y> -</POINT> -<POINT> -<X>411</X> -<Y>161</Y> -</POINT> -<POINT> -<X>612</X> -<Y>161</Y> -</POINT> -<POINT> -<X>612</X> -<Y>181</Y> -</POINT> -</POINTS> -</RELC> -<RELC> -<ID>111</ID> -<DIAGRAMID>1</DIAGRAMID> -<FONT>Arial,8,,0,clWindowText,0</FONT> -<PEN>1,1,4,0</PEN> -<FROMRELATIVEX>5040</FROMRELATIVEX> -<FROMRELATIVEY>7619</FROMRELATIVEY> -<TORELATIVEX>5000</TORELATIVEX> -<TORELATIVEY>1296</TORELATIVEY> -<POINTS> -<POINT> -<X>879</X> -<Y>154</Y> -</POINT> -<POINT> -<X>879</X> -<Y>235</Y> -</POINT> -<POINT> -<X>879</X> -<Y>235</Y> -</POINT> -<POINT> -<X>879</X> -<Y>327</Y> -</POINT> -</POINTS> -</RELC> -<RELC> -<ID>112</ID> -<DIAGRAMID>1</DIAGRAMID> -<FONT>Arial,8,,0,clWindowText,0</FONT> -<PEN>1,1,4,0</PEN> -<FROMRELATIVEX>5040</FROMRELATIVEX> -<FROMRELATIVEY>5000</FROMRELATIVEY> -<TORELATIVEX>5000</TORELATIVEX> -<TORELATIVEY>3611</TORELATIVEY> -<POINTS> -<POINT> -<X>879</X> -<Y>479</Y> -</POINT> -<POINT> -<X>879</X> -<Y>447</Y> -</POINT> -<POINT> -<X>879</X> -<Y>447</Y> -</POINT> -<POINT> -<X>879</X> -<Y>436</Y> -</POINT> -</POINTS> -</RELC> -<RELC> -<ID>125</ID> -<DIAGRAMID>1</DIAGRAMID> -<FONT>Arial,8,,0,clWindowText,0</FONT> -<PEN>1,1,4,0</PEN> -<FROMRELATIVEX>5000</FROMRELATIVEX> -<FROMRELATIVEY>1429</FROMRELATIVEY> -<TORELATIVEX>5000</TORELATIVEX> -<TORELATIVEY>9167</TORELATIVEY> -<POINTS> -<POINT> -<X>751</X> -<Y>100</Y> -</POINT> -<POINT> -<X>578</X> -<Y>100</Y> -</POINT> -<POINT> -<X>578</X> -<Y>100</Y> -</POINT> -<POINT> -<X>434</X> -<Y>100</Y> -</POINT> -</POINTS> -</RELC> -<RELC> -<ID>138</ID> -<DIAGRAMID>1</DIAGRAMID> -<FONT>Arial,8,,0,clWindowText,0</FONT> -<PEN>1,1,4,0</PEN> -<FROMRELATIVEX>4973</FROMRELATIVEX> -<FROMRELATIVEY>5000</FROMRELATIVEY> -<TORELATIVEX>4973</TORELATIVEX> -<TORELATIVEY>5000</TORELATIVEY> -<POINTS> -<POINT> -<X>364</X> -<Y>573</Y> -</POINT> -<POINT> -<X>364</X> -<Y>585</Y> -</POINT> -<POINT> -<X>364</X> -<Y>585</Y> -</POINT> -<POINT> -<X>364</X> -<Y>627</Y> -</POINT> -</POINTS> -</RELC> -<RELC> -<ID>139</ID> -<DIAGRAMID>1</DIAGRAMID> -<FONT>Arial,8,,0,clWindowText,0</FONT> -<PEN>1,1,4,0</PEN> -<FROMRELATIVEX>929</FROMRELATIVEX> -<FROMRELATIVEY>4946</FROMRELATIVEY> -<TORELATIVEX>5000</TORELATIVEX> -<TORELATIVEY>4946</TORELATIVEY> -<POINTS> -<POINT> -<X>272</X> -<Y>674</Y> -</POINT> -<POINT> -<X>237</X> -<Y>674</Y> -</POINT> -<POINT> -<X>237</X> -<Y>674</Y> -</POINT> -<POINT> -<X>189</X> -<Y>674</Y> -</POINT> -</POINTS> -</RELC> -<RELC> -<ID>172</ID> -<DIAGRAMID>1</DIAGRAMID> -<FONT>Arial,8,,0,clWindowText,0</FONT> -<PEN>1,1,4,0</PEN> -<FROMRELATIVEX>5000</FROMRELATIVEX> -<FROMRELATIVEY>4194</FROMRELATIVEY> -<TORELATIVEX>5000</TORELATIVEX> -<TORELATIVEY>5000</TORELATIVEY> -<POINTS> -<POINT> -<X>458</X> -<Y>519</Y> -</POINT> -<POINT> -<X>469</X> -<Y>519</Y> -</POINT> -<POINT> -<X>469</X> -<Y>519</Y> -</POINT> -<POINT> -<X>504</X> -<Y>519</Y> -</POINT> -</POINTS> -</RELC> -<RELC> -<ID>174</ID> -<DIAGRAMID>1</DIAGRAMID> -<FONT>Arial,8,,0,clWindowText,0</FONT> -<PEN>1,1,4,0</PEN> -<FROMRELATIVEX>4633</FROMRELATIVEX> -<FROMRELATIVEY>5000</FROMRELATIVEY> -<TORELATIVEX>5000</TORELATIVEX> -<TORELATIVEY>5000</TORELATIVEY> -<POINTS> -<POINT> -<X>94</X> -<Y>627</Y> -</POINT> -<POINT> -<X>94</X> -<Y>585</Y> -</POINT> -<POINT> -<X>94</X> -<Y>585</Y> -</POINT> -<POINT> -<X>94</X> -<Y>573</Y> -</POINT> -</POINTS> -</RELC> -<RELC> -<ID>175</ID> -<DIAGRAMID>1</DIAGRAMID> -<FONT>Arial,8,,0,clWindowText,0</FONT> -<PEN>1,1,4,0</PEN> -<FROMRELATIVEX>5000</FROMRELATIVEX> -<FROMRELATIVEY>5000</FROMRELATIVEY> -<TORELATIVEX>4146</TORELATIVEX> -<TORELATIVEY>5000</TORELATIVEY> -<POINTS> -<POINT> -<X>80</X> -<Y>79</Y> -</POINT> -<POINT> -<X>80</X> -<Y>202</Y> -</POINT> -<POINT> -<X>80</X> -<Y>202</Y> -</POINT> -<POINT> -<X>80</X> -<Y>479</Y> -</POINT> -</POINTS> -</RELC> -</RELATIONSHIPCONNECTORS> -<SUBCATEGORYCONNECTORS> -</SUBCATEGORYCONNECTORS> -</CONTROLS> -</DIAGRAMS> -</VERSION><VERSION> -<VERSIONINFO> -<VERSIONNUMBER>1</VERSIONNUMBER> -<VERSIONLABEL>Version 2009-06-29</VERSIONLABEL> -<VERSIONDATE>2009-06-29 10:58</VERSIONDATE> -<VERSIONCOMMENTS></VERSIONCOMMENTS> -<VERSIONTYPE>DB</VERSIONTYPE> -<VERSIONTYPEDESC>Data dictionary only (no diagrams)</VERSIONTYPEDESC> -</VERSIONINFO> -<DATADICT> -<DBID>postgresql8</DBID> -<LASTID>46</LASTID> -<DDSETTINGS> -<PKCONNAMETEMPLATE>PK_%table%</PKCONNAMETEMPLATE> -<FKCONNAMETEMPLATE>%relname%</FKCONNAMETEMPLATE> -<CCONNAMETEMPLATE>CC_%table%_%column%</CCONNAMETEMPLATE> -<NOTNULLCONNAMETEMPLATE>NN_%column%</NOTNULLCONNAMETEMPLATE> -<DEFAULTCONNAMETEMPLATE>DEF_%table%_%column%</DEFAULTCONNAMETEMPLATE> -<TUCONNAMETEMPLATE>TUC_%table%_%counter%</TUCONNAMETEMPLATE> -<TCCONNAMETEMPLATE>TCC_%table%_%counter%</TCCONNAMETEMPLATE> -<RELNAMETEMPLATE>%parent%_%child%</RELNAMETEMPLATE> -<INDEXNAMETEMPLATE>IDX_%table%_%counter%</INDEXNAMETEMPLATE> -<DEFTABLEOPTIONS></DEFTABLEOPTIONS> -<DEFINDEXOPTIONS></DEFINDEXOPTIONS> -<BEGINDATABASESCRIPT></BEGINDATABASESCRIPT> -<ENDDATABASESCRIP></ENDDATABASESCRIP> -<BEGINALTERDATABASESCRIPT></BEGINALTERDATABASESCRIPT> -<ENDALTERDATABASESCRIP></ENDALTERDATABASESCRIP> -<BEGINDROPDATABASESCRIPT></BEGINDROPDATABASESCRIPT> -<ENDDROPDATABASESCRIP></ENDDROPDATABASESCRIP> -<GENDIALOGSELECTEDOBJECTS></GENDIALOGSELECTEDOBJECTS> -<GENTABLES>1</GENTABLES> -<GENTABLEOPTIONS>1</GENTABLEOPTIONS> -<GENCONSTRAINTS>1</GENCONSTRAINTS> -<GENINDEXES>1</GENINDEXES> -<GENTRIGGERS>1</GENTRIGGERS> -<GENVIEWS>1</GENVIEWS> -<GENPROCEDURES>1</GENPROCEDURES> -<GENSEQUENCES>1</GENSEQUENCES> -<GENRELATIONSHIPS>1</GENRELATIONSHIPS> -<GENBEGINENDTABLESCRIPTS>1</GENBEGINENDTABLESCRIPTS> -<GENBEGINENDDBSCRIPTS>1</GENBEGINENDDBSCRIPTS> -<GLOBALPREFIX></GLOBALPREFIX> -<AUTOCREATEINDEXESONKEYS>0</AUTOCREATEINDEXESONKEYS> -<CONVERTDOMAINS>0</CONVERTDOMAINS> -<IGNORECOMMENTS>0</IGNORECOMMENTS> -<USESCHEMANAMES>0</USESCHEMANAMES> -<UCONNAMETEMPLATE></UCONNAMETEMPLATE> -<SQLCREATEFILE>D:\User\felmer\dev-workspace\rtd_phosphonetx\source\sql\postgresql\001\schema-001.sql</SQLCREATEFILE> -<SQLDROPFILE>D:\User\felmer\dev-workspace\rtd_phosphonetx\targets\drop.sql</SQLDROPFILE> -</DDSETTINGS> -<DOMAINS> -<DOMAIN> -<NAME>BINARY_DATA</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>BYTEA</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>CHECKSUM</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>8</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>CODE</NAME> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>DESCRIPTION</NAME> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>2000</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>INTEGER_NUMBER</NAME> -<ID>7</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>INTEGER</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>REAL_NUMBER</NAME> -<ID>8</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>SEQUENCE</NAME> -<ID>9</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>TEXT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>SHORT_DESCRIPTION</NAME> -<ID>11</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>200</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>TECH_ID</NAME> -<ID>12</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -</DOMAINS> -<ENTITIES> -<ENT> -<NAME>ABUNDANCES_TYPES</NAME> -<ID>14</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>4</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_ABUNDANCES_TYPES</NAME> -<NAMETEMPLATE>PK_ABUNDANCES_TYPES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>CODE</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>5</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>DESCRIPTION</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>11</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>200</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -</ATTRIBUTES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_ABUNDANCES_TYPES_1</NAME> -<NAMETEMPLATE>TUC_ABUNDANCES_TYPES_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -<ENT> -<NAME>EXPERIMENTS</NAME> -<ID>16</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>3</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_EXPERIMENTS</NAME> -<NAMETEMPLATE>PK_EXPERIMENTS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PERM_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>5</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_EXPERIMENTS_1</NAME> -<NAMETEMPLATE>TUC_EXPERIMENTS_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -<ENT> -<NAME>DATA_SETS</NAME> -<NAMETEMPLATE>IX_FK_DATA_SETS_EXPERIMENTS</NAMETEMPLATE> -<ID>17</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>5</ATTRLASTID> -<IDXLASTID>3</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_DATA_SETS</NAME> -<NAMETEMPLATE>PK_DATA_SETS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>EXPE_ID</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>SAMP_ID</NAME> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PERM_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>5</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<INDEXES> -<INDEX> -<NAME>IX_FK_DATA_SETS_EXPERIMENTS</NAME> -<NAMETEMPLATE>IX_FK_DATA_SETS_EXPERIMENTS</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>EXPE_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>4</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -<INDEX> -<NAME>IX_FK_DATA_SETS_SAMPLES</NAME> -<NAMETEMPLATE>IX_FK_DATA_SETS_SAMPLES</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>SAMP_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>5</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -</INDEXES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_DATA_SETS_1</NAME> -<NAMETEMPLATE>TUC_DATA_SETS_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -<ENT> -<NAME>IDENTIFICATION_DATA</NAME> -<NAMETEMPLATE>IX_FK_IDENTIFICATION_DATA_SPECTRA</NAMETEMPLATE> -<ID>18</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>4</ATTRLASTID> -<IDXLASTID>2</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_IDENTIFICATION_DATA</NAME> -<NAMETEMPLATE>PK_IDENTIFICATION_DATA</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>SPEC_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -<ATTR> -<NAME>SPECTRA_COUNT</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>7</DOMAINID> -<DT> -<DTLISTNAME>INTEGER</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -</ATTRIBUTES> -<INDEXES> -<INDEX> -<NAME>IX_FK_IDENTIFICATION_DATA_SPECTRA</NAME> -<NAMETEMPLATE>IX_FK_IDENTIFICATION_DATA_SPECTRA</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>SPEC_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>3</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -</INDEXES> -</ENT> -<ENT> -<NAME>MODIFICATIONS</NAME> -<NAMETEMPLATE>IX_FK_MODIFICATIONS_PEPTIDES</NAMETEMPLATE> -<ID>19</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>6</ATTRLASTID> -<IDXLASTID>3</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_MODIFICATIONS</NAME> -<NAMETEMPLATE>PK_MODIFICATIONS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PEPT_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>MOTY_ID</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>POS</NAME> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>7</DOMAINID> -<DT> -<DTLISTNAME>INTEGER</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>MASS</NAME> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>6</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<INDEXES> -<INDEX> -<NAME>IX_FK_MODIFICATIONS_PEPTIDES</NAME> -<NAMETEMPLATE>IX_FK_MODIFICATIONS_PEPTIDES</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>PEPT_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>3</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -<INDEX> -<NAME>IX_FK_MODIFICATIONS_MODIFICATION_TYPES</NAME> -<NAMETEMPLATE>IX_FK_MODIFICATIONS_MODIFICATION_TYPES</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>MOTY_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>4</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -</INDEXES> -</ENT> -<ENT> -<NAME>MODIFICATION_TYPES</NAME> -<ID>20</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>6</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_MODIFICATION_TYPES</NAME> -<NAMETEMPLATE>PK_MODIFICATION_TYPES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>CODE</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>5</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>DESCRIPTION</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>11</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>200</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -<ATTR> -<NAME>MASS</NAME> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -<ATTR> -<NAME>DELTA_MASS</NAME> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -</ATTRIBUTES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_MODIFICATION_TYPES_1</NAME> -<NAMETEMPLATE>TUC_MODIFICATION_TYPES_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -<ENT> -<NAME>PEPTIDES</NAME> -<NAMETEMPLATE>IX_FK_PEPTIDES_ABUNDANCES</NAMETEMPLATE> -<ID>21</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>9</ATTRLASTID> -<IDXLASTID>5</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_PEPTIDES</NAME> -<NAMETEMPLATE>PK_PEPTIDES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PROT_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>SEQU_ID</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>ABTY_ID</NAME> -<ID>8</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -<ATTR> -<NAME>IDDA_ID</NAME> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -<ATTR> -<NAME>CHARGE</NAME> -<ID>7</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>7</DOMAINID> -<DT> -<DTLISTNAME>INTEGER</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>7</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>ABUNDANCE</NAME> -<ID>9</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -</ATTRIBUTES> -<INDEXES> -<INDEX> -<NAME>IX_FK_PEPTIDES_IDENTIFICATION_DATA</NAME> -<NAMETEMPLATE>IX_FK_PEPTIDES_IDENTIFICATION_DATA</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>IDDA_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>6</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -<INDEX> -<NAME>IX_FK_PEPTIDES_PROTEINS</NAME> -<NAMETEMPLATE>IX_FK_PEPTIDES_PROTEINS</NAMETEMPLATE> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>PROT_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>3</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -<INDEX> -<NAME>IX_FK_PEPTIDES_SEQUENCES</NAME> -<NAMETEMPLATE>IX_FK_PEPTIDES_SEQUENCES</NAMETEMPLATE> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>SEQU_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>4</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -</INDEXES> -</ENT> -<ENT> -<NAME>PROTEIN_STATISTICS</NAME> -<ID>22</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>2</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_PROTEIN_STATISTICS</NAME> -<NAMETEMPLATE>PK_PROTEIN_STATISTICS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -</ENT> -<ENT> -<NAME>PROTEINS</NAME> -<NAMETEMPLATE>IX_FK_PROTEINS_DATA_SETS</NAMETEMPLATE> -<ID>23</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>10</ATTRLASTID> -<IDXLASTID>5</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_PROTEINS</NAME> -<NAMETEMPLATE>PK_PROTEINS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>DASE_ID</NAME> -<ID>10</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>10</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>SEQU_ID</NAME> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -<ATTR> -<NAME>ABTY_ID</NAME> -<ID>8</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -<ATTR> -<NAME>PRST_ID</NAME> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -<ATTR> -<NAME>DESCRIPTION</NAME> -<ID>7</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>6</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>2000</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>7</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>ABUNDANCE</NAME> -<ID>9</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -</ATTRIBUTES> -<INDEXES> -<INDEX> -<NAME>IX_FK_PROTEINS_SEQUENCES</NAME> -<NAMETEMPLATE>IX_FK_PROTEINS_SEQUENCES</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>SEQU_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>5</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -<INDEX> -<NAME>IX_FK_PROTEINS_PROTEIN_STATISTICS</NAME> -<NAMETEMPLATE>IX_FK_PROTEINS_PROTEIN_STATISTICS</NAMETEMPLATE> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>PRST_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>6</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -</INDEXES> -</ENT> -<ENT> -<NAME>SAMPLES</NAME> -<ID>24</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>4</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_SAMPLES</NAME> -<NAMETEMPLATE>PK_SAMPLES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PERM_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>5</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>EXPE_ID</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_SAMPLES_1</NAME> -<NAMETEMPLATE>TUC_SAMPLES_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -<ENT> -<NAME>SEQUENCES</NAME> -<ID>25</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>4</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_SEQUENCES</NAME> -<NAMETEMPLATE>PK_SEQUENCES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>AMINO_ACID_SEQUENCE</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>9</DOMAINID> -<DT> -<DTLISTNAME>TEXT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>CHECKSUM</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>4</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>8</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -</ENT> -<ENT> -<NAME>SPECTRA</NAME> -<ID>26</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>3</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_SPECTRA</NAME> -<NAMETEMPLATE>PK_SPECTRA</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>DATA</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>3</DOMAINID> -<DT> -<DTLISTNAME>BYTEA</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -</ENT> -</ENTITIES> -<SUBCATEGORIES> -</SUBCATEGORIES> -<TEXTAREAS> -</TEXTAREAS> -<GROUPBOXES> -</GROUPBOXES> -<STAMPS> -</STAMPS> -<SEQUENCES> -<SEQUENCE> -<NAME>SEQ</NAME> -<ID>10</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<INCREMENT>1</INCREMENT> -<SEED>0</SEED> -<MAX>NOMAXVALUE</MAX> -<MIN>NOMINVALUE</MIN> -<CACHE></CACHE> -<CACHECODE></CACHECODE> -<CYCLE></CYCLE> -<ORDER></ORDER> -</SEQUENCE> -</SEQUENCES> -<PROCEDURES> -</PROCEDURES> -<VIEWS> -</VIEWS> -<RELATIONSHIPS> -<REL> -<NAME>DA_EX_FK</NAME> -<NAMETEMPLATE>DA_EX_FK</NAMETEMPLATE> -<ID>29</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>16</PARENTOBJECTID> -<CHILDOBJECTID>17</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>DA_EX_FK</NAME> -<NAMETEMPLATE>DA_EX_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>4</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>DA_SA_FK</NAME> -<NAMETEMPLATE>DA_SA_FK</NAMETEMPLATE> -<ID>30</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>24</PARENTOBJECTID> -<CHILDOBJECTID>17</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>DA_SA_FK</NAME> -<NAMETEMPLATE>DA_SA_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>5</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>ID_SP_FK</NAME> -<NAMETEMPLATE>ID_SP_FK</NAMETEMPLATE> -<ID>31</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>26</PARENTOBJECTID> -<CHILDOBJECTID>18</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>0</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>ID_SP_FK</NAME> -<NAMETEMPLATE>ID_SP_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>3</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>MO_PE_FK</NAME> -<NAMETEMPLATE>MO_PE_FK</NAMETEMPLATE> -<ID>32</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>21</PARENTOBJECTID> -<CHILDOBJECTID>19</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>MO_PE_FK</NAME> -<NAMETEMPLATE>MO_PE_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>3</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>MO_MT_FK</NAME> -<NAMETEMPLATE>MO_MT_FK</NAMETEMPLATE> -<ID>33</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>20</PARENTOBJECTID> -<CHILDOBJECTID>19</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>MO_MT_FK</NAME> -<NAMETEMPLATE>MO_MT_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>4</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>PE_ID_FK</NAME> -<NAMETEMPLATE>PE_ID_FK</NAMETEMPLATE> -<ID>35</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>18</PARENTOBJECTID> -<CHILDOBJECTID>21</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>0</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>PE_ID_FK</NAME> -<NAMETEMPLATE>PE_ID_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>6</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>6</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>PE_PR_FK</NAME> -<NAMETEMPLATE>PE_PR_FK</NAMETEMPLATE> -<ID>36</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>23</PARENTOBJECTID> -<CHILDOBJECTID>21</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>PE_PR_FK</NAME> -<NAMETEMPLATE>PE_PR_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>3</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>PE_SE_FK</NAME> -<NAMETEMPLATE>PE_SE_FK</NAMETEMPLATE> -<ID>37</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>25</PARENTOBJECTID> -<CHILDOBJECTID>21</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>PE_SE_FK</NAME> -<NAMETEMPLATE>PE_SE_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>4</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>PR_SE_FK</NAME> -<NAMETEMPLATE>PR_SE_FK</NAMETEMPLATE> -<ID>39</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>25</PARENTOBJECTID> -<CHILDOBJECTID>23</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>0</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>PR_SE_FK</NAME> -<NAMETEMPLATE>PR_SE_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>5</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>PR_PS_FK</NAME> -<NAMETEMPLATE>PR_PS_FK</NAMETEMPLATE> -<ID>41</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>22</PARENTOBJECTID> -<CHILDOBJECTID>23</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>0</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>PR_PS_FK</NAME> -<NAMETEMPLATE>PR_PS_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>6</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>6</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>ABUNDANCES_TYPES_PROTEINS</NAME> -<NAMETEMPLATE>ABUNDANCES_TYPES_PROTEINS</NAMETEMPLATE> -<ID>43</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>14</PARENTOBJECTID> -<CHILDOBJECTID>23</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>0</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>ABUNDANCES_TYPES_PROTEINS</NAME> -<NAMETEMPLATE>ABUNDANCES_TYPES_PROTEINS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>8</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>8</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>ABUNDANCES_TYPES_PEPTIDES</NAME> -<NAMETEMPLATE>ABUNDANCES_TYPES_PEPTIDES</NAMETEMPLATE> -<ID>44</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>14</PARENTOBJECTID> -<CHILDOBJECTID>21</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>0</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>ABUNDANCES_TYPES_PEPTIDES</NAME> -<NAMETEMPLATE>ABUNDANCES_TYPES_PEPTIDES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>8</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>8</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>DATA_SETS_PROTEINS</NAME> -<NAMETEMPLATE>DATA_SETS_PROTEINS</NAMETEMPLATE> -<ID>46</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>17</PARENTOBJECTID> -<CHILDOBJECTID>23</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>DATA_SETS_PROTEINS</NAME> -<NAMETEMPLATE>DATA_SETS_PROTEINS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>10</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>10</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -</RELATIONSHIPS> -<SUBCATEGORYCONNECTIONS> -</SUBCATEGORYCONNECTIONS> -</DATADICT> -</VERSION> -<VERSION> -<VERSIONINFO> -<VERSIONNUMBER>2</VERSIONNUMBER> -<VERSIONLABEL>Version 2009-06-29 1</VERSIONLABEL> -<VERSIONDATE>2009-06-29 11:02</VERSIONDATE> -<VERSIONCOMMENTS></VERSIONCOMMENTS> -<VERSIONTYPE>DB</VERSIONTYPE> -<VERSIONTYPEDESC>Data dictionary only (no diagrams)</VERSIONTYPEDESC> -</VERSIONINFO> -<DATADICT> -<DBID>postgresql8</DBID> -<LASTID>46</LASTID> -<DDSETTINGS> -<PKCONNAMETEMPLATE>PK_%table%</PKCONNAMETEMPLATE> -<FKCONNAMETEMPLATE>%relname%</FKCONNAMETEMPLATE> -<CCONNAMETEMPLATE>CC_%table%_%column%</CCONNAMETEMPLATE> -<NOTNULLCONNAMETEMPLATE>NN_%column%</NOTNULLCONNAMETEMPLATE> -<DEFAULTCONNAMETEMPLATE>DEF_%table%_%column%</DEFAULTCONNAMETEMPLATE> -<TUCONNAMETEMPLATE>TUC_%table%_%counter%</TUCONNAMETEMPLATE> -<TCCONNAMETEMPLATE>TCC_%table%_%counter%</TCCONNAMETEMPLATE> -<RELNAMETEMPLATE>%parent%_%child%</RELNAMETEMPLATE> -<INDEXNAMETEMPLATE>IDX_%table%_%counter%</INDEXNAMETEMPLATE> -<DEFTABLEOPTIONS></DEFTABLEOPTIONS> -<DEFINDEXOPTIONS></DEFINDEXOPTIONS> -<BEGINDATABASESCRIPT></BEGINDATABASESCRIPT> -<ENDDATABASESCRIP></ENDDATABASESCRIP> -<BEGINALTERDATABASESCRIPT></BEGINALTERDATABASESCRIPT> -<ENDALTERDATABASESCRIP></ENDALTERDATABASESCRIP> -<BEGINDROPDATABASESCRIPT></BEGINDROPDATABASESCRIPT> -<ENDDROPDATABASESCRIP></ENDDROPDATABASESCRIP> -<GENDIALOGSELECTEDOBJECTS></GENDIALOGSELECTEDOBJECTS> -<GENTABLES>1</GENTABLES> -<GENTABLEOPTIONS>1</GENTABLEOPTIONS> -<GENCONSTRAINTS>1</GENCONSTRAINTS> -<GENINDEXES>1</GENINDEXES> -<GENTRIGGERS>1</GENTRIGGERS> -<GENVIEWS>1</GENVIEWS> -<GENPROCEDURES>1</GENPROCEDURES> -<GENSEQUENCES>1</GENSEQUENCES> -<GENRELATIONSHIPS>1</GENRELATIONSHIPS> -<GENBEGINENDTABLESCRIPTS>1</GENBEGINENDTABLESCRIPTS> -<GENBEGINENDDBSCRIPTS>1</GENBEGINENDDBSCRIPTS> -<GLOBALPREFIX></GLOBALPREFIX> -<AUTOCREATEINDEXESONKEYS>0</AUTOCREATEINDEXESONKEYS> -<CONVERTDOMAINS>0</CONVERTDOMAINS> -<IGNORECOMMENTS>0</IGNORECOMMENTS> -<USESCHEMANAMES>0</USESCHEMANAMES> -<UCONNAMETEMPLATE></UCONNAMETEMPLATE> -<SQLCREATEFILE>D:\User\felmer\dev-workspace\rtd_phosphonetx\source\sql\postgresql\001\schema-001.sql</SQLCREATEFILE> -<SQLDROPFILE>D:\User\felmer\dev-workspace\rtd_phosphonetx\targets\drop.sql</SQLDROPFILE> -</DDSETTINGS> -<DOMAINS> -<DOMAIN> -<NAME>BINARY_DATA</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>BYTEA</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>CHECKSUM</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>8</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>CODE</NAME> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>DESCRIPTION</NAME> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>2000</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>INTEGER_NUMBER</NAME> -<ID>7</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>INTEGER</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>REAL_NUMBER</NAME> -<ID>8</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>SEQUENCE</NAME> -<ID>9</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>TEXT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>SHORT_DESCRIPTION</NAME> -<ID>11</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>200</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>TECH_ID</NAME> -<ID>12</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -</DOMAINS> -<ENTITIES> -<ENT> -<NAME>ABUNDANCES_TYPES</NAME> -<ID>14</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>4</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_ABUNDANCES_TYPES</NAME> -<NAMETEMPLATE>PK_ABUNDANCES_TYPES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>CODE</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>5</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>DESCRIPTION</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>11</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>200</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -</ATTRIBUTES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_ABUNDANCES_TYPES_1</NAME> -<NAMETEMPLATE>TUC_ABUNDANCES_TYPES_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -<ENT> -<NAME>EXPERIMENTS</NAME> -<ID>16</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>3</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_EXPERIMENTS</NAME> -<NAMETEMPLATE>PK_EXPERIMENTS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PERM_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>5</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_EXPERIMENTS_1</NAME> -<NAMETEMPLATE>TUC_EXPERIMENTS_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -<ENT> -<NAME>DATA_SETS</NAME> -<NAMETEMPLATE>IX_FK_DATA_SETS_EXPERIMENTS</NAMETEMPLATE> -<ID>17</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>5</ATTRLASTID> -<IDXLASTID>3</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_DATA_SETS</NAME> -<NAMETEMPLATE>PK_DATA_SETS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>EXPE_ID</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>SAMP_ID</NAME> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PERM_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>5</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<INDEXES> -<INDEX> -<NAME>IX_FK_DATA_SETS_EXPERIMENTS</NAME> -<NAMETEMPLATE>IX_FK_DATA_SETS_EXPERIMENTS</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>EXPE_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>4</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -<INDEX> -<NAME>IX_FK_DATA_SETS_SAMPLES</NAME> -<NAMETEMPLATE>IX_FK_DATA_SETS_SAMPLES</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>SAMP_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>5</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -</INDEXES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_DATA_SETS_1</NAME> -<NAMETEMPLATE>TUC_DATA_SETS_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -<ENT> -<NAME>IDENTIFICATION_DATA</NAME> -<NAMETEMPLATE>IX_FK_IDENTIFICATION_DATA_SPECTRA</NAMETEMPLATE> -<ID>18</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>4</ATTRLASTID> -<IDXLASTID>2</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_IDENTIFICATION_DATA</NAME> -<NAMETEMPLATE>PK_IDENTIFICATION_DATA</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>SPEC_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -<ATTR> -<NAME>SPECTRA_COUNT</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>7</DOMAINID> -<DT> -<DTLISTNAME>INTEGER</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -</ATTRIBUTES> -<INDEXES> -<INDEX> -<NAME>IX_FK_IDENTIFICATION_DATA_SPECTRA</NAME> -<NAMETEMPLATE>IX_FK_IDENTIFICATION_DATA_SPECTRA</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>SPEC_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>3</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -</INDEXES> -</ENT> -<ENT> -<NAME>MODIFICATIONS</NAME> -<NAMETEMPLATE>IX_FK_MODIFICATIONS_PEPTIDES</NAMETEMPLATE> -<ID>19</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>6</ATTRLASTID> -<IDXLASTID>3</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_MODIFICATIONS</NAME> -<NAMETEMPLATE>PK_MODIFICATIONS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PEPT_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>MOTY_ID</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>POS</NAME> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>7</DOMAINID> -<DT> -<DTLISTNAME>INTEGER</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>MASS</NAME> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>6</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<INDEXES> -<INDEX> -<NAME>IX_FK_MODIFICATIONS_PEPTIDES</NAME> -<NAMETEMPLATE>IX_FK_MODIFICATIONS_PEPTIDES</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>PEPT_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>3</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -<INDEX> -<NAME>IX_FK_MODIFICATIONS_MODIFICATION_TYPES</NAME> -<NAMETEMPLATE>IX_FK_MODIFICATIONS_MODIFICATION_TYPES</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>MOTY_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>4</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -</INDEXES> -</ENT> -<ENT> -<NAME>MODIFICATION_TYPES</NAME> -<ID>20</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>6</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_MODIFICATION_TYPES</NAME> -<NAMETEMPLATE>PK_MODIFICATION_TYPES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>CODE</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>5</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>DESCRIPTION</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>11</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>200</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -<ATTR> -<NAME>MASS</NAME> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -<ATTR> -<NAME>DELTA_MASS</NAME> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -</ATTRIBUTES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_MODIFICATION_TYPES_1</NAME> -<NAMETEMPLATE>TUC_MODIFICATION_TYPES_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -<ENT> -<NAME>PEPTIDES</NAME> -<NAMETEMPLATE>IX_FK_PEPTIDES_ABUNDANCES</NAMETEMPLATE> -<ID>21</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>9</ATTRLASTID> -<IDXLASTID>5</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_PEPTIDES</NAME> -<NAMETEMPLATE>PK_PEPTIDES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PROT_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>SEQU_ID</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>ABTY_ID</NAME> -<ID>8</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -<ATTR> -<NAME>IDDA_ID</NAME> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -<ATTR> -<NAME>CHARGE</NAME> -<ID>7</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>7</DOMAINID> -<DT> -<DTLISTNAME>INTEGER</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>7</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>ABUNDANCE</NAME> -<ID>9</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -</ATTRIBUTES> -<INDEXES> -<INDEX> -<NAME>IX_FK_PEPTIDES_IDENTIFICATION_DATA</NAME> -<NAMETEMPLATE>IX_FK_PEPTIDES_IDENTIFICATION_DATA</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>IDDA_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>6</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -<INDEX> -<NAME>IX_FK_PEPTIDES_PROTEINS</NAME> -<NAMETEMPLATE>IX_FK_PEPTIDES_PROTEINS</NAMETEMPLATE> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>PROT_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>3</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -<INDEX> -<NAME>IX_FK_PEPTIDES_SEQUENCES</NAME> -<NAMETEMPLATE>IX_FK_PEPTIDES_SEQUENCES</NAMETEMPLATE> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>SEQU_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>4</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -</INDEXES> -</ENT> -<ENT> -<NAME>PROTEIN_STATISTICS</NAME> -<ID>22</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>2</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_PROTEIN_STATISTICS</NAME> -<NAMETEMPLATE>PK_PROTEIN_STATISTICS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -</ENT> -<ENT> -<NAME>PROTEINS</NAME> -<NAMETEMPLATE>IX_FK_PROTEINS_DATA_SETS</NAMETEMPLATE> -<ID>23</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>10</ATTRLASTID> -<IDXLASTID>7</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_PROTEINS</NAME> -<NAMETEMPLATE>PK_PROTEINS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>DASE_ID</NAME> -<ID>10</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>10</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>SEQU_ID</NAME> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -<ATTR> -<NAME>ABTY_ID</NAME> -<ID>8</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -<ATTR> -<NAME>PRST_ID</NAME> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -<ATTR> -<NAME>DESCRIPTION</NAME> -<ID>7</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>6</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>2000</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>7</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>ABUNDANCE</NAME> -<ID>9</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -</ATTRIBUTES> -<INDEXES> -<INDEX> -<NAME>IX_FK_PROTEINS_SEQUENCES</NAME> -<NAMETEMPLATE>IX_FK_PROTEINS_SEQUENCES</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>SEQU_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>5</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -<INDEX> -<NAME>IX_FK_PROTEINS_PROTEIN_STATISTICS</NAME> -<NAMETEMPLATE>IX_FK_PROTEINS_PROTEIN_STATISTICS</NAMETEMPLATE> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>PRST_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>6</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -<INDEX> -<NAME>IDX_PROTEINS_3</NAME> -<NAMETEMPLATE>IDX_PROTEINS_3</NAMETEMPLATE> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>DASE_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>10</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -</INDEXES> -</ENT> -<ENT> -<NAME>SAMPLES</NAME> -<ID>24</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>4</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_SAMPLES</NAME> -<NAMETEMPLATE>PK_SAMPLES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PERM_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>5</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>EXPE_ID</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_SAMPLES_1</NAME> -<NAMETEMPLATE>TUC_SAMPLES_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -<ENT> -<NAME>SEQUENCES</NAME> -<ID>25</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>4</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_SEQUENCES</NAME> -<NAMETEMPLATE>PK_SEQUENCES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>AMINO_ACID_SEQUENCE</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>9</DOMAINID> -<DT> -<DTLISTNAME>TEXT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>CHECKSUM</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>4</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>8</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -</ENT> -<ENT> -<NAME>SPECTRA</NAME> -<ID>26</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>3</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_SPECTRA</NAME> -<NAMETEMPLATE>PK_SPECTRA</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>DATA</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>3</DOMAINID> -<DT> -<DTLISTNAME>BYTEA</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -</ENT> -</ENTITIES> -<SUBCATEGORIES> -</SUBCATEGORIES> -<TEXTAREAS> -</TEXTAREAS> -<GROUPBOXES> -</GROUPBOXES> -<STAMPS> -</STAMPS> -<SEQUENCES> -</SEQUENCES> -<PROCEDURES> -</PROCEDURES> -<VIEWS> -</VIEWS> -<RELATIONSHIPS> -<REL> -<NAME>DA_EX_FK</NAME> -<NAMETEMPLATE>DA_EX_FK</NAMETEMPLATE> -<ID>29</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>16</PARENTOBJECTID> -<CHILDOBJECTID>17</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>DA_EX_FK</NAME> -<NAMETEMPLATE>DA_EX_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>4</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>DA_SA_FK</NAME> -<NAMETEMPLATE>DA_SA_FK</NAMETEMPLATE> -<ID>30</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>24</PARENTOBJECTID> -<CHILDOBJECTID>17</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>DA_SA_FK</NAME> -<NAMETEMPLATE>DA_SA_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>5</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>ID_SP_FK</NAME> -<NAMETEMPLATE>ID_SP_FK</NAMETEMPLATE> -<ID>31</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>26</PARENTOBJECTID> -<CHILDOBJECTID>18</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>0</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>ID_SP_FK</NAME> -<NAMETEMPLATE>ID_SP_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>3</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>MO_PE_FK</NAME> -<NAMETEMPLATE>MO_PE_FK</NAMETEMPLATE> -<ID>32</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>21</PARENTOBJECTID> -<CHILDOBJECTID>19</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>MO_PE_FK</NAME> -<NAMETEMPLATE>MO_PE_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>3</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>MO_MT_FK</NAME> -<NAMETEMPLATE>MO_MT_FK</NAMETEMPLATE> -<ID>33</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>20</PARENTOBJECTID> -<CHILDOBJECTID>19</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>MO_MT_FK</NAME> -<NAMETEMPLATE>MO_MT_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>4</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>PE_ID_FK</NAME> -<NAMETEMPLATE>PE_ID_FK</NAMETEMPLATE> -<ID>35</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>18</PARENTOBJECTID> -<CHILDOBJECTID>21</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>0</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>PE_ID_FK</NAME> -<NAMETEMPLATE>PE_ID_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>6</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>6</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>PE_PR_FK</NAME> -<NAMETEMPLATE>PE_PR_FK</NAMETEMPLATE> -<ID>36</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>23</PARENTOBJECTID> -<CHILDOBJECTID>21</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>PE_PR_FK</NAME> -<NAMETEMPLATE>PE_PR_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>3</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>PE_SE_FK</NAME> -<NAMETEMPLATE>PE_SE_FK</NAMETEMPLATE> -<ID>37</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>25</PARENTOBJECTID> -<CHILDOBJECTID>21</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>PE_SE_FK</NAME> -<NAMETEMPLATE>PE_SE_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>4</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>PR_SE_FK</NAME> -<NAMETEMPLATE>PR_SE_FK</NAMETEMPLATE> -<ID>39</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>25</PARENTOBJECTID> -<CHILDOBJECTID>23</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>0</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>PR_SE_FK</NAME> -<NAMETEMPLATE>PR_SE_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>5</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>PR_PS_FK</NAME> -<NAMETEMPLATE>PR_PS_FK</NAMETEMPLATE> -<ID>41</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>22</PARENTOBJECTID> -<CHILDOBJECTID>23</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>0</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>PR_PS_FK</NAME> -<NAMETEMPLATE>PR_PS_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>6</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>6</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>ABUNDANCES_TYPES_PROTEINS</NAME> -<NAMETEMPLATE>ABUNDANCES_TYPES_PROTEINS</NAMETEMPLATE> -<ID>43</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>14</PARENTOBJECTID> -<CHILDOBJECTID>23</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>0</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>ABUNDANCES_TYPES_PROTEINS</NAME> -<NAMETEMPLATE>ABUNDANCES_TYPES_PROTEINS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>8</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>8</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>ABUNDANCES_TYPES_PEPTIDES</NAME> -<NAMETEMPLATE>ABUNDANCES_TYPES_PEPTIDES</NAMETEMPLATE> -<ID>44</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>14</PARENTOBJECTID> -<CHILDOBJECTID>21</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>0</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>ABUNDANCES_TYPES_PEPTIDES</NAME> -<NAMETEMPLATE>ABUNDANCES_TYPES_PEPTIDES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>8</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>8</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>DATA_SETS_PROTEINS</NAME> -<NAMETEMPLATE>DATA_SETS_PROTEINS</NAMETEMPLATE> -<ID>46</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>17</PARENTOBJECTID> -<CHILDOBJECTID>23</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>DATA_SETS_PROTEINS</NAME> -<NAMETEMPLATE>DATA_SETS_PROTEINS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>10</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>10</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -</RELATIONSHIPS> -<SUBCATEGORYCONNECTIONS> -</SUBCATEGORYCONNECTIONS> -</DATADICT> -</VERSION> -<VERSION> -<VERSIONINFO> -<VERSIONNUMBER>3</VERSIONNUMBER> -<VERSIONLABEL>Version 2009-06-29 2</VERSIONLABEL> -<VERSIONDATE>2009-06-29 12:29</VERSIONDATE> -<VERSIONCOMMENTS></VERSIONCOMMENTS> -<VERSIONTYPE>DB</VERSIONTYPE> -<VERSIONTYPEDESC>Data dictionary only (no diagrams)</VERSIONTYPEDESC> -</VERSIONINFO> -<DATADICT> -<DBID>postgresql8</DBID> -<LASTID>48</LASTID> -<DDSETTINGS> -<PKCONNAMETEMPLATE>PK_%table%</PKCONNAMETEMPLATE> -<FKCONNAMETEMPLATE>%relname%</FKCONNAMETEMPLATE> -<CCONNAMETEMPLATE>CC_%table%_%column%</CCONNAMETEMPLATE> -<NOTNULLCONNAMETEMPLATE>NN_%column%</NOTNULLCONNAMETEMPLATE> -<DEFAULTCONNAMETEMPLATE>DEF_%table%_%column%</DEFAULTCONNAMETEMPLATE> -<TUCONNAMETEMPLATE>TUC_%table%_%counter%</TUCONNAMETEMPLATE> -<TCCONNAMETEMPLATE>TCC_%table%_%counter%</TCCONNAMETEMPLATE> -<RELNAMETEMPLATE>%parent%_%child%</RELNAMETEMPLATE> -<INDEXNAMETEMPLATE>IDX_%table%_%counter%</INDEXNAMETEMPLATE> -<DEFTABLEOPTIONS></DEFTABLEOPTIONS> -<DEFINDEXOPTIONS></DEFINDEXOPTIONS> -<BEGINDATABASESCRIPT></BEGINDATABASESCRIPT> -<ENDDATABASESCRIP></ENDDATABASESCRIP> -<BEGINALTERDATABASESCRIPT></BEGINALTERDATABASESCRIPT> -<ENDALTERDATABASESCRIP></ENDALTERDATABASESCRIP> -<BEGINDROPDATABASESCRIPT></BEGINDROPDATABASESCRIPT> -<ENDDROPDATABASESCRIP></ENDDROPDATABASESCRIP> -<GENDIALOGSELECTEDOBJECTS></GENDIALOGSELECTEDOBJECTS> -<GENTABLES>1</GENTABLES> -<GENTABLEOPTIONS>1</GENTABLEOPTIONS> -<GENCONSTRAINTS>1</GENCONSTRAINTS> -<GENINDEXES>1</GENINDEXES> -<GENTRIGGERS>1</GENTRIGGERS> -<GENVIEWS>1</GENVIEWS> -<GENPROCEDURES>1</GENPROCEDURES> -<GENSEQUENCES>1</GENSEQUENCES> -<GENRELATIONSHIPS>1</GENRELATIONSHIPS> -<GENBEGINENDTABLESCRIPTS>1</GENBEGINENDTABLESCRIPTS> -<GENBEGINENDDBSCRIPTS>1</GENBEGINENDDBSCRIPTS> -<GLOBALPREFIX></GLOBALPREFIX> -<AUTOCREATEINDEXESONKEYS>0</AUTOCREATEINDEXESONKEYS> -<CONVERTDOMAINS>0</CONVERTDOMAINS> -<IGNORECOMMENTS>0</IGNORECOMMENTS> -<USESCHEMANAMES>0</USESCHEMANAMES> -<UCONNAMETEMPLATE></UCONNAMETEMPLATE> -<SQLCREATEFILE>D:\User\felmer\dev-workspace\rtd_phosphonetx\source\sql\postgresql\001\schema-001.sql</SQLCREATEFILE> -<SQLDROPFILE>D:\User\felmer\dev-workspace\rtd_phosphonetx\targets\drop.sql</SQLDROPFILE> -</DDSETTINGS> -<DOMAINS> -<DOMAIN> -<NAME>BINARY_DATA</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>BYTEA</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>CHECKSUM</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>8</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>CODE</NAME> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>DESCRIPTION</NAME> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>2000</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>INTEGER_NUMBER</NAME> -<ID>7</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>INTEGER</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>REAL_NUMBER</NAME> -<ID>8</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>SEQUENCE</NAME> -<ID>9</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>TEXT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>SHORT_DESCRIPTION</NAME> -<ID>11</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>200</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>TECH_ID</NAME> -<ID>12</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -</DOMAINS> -<ENTITIES> -<ENT> -<NAME>ABUNDANCES_TYPES</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>14</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>4</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_ABUNDANCES_TYPES</NAME> -<NAMETEMPLATE>PK_ABUNDANCES_TYPES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>CODE</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>5</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>DESCRIPTION</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>11</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>200</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -</ATTRIBUTES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_ABUNDANCES_TYPES_1</NAME> -<NAMETEMPLATE>TUC_ABUNDANCES_TYPES_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -<ENT> -<NAME>EXPERIMENTS</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>16</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>3</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_EXPERIMENTS</NAME> -<NAMETEMPLATE>PK_EXPERIMENTS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PERM_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>5</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_EXPERIMENTS_1</NAME> -<NAMETEMPLATE>TUC_EXPERIMENTS_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -<ENT> -<NAME>DATA_SETS</NAME> -<NAMETEMPLATE>IX_FK_DATA_SETS_EXPERIMENTS</NAMETEMPLATE> -<ID>17</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>5</ATTRLASTID> -<IDXLASTID>3</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_DATA_SETS</NAME> -<NAMETEMPLATE>PK_DATA_SETS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>EXPE_ID</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>SAMP_ID</NAME> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PERM_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>5</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<INDEXES> -<INDEX> -<NAME>IX_FK_DATA_SETS_EXPERIMENTS</NAME> -<NAMETEMPLATE>IX_FK_DATA_SETS_EXPERIMENTS</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>EXPE_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>4</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -<INDEX> -<NAME>IX_FK_DATA_SETS_SAMPLES</NAME> -<NAMETEMPLATE>IX_FK_DATA_SETS_SAMPLES</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>SAMP_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>5</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -</INDEXES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_DATA_SETS_1</NAME> -<NAMETEMPLATE>TUC_DATA_SETS_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -<ENT> -<NAME>IDENTIFICATION_DATA</NAME> -<NAMETEMPLATE>IX_FK_IDENTIFICATION_DATA_SPECTRA</NAMETEMPLATE> -<ID>18</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>4</ATTRLASTID> -<IDXLASTID>2</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_IDENTIFICATION_DATA</NAME> -<NAMETEMPLATE>PK_IDENTIFICATION_DATA</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>SPEC_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -<ATTR> -<NAME>SPECTRA_COUNT</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>7</DOMAINID> -<DT> -<DTLISTNAME>INTEGER</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -</ATTRIBUTES> -<INDEXES> -<INDEX> -<NAME>IX_FK_IDENTIFICATION_DATA_SPECTRA</NAME> -<NAMETEMPLATE>IX_FK_IDENTIFICATION_DATA_SPECTRA</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>SPEC_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>3</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -</INDEXES> -</ENT> -<ENT> -<NAME>MODIFICATIONS</NAME> -<NAMETEMPLATE>IX_FK_MODIFICATIONS_PEPTIDES</NAMETEMPLATE> -<ID>19</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>6</ATTRLASTID> -<IDXLASTID>3</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_MODIFICATIONS</NAME> -<NAMETEMPLATE>PK_MODIFICATIONS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PEPT_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>MOTY_ID</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>POS</NAME> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>7</DOMAINID> -<DT> -<DTLISTNAME>INTEGER</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>MASS</NAME> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>6</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<INDEXES> -<INDEX> -<NAME>IX_FK_MODIFICATIONS_PEPTIDES</NAME> -<NAMETEMPLATE>IX_FK_MODIFICATIONS_PEPTIDES</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>PEPT_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>3</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -<INDEX> -<NAME>IX_FK_MODIFICATIONS_MODIFICATION_TYPES</NAME> -<NAMETEMPLATE>IX_FK_MODIFICATIONS_MODIFICATION_TYPES</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>MOTY_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>4</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -</INDEXES> -</ENT> -<ENT> -<NAME>MODIFICATION_TYPES</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>20</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>6</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_MODIFICATION_TYPES</NAME> -<NAMETEMPLATE>PK_MODIFICATION_TYPES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>CODE</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>5</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>DESCRIPTION</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>11</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>200</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -<ATTR> -<NAME>MASS</NAME> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -<ATTR> -<NAME>DELTA_MASS</NAME> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -</ATTRIBUTES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_MODIFICATION_TYPES_1</NAME> -<NAMETEMPLATE>TUC_MODIFICATION_TYPES_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -<ENT> -<NAME>PEPTIDES</NAME> -<NAMETEMPLATE>IX_FK_PEPTIDES_ABUNDANCES</NAMETEMPLATE> -<ID>21</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>9</ATTRLASTID> -<IDXLASTID>5</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_PEPTIDES</NAME> -<NAMETEMPLATE>PK_PEPTIDES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PROT_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>SEQU_ID</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>ABTY_ID</NAME> -<ID>8</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -<ATTR> -<NAME>IDDA_ID</NAME> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -<ATTR> -<NAME>CHARGE</NAME> -<ID>7</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>7</DOMAINID> -<DT> -<DTLISTNAME>INTEGER</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>7</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>ABUNDANCE</NAME> -<ID>9</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -</ATTRIBUTES> -<INDEXES> -<INDEX> -<NAME>IX_FK_PEPTIDES_IDENTIFICATION_DATA</NAME> -<NAMETEMPLATE>IX_FK_PEPTIDES_IDENTIFICATION_DATA</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>IDDA_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>6</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -<INDEX> -<NAME>IX_FK_PEPTIDES_PROTEINS</NAME> -<NAMETEMPLATE>IX_FK_PEPTIDES_PROTEINS</NAMETEMPLATE> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>PROT_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>3</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -<INDEX> -<NAME>IX_FK_PEPTIDES_SEQUENCES</NAME> -<NAMETEMPLATE>IX_FK_PEPTIDES_SEQUENCES</NAMETEMPLATE> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>SEQU_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>4</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -</INDEXES> -</ENT> -<ENT> -<NAME>PROTEIN_STATISTICS</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>22</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>2</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_PROTEIN_STATISTICS</NAME> -<NAMETEMPLATE>PK_PROTEIN_STATISTICS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -</ENT> -<ENT> -<NAME>PROTEINS</NAME> -<NAMETEMPLATE>IX_FK_PROTEINS_DATA_SETS</NAMETEMPLATE> -<ID>23</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>10</ATTRLASTID> -<IDXLASTID>7</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_PROTEINS</NAME> -<NAMETEMPLATE>PK_PROTEINS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>DASE_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>10</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>10</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>SEQU_ID</NAME> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -<ATTR> -<NAME>ABTY_ID</NAME> -<ID>8</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -<ATTR> -<NAME>PRST_ID</NAME> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -<ATTR> -<NAME>ABUNDANCE</NAME> -<ID>9</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -</ATTRIBUTES> -<INDEXES> -<INDEX> -<NAME>IX_FK_PROTEINS_SEQUENCES</NAME> -<NAMETEMPLATE>IX_FK_PROTEINS_SEQUENCES</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>SEQU_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>5</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -<INDEX> -<NAME>IX_FK_PROTEINS_PROTEIN_STATISTICS</NAME> -<NAMETEMPLATE>IX_FK_PROTEINS_PROTEIN_STATISTICS</NAMETEMPLATE> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>PRST_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>6</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -<INDEX> -<NAME>IDX_PROTEINS_3</NAME> -<NAMETEMPLATE>IDX_PROTEINS_3</NAMETEMPLATE> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>DASE_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>10</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -</INDEXES> -</ENT> -<ENT> -<NAME>SAMPLES</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>24</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>4</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_SAMPLES</NAME> -<NAMETEMPLATE>PK_SAMPLES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PERM_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>5</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>EXPE_ID</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_SAMPLES_1</NAME> -<NAMETEMPLATE>TUC_SAMPLES_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -<ENT> -<NAME>SEQUENCES</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>25</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>4</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_SEQUENCES</NAME> -<NAMETEMPLATE>PK_SEQUENCES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>AMINO_ACID_SEQUENCE</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>9</DOMAINID> -<DT> -<DTLISTNAME>TEXT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>CHECKSUM</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>4</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>8</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -</ENT> -<ENT> -<NAME>SPECTRA</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>26</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>3</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_SPECTRA</NAME> -<NAMETEMPLATE>PK_SPECTRA</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>DATA</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>3</DOMAINID> -<DT> -<DTLISTNAME>BYTEA</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -</ENT> -<ENT> -<NAME>IDENTIFIED_PROTEINS</NAME> -<ID>47</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>4</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_IDENTIFIED_PROTEINS</NAME> -<NAMETEMPLATE>PK_IDENTIFIED_PROTEINS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PROT_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>DESCRIPTION</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>6</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>2000</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -</ENT> -</ENTITIES> -<SUBCATEGORIES> -</SUBCATEGORIES> -<TEXTAREAS> -</TEXTAREAS> -<GROUPBOXES> -</GROUPBOXES> -<STAMPS> -</STAMPS> -<SEQUENCES> -</SEQUENCES> -<PROCEDURES> -</PROCEDURES> -<VIEWS> -</VIEWS> -<RELATIONSHIPS> -<REL> -<NAME>DA_EX_FK</NAME> -<NAMETEMPLATE>DA_EX_FK</NAMETEMPLATE> -<ID>29</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>16</PARENTOBJECTID> -<CHILDOBJECTID>17</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>DA_EX_FK</NAME> -<NAMETEMPLATE>DA_EX_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>4</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>DA_SA_FK</NAME> -<NAMETEMPLATE>DA_SA_FK</NAMETEMPLATE> -<ID>30</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>24</PARENTOBJECTID> -<CHILDOBJECTID>17</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>DA_SA_FK</NAME> -<NAMETEMPLATE>DA_SA_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>5</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>ID_SP_FK</NAME> -<NAMETEMPLATE>ID_SP_FK</NAMETEMPLATE> -<ID>31</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>26</PARENTOBJECTID> -<CHILDOBJECTID>18</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>0</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>ID_SP_FK</NAME> -<NAMETEMPLATE>ID_SP_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>3</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>MO_PE_FK</NAME> -<NAMETEMPLATE>MO_PE_FK</NAMETEMPLATE> -<ID>32</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>21</PARENTOBJECTID> -<CHILDOBJECTID>19</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>MO_PE_FK</NAME> -<NAMETEMPLATE>MO_PE_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>3</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>MO_MT_FK</NAME> -<NAMETEMPLATE>MO_MT_FK</NAMETEMPLATE> -<ID>33</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>20</PARENTOBJECTID> -<CHILDOBJECTID>19</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>MO_MT_FK</NAME> -<NAMETEMPLATE>MO_MT_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>4</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>PE_ID_FK</NAME> -<NAMETEMPLATE>PE_ID_FK</NAMETEMPLATE> -<ID>35</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>18</PARENTOBJECTID> -<CHILDOBJECTID>21</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>0</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>PE_ID_FK</NAME> -<NAMETEMPLATE>PE_ID_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>6</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>6</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>PE_PR_FK</NAME> -<NAMETEMPLATE>PE_PR_FK</NAMETEMPLATE> -<ID>36</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>23</PARENTOBJECTID> -<CHILDOBJECTID>21</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>PE_PR_FK</NAME> -<NAMETEMPLATE>PE_PR_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>3</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>PE_SE_FK</NAME> -<NAMETEMPLATE>PE_SE_FK</NAMETEMPLATE> -<ID>37</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>25</PARENTOBJECTID> -<CHILDOBJECTID>21</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>PE_SE_FK</NAME> -<NAMETEMPLATE>PE_SE_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>4</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>PR_SE_FK</NAME> -<NAMETEMPLATE>PR_SE_FK</NAMETEMPLATE> -<ID>39</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>25</PARENTOBJECTID> -<CHILDOBJECTID>23</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>0</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>PR_SE_FK</NAME> -<NAMETEMPLATE>PR_SE_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>5</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>PR_PS_FK</NAME> -<NAMETEMPLATE>PR_PS_FK</NAMETEMPLATE> -<ID>41</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>22</PARENTOBJECTID> -<CHILDOBJECTID>23</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>0</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>PR_PS_FK</NAME> -<NAMETEMPLATE>PR_PS_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>6</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>6</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>ABUNDANCES_TYPES_PROTEINS</NAME> -<NAMETEMPLATE>ABUNDANCES_TYPES_PROTEINS</NAMETEMPLATE> -<ID>43</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>14</PARENTOBJECTID> -<CHILDOBJECTID>23</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>0</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>ABUNDANCES_TYPES_PROTEINS</NAME> -<NAMETEMPLATE>ABUNDANCES_TYPES_PROTEINS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>8</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>8</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>ABUNDANCES_TYPES_PEPTIDES</NAME> -<NAMETEMPLATE>ABUNDANCES_TYPES_PEPTIDES</NAMETEMPLATE> -<ID>44</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>14</PARENTOBJECTID> -<CHILDOBJECTID>21</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>0</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>ABUNDANCES_TYPES_PEPTIDES</NAME> -<NAMETEMPLATE>ABUNDANCES_TYPES_PEPTIDES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>8</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>8</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>DATA_SETS_PROTEINS</NAME> -<NAMETEMPLATE>DATA_SETS_PROTEINS</NAMETEMPLATE> -<ID>46</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>17</PARENTOBJECTID> -<CHILDOBJECTID>23</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>DATA_SETS_PROTEINS</NAME> -<NAMETEMPLATE>DATA_SETS_PROTEINS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>10</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>10</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>PROTEINS_IDENTIFIED_PROTEINS</NAME> -<NAMETEMPLATE>PROTEINS_IDENTIFIED_PROTEINS</NAMETEMPLATE> -<ID>48</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>23</PARENTOBJECTID> -<CHILDOBJECTID>47</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>PROTEINS_IDENTIFIED_PROTEINS</NAME> -<NAMETEMPLATE>PROTEINS_IDENTIFIED_PROTEINS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>3</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -</RELATIONSHIPS> -<SUBCATEGORYCONNECTIONS> -</SUBCATEGORYCONNECTIONS> -</DATADICT> -</VERSION> -<VERSION> -<VERSIONINFO> -<VERSIONNUMBER>4</VERSIONNUMBER> -<VERSIONLABEL>Version 2009-06-30</VERSIONLABEL> -<VERSIONDATE>2009-06-30 09:00</VERSIONDATE> -<VERSIONCOMMENTS></VERSIONCOMMENTS> -<VERSIONTYPE>DB</VERSIONTYPE> -<VERSIONTYPEDESC>Data dictionary only (no diagrams)</VERSIONTYPEDESC> -</VERSIONINFO> -<DATADICT> -<DBID>postgresql8</DBID> -<LASTID>97</LASTID> -<DDSETTINGS> -<PKCONNAMETEMPLATE>PK_%table%</PKCONNAMETEMPLATE> -<FKCONNAMETEMPLATE>%relname%</FKCONNAMETEMPLATE> -<CCONNAMETEMPLATE>CC_%table%_%column%</CCONNAMETEMPLATE> -<NOTNULLCONNAMETEMPLATE>NN_%column%</NOTNULLCONNAMETEMPLATE> -<DEFAULTCONNAMETEMPLATE>DEF_%table%_%column%</DEFAULTCONNAMETEMPLATE> -<TUCONNAMETEMPLATE>TUC_%table%_%counter%</TUCONNAMETEMPLATE> -<TCCONNAMETEMPLATE>TCC_%table%_%counter%</TCCONNAMETEMPLATE> -<RELNAMETEMPLATE>%parent%_%child%</RELNAMETEMPLATE> -<INDEXNAMETEMPLATE>IDX_%table%_%counter%</INDEXNAMETEMPLATE> -<DEFTABLEOPTIONS></DEFTABLEOPTIONS> -<DEFINDEXOPTIONS></DEFINDEXOPTIONS> -<BEGINDATABASESCRIPT></BEGINDATABASESCRIPT> -<ENDDATABASESCRIP></ENDDATABASESCRIP> -<BEGINALTERDATABASESCRIPT></BEGINALTERDATABASESCRIPT> -<ENDALTERDATABASESCRIP></ENDALTERDATABASESCRIP> -<BEGINDROPDATABASESCRIPT></BEGINDROPDATABASESCRIPT> -<ENDDROPDATABASESCRIP></ENDDROPDATABASESCRIP> -<GENDIALOGSELECTEDOBJECTS></GENDIALOGSELECTEDOBJECTS> -<GENTABLES>1</GENTABLES> -<GENTABLEOPTIONS>1</GENTABLEOPTIONS> -<GENCONSTRAINTS>1</GENCONSTRAINTS> -<GENINDEXES>1</GENINDEXES> -<GENTRIGGERS>1</GENTRIGGERS> -<GENVIEWS>1</GENVIEWS> -<GENPROCEDURES>1</GENPROCEDURES> -<GENSEQUENCES>1</GENSEQUENCES> -<GENRELATIONSHIPS>1</GENRELATIONSHIPS> -<GENBEGINENDTABLESCRIPTS>1</GENBEGINENDTABLESCRIPTS> -<GENBEGINENDDBSCRIPTS>1</GENBEGINENDDBSCRIPTS> -<GLOBALPREFIX></GLOBALPREFIX> -<AUTOCREATEINDEXESONKEYS>0</AUTOCREATEINDEXESONKEYS> -<CONVERTDOMAINS>0</CONVERTDOMAINS> -<IGNORECOMMENTS>0</IGNORECOMMENTS> -<USESCHEMANAMES>0</USESCHEMANAMES> -<UCONNAMETEMPLATE></UCONNAMETEMPLATE> -<SQLCREATEFILE>D:\User\felmer\dev-workspace\rtd_phosphonetx\source\sql\postgresql\001\schema-001.sql</SQLCREATEFILE> -<SQLDROPFILE>D:\User\felmer\dev-workspace\rtd_phosphonetx\targets\drop.sql</SQLDROPFILE> -</DDSETTINGS> -<DOMAINS> -<DOMAIN> -<NAME>BINARY_DATA</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>BYTEA</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>CHECKSUM</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>8</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>CODE</NAME> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>DESCRIPTION</NAME> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>2000</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>INTEGER_NUMBER</NAME> -<ID>7</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>INTEGER</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>REAL_NUMBER</NAME> -<ID>8</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>LONG_SEQUENCE</NAME> -<ID>9</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>TEXT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>SHORT_DESCRIPTION</NAME> -<ID>11</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>200</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>TECH_ID</NAME> -<ID>12</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>SHORT_SEQUENCE</NAME> -<ID>69</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>1000</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -</DOMAINS> -<ENTITIES> -<ENT> -<NAME>ABUNDANCES_TYPES</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>14</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>4</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_ABUNDANCES_TYPES</NAME> -<NAMETEMPLATE>PK_ABUNDANCES_TYPES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>CODE</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>5</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>DESCRIPTION</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>11</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>200</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -</ATTRIBUTES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_ABUNDANCES_TYPES_1</NAME> -<NAMETEMPLATE>TUC_ABUNDANCES_TYPES_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -<ENT> -<NAME>EXPERIMENTS</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>16</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>3</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_EXPERIMENTS</NAME> -<NAMETEMPLATE>PK_EXPERIMENTS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PERM_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>5</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_EXPERIMENTS_1</NAME> -<NAMETEMPLATE>TUC_EXPERIMENTS_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -<ENT> -<NAME>DATA_SETS</NAME> -<NAMETEMPLATE>IX_FK_DATA_SETS_EXPERIMENTS</NAMETEMPLATE> -<ID>17</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>5</ATTRLASTID> -<IDXLASTID>3</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_DATA_SETS</NAME> -<NAMETEMPLATE>PK_DATA_SETS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>EXPE_ID</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>SAMP_ID</NAME> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PERM_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>5</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<INDEXES> -<INDEX> -<NAME>IX_FK_DATA_SETS_EXPERIMENTS</NAME> -<NAMETEMPLATE>IX_FK_DATA_SETS_EXPERIMENTS</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>EXPE_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>4</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -<INDEX> -<NAME>IX_FK_DATA_SETS_SAMPLES</NAME> -<NAMETEMPLATE>IX_FK_DATA_SETS_SAMPLES</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>SAMP_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>5</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -</INDEXES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_DATA_SETS_1</NAME> -<NAMETEMPLATE>TUC_DATA_SETS_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -<ENT> -<NAME>MODIFICATIONS</NAME> -<NAMETEMPLATE>IX_FK_MODIFICATIONS_PEPTIDES</NAMETEMPLATE> -<ID>19</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>6</ATTRLASTID> -<IDXLASTID>3</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_MODIFICATIONS</NAME> -<NAMETEMPLATE>PK_MODIFICATIONS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PEPT_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>MOTY_ID</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>POS</NAME> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>7</DOMAINID> -<DT> -<DTLISTNAME>INTEGER</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>MASS</NAME> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>6</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<INDEXES> -<INDEX> -<NAME>IX_FK_MODIFICATIONS_PEPTIDES</NAME> -<NAMETEMPLATE>IX_FK_MODIFICATIONS_PEPTIDES</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>PEPT_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>3</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -<INDEX> -<NAME>IX_FK_MODIFICATIONS_MODIFICATION_TYPES</NAME> -<NAMETEMPLATE>IX_FK_MODIFICATIONS_MODIFICATION_TYPES</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>MOTY_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>4</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -</INDEXES> -</ENT> -<ENT> -<NAME>MODIFICATION_TYPES</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>20</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>6</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_MODIFICATION_TYPES</NAME> -<NAMETEMPLATE>PK_MODIFICATION_TYPES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>CODE</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>5</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>DESCRIPTION</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>11</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>200</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -<ATTR> -<NAME>MASS</NAME> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -<ATTR> -<NAME>DELTA_MASS</NAME> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -</ATTRIBUTES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_MODIFICATION_TYPES_1</NAME> -<NAMETEMPLATE>TUC_MODIFICATION_TYPES_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -<ENT> -<NAME>PEPTIDES</NAME> -<NAMETEMPLATE>IX_FK_PEPTIDES_ABUNDANCES</NAMETEMPLATE> -<ID>21</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>10</ATTRLASTID> -<IDXLASTID>5</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_PEPTIDES</NAME> -<NAMETEMPLATE>PK_PEPTIDES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PROT_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>SEQUENCE</NAME> -<ID>10</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>69</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>1000</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>10</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>CHARGE</NAME> -<ID>7</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>7</DOMAINID> -<DT> -<DTLISTNAME>INTEGER</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>7</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<INDEXES> -<INDEX> -<NAME>IX_FK_PEPTIDES_PROTEINS</NAME> -<NAMETEMPLATE>IX_FK_PEPTIDES_PROTEINS</NAMETEMPLATE> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>PROT_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>3</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -</INDEXES> -</ENT> -<ENT> -<NAME>PROTEINS</NAME> -<NAMETEMPLATE>IX_FK_PROTEINS_DATA_SETS</NAMETEMPLATE> -<ID>23</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>11</ATTRLASTID> -<IDXLASTID>7</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_PROTEINS</NAME> -<NAMETEMPLATE>PK_PROTEINS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>DASE_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>10</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>10</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PROBABILITY</NAME> -<ID>9</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>9</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<INDEXES> -<INDEX> -<NAME>IDX_PROTEINS_1</NAME> -<NAMETEMPLATE>IDX_PROTEINS_1</NAMETEMPLATE> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>DASE_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>10</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -</INDEXES> -</ENT> -<ENT> -<NAME>SAMPLES</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>24</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>4</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_SAMPLES</NAME> -<NAMETEMPLATE>PK_SAMPLES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PERM_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>5</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>EXPE_ID</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_SAMPLES_1</NAME> -<NAMETEMPLATE>TUC_SAMPLES_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -<ENT> -<NAME>SEQUENCES</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>25</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>4</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_SEQUENCES</NAME> -<NAMETEMPLATE>PK_SEQUENCES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>AMINO_ACID_SEQUENCE</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>9</DOMAINID> -<DT> -<DTLISTNAME>TEXT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>CHECKSUM</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>4</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>8</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -</ENT> -<ENT> -<NAME>IDENTIFIED_PROTEINS</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>47</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>5</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_IDENTIFIED_PROTEINS</NAME> -<NAMETEMPLATE>PK_IDENTIFIED_PROTEINS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PROT_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>SEQU_ID</NAME> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -<ATTR> -<NAME>DESCRIPTION</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>6</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>2000</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -</ENT> -<ENT> -<NAME>ABUNDANCES</NAME> -<ID>91</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>6</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_ABUNDANCES</NAME> -<NAMETEMPLATE>PK_ABUNDANCES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PROT_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>SAMP_ID</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>ABTY_ID</NAME> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>VALUE</NAME> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>6</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -</ENT> -<ENT> -<NAME>PROBABILITY_FDR_MAPPINGS</NAME> -<ID>96</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>5</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_PROBABILITY_FDR_MAPPINGS</NAME> -<NAMETEMPLATE>PK_PROBABILITY_FDR_MAPPINGS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>DASE_ID</NAME> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PROBABILITY</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>FALSE_DISCOVERY_RATE</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -</ENT> -</ENTITIES> -<SUBCATEGORIES> -</SUBCATEGORIES> -<TEXTAREAS> -</TEXTAREAS> -<GROUPBOXES> -</GROUPBOXES> -<STAMPS> -</STAMPS> -<SEQUENCES> -</SEQUENCES> -<PROCEDURES> -</PROCEDURES> -<VIEWS> -</VIEWS> -<RELATIONSHIPS> -<REL> -<NAME>DA_EX_FK</NAME> -<NAMETEMPLATE>DA_EX_FK</NAMETEMPLATE> -<ID>29</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>16</PARENTOBJECTID> -<CHILDOBJECTID>17</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>DA_EX_FK</NAME> -<NAMETEMPLATE>DA_EX_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>4</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>DA_SA_FK</NAME> -<NAMETEMPLATE>DA_SA_FK</NAMETEMPLATE> -<ID>30</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>24</PARENTOBJECTID> -<CHILDOBJECTID>17</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>DA_SA_FK</NAME> -<NAMETEMPLATE>DA_SA_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>5</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>MO_PE_FK</NAME> -<NAMETEMPLATE>MO_PE_FK</NAMETEMPLATE> -<ID>32</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>21</PARENTOBJECTID> -<CHILDOBJECTID>19</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>MO_PE_FK</NAME> -<NAMETEMPLATE>MO_PE_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>3</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>MO_MT_FK</NAME> -<NAMETEMPLATE>MO_MT_FK</NAMETEMPLATE> -<ID>33</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>20</PARENTOBJECTID> -<CHILDOBJECTID>19</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>MO_MT_FK</NAME> -<NAMETEMPLATE>MO_MT_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>4</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>PE_PR_FK</NAME> -<NAMETEMPLATE>PE_PR_FK</NAMETEMPLATE> -<ID>36</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>23</PARENTOBJECTID> -<CHILDOBJECTID>21</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>PE_PR_FK</NAME> -<NAMETEMPLATE>PE_PR_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>3</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>DATA_SETS_PROTEINS</NAME> -<NAMETEMPLATE>DATA_SETS_PROTEINS</NAMETEMPLATE> -<ID>46</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>17</PARENTOBJECTID> -<CHILDOBJECTID>23</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>DATA_SETS_PROTEINS</NAME> -<NAMETEMPLATE>DATA_SETS_PROTEINS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>10</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>10</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>PROTEINS_IDENTIFIED_PROTEINS</NAME> -<NAMETEMPLATE>PROTEINS_IDENTIFIED_PROTEINS</NAMETEMPLATE> -<ID>48</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>23</PARENTOBJECTID> -<CHILDOBJECTID>47</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>PROTEINS_IDENTIFIED_PROTEINS</NAME> -<NAMETEMPLATE>PROTEINS_IDENTIFIED_PROTEINS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>3</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>SEQUENCES_IDENTIFIED_PROTEINS</NAME> -<NAMETEMPLATE>SEQUENCES_IDENTIFIED_PROTEINS</NAMETEMPLATE> -<ID>50</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>25</PARENTOBJECTID> -<CHILDOBJECTID>47</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>0</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>SEQUENCES_IDENTIFIED_PROTEINS</NAME> -<NAMETEMPLATE>SEQUENCES_IDENTIFIED_PROTEINS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>5</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>SAMPLES_ABUNDANCES</NAME> -<NAMETEMPLATE>SAMPLES_ABUNDANCES</NAMETEMPLATE> -<ID>92</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>24</PARENTOBJECTID> -<CHILDOBJECTID>91</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>SAMPLES_ABUNDANCES</NAME> -<NAMETEMPLATE>SAMPLES_ABUNDANCES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>4</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>ABUNDANCES_TYPES_ABUNDANCES</NAME> -<NAMETEMPLATE>ABUNDANCES_TYPES_ABUNDANCES</NAMETEMPLATE> -<ID>93</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>14</PARENTOBJECTID> -<CHILDOBJECTID>91</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>ABUNDANCES_TYPES_ABUNDANCES</NAME> -<NAMETEMPLATE>ABUNDANCES_TYPES_ABUNDANCES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>5</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>PROTEINS_ABUNDANCES</NAME> -<NAMETEMPLATE>PROTEINS_ABUNDANCES</NAMETEMPLATE> -<ID>94</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>23</PARENTOBJECTID> -<CHILDOBJECTID>91</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>PROTEINS_ABUNDANCES</NAME> -<NAMETEMPLATE>PROTEINS_ABUNDANCES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>3</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>DATA_SETS_PROBABILITY_FDR_MAPPINGS</NAME> -<NAMETEMPLATE>DATA_SETS_PROBABILITY_FDR_MAPPINGS</NAMETEMPLATE> -<ID>97</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>17</PARENTOBJECTID> -<CHILDOBJECTID>96</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>DATA_SETS_PROBABILITY_FDR_MAPPINGS</NAME> -<NAMETEMPLATE>DATA_SETS_PROBABILITY_FDR_MAPPINGS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>5</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -</RELATIONSHIPS> -<SUBCATEGORYCONNECTIONS> -</SUBCATEGORYCONNECTIONS> -</DATADICT> -</VERSION> -<VERSION> -<VERSIONINFO> -<VERSIONNUMBER>5</VERSIONNUMBER> -<VERSIONLABEL>Version 2009-07-06</VERSIONLABEL> -<VERSIONDATE>2009-07-06 13:15</VERSIONDATE> -<VERSIONCOMMENTS></VERSIONCOMMENTS> -<VERSIONTYPE>DB</VERSIONTYPE> -<VERSIONTYPEDESC>Data dictionary only (no diagrams)</VERSIONTYPEDESC> -</VERSIONINFO> -<DATADICT> -<DBID>postgresql8</DBID> -<LASTID>135</LASTID> -<DDSETTINGS> -<PKCONNAMETEMPLATE>PK_%table%</PKCONNAMETEMPLATE> -<FKCONNAMETEMPLATE>%relname%</FKCONNAMETEMPLATE> -<CCONNAMETEMPLATE>CC_%table%_%column%</CCONNAMETEMPLATE> -<NOTNULLCONNAMETEMPLATE>NN_%column%</NOTNULLCONNAMETEMPLATE> -<DEFAULTCONNAMETEMPLATE>DEF_%table%_%column%</DEFAULTCONNAMETEMPLATE> -<TUCONNAMETEMPLATE>TUC_%table%_%counter%</TUCONNAMETEMPLATE> -<TCCONNAMETEMPLATE>TCC_%table%_%counter%</TCCONNAMETEMPLATE> -<RELNAMETEMPLATE>%parent%_%child%</RELNAMETEMPLATE> -<INDEXNAMETEMPLATE>IDX_%table%_%counter%</INDEXNAMETEMPLATE> -<DEFTABLEOPTIONS></DEFTABLEOPTIONS> -<DEFINDEXOPTIONS></DEFINDEXOPTIONS> -<BEGINDATABASESCRIPT></BEGINDATABASESCRIPT> -<ENDDATABASESCRIP></ENDDATABASESCRIP> -<BEGINALTERDATABASESCRIPT></BEGINALTERDATABASESCRIPT> -<ENDALTERDATABASESCRIP></ENDALTERDATABASESCRIP> -<BEGINDROPDATABASESCRIPT></BEGINDROPDATABASESCRIPT> -<ENDDROPDATABASESCRIP></ENDDROPDATABASESCRIP> -<GENDIALOGSELECTEDOBJECTS></GENDIALOGSELECTEDOBJECTS> -<GENTABLES>1</GENTABLES> -<GENTABLEOPTIONS>1</GENTABLEOPTIONS> -<GENCONSTRAINTS>1</GENCONSTRAINTS> -<GENINDEXES>1</GENINDEXES> -<GENTRIGGERS>1</GENTRIGGERS> -<GENVIEWS>1</GENVIEWS> -<GENPROCEDURES>1</GENPROCEDURES> -<GENSEQUENCES>1</GENSEQUENCES> -<GENRELATIONSHIPS>1</GENRELATIONSHIPS> -<GENBEGINENDTABLESCRIPTS>1</GENBEGINENDTABLESCRIPTS> -<GENBEGINENDDBSCRIPTS>1</GENBEGINENDDBSCRIPTS> -<GLOBALPREFIX></GLOBALPREFIX> -<AUTOCREATEINDEXESONKEYS>0</AUTOCREATEINDEXESONKEYS> -<CONVERTDOMAINS>0</CONVERTDOMAINS> -<IGNORECOMMENTS>0</IGNORECOMMENTS> -<USESCHEMANAMES>0</USESCHEMANAMES> -<UCONNAMETEMPLATE></UCONNAMETEMPLATE> -<SQLCREATEFILE>N:\user\cisd\felmer\phosphonetx\schema-001.sql</SQLCREATEFILE> -<SQLDROPFILE>N:\user\cisd\felmer\phosphonetx\drop.sql</SQLDROPFILE> -</DDSETTINGS> -<DOMAINS> -<DOMAIN> -<NAME>CHECKSUM</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>8</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>CODE</NAME> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>DESCRIPTION</NAME> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>2000</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>INTEGER_NUMBER</NAME> -<ID>7</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>INTEGER</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>REAL_NUMBER</NAME> -<ID>8</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>LONG_SEQUENCE</NAME> -<ID>9</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>TEXT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>SHORT_DESCRIPTION</NAME> -<ID>11</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>200</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>TECH_ID</NAME> -<ID>12</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>SHORT_SEQUENCE</NAME> -<ID>69</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>1000</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>UNIPROT_ACCESSION_NUMBER</NAME> -<ID>109</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -</DOMAINS> -<ENTITIES> -<ENT> -<NAME>ABUNDANCES_TYPES</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>14</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>4</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_ABUNDANCES_TYPES</NAME> -<NAMETEMPLATE>PK_ABUNDANCES_TYPES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>CODE</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>5</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>DESCRIPTION</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>11</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>200</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -</ATTRIBUTES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_ABUNDANCES_TYPES_1</NAME> -<NAMETEMPLATE>TUC_ABUNDANCES_TYPES_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -<ENT> -<NAME>EXPERIMENTS</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>16</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>3</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_EXPERIMENTS</NAME> -<NAMETEMPLATE>PK_EXPERIMENTS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PERM_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>5</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_EXPERIMENTS_1</NAME> -<NAMETEMPLATE>TUC_EXPERIMENTS_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -<ENT> -<NAME>DATA_SETS</NAME> -<NAMETEMPLATE>IX_FK_DATA_SETS_EXPERIMENTS</NAMETEMPLATE> -<ID>17</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>6</ATTRLASTID> -<IDXLASTID>3</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_DATA_SETS</NAME> -<NAMETEMPLATE>PK_DATA_SETS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>EXPE_ID</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>SAMP_ID</NAME> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>DB_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>6</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PERM_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>5</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<INDEXES> -<INDEX> -<NAME>IX_FK_DATA_SETS_EXPERIMENTS</NAME> -<NAMETEMPLATE>IX_FK_DATA_SETS_EXPERIMENTS</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>EXPE_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>4</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -<INDEX> -<NAME>IX_FK_DATA_SETS_SAMPLES</NAME> -<NAMETEMPLATE>IX_FK_DATA_SETS_SAMPLES</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>SAMP_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>5</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -</INDEXES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_DATA_SETS_1</NAME> -<NAMETEMPLATE>TUC_DATA_SETS_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -<ENT> -<NAME>MODIFICATIONS</NAME> -<NAMETEMPLATE>IX_FK_MODIFICATIONS_PEPTIDES</NAMETEMPLATE> -<ID>19</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>6</ATTRLASTID> -<IDXLASTID>3</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_MODIFICATIONS</NAME> -<NAMETEMPLATE>PK_MODIFICATIONS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PEPT_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>MOTY_ID</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>POS</NAME> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>7</DOMAINID> -<DT> -<DTLISTNAME>INTEGER</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>MASS</NAME> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>6</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<INDEXES> -<INDEX> -<NAME>IX_FK_MODIFICATIONS_PEPTIDES</NAME> -<NAMETEMPLATE>IX_FK_MODIFICATIONS_PEPTIDES</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>PEPT_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>3</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -<INDEX> -<NAME>IX_FK_MODIFICATIONS_MODIFICATION_TYPES</NAME> -<NAMETEMPLATE>IX_FK_MODIFICATIONS_MODIFICATION_TYPES</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>MOTY_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>4</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -</INDEXES> -</ENT> -<ENT> -<NAME>MODIFICATION_TYPES</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>20</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>7</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_MODIFICATION_TYPES</NAME> -<NAMETEMPLATE>PK_MODIFICATION_TYPES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>CODE</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>5</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>DESCRIPTION</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>11</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>200</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -<ATTR> -<NAME>AMINO_ACID</NAME> -<ID>7</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER</DTLISTNAME> -<LE>1</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -<ATTR> -<NAME>MASS</NAME> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -<ATTR> -<NAME>MASS_TOLERANCE</NAME> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -</ATTRIBUTES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_MODIFICATION_TYPES_1</NAME> -<NAMETEMPLATE>TUC_MODIFICATION_TYPES_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -<ENT> -<NAME>PEPTIDES</NAME> -<NAMETEMPLATE>IX_FK_PEPTIDES_ABUNDANCES</NAMETEMPLATE> -<ID>21</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>10</ATTRLASTID> -<IDXLASTID>5</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_PEPTIDES</NAME> -<NAMETEMPLATE>PK_PEPTIDES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PROT_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>SEQUENCE</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>10</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>69</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>1000</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>10</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>CHARGE</NAME> -<ID>7</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>7</DOMAINID> -<DT> -<DTLISTNAME>INTEGER</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>7</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<INDEXES> -<INDEX> -<NAME>IX_FK_PEPTIDES_PROTEINS</NAME> -<NAMETEMPLATE>IX_FK_PEPTIDES_PROTEINS</NAMETEMPLATE> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>PROT_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>3</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -</INDEXES> -</ENT> -<ENT> -<NAME>PROTEINS</NAME> -<NAMETEMPLATE>IX_FK_PROTEINS_DATA_SETS</NAMETEMPLATE> -<ID>23</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>11</ATTRLASTID> -<IDXLASTID>7</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_PROTEINS</NAME> -<NAMETEMPLATE>PK_PROTEINS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>DASE_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>10</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>10</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PROBABILITY</NAME> -<ID>9</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>9</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<INDEXES> -<INDEX> -<NAME>IDX_PROTEINS_1</NAME> -<NAMETEMPLATE>IDX_PROTEINS_1</NAMETEMPLATE> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>DASE_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>10</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -</INDEXES> -</ENT> -<ENT> -<NAME>SAMPLES</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>24</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>4</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_SAMPLES</NAME> -<NAMETEMPLATE>PK_SAMPLES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PERM_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>5</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>EXPE_ID</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_SAMPLES_1</NAME> -<NAMETEMPLATE>TUC_SAMPLES_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -<ENT> -<NAME>SEQUENCES</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>25</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>6</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_SEQUENCES</NAME> -<NAMETEMPLATE>PK_SEQUENCES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>DB_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PRRE_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>6</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>AMINO_ACID_SEQUENCE</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>9</DOMAINID> -<DT> -<DTLISTNAME>TEXT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>CHECKSUM</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>4</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>8</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -</ENT> -<ENT> -<NAME>IDENTIFIED_PROTEINS</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>47</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>5</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_IDENTIFIED_PROTEINS</NAME> -<NAMETEMPLATE>PK_IDENTIFIED_PROTEINS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PROT_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>SEQU_ID</NAME> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -</ENT> -<ENT> -<NAME>ABUNDANCES</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>91</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>6</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_ABUNDANCES</NAME> -<NAMETEMPLATE>PK_ABUNDANCES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PROT_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>SAMP_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>ABTY_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>VALUE</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>6</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -</ENT> -<ENT> -<NAME>PROBABILITY_FDR_MAPPINGS</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>96</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>5</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_PROBABILITY_FDR_MAPPINGS</NAME> -<NAMETEMPLATE>PK_PROBABILITY_FDR_MAPPINGS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>DASE_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PROBABILITY</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>FALSE_DISCOVERY_RATE</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -</ENT> -<ENT> -<NAME>PROTEIN_REFERENCES</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>98</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>4</ATTRLASTID> -<IDXLASTID>2</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_PROTEIN_REFERENCES</NAME> -<NAMETEMPLATE>PK_PROTEIN_REFERENCES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>UNIPROT_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>109</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>DESCRIPTION</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>6</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>2000</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -</ATTRIBUTES> -<INDEXES> -<INDEX> -<NAME>IDX_PROTEIN_REFERENCES_1</NAME> -<NAMETEMPLATE>IDX_PROTEIN_REFERENCES_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>UNIPROT_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>3</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -</INDEXES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_PROTEIN_REFERENCES_1</NAME> -<NAMETEMPLATE>TUC_PROTEIN_REFERENCES_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -<ENT> -<NAME>DATABASES</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>110</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>3</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_DATABASES</NAME> -<NAMETEMPLATE>PK_DATABASES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>NAME_AND_VERSION</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>69</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>1000</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_DATABASES_1</NAME> -<NAMETEMPLATE>TUC_DATABASES_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -</ENTITIES> -<SUBCATEGORIES> -</SUBCATEGORIES> -<TEXTAREAS> -</TEXTAREAS> -<GROUPBOXES> -</GROUPBOXES> -<STAMPS> -</STAMPS> -<SEQUENCES> -</SEQUENCES> -<PROCEDURES> -</PROCEDURES> -<VIEWS> -</VIEWS> -<RELATIONSHIPS> -<REL> -<NAME>DA_EX_FK</NAME> -<NAMETEMPLATE>DA_EX_FK</NAMETEMPLATE> -<ID>29</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>16</PARENTOBJECTID> -<CHILDOBJECTID>17</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>DA_EX_FK</NAME> -<NAMETEMPLATE>DA_EX_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>4</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>DA_SA_FK</NAME> -<NAMETEMPLATE>DA_SA_FK</NAMETEMPLATE> -<ID>30</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>24</PARENTOBJECTID> -<CHILDOBJECTID>17</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>DA_SA_FK</NAME> -<NAMETEMPLATE>DA_SA_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>5</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>MO_PE_FK</NAME> -<NAMETEMPLATE>MO_PE_FK</NAMETEMPLATE> -<ID>32</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>21</PARENTOBJECTID> -<CHILDOBJECTID>19</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>MO_PE_FK</NAME> -<NAMETEMPLATE>MO_PE_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>3</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>MO_MT_FK</NAME> -<NAMETEMPLATE>MO_MT_FK</NAMETEMPLATE> -<ID>33</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>20</PARENTOBJECTID> -<CHILDOBJECTID>19</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>MO_MT_FK</NAME> -<NAMETEMPLATE>MO_MT_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>4</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>PE_PR_FK</NAME> -<NAMETEMPLATE>PE_PR_FK</NAMETEMPLATE> -<ID>36</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>23</PARENTOBJECTID> -<CHILDOBJECTID>21</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>PE_PR_FK</NAME> -<NAMETEMPLATE>PE_PR_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>3</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>DATA_SETS_PROTEINS</NAME> -<NAMETEMPLATE>DATA_SETS_PROTEINS</NAMETEMPLATE> -<ID>46</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>17</PARENTOBJECTID> -<CHILDOBJECTID>23</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>DATA_SETS_PROTEINS</NAME> -<NAMETEMPLATE>DATA_SETS_PROTEINS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>10</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>10</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>PROTEINS_IDENTIFIED_PROTEINS</NAME> -<NAMETEMPLATE>PROTEINS_IDENTIFIED_PROTEINS</NAMETEMPLATE> -<ID>48</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>23</PARENTOBJECTID> -<CHILDOBJECTID>47</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>PROTEINS_IDENTIFIED_PROTEINS</NAME> -<NAMETEMPLATE>PROTEINS_IDENTIFIED_PROTEINS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>3</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>SEQUENCES_IDENTIFIED_PROTEINS</NAME> -<NAMETEMPLATE>SEQUENCES_IDENTIFIED_PROTEINS</NAMETEMPLATE> -<ID>50</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>25</PARENTOBJECTID> -<CHILDOBJECTID>47</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>SEQUENCES_IDENTIFIED_PROTEINS</NAME> -<NAMETEMPLATE>SEQUENCES_IDENTIFIED_PROTEINS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>5</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>SAMPLES_ABUNDANCES</NAME> -<NAMETEMPLATE>SAMPLES_ABUNDANCES</NAMETEMPLATE> -<ID>92</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>24</PARENTOBJECTID> -<CHILDOBJECTID>91</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>SAMPLES_ABUNDANCES</NAME> -<NAMETEMPLATE>SAMPLES_ABUNDANCES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>4</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>ABUNDANCES_TYPES_ABUNDANCES</NAME> -<NAMETEMPLATE>ABUNDANCES_TYPES_ABUNDANCES</NAMETEMPLATE> -<ID>93</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>14</PARENTOBJECTID> -<CHILDOBJECTID>91</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>ABUNDANCES_TYPES_ABUNDANCES</NAME> -<NAMETEMPLATE>ABUNDANCES_TYPES_ABUNDANCES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>5</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>PROTEINS_ABUNDANCES</NAME> -<NAMETEMPLATE>PROTEINS_ABUNDANCES</NAMETEMPLATE> -<ID>94</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>23</PARENTOBJECTID> -<CHILDOBJECTID>91</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>PROTEINS_ABUNDANCES</NAME> -<NAMETEMPLATE>PROTEINS_ABUNDANCES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>3</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>DATA_SETS_PROBABILITY_FDR_MAPPINGS</NAME> -<NAMETEMPLATE>DATA_SETS_PROBABILITY_FDR_MAPPINGS</NAMETEMPLATE> -<ID>97</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>17</PARENTOBJECTID> -<CHILDOBJECTID>96</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>DATA_SETS_PROBABILITY_FDR_MAPPINGS</NAME> -<NAMETEMPLATE>DATA_SETS_PROBABILITY_FDR_MAPPINGS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>5</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>DATABASES_SEQUENCES</NAME> -<NAMETEMPLATE>DATABASES_SEQUENCES</NAMETEMPLATE> -<ID>111</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>110</PARENTOBJECTID> -<CHILDOBJECTID>25</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>DATABASES_SEQUENCES</NAME> -<NAMETEMPLATE>DATABASES_SEQUENCES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>5</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>PROTEIN_REFERENCES_SEQUENCES</NAME> -<NAMETEMPLATE>PROTEIN_REFERENCES_SEQUENCES</NAMETEMPLATE> -<ID>112</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>98</PARENTOBJECTID> -<CHILDOBJECTID>25</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>PROTEIN_REFERENCES_SEQUENCES</NAME> -<NAMETEMPLATE>PROTEIN_REFERENCES_SEQUENCES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>6</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>6</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>DATABASES_DATA_SETS</NAME> -<NAMETEMPLATE>DATABASES_DATA_SETS</NAMETEMPLATE> -<ID>125</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>110</PARENTOBJECTID> -<CHILDOBJECTID>17</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>DATABASES_DATA_SETS</NAME> -<NAMETEMPLATE>DATABASES_DATA_SETS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>6</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>6</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -</RELATIONSHIPS> -<SUBCATEGORYCONNECTIONS> -</SUBCATEGORYCONNECTIONS> -</DATADICT> -</VERSION> -<VERSION> -<VERSIONINFO> -<VERSIONNUMBER>6</VERSIONNUMBER> -<VERSIONLABEL>Version 2009-07-06 1</VERSIONLABEL> -<VERSIONDATE>2009-07-06 13:30</VERSIONDATE> -<VERSIONCOMMENTS></VERSIONCOMMENTS> -<VERSIONTYPE>DB</VERSIONTYPE> -<VERSIONTYPEDESC>Data dictionary only (no diagrams)</VERSIONTYPEDESC> -</VERSIONINFO> -<DATADICT> -<DBID>postgresql8</DBID> -<LASTID>135</LASTID> -<DDSETTINGS> -<PKCONNAMETEMPLATE>PK_%table%</PKCONNAMETEMPLATE> -<FKCONNAMETEMPLATE>%relname%</FKCONNAMETEMPLATE> -<CCONNAMETEMPLATE>CC_%table%_%column%</CCONNAMETEMPLATE> -<NOTNULLCONNAMETEMPLATE>NN_%column%</NOTNULLCONNAMETEMPLATE> -<DEFAULTCONNAMETEMPLATE>DEF_%table%_%column%</DEFAULTCONNAMETEMPLATE> -<TUCONNAMETEMPLATE>TUC_%table%_%counter%</TUCONNAMETEMPLATE> -<TCCONNAMETEMPLATE>TCC_%table%_%counter%</TCCONNAMETEMPLATE> -<RELNAMETEMPLATE>%parent%_%child%</RELNAMETEMPLATE> -<INDEXNAMETEMPLATE>IDX_%table%_%counter%</INDEXNAMETEMPLATE> -<DEFTABLEOPTIONS></DEFTABLEOPTIONS> -<DEFINDEXOPTIONS></DEFINDEXOPTIONS> -<BEGINDATABASESCRIPT></BEGINDATABASESCRIPT> -<ENDDATABASESCRIP></ENDDATABASESCRIP> -<BEGINALTERDATABASESCRIPT></BEGINALTERDATABASESCRIPT> -<ENDALTERDATABASESCRIP></ENDALTERDATABASESCRIP> -<BEGINDROPDATABASESCRIPT></BEGINDROPDATABASESCRIPT> -<ENDDROPDATABASESCRIP></ENDDROPDATABASESCRIP> -<GENDIALOGSELECTEDOBJECTS></GENDIALOGSELECTEDOBJECTS> -<GENTABLES>1</GENTABLES> -<GENTABLEOPTIONS>1</GENTABLEOPTIONS> -<GENCONSTRAINTS>1</GENCONSTRAINTS> -<GENINDEXES>1</GENINDEXES> -<GENTRIGGERS>1</GENTRIGGERS> -<GENVIEWS>1</GENVIEWS> -<GENPROCEDURES>1</GENPROCEDURES> -<GENSEQUENCES>1</GENSEQUENCES> -<GENRELATIONSHIPS>1</GENRELATIONSHIPS> -<GENBEGINENDTABLESCRIPTS>1</GENBEGINENDTABLESCRIPTS> -<GENBEGINENDDBSCRIPTS>1</GENBEGINENDDBSCRIPTS> -<GLOBALPREFIX></GLOBALPREFIX> -<AUTOCREATEINDEXESONKEYS>0</AUTOCREATEINDEXESONKEYS> -<CONVERTDOMAINS>0</CONVERTDOMAINS> -<IGNORECOMMENTS>0</IGNORECOMMENTS> -<USESCHEMANAMES>0</USESCHEMANAMES> -<UCONNAMETEMPLATE></UCONNAMETEMPLATE> -<SQLCREATEFILE>N:\user\cisd\felmer\phosphonetx\schema-001.sql</SQLCREATEFILE> -<SQLDROPFILE>N:\user\cisd\felmer\phosphonetx\drop.sql</SQLDROPFILE> -</DDSETTINGS> -<DOMAINS> -<DOMAIN> -<NAME>CHECKSUM</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>8</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>CODE</NAME> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>DESCRIPTION</NAME> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>2000</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>INTEGER_NUMBER</NAME> -<ID>7</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>INTEGER</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>REAL_NUMBER</NAME> -<ID>8</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>LONG_SEQUENCE</NAME> -<ID>9</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>TEXT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>SHORT_DESCRIPTION</NAME> -<ID>11</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>200</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>TECH_ID</NAME> -<ID>12</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>SHORT_SEQUENCE</NAME> -<ID>69</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>1000</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>UNIPROT_ACCESSION_NUMBER</NAME> -<ID>109</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -</DOMAINS> -<ENTITIES> -<ENT> -<NAME>ABUNDANCES_TYPES</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>14</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>4</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_ABUNDANCES_TYPES</NAME> -<NAMETEMPLATE>PK_ABUNDANCES_TYPES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>CODE</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>5</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>DESCRIPTION</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>11</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>200</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -</ATTRIBUTES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_ABUNDANCES_TYPES_1</NAME> -<NAMETEMPLATE>TUC_ABUNDANCES_TYPES_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -<ENT> -<NAME>EXPERIMENTS</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>16</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>3</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_EXPERIMENTS</NAME> -<NAMETEMPLATE>PK_EXPERIMENTS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PERM_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>5</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_EXPERIMENTS_1</NAME> -<NAMETEMPLATE>TUC_EXPERIMENTS_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -<ENT> -<NAME>DATA_SETS</NAME> -<NAMETEMPLATE>IX_FK_DATA_SETS_EXPERIMENTS</NAMETEMPLATE> -<ID>17</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>6</ATTRLASTID> -<IDXLASTID>3</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_DATA_SETS</NAME> -<NAMETEMPLATE>PK_DATA_SETS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>EXPE_ID</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>SAMP_ID</NAME> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>DB_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>6</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PERM_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>5</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<INDEXES> -<INDEX> -<NAME>IX_FK_DATA_SETS_EXPERIMENTS</NAME> -<NAMETEMPLATE>IX_FK_DATA_SETS_EXPERIMENTS</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>EXPE_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>4</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -<INDEX> -<NAME>IX_FK_DATA_SETS_SAMPLES</NAME> -<NAMETEMPLATE>IX_FK_DATA_SETS_SAMPLES</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>SAMP_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>5</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -</INDEXES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_DATA_SETS_1</NAME> -<NAMETEMPLATE>TUC_DATA_SETS_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -<ENT> -<NAME>MODIFICATIONS</NAME> -<NAMETEMPLATE>IX_FK_MODIFICATIONS_PEPTIDES</NAMETEMPLATE> -<ID>19</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>6</ATTRLASTID> -<IDXLASTID>3</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_MODIFICATIONS</NAME> -<NAMETEMPLATE>PK_MODIFICATIONS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PEPT_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>MOTY_ID</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>POS</NAME> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>7</DOMAINID> -<DT> -<DTLISTNAME>INTEGER</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>MASS</NAME> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>6</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<INDEXES> -<INDEX> -<NAME>IX_FK_MODIFICATIONS_PEPTIDES</NAME> -<NAMETEMPLATE>IX_FK_MODIFICATIONS_PEPTIDES</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>PEPT_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>3</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -<INDEX> -<NAME>IX_FK_MODIFICATIONS_MODIFICATION_TYPES</NAME> -<NAMETEMPLATE>IX_FK_MODIFICATIONS_MODIFICATION_TYPES</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>MOTY_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>4</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -</INDEXES> -</ENT> -<ENT> -<NAME>MODIFICATION_TYPES</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>20</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>7</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_MODIFICATION_TYPES</NAME> -<NAMETEMPLATE>PK_MODIFICATION_TYPES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>CODE</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>5</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>DESCRIPTION</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>11</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>200</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -<ATTR> -<NAME>AMINO_ACID</NAME> -<ID>7</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER</DTLISTNAME> -<LE>1</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -<ATTR> -<NAME>MASS</NAME> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -<ATTR> -<NAME>MASS_TOLERANCE</NAME> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -</ATTRIBUTES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_MODIFICATION_TYPES_1</NAME> -<NAMETEMPLATE>TUC_MODIFICATION_TYPES_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -<ENT> -<NAME>PEPTIDES</NAME> -<NAMETEMPLATE>IX_FK_PEPTIDES_ABUNDANCES</NAMETEMPLATE> -<ID>21</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>10</ATTRLASTID> -<IDXLASTID>5</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_PEPTIDES</NAME> -<NAMETEMPLATE>PK_PEPTIDES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PROT_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>SEQUENCE</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>10</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>69</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>1000</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>10</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>CHARGE</NAME> -<ID>7</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>7</DOMAINID> -<DT> -<DTLISTNAME>INTEGER</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>7</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<INDEXES> -<INDEX> -<NAME>IX_FK_PEPTIDES_PROTEINS</NAME> -<NAMETEMPLATE>IX_FK_PEPTIDES_PROTEINS</NAMETEMPLATE> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>PROT_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>3</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -</INDEXES> -</ENT> -<ENT> -<NAME>PROTEINS</NAME> -<NAMETEMPLATE>IX_FK_PROTEINS_DATA_SETS</NAMETEMPLATE> -<ID>23</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>11</ATTRLASTID> -<IDXLASTID>7</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_PROTEINS</NAME> -<NAMETEMPLATE>PK_PROTEINS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>DASE_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>10</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>10</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PROBABILITY</NAME> -<ID>9</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>9</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<INDEXES> -<INDEX> -<NAME>IDX_PROTEINS_1</NAME> -<NAMETEMPLATE>IDX_PROTEINS_1</NAMETEMPLATE> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>DASE_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>10</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -</INDEXES> -</ENT> -<ENT> -<NAME>SAMPLES</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>24</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>4</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_SAMPLES</NAME> -<NAMETEMPLATE>PK_SAMPLES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PERM_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>5</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>EXPE_ID</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_SAMPLES_1</NAME> -<NAMETEMPLATE>TUC_SAMPLES_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -<ENT> -<NAME>SEQUENCES</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>25</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>6</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_SEQUENCES</NAME> -<NAMETEMPLATE>PK_SEQUENCES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>DB_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PRRE_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>6</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>AMINO_ACID_SEQUENCE</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>9</DOMAINID> -<DT> -<DTLISTNAME>TEXT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>CHECKSUM</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>4</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>8</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -</ENT> -<ENT> -<NAME>IDENTIFIED_PROTEINS</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>47</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>5</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_IDENTIFIED_PROTEINS</NAME> -<NAMETEMPLATE>PK_IDENTIFIED_PROTEINS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PROT_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>SEQU_ID</NAME> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -</ENT> -<ENT> -<NAME>ABUNDANCES</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>91</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>6</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_ABUNDANCES</NAME> -<NAMETEMPLATE>PK_ABUNDANCES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PROT_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>SAMP_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>ABTY_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>VALUE</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>6</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -</ENT> -<ENT> -<NAME>PROBABILITY_FDR_MAPPINGS</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>96</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>5</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_PROBABILITY_FDR_MAPPINGS</NAME> -<NAMETEMPLATE>PK_PROBABILITY_FDR_MAPPINGS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>DASE_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PROBABILITY</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>FALSE_DISCOVERY_RATE</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -</ENT> -<ENT> -<NAME>PROTEIN_REFERENCES</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>98</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>4</ATTRLASTID> -<IDXLASTID>2</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_PROTEIN_REFERENCES</NAME> -<NAMETEMPLATE>PK_PROTEIN_REFERENCES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>UNIPROT_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>109</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>DESCRIPTION</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>6</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>2000</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -</ATTRIBUTES> -<INDEXES> -<INDEX> -<NAME>IDX_PROTEIN_REFERENCES_1</NAME> -<NAMETEMPLATE>IDX_PROTEIN_REFERENCES_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>UNIPROT_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>3</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -</INDEXES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_PROTEIN_REFERENCES_1</NAME> -<NAMETEMPLATE>TUC_PROTEIN_REFERENCES_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -<ENT> -<NAME>DATABASES</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>110</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>3</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_DATABASES</NAME> -<NAMETEMPLATE>PK_DATABASES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>NAME_AND_VERSION</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>11</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>200</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_DATABASES_1</NAME> -<NAMETEMPLATE>TUC_DATABASES_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -</ENTITIES> -<SUBCATEGORIES> -</SUBCATEGORIES> -<TEXTAREAS> -</TEXTAREAS> -<GROUPBOXES> -</GROUPBOXES> -<STAMPS> -</STAMPS> -<SEQUENCES> -</SEQUENCES> -<PROCEDURES> -</PROCEDURES> -<VIEWS> -</VIEWS> -<RELATIONSHIPS> -<REL> -<NAME>DA_EX_FK</NAME> -<NAMETEMPLATE>DA_EX_FK</NAMETEMPLATE> -<ID>29</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>16</PARENTOBJECTID> -<CHILDOBJECTID>17</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>DA_EX_FK</NAME> -<NAMETEMPLATE>DA_EX_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>4</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>DA_SA_FK</NAME> -<NAMETEMPLATE>DA_SA_FK</NAMETEMPLATE> -<ID>30</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>24</PARENTOBJECTID> -<CHILDOBJECTID>17</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>DA_SA_FK</NAME> -<NAMETEMPLATE>DA_SA_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>5</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>MO_PE_FK</NAME> -<NAMETEMPLATE>MO_PE_FK</NAMETEMPLATE> -<ID>32</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>21</PARENTOBJECTID> -<CHILDOBJECTID>19</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>MO_PE_FK</NAME> -<NAMETEMPLATE>MO_PE_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>3</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>MO_MT_FK</NAME> -<NAMETEMPLATE>MO_MT_FK</NAMETEMPLATE> -<ID>33</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>20</PARENTOBJECTID> -<CHILDOBJECTID>19</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>MO_MT_FK</NAME> -<NAMETEMPLATE>MO_MT_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>4</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>PE_PR_FK</NAME> -<NAMETEMPLATE>PE_PR_FK</NAMETEMPLATE> -<ID>36</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>23</PARENTOBJECTID> -<CHILDOBJECTID>21</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>PE_PR_FK</NAME> -<NAMETEMPLATE>PE_PR_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>3</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>DATA_SETS_PROTEINS</NAME> -<NAMETEMPLATE>DATA_SETS_PROTEINS</NAMETEMPLATE> -<ID>46</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>17</PARENTOBJECTID> -<CHILDOBJECTID>23</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>DATA_SETS_PROTEINS</NAME> -<NAMETEMPLATE>DATA_SETS_PROTEINS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>10</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>10</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>PROTEINS_IDENTIFIED_PROTEINS</NAME> -<NAMETEMPLATE>PROTEINS_IDENTIFIED_PROTEINS</NAMETEMPLATE> -<ID>48</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>23</PARENTOBJECTID> -<CHILDOBJECTID>47</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>PROTEINS_IDENTIFIED_PROTEINS</NAME> -<NAMETEMPLATE>PROTEINS_IDENTIFIED_PROTEINS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>3</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>SEQUENCES_IDENTIFIED_PROTEINS</NAME> -<NAMETEMPLATE>SEQUENCES_IDENTIFIED_PROTEINS</NAMETEMPLATE> -<ID>50</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>25</PARENTOBJECTID> -<CHILDOBJECTID>47</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>SEQUENCES_IDENTIFIED_PROTEINS</NAME> -<NAMETEMPLATE>SEQUENCES_IDENTIFIED_PROTEINS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>5</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>SAMPLES_ABUNDANCES</NAME> -<NAMETEMPLATE>SAMPLES_ABUNDANCES</NAMETEMPLATE> -<ID>92</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>24</PARENTOBJECTID> -<CHILDOBJECTID>91</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>SAMPLES_ABUNDANCES</NAME> -<NAMETEMPLATE>SAMPLES_ABUNDANCES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>4</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>ABUNDANCES_TYPES_ABUNDANCES</NAME> -<NAMETEMPLATE>ABUNDANCES_TYPES_ABUNDANCES</NAMETEMPLATE> -<ID>93</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>14</PARENTOBJECTID> -<CHILDOBJECTID>91</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>ABUNDANCES_TYPES_ABUNDANCES</NAME> -<NAMETEMPLATE>ABUNDANCES_TYPES_ABUNDANCES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>5</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>PROTEINS_ABUNDANCES</NAME> -<NAMETEMPLATE>PROTEINS_ABUNDANCES</NAMETEMPLATE> -<ID>94</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>23</PARENTOBJECTID> -<CHILDOBJECTID>91</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>PROTEINS_ABUNDANCES</NAME> -<NAMETEMPLATE>PROTEINS_ABUNDANCES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>3</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>DATA_SETS_PROBABILITY_FDR_MAPPINGS</NAME> -<NAMETEMPLATE>DATA_SETS_PROBABILITY_FDR_MAPPINGS</NAMETEMPLATE> -<ID>97</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>17</PARENTOBJECTID> -<CHILDOBJECTID>96</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>DATA_SETS_PROBABILITY_FDR_MAPPINGS</NAME> -<NAMETEMPLATE>DATA_SETS_PROBABILITY_FDR_MAPPINGS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>5</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>DATABASES_SEQUENCES</NAME> -<NAMETEMPLATE>DATABASES_SEQUENCES</NAMETEMPLATE> -<ID>111</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>110</PARENTOBJECTID> -<CHILDOBJECTID>25</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>DATABASES_SEQUENCES</NAME> -<NAMETEMPLATE>DATABASES_SEQUENCES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>5</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>PROTEIN_REFERENCES_SEQUENCES</NAME> -<NAMETEMPLATE>PROTEIN_REFERENCES_SEQUENCES</NAMETEMPLATE> -<ID>112</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>98</PARENTOBJECTID> -<CHILDOBJECTID>25</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>PROTEIN_REFERENCES_SEQUENCES</NAME> -<NAMETEMPLATE>PROTEIN_REFERENCES_SEQUENCES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>6</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>6</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>DATABASES_DATA_SETS</NAME> -<NAMETEMPLATE>DATABASES_DATA_SETS</NAMETEMPLATE> -<ID>125</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>110</PARENTOBJECTID> -<CHILDOBJECTID>17</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>DATABASES_DATA_SETS</NAME> -<NAMETEMPLATE>DATABASES_DATA_SETS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>6</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>6</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -</RELATIONSHIPS> -<SUBCATEGORYCONNECTIONS> -</SUBCATEGORYCONNECTIONS> -</DATADICT> -</VERSION> -<VERSION> -<VERSIONINFO> -<VERSIONNUMBER>7</VERSIONNUMBER> -<VERSIONLABEL>Version 2009-07-07</VERSIONLABEL> -<VERSIONDATE>2009-07-07 08:01</VERSIONDATE> -<VERSIONCOMMENTS></VERSIONCOMMENTS> -<VERSIONTYPE>DB</VERSIONTYPE> -<VERSIONTYPEDESC>Data dictionary only (no diagrams)</VERSIONTYPEDESC> -</VERSIONINFO> -<DATADICT> -<DBID>postgresql8</DBID> -<LASTID>135</LASTID> -<DDSETTINGS> -<PKCONNAMETEMPLATE>PK_%table%</PKCONNAMETEMPLATE> -<FKCONNAMETEMPLATE>%relname%</FKCONNAMETEMPLATE> -<CCONNAMETEMPLATE>CC_%table%_%column%</CCONNAMETEMPLATE> -<NOTNULLCONNAMETEMPLATE>NN_%column%</NOTNULLCONNAMETEMPLATE> -<DEFAULTCONNAMETEMPLATE>DEF_%table%_%column%</DEFAULTCONNAMETEMPLATE> -<TUCONNAMETEMPLATE>TUC_%table%_%counter%</TUCONNAMETEMPLATE> -<TCCONNAMETEMPLATE>TCC_%table%_%counter%</TCCONNAMETEMPLATE> -<RELNAMETEMPLATE>%parent%_%child%</RELNAMETEMPLATE> -<INDEXNAMETEMPLATE>IDX_%table%_%counter%</INDEXNAMETEMPLATE> -<DEFTABLEOPTIONS></DEFTABLEOPTIONS> -<DEFINDEXOPTIONS></DEFINDEXOPTIONS> -<BEGINDATABASESCRIPT></BEGINDATABASESCRIPT> -<ENDDATABASESCRIP></ENDDATABASESCRIP> -<BEGINALTERDATABASESCRIPT></BEGINALTERDATABASESCRIPT> -<ENDALTERDATABASESCRIP></ENDALTERDATABASESCRIP> -<BEGINDROPDATABASESCRIPT></BEGINDROPDATABASESCRIPT> -<ENDDROPDATABASESCRIP></ENDDROPDATABASESCRIP> -<GENDIALOGSELECTEDOBJECTS></GENDIALOGSELECTEDOBJECTS> -<GENTABLES>1</GENTABLES> -<GENTABLEOPTIONS>1</GENTABLEOPTIONS> -<GENCONSTRAINTS>1</GENCONSTRAINTS> -<GENINDEXES>1</GENINDEXES> -<GENTRIGGERS>1</GENTRIGGERS> -<GENVIEWS>1</GENVIEWS> -<GENPROCEDURES>1</GENPROCEDURES> -<GENSEQUENCES>1</GENSEQUENCES> -<GENRELATIONSHIPS>1</GENRELATIONSHIPS> -<GENBEGINENDTABLESCRIPTS>1</GENBEGINENDTABLESCRIPTS> -<GENBEGINENDDBSCRIPTS>1</GENBEGINENDDBSCRIPTS> -<GLOBALPREFIX></GLOBALPREFIX> -<AUTOCREATEINDEXESONKEYS>0</AUTOCREATEINDEXESONKEYS> -<CONVERTDOMAINS>0</CONVERTDOMAINS> -<IGNORECOMMENTS>0</IGNORECOMMENTS> -<USESCHEMANAMES>0</USESCHEMANAMES> -<UCONNAMETEMPLATE></UCONNAMETEMPLATE> -<SQLCREATEFILE>N:\user\cisd\felmer\phosphonetx\schema-001.sql</SQLCREATEFILE> -<SQLDROPFILE>N:\user\cisd\felmer\phosphonetx\drop.sql</SQLDROPFILE> -</DDSETTINGS> -<DOMAINS> -<DOMAIN> -<NAME>CHECKSUM</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>8</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>CODE</NAME> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>DESCRIPTION</NAME> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>2000</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>INTEGER_NUMBER</NAME> -<ID>7</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>INTEGER</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>REAL_NUMBER</NAME> -<ID>8</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>LONG_SEQUENCE</NAME> -<ID>9</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>TEXT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>SHORT_DESCRIPTION</NAME> -<ID>11</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>200</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>TECH_ID</NAME> -<ID>12</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>SHORT_SEQUENCE</NAME> -<ID>69</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>1000</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>UNIPROT_ACCESSION_NUMBER</NAME> -<ID>109</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -</DOMAINS> -<ENTITIES> -<ENT> -<NAME>EXPERIMENTS</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>16</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>3</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_EXPERIMENTS</NAME> -<NAMETEMPLATE>PK_EXPERIMENTS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PERM_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>5</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_EXPERIMENTS_1</NAME> -<NAMETEMPLATE>TUC_EXPERIMENTS_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -<ENT> -<NAME>DATA_SETS</NAME> -<NAMETEMPLATE>IX_FK_DATA_SETS_EXPERIMENTS</NAMETEMPLATE> -<ID>17</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>6</ATTRLASTID> -<IDXLASTID>3</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_DATA_SETS</NAME> -<NAMETEMPLATE>PK_DATA_SETS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>EXPE_ID</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>SAMP_ID</NAME> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>DB_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>6</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PERM_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>5</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<INDEXES> -<INDEX> -<NAME>IX_FK_DATA_SETS_EXPERIMENTS</NAME> -<NAMETEMPLATE>IX_FK_DATA_SETS_EXPERIMENTS</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>EXPE_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>4</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -<INDEX> -<NAME>IX_FK_DATA_SETS_SAMPLES</NAME> -<NAMETEMPLATE>IX_FK_DATA_SETS_SAMPLES</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>SAMP_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>5</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -</INDEXES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_DATA_SETS_1</NAME> -<NAMETEMPLATE>TUC_DATA_SETS_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -<ENT> -<NAME>MODIFICATIONS</NAME> -<NAMETEMPLATE>IX_FK_MODIFICATIONS_PEPTIDES</NAMETEMPLATE> -<ID>19</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>6</ATTRLASTID> -<IDXLASTID>3</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_MODIFICATIONS</NAME> -<NAMETEMPLATE>PK_MODIFICATIONS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PEPT_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>MOTY_ID</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>POS</NAME> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>7</DOMAINID> -<DT> -<DTLISTNAME>INTEGER</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>MASS</NAME> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>6</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<INDEXES> -<INDEX> -<NAME>IX_FK_MODIFICATIONS_PEPTIDES</NAME> -<NAMETEMPLATE>IX_FK_MODIFICATIONS_PEPTIDES</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>PEPT_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>3</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -<INDEX> -<NAME>IX_FK_MODIFICATIONS_MODIFICATION_TYPES</NAME> -<NAMETEMPLATE>IX_FK_MODIFICATIONS_MODIFICATION_TYPES</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>MOTY_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>4</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -</INDEXES> -</ENT> -<ENT> -<NAME>MODIFICATION_TYPES</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>20</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>7</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_MODIFICATION_TYPES</NAME> -<NAMETEMPLATE>PK_MODIFICATION_TYPES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>CODE</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>5</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>DESCRIPTION</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>11</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>200</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -<ATTR> -<NAME>AMINO_ACID</NAME> -<ID>7</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER</DTLISTNAME> -<LE>1</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -<ATTR> -<NAME>MASS</NAME> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -<ATTR> -<NAME>MASS_TOLERANCE</NAME> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -</ATTRIBUTES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_MODIFICATION_TYPES_1</NAME> -<NAMETEMPLATE>TUC_MODIFICATION_TYPES_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -<ENT> -<NAME>PEPTIDES</NAME> -<NAMETEMPLATE>IX_FK_PEPTIDES_ABUNDANCES</NAMETEMPLATE> -<ID>21</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>10</ATTRLASTID> -<IDXLASTID>5</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_PEPTIDES</NAME> -<NAMETEMPLATE>PK_PEPTIDES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PROT_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>SEQUENCE</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>10</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>69</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>1000</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>10</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>CHARGE</NAME> -<ID>7</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>7</DOMAINID> -<DT> -<DTLISTNAME>INTEGER</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>7</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<INDEXES> -<INDEX> -<NAME>IX_FK_PEPTIDES_PROTEINS</NAME> -<NAMETEMPLATE>IX_FK_PEPTIDES_PROTEINS</NAMETEMPLATE> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>PROT_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>3</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -</INDEXES> -</ENT> -<ENT> -<NAME>PROTEINS</NAME> -<NAMETEMPLATE>IX_FK_PROTEINS_DATA_SETS</NAMETEMPLATE> -<ID>23</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>11</ATTRLASTID> -<IDXLASTID>7</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_PROTEINS</NAME> -<NAMETEMPLATE>PK_PROTEINS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>DASE_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>10</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>10</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PROBABILITY</NAME> -<ID>9</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>9</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<INDEXES> -<INDEX> -<NAME>IDX_PROTEINS_1</NAME> -<NAMETEMPLATE>IDX_PROTEINS_1</NAMETEMPLATE> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>DASE_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>10</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -</INDEXES> -</ENT> -<ENT> -<NAME>SAMPLES</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>24</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>4</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_SAMPLES</NAME> -<NAMETEMPLATE>PK_SAMPLES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PERM_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>5</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>EXPE_ID</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_SAMPLES_1</NAME> -<NAMETEMPLATE>TUC_SAMPLES_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -<ENT> -<NAME>SEQUENCES</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>25</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>6</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_SEQUENCES</NAME> -<NAMETEMPLATE>PK_SEQUENCES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>DB_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PRRE_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>6</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>AMINO_ACID_SEQUENCE</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>9</DOMAINID> -<DT> -<DTLISTNAME>TEXT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>CHECKSUM</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>4</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>8</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -</ENT> -<ENT> -<NAME>IDENTIFIED_PROTEINS</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>47</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>5</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_IDENTIFIED_PROTEINS</NAME> -<NAMETEMPLATE>PK_IDENTIFIED_PROTEINS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PROT_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>SEQU_ID</NAME> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -</ENT> -<ENT> -<NAME>ABUNDANCES</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>91</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>6</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_ABUNDANCES</NAME> -<NAMETEMPLATE>PK_ABUNDANCES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PROT_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>SAMP_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>VALUE</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>6</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -</ENT> -<ENT> -<NAME>PROBABILITY_FDR_MAPPINGS</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>96</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>5</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_PROBABILITY_FDR_MAPPINGS</NAME> -<NAMETEMPLATE>PK_PROBABILITY_FDR_MAPPINGS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>DASE_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PROBABILITY</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>FALSE_DISCOVERY_RATE</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -</ENT> -<ENT> -<NAME>PROTEIN_REFERENCES</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>98</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>4</ATTRLASTID> -<IDXLASTID>2</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_PROTEIN_REFERENCES</NAME> -<NAMETEMPLATE>PK_PROTEIN_REFERENCES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>UNIPROT_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>109</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>DESCRIPTION</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>6</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>2000</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -</ATTRIBUTES> -<INDEXES> -<INDEX> -<NAME>IDX_PROTEIN_REFERENCES_1</NAME> -<NAMETEMPLATE>IDX_PROTEIN_REFERENCES_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>UNIPROT_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>3</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -</INDEXES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_PROTEIN_REFERENCES_1</NAME> -<NAMETEMPLATE>TUC_PROTEIN_REFERENCES_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -<ENT> -<NAME>DATABASES</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>110</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>3</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_DATABASES</NAME> -<NAMETEMPLATE>PK_DATABASES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>NAME_AND_VERSION</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>11</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>200</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_DATABASES_1</NAME> -<NAMETEMPLATE>TUC_DATABASES_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -</ENTITIES> -<SUBCATEGORIES> -</SUBCATEGORIES> -<TEXTAREAS> -</TEXTAREAS> -<GROUPBOXES> -</GROUPBOXES> -<STAMPS> -</STAMPS> -<SEQUENCES> -</SEQUENCES> -<PROCEDURES> -</PROCEDURES> -<VIEWS> -</VIEWS> -<RELATIONSHIPS> -<REL> -<NAME>DA_EX_FK</NAME> -<NAMETEMPLATE>DA_EX_FK</NAMETEMPLATE> -<ID>29</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>16</PARENTOBJECTID> -<CHILDOBJECTID>17</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>DA_EX_FK</NAME> -<NAMETEMPLATE>DA_EX_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>4</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>DA_SA_FK</NAME> -<NAMETEMPLATE>DA_SA_FK</NAMETEMPLATE> -<ID>30</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>24</PARENTOBJECTID> -<CHILDOBJECTID>17</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>DA_SA_FK</NAME> -<NAMETEMPLATE>DA_SA_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>5</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>MO_PE_FK</NAME> -<NAMETEMPLATE>MO_PE_FK</NAMETEMPLATE> -<ID>32</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>21</PARENTOBJECTID> -<CHILDOBJECTID>19</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>MO_PE_FK</NAME> -<NAMETEMPLATE>MO_PE_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>3</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>MO_MT_FK</NAME> -<NAMETEMPLATE>MO_MT_FK</NAMETEMPLATE> -<ID>33</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>20</PARENTOBJECTID> -<CHILDOBJECTID>19</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>MO_MT_FK</NAME> -<NAMETEMPLATE>MO_MT_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>4</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>PE_PR_FK</NAME> -<NAMETEMPLATE>PE_PR_FK</NAMETEMPLATE> -<ID>36</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>23</PARENTOBJECTID> -<CHILDOBJECTID>21</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>PE_PR_FK</NAME> -<NAMETEMPLATE>PE_PR_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>3</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>DATA_SETS_PROTEINS</NAME> -<NAMETEMPLATE>DATA_SETS_PROTEINS</NAMETEMPLATE> -<ID>46</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>17</PARENTOBJECTID> -<CHILDOBJECTID>23</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>DATA_SETS_PROTEINS</NAME> -<NAMETEMPLATE>DATA_SETS_PROTEINS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>10</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>10</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>PROTEINS_IDENTIFIED_PROTEINS</NAME> -<NAMETEMPLATE>PROTEINS_IDENTIFIED_PROTEINS</NAMETEMPLATE> -<ID>48</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>23</PARENTOBJECTID> -<CHILDOBJECTID>47</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>PROTEINS_IDENTIFIED_PROTEINS</NAME> -<NAMETEMPLATE>PROTEINS_IDENTIFIED_PROTEINS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>3</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>SEQUENCES_IDENTIFIED_PROTEINS</NAME> -<NAMETEMPLATE>SEQUENCES_IDENTIFIED_PROTEINS</NAMETEMPLATE> -<ID>50</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>25</PARENTOBJECTID> -<CHILDOBJECTID>47</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>SEQUENCES_IDENTIFIED_PROTEINS</NAME> -<NAMETEMPLATE>SEQUENCES_IDENTIFIED_PROTEINS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>5</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>SAMPLES_ABUNDANCES</NAME> -<NAMETEMPLATE>SAMPLES_ABUNDANCES</NAMETEMPLATE> -<ID>92</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>24</PARENTOBJECTID> -<CHILDOBJECTID>91</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>SAMPLES_ABUNDANCES</NAME> -<NAMETEMPLATE>SAMPLES_ABUNDANCES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>4</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>PROTEINS_ABUNDANCES</NAME> -<NAMETEMPLATE>PROTEINS_ABUNDANCES</NAMETEMPLATE> -<ID>94</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>23</PARENTOBJECTID> -<CHILDOBJECTID>91</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>PROTEINS_ABUNDANCES</NAME> -<NAMETEMPLATE>PROTEINS_ABUNDANCES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>3</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>DATA_SETS_PROBABILITY_FDR_MAPPINGS</NAME> -<NAMETEMPLATE>DATA_SETS_PROBABILITY_FDR_MAPPINGS</NAMETEMPLATE> -<ID>97</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>17</PARENTOBJECTID> -<CHILDOBJECTID>96</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>DATA_SETS_PROBABILITY_FDR_MAPPINGS</NAME> -<NAMETEMPLATE>DATA_SETS_PROBABILITY_FDR_MAPPINGS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>5</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>DATABASES_SEQUENCES</NAME> -<NAMETEMPLATE>DATABASES_SEQUENCES</NAMETEMPLATE> -<ID>111</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>110</PARENTOBJECTID> -<CHILDOBJECTID>25</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>DATABASES_SEQUENCES</NAME> -<NAMETEMPLATE>DATABASES_SEQUENCES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>5</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>PROTEIN_REFERENCES_SEQUENCES</NAME> -<NAMETEMPLATE>PROTEIN_REFERENCES_SEQUENCES</NAMETEMPLATE> -<ID>112</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>98</PARENTOBJECTID> -<CHILDOBJECTID>25</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>PROTEIN_REFERENCES_SEQUENCES</NAME> -<NAMETEMPLATE>PROTEIN_REFERENCES_SEQUENCES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>6</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>6</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>DATABASES_DATA_SETS</NAME> -<NAMETEMPLATE>DATABASES_DATA_SETS</NAMETEMPLATE> -<ID>125</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>110</PARENTOBJECTID> -<CHILDOBJECTID>17</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>DATABASES_DATA_SETS</NAME> -<NAMETEMPLATE>DATABASES_DATA_SETS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>6</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>6</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -</RELATIONSHIPS> -<SUBCATEGORYCONNECTIONS> -</SUBCATEGORYCONNECTIONS> -</DATADICT> -</VERSION> -<VERSION> -<VERSIONINFO> -<VERSIONNUMBER>8</VERSIONNUMBER> -<VERSIONLABEL>Version 2009-07-15</VERSIONLABEL> -<VERSIONDATE>2009-07-15 15:52</VERSIONDATE> -<VERSIONCOMMENTS></VERSIONCOMMENTS> -<VERSIONTYPE>DB</VERSIONTYPE> -<VERSIONTYPEDESC>Data dictionary only (no diagrams)</VERSIONTYPEDESC> -</VERSIONINFO> -<DATADICT> -<DBID>postgresql8</DBID> -<LASTID>139</LASTID> -<DDSETTINGS> -<PKCONNAMETEMPLATE>PK_%table%</PKCONNAMETEMPLATE> -<FKCONNAMETEMPLATE>%relname%</FKCONNAMETEMPLATE> -<CCONNAMETEMPLATE>CC_%table%_%column%</CCONNAMETEMPLATE> -<NOTNULLCONNAMETEMPLATE>NN_%column%</NOTNULLCONNAMETEMPLATE> -<DEFAULTCONNAMETEMPLATE>DEF_%table%_%column%</DEFAULTCONNAMETEMPLATE> -<TUCONNAMETEMPLATE>TUC_%table%_%counter%</TUCONNAMETEMPLATE> -<TCCONNAMETEMPLATE>TCC_%table%_%counter%</TCCONNAMETEMPLATE> -<RELNAMETEMPLATE>%parent%_%child%</RELNAMETEMPLATE> -<INDEXNAMETEMPLATE>IDX_%table%_%counter%</INDEXNAMETEMPLATE> -<DEFTABLEOPTIONS></DEFTABLEOPTIONS> -<DEFINDEXOPTIONS></DEFINDEXOPTIONS> -<BEGINDATABASESCRIPT></BEGINDATABASESCRIPT> -<ENDDATABASESCRIP></ENDDATABASESCRIP> -<BEGINALTERDATABASESCRIPT></BEGINALTERDATABASESCRIPT> -<ENDALTERDATABASESCRIP></ENDALTERDATABASESCRIP> -<BEGINDROPDATABASESCRIPT></BEGINDROPDATABASESCRIPT> -<ENDDROPDATABASESCRIP></ENDDROPDATABASESCRIP> -<GENDIALOGSELECTEDOBJECTS></GENDIALOGSELECTEDOBJECTS> -<GENTABLES>1</GENTABLES> -<GENTABLEOPTIONS>1</GENTABLEOPTIONS> -<GENCONSTRAINTS>1</GENCONSTRAINTS> -<GENINDEXES>1</GENINDEXES> -<GENTRIGGERS>1</GENTRIGGERS> -<GENVIEWS>1</GENVIEWS> -<GENPROCEDURES>1</GENPROCEDURES> -<GENSEQUENCES>1</GENSEQUENCES> -<GENRELATIONSHIPS>1</GENRELATIONSHIPS> -<GENBEGINENDTABLESCRIPTS>1</GENBEGINENDTABLESCRIPTS> -<GENBEGINENDDBSCRIPTS>1</GENBEGINENDDBSCRIPTS> -<GLOBALPREFIX></GLOBALPREFIX> -<AUTOCREATEINDEXESONKEYS>0</AUTOCREATEINDEXESONKEYS> -<CONVERTDOMAINS>0</CONVERTDOMAINS> -<IGNORECOMMENTS>0</IGNORECOMMENTS> -<USESCHEMANAMES>0</USESCHEMANAMES> -<UCONNAMETEMPLATE></UCONNAMETEMPLATE> -<SQLCREATEFILE>D:\User\felmer\dev-workspace\rtd_phosphonetx\source\sql\postgresql\001\schema-001.sql</SQLCREATEFILE> -<SQLDROPFILE>D:\User\felmer\dev-workspace\rtd_phosphonetx\source\sql\postgresql\001\drop.sql</SQLDROPFILE> -</DDSETTINGS> -<DOMAINS> -<DOMAIN> -<NAME>CHECKSUM</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>8</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>CODE</NAME> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>DESCRIPTION</NAME> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>2000</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>INTEGER_NUMBER</NAME> -<ID>7</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>INTEGER</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>REAL_NUMBER</NAME> -<ID>8</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>LONG_SEQUENCE</NAME> -<ID>9</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>TEXT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>SHORT_DESCRIPTION</NAME> -<ID>11</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>200</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>TECH_ID</NAME> -<ID>12</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>SHORT_SEQUENCE</NAME> -<ID>69</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>1000</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>UNIPROT_ACCESSION_NUMBER</NAME> -<ID>109</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -</DOMAINS> -<ENTITIES> -<ENT> -<NAME>EXPERIMENTS</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>16</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>3</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_EXPERIMENTS</NAME> -<NAMETEMPLATE>PK_EXPERIMENTS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PERM_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>5</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_EXPERIMENTS_1</NAME> -<NAMETEMPLATE>TUC_EXPERIMENTS_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -<ENT> -<NAME>DATA_SETS</NAME> -<NAMETEMPLATE>IX_FK_DATA_SETS_EXPERIMENTS</NAMETEMPLATE> -<ID>17</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>6</ATTRLASTID> -<IDXLASTID>3</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_DATA_SETS</NAME> -<NAMETEMPLATE>PK_DATA_SETS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>EXPE_ID</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>SAMP_ID</NAME> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>DB_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>6</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PERM_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>5</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<INDEXES> -<INDEX> -<NAME>IX_FK_DATA_SETS_EXPERIMENTS</NAME> -<NAMETEMPLATE>IX_FK_DATA_SETS_EXPERIMENTS</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>EXPE_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>4</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -<INDEX> -<NAME>IX_FK_DATA_SETS_SAMPLES</NAME> -<NAMETEMPLATE>IX_FK_DATA_SETS_SAMPLES</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>SAMP_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>5</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -</INDEXES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_DATA_SETS_1</NAME> -<NAMETEMPLATE>TUC_DATA_SETS_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -<ENT> -<NAME>MODIFICATIONS</NAME> -<NAMETEMPLATE>IX_FK_MODIFICATIONS_PEPTIDES</NAMETEMPLATE> -<ID>19</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>7</ATTRLASTID> -<IDXLASTID>5</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_MODIFICATIONS</NAME> -<NAMETEMPLATE>PK_MODIFICATIONS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>MOPE_ID</NAME> -<ID>7</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>7</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>POS</NAME> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>7</DOMAINID> -<DT> -<DTLISTNAME>INTEGER</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>MASS</NAME> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>6</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -</ENT> -<ENT> -<NAME>PEPTIDES</NAME> -<NAMETEMPLATE>IX_FK_PEPTIDES_ABUNDANCES</NAMETEMPLATE> -<ID>21</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>10</ATTRLASTID> -<IDXLASTID>5</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_PEPTIDES</NAME> -<NAMETEMPLATE>PK_PEPTIDES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PROT_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>SEQUENCE</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>10</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>69</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>1000</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>10</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>CHARGE</NAME> -<ID>7</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>7</DOMAINID> -<DT> -<DTLISTNAME>INTEGER</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>7</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<INDEXES> -<INDEX> -<NAME>IX_FK_PEPTIDES_PROTEINS</NAME> -<NAMETEMPLATE>IX_FK_PEPTIDES_PROTEINS</NAMETEMPLATE> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>PROT_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>3</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -</INDEXES> -</ENT> -<ENT> -<NAME>PROTEINS</NAME> -<NAMETEMPLATE>IX_FK_PROTEINS_DATA_SETS</NAMETEMPLATE> -<ID>23</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>11</ATTRLASTID> -<IDXLASTID>7</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_PROTEINS</NAME> -<NAMETEMPLATE>PK_PROTEINS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>DASE_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>10</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>10</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PROBABILITY</NAME> -<ID>9</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>9</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<INDEXES> -<INDEX> -<NAME>IDX_PROTEINS_1</NAME> -<NAMETEMPLATE>IDX_PROTEINS_1</NAMETEMPLATE> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>DASE_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>10</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -</INDEXES> -</ENT> -<ENT> -<NAME>SAMPLES</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>24</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>4</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_SAMPLES</NAME> -<NAMETEMPLATE>PK_SAMPLES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PERM_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>5</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>EXPE_ID</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_SAMPLES_1</NAME> -<NAMETEMPLATE>TUC_SAMPLES_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -<ENT> -<NAME>SEQUENCES</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>25</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>6</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_SEQUENCES</NAME> -<NAMETEMPLATE>PK_SEQUENCES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>DB_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PRRE_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>6</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>AMINO_ACID_SEQUENCE</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>9</DOMAINID> -<DT> -<DTLISTNAME>TEXT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>CHECKSUM</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>4</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>8</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -</ENT> -<ENT> -<NAME>IDENTIFIED_PROTEINS</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>47</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>5</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_IDENTIFIED_PROTEINS</NAME> -<NAMETEMPLATE>PK_IDENTIFIED_PROTEINS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PROT_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>SEQU_ID</NAME> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -</ENT> -<ENT> -<NAME>ABUNDANCES</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>91</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>6</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_ABUNDANCES</NAME> -<NAMETEMPLATE>PK_ABUNDANCES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PROT_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>SAMP_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>VALUE</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>6</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -</ENT> -<ENT> -<NAME>PROBABILITY_FDR_MAPPINGS</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>96</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>5</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_PROBABILITY_FDR_MAPPINGS</NAME> -<NAMETEMPLATE>PK_PROBABILITY_FDR_MAPPINGS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>DASE_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PROBABILITY</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>FALSE_DISCOVERY_RATE</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -</ENT> -<ENT> -<NAME>PROTEIN_REFERENCES</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>98</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>4</ATTRLASTID> -<IDXLASTID>2</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_PROTEIN_REFERENCES</NAME> -<NAMETEMPLATE>PK_PROTEIN_REFERENCES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>UNIPROT_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>109</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>DESCRIPTION</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>6</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>2000</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -</ATTRIBUTES> -<INDEXES> -<INDEX> -<NAME>IDX_PROTEIN_REFERENCES_1</NAME> -<NAMETEMPLATE>IDX_PROTEIN_REFERENCES_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>UNIPROT_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>3</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -</INDEXES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_PROTEIN_REFERENCES_1</NAME> -<NAMETEMPLATE>TUC_PROTEIN_REFERENCES_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -<ENT> -<NAME>DATABASES</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>110</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>3</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_DATABASES</NAME> -<NAMETEMPLATE>PK_DATABASES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>NAME_AND_VERSION</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>11</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>200</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_DATABASES_1</NAME> -<NAMETEMPLATE>TUC_DATABASES_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -<ENT> -<NAME>MODIFIED_PEPTIDES</NAME> -<ID>136</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>5</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_MODIFIED_PEPTIDES</NAME> -<NAMETEMPLATE>PK_MODIFIED_PEPTIDES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PEPT_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>NTERM_MASS</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>CTERM_MASS</NAME> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -</ENT> -</ENTITIES> -<SUBCATEGORIES> -</SUBCATEGORIES> -<TEXTAREAS> -</TEXTAREAS> -<GROUPBOXES> -</GROUPBOXES> -<STAMPS> -</STAMPS> -<SEQUENCES> -</SEQUENCES> -<PROCEDURES> -</PROCEDURES> -<VIEWS> -</VIEWS> -<RELATIONSHIPS> -<REL> -<NAME>DA_EX_FK</NAME> -<NAMETEMPLATE>DA_EX_FK</NAMETEMPLATE> -<ID>29</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>16</PARENTOBJECTID> -<CHILDOBJECTID>17</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>DA_EX_FK</NAME> -<NAMETEMPLATE>DA_EX_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>4</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>DA_SA_FK</NAME> -<NAMETEMPLATE>DA_SA_FK</NAMETEMPLATE> -<ID>30</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>24</PARENTOBJECTID> -<CHILDOBJECTID>17</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>DA_SA_FK</NAME> -<NAMETEMPLATE>DA_SA_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>5</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>PE_PR_FK</NAME> -<NAMETEMPLATE>PE_PR_FK</NAMETEMPLATE> -<ID>36</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>23</PARENTOBJECTID> -<CHILDOBJECTID>21</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>PE_PR_FK</NAME> -<NAMETEMPLATE>PE_PR_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>3</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>DATA_SETS_PROTEINS</NAME> -<NAMETEMPLATE>DATA_SETS_PROTEINS</NAMETEMPLATE> -<ID>46</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>17</PARENTOBJECTID> -<CHILDOBJECTID>23</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>DATA_SETS_PROTEINS</NAME> -<NAMETEMPLATE>DATA_SETS_PROTEINS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>10</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>10</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>PROTEINS_IDENTIFIED_PROTEINS</NAME> -<NAMETEMPLATE>PROTEINS_IDENTIFIED_PROTEINS</NAMETEMPLATE> -<ID>48</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>23</PARENTOBJECTID> -<CHILDOBJECTID>47</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>PROTEINS_IDENTIFIED_PROTEINS</NAME> -<NAMETEMPLATE>PROTEINS_IDENTIFIED_PROTEINS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>3</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>SEQUENCES_IDENTIFIED_PROTEINS</NAME> -<NAMETEMPLATE>SEQUENCES_IDENTIFIED_PROTEINS</NAMETEMPLATE> -<ID>50</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>25</PARENTOBJECTID> -<CHILDOBJECTID>47</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>SEQUENCES_IDENTIFIED_PROTEINS</NAME> -<NAMETEMPLATE>SEQUENCES_IDENTIFIED_PROTEINS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>5</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>SAMPLES_ABUNDANCES</NAME> -<NAMETEMPLATE>SAMPLES_ABUNDANCES</NAMETEMPLATE> -<ID>92</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>24</PARENTOBJECTID> -<CHILDOBJECTID>91</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>SAMPLES_ABUNDANCES</NAME> -<NAMETEMPLATE>SAMPLES_ABUNDANCES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>4</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>PROTEINS_ABUNDANCES</NAME> -<NAMETEMPLATE>PROTEINS_ABUNDANCES</NAMETEMPLATE> -<ID>94</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>23</PARENTOBJECTID> -<CHILDOBJECTID>91</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>PROTEINS_ABUNDANCES</NAME> -<NAMETEMPLATE>PROTEINS_ABUNDANCES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>3</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>DATA_SETS_PROBABILITY_FDR_MAPPINGS</NAME> -<NAMETEMPLATE>DATA_SETS_PROBABILITY_FDR_MAPPINGS</NAMETEMPLATE> -<ID>97</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>17</PARENTOBJECTID> -<CHILDOBJECTID>96</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>DATA_SETS_PROBABILITY_FDR_MAPPINGS</NAME> -<NAMETEMPLATE>DATA_SETS_PROBABILITY_FDR_MAPPINGS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>5</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>DATABASES_SEQUENCES</NAME> -<NAMETEMPLATE>DATABASES_SEQUENCES</NAMETEMPLATE> -<ID>111</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>110</PARENTOBJECTID> -<CHILDOBJECTID>25</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>DATABASES_SEQUENCES</NAME> -<NAMETEMPLATE>DATABASES_SEQUENCES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>5</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>PROTEIN_REFERENCES_SEQUENCES</NAME> -<NAMETEMPLATE>PROTEIN_REFERENCES_SEQUENCES</NAMETEMPLATE> -<ID>112</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>98</PARENTOBJECTID> -<CHILDOBJECTID>25</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>PROTEIN_REFERENCES_SEQUENCES</NAME> -<NAMETEMPLATE>PROTEIN_REFERENCES_SEQUENCES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>6</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>6</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>DATABASES_DATA_SETS</NAME> -<NAMETEMPLATE>DATABASES_DATA_SETS</NAMETEMPLATE> -<ID>125</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>110</PARENTOBJECTID> -<CHILDOBJECTID>17</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>DATABASES_DATA_SETS</NAME> -<NAMETEMPLATE>DATABASES_DATA_SETS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>6</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>6</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>PEPTIDES_MODIFIED_PEPTIDES</NAME> -<NAMETEMPLATE>PEPTIDES_MODIFIED_PEPTIDES</NAMETEMPLATE> -<ID>138</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>21</PARENTOBJECTID> -<CHILDOBJECTID>136</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>PEPTIDES_MODIFIED_PEPTIDES</NAME> -<NAMETEMPLATE>PEPTIDES_MODIFIED_PEPTIDES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>3</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>MODIFIED_PEPTIDES_MODIFICATIONS</NAME> -<NAMETEMPLATE>MODIFIED_PEPTIDES_MODIFICATIONS</NAMETEMPLATE> -<ID>139</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>136</PARENTOBJECTID> -<CHILDOBJECTID>19</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>MODIFIED_PEPTIDES_MODIFICATIONS</NAME> -<NAMETEMPLATE>MODIFIED_PEPTIDES_MODIFICATIONS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>7</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>7</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -</RELATIONSHIPS> -<SUBCATEGORYCONNECTIONS> -</SUBCATEGORYCONNECTIONS> -</DATADICT> -</VERSION> -<VERSION> -<VERSIONINFO> -<VERSIONNUMBER>9</VERSIONNUMBER> -<VERSIONLABEL>Version 2009-07-15 1</VERSIONLABEL> -<VERSIONDATE>2009-07-15 15:53</VERSIONDATE> -<VERSIONCOMMENTS></VERSIONCOMMENTS> -<VERSIONTYPE>DB</VERSIONTYPE> -<VERSIONTYPEDESC>Data dictionary only (no diagrams)</VERSIONTYPEDESC> -</VERSIONINFO> -<DATADICT> -<DBID>postgresql8</DBID> -<LASTID>139</LASTID> -<DDSETTINGS> -<PKCONNAMETEMPLATE>PK_%table%</PKCONNAMETEMPLATE> -<FKCONNAMETEMPLATE>%relname%</FKCONNAMETEMPLATE> -<CCONNAMETEMPLATE>CC_%table%_%column%</CCONNAMETEMPLATE> -<NOTNULLCONNAMETEMPLATE>NN_%column%</NOTNULLCONNAMETEMPLATE> -<DEFAULTCONNAMETEMPLATE>DEF_%table%_%column%</DEFAULTCONNAMETEMPLATE> -<TUCONNAMETEMPLATE>TUC_%table%_%counter%</TUCONNAMETEMPLATE> -<TCCONNAMETEMPLATE>TCC_%table%_%counter%</TCCONNAMETEMPLATE> -<RELNAMETEMPLATE>%parent%_%child%</RELNAMETEMPLATE> -<INDEXNAMETEMPLATE>IDX_%table%_%counter%</INDEXNAMETEMPLATE> -<DEFTABLEOPTIONS></DEFTABLEOPTIONS> -<DEFINDEXOPTIONS></DEFINDEXOPTIONS> -<BEGINDATABASESCRIPT></BEGINDATABASESCRIPT> -<ENDDATABASESCRIP></ENDDATABASESCRIP> -<BEGINALTERDATABASESCRIPT></BEGINALTERDATABASESCRIPT> -<ENDALTERDATABASESCRIP></ENDALTERDATABASESCRIP> -<BEGINDROPDATABASESCRIPT></BEGINDROPDATABASESCRIPT> -<ENDDROPDATABASESCRIP></ENDDROPDATABASESCRIP> -<GENDIALOGSELECTEDOBJECTS></GENDIALOGSELECTEDOBJECTS> -<GENTABLES>1</GENTABLES> -<GENTABLEOPTIONS>1</GENTABLEOPTIONS> -<GENCONSTRAINTS>1</GENCONSTRAINTS> -<GENINDEXES>1</GENINDEXES> -<GENTRIGGERS>1</GENTRIGGERS> -<GENVIEWS>1</GENVIEWS> -<GENPROCEDURES>1</GENPROCEDURES> -<GENSEQUENCES>1</GENSEQUENCES> -<GENRELATIONSHIPS>1</GENRELATIONSHIPS> -<GENBEGINENDTABLESCRIPTS>1</GENBEGINENDTABLESCRIPTS> -<GENBEGINENDDBSCRIPTS>1</GENBEGINENDDBSCRIPTS> -<GLOBALPREFIX></GLOBALPREFIX> -<AUTOCREATEINDEXESONKEYS>0</AUTOCREATEINDEXESONKEYS> -<CONVERTDOMAINS>0</CONVERTDOMAINS> -<IGNORECOMMENTS>0</IGNORECOMMENTS> -<USESCHEMANAMES>0</USESCHEMANAMES> -<UCONNAMETEMPLATE></UCONNAMETEMPLATE> -<SQLCREATEFILE>D:\User\felmer\dev-workspace\rtd_phosphonetx\source\sql\postgresql\001\schema-001.sql</SQLCREATEFILE> -<SQLDROPFILE>D:\User\felmer\dev-workspace\rtd_phosphonetx\source\sql\postgresql\001\drop.sql</SQLDROPFILE> -</DDSETTINGS> -<DOMAINS> -<DOMAIN> -<NAME>CHECKSUM</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>8</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>CODE</NAME> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>DESCRIPTION</NAME> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>2000</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>INTEGER_NUMBER</NAME> -<ID>7</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>INTEGER</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>REAL_NUMBER</NAME> -<ID>8</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>LONG_SEQUENCE</NAME> -<ID>9</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>TEXT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>SHORT_DESCRIPTION</NAME> -<ID>11</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>200</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>TECH_ID</NAME> -<ID>12</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>SHORT_SEQUENCE</NAME> -<ID>69</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>1000</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -<DOMAIN> -<NAME>UNIPROT_ACCESSION_NUMBER</NAME> -<ID>109</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</DOMAIN> -</DOMAINS> -<ENTITIES> -<ENT> -<NAME>EXPERIMENTS</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>16</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>3</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_EXPERIMENTS</NAME> -<NAMETEMPLATE>PK_EXPERIMENTS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PERM_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>5</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_EXPERIMENTS_1</NAME> -<NAMETEMPLATE>TUC_EXPERIMENTS_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -<ENT> -<NAME>DATA_SETS</NAME> -<NAMETEMPLATE>IX_FK_DATA_SETS_EXPERIMENTS</NAMETEMPLATE> -<ID>17</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>6</ATTRLASTID> -<IDXLASTID>3</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_DATA_SETS</NAME> -<NAMETEMPLATE>PK_DATA_SETS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>EXPE_ID</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>SAMP_ID</NAME> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>DB_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>6</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PERM_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>5</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<INDEXES> -<INDEX> -<NAME>IX_FK_DATA_SETS_EXPERIMENTS</NAME> -<NAMETEMPLATE>IX_FK_DATA_SETS_EXPERIMENTS</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>EXPE_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>4</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -<INDEX> -<NAME>IX_FK_DATA_SETS_SAMPLES</NAME> -<NAMETEMPLATE>IX_FK_DATA_SETS_SAMPLES</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>SAMP_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>5</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -</INDEXES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_DATA_SETS_1</NAME> -<NAMETEMPLATE>TUC_DATA_SETS_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -<ENT> -<NAME>MODIFICATIONS</NAME> -<NAMETEMPLATE>IX_FK_MODIFICATIONS_PEPTIDES</NAMETEMPLATE> -<ID>19</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>7</ATTRLASTID> -<IDXLASTID>5</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_MODIFICATIONS</NAME> -<NAMETEMPLATE>PK_MODIFICATIONS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>MOPE_ID</NAME> -<ID>7</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>7</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>POS</NAME> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>7</DOMAINID> -<DT> -<DTLISTNAME>INTEGER</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>MASS</NAME> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>6</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -</ENT> -<ENT> -<NAME>PEPTIDES</NAME> -<NAMETEMPLATE>IX_FK_PEPTIDES_ABUNDANCES</NAMETEMPLATE> -<ID>21</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>10</ATTRLASTID> -<IDXLASTID>5</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_PEPTIDES</NAME> -<NAMETEMPLATE>PK_PEPTIDES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PROT_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>SEQUENCE</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>10</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>69</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>1000</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>10</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>CHARGE</NAME> -<ID>7</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>7</DOMAINID> -<DT> -<DTLISTNAME>INTEGER</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>7</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<INDEXES> -<INDEX> -<NAME>IX_FK_PEPTIDES_PROTEINS</NAME> -<NAMETEMPLATE>IX_FK_PEPTIDES_PROTEINS</NAMETEMPLATE> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>PROT_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>3</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -</INDEXES> -</ENT> -<ENT> -<NAME>PROTEINS</NAME> -<NAMETEMPLATE>IX_FK_PROTEINS_DATA_SETS</NAMETEMPLATE> -<ID>23</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>11</ATTRLASTID> -<IDXLASTID>7</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_PROTEINS</NAME> -<NAMETEMPLATE>PK_PROTEINS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>DASE_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>10</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>10</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PROBABILITY</NAME> -<ID>9</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>9</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<INDEXES> -<INDEX> -<NAME>IDX_PROTEINS_1</NAME> -<NAMETEMPLATE>IDX_PROTEINS_1</NAMETEMPLATE> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>DASE_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>10</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -</INDEXES> -</ENT> -<ENT> -<NAME>SAMPLES</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>24</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>4</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_SAMPLES</NAME> -<NAMETEMPLATE>PK_SAMPLES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PERM_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>5</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>EXPE_ID</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_SAMPLES_1</NAME> -<NAMETEMPLATE>TUC_SAMPLES_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -<ENT> -<NAME>SEQUENCES</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>25</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>6</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_SEQUENCES</NAME> -<NAMETEMPLATE>PK_SEQUENCES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>DB_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PRRE_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>6</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>AMINO_ACID_SEQUENCE</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>9</DOMAINID> -<DT> -<DTLISTNAME>TEXT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>CHECKSUM</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>4</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>8</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -</ENT> -<ENT> -<NAME>IDENTIFIED_PROTEINS</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>47</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>5</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_IDENTIFIED_PROTEINS</NAME> -<NAMETEMPLATE>PK_IDENTIFIED_PROTEINS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PROT_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>SEQU_ID</NAME> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -</ENT> -<ENT> -<NAME>ABUNDANCES</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>91</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>6</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_ABUNDANCES</NAME> -<NAMETEMPLATE>PK_ABUNDANCES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PROT_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>SAMP_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>VALUE</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>6</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>6</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -</ENT> -<ENT> -<NAME>PROBABILITY_FDR_MAPPINGS</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>96</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>5</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_PROBABILITY_FDR_MAPPINGS</NAME> -<NAMETEMPLATE>PK_PROBABILITY_FDR_MAPPINGS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>DASE_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PROBABILITY</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>FALSE_DISCOVERY_RATE</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -</ENT> -<ENT> -<NAME>PROTEIN_REFERENCES</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>98</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>4</ATTRLASTID> -<IDXLASTID>2</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_PROTEIN_REFERENCES</NAME> -<NAMETEMPLATE>PK_PROTEIN_REFERENCES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>UNIPROT_ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>109</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>40</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>DESCRIPTION</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>6</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>2000</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -</ATTR> -</ATTRIBUTES> -<INDEXES> -<INDEX> -<NAME>IDX_PROTEIN_REFERENCES_1</NAME> -<NAMETEMPLATE>IDX_PROTEIN_REFERENCES_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<RELID>0</RELID> -<AUTOIDXTYPE>0</AUTOIDXTYPE> -<IDXCOLS> -<IDXCOL> -<NAME>UNIPROT_ID</NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<IDXCOLATTRID>3</IDXCOLATTRID> -</IDXCOL> -</IDXCOLS> -</INDEX> -</INDEXES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_PROTEIN_REFERENCES_1</NAME> -<NAMETEMPLATE>TUC_PROTEIN_REFERENCES_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -<ENT> -<NAME>DATABASES</NAME> -<NAMETEMPLATE>PK_%table%</NAMETEMPLATE> -<ID>110</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>3</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>2</CONLASTID> -<PKCON> -<NAME>PK_DATABASES</NAME> -<NAMETEMPLATE>PK_DATABASES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>NAME_AND_VERSION</NAME> -<NAMETEMPLATE>NN_%column%</NAMETEMPLATE> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>11</DOMAINID> -<DT> -<DTLISTNAME>CHARACTER VARYING</DTLISTNAME> -<LE>200</LE> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -<CONSTRAINTS> -<CONSTRAINT> -<NAME>TUC_DATABASES_1</NAME> -<NAMETEMPLATE>TUC_DATABASES_1</NAMETEMPLATE> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>2</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -</CONSTRAINTS> -</ENT> -<ENT> -<NAME>MODIFIED_PEPTIDES</NAME> -<ID>136</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<ATTRLASTID>5</ATTRLASTID> -<IDXLASTID>1</IDXLASTID> -<TRGLASTID>1</TRGLASTID> -<CONLASTID>1</CONLASTID> -<PKCON> -<NAME>PK_MODIFIED_PEPTIDES</NAME> -<NAMETEMPLATE>PK_MODIFIED_PEPTIDES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>3</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</PKCON> -<ATTRIBUTES> -<ATTR> -<NAME>ID</NAME> -<ID>2</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>-1</DOMAINID> -<DT> -<DTLISTNAME>BIGSERIAL</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>2</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>PEPT_ID</NAME> -<ID>3</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>12</DOMAINID> -<DT> -<DTLISTNAME>BIGINT</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>NTERM_MASS</NAME> -<ID>4</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -<ATTR> -<NAME>CTERM_MASS</NAME> -<ID>5</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<DOMAINID>8</DOMAINID> -<DT> -<DTLISTNAME>DOUBLE PRECISION</DTLISTNAME> -<SD>0</SD> -<INC>1</INC> -</DT> -<NNCON> -<NAME></NAME> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<VALUE>1</VALUE> -<CONLEVEL>1</CONLEVEL> -<CONTYPE>5</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</NNCON> -</ATTR> -</ATTRIBUTES> -</ENT> -</ENTITIES> -<SUBCATEGORIES> -</SUBCATEGORIES> -<TEXTAREAS> -</TEXTAREAS> -<GROUPBOXES> -</GROUPBOXES> -<STAMPS> -</STAMPS> -<SEQUENCES> -</SEQUENCES> -<PROCEDURES> -</PROCEDURES> -<VIEWS> -</VIEWS> -<RELATIONSHIPS> -<REL> -<NAME>DA_EX_FK</NAME> -<NAMETEMPLATE>DA_EX_FK</NAMETEMPLATE> -<ID>29</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>16</PARENTOBJECTID> -<CHILDOBJECTID>17</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>DA_EX_FK</NAME> -<NAMETEMPLATE>DA_EX_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>4</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>DA_SA_FK</NAME> -<NAMETEMPLATE>DA_SA_FK</NAMETEMPLATE> -<ID>30</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>24</PARENTOBJECTID> -<CHILDOBJECTID>17</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>DA_SA_FK</NAME> -<NAMETEMPLATE>DA_SA_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>5</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>PE_PR_FK</NAME> -<NAMETEMPLATE>PE_PR_FK</NAMETEMPLATE> -<ID>36</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>23</PARENTOBJECTID> -<CHILDOBJECTID>21</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>PE_PR_FK</NAME> -<NAMETEMPLATE>PE_PR_FK</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>3</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>DATA_SETS_PROTEINS</NAME> -<NAMETEMPLATE>DATA_SETS_PROTEINS</NAMETEMPLATE> -<ID>46</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>17</PARENTOBJECTID> -<CHILDOBJECTID>23</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>DATA_SETS_PROTEINS</NAME> -<NAMETEMPLATE>DATA_SETS_PROTEINS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>10</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>10</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>PROTEINS_IDENTIFIED_PROTEINS</NAME> -<NAMETEMPLATE>PROTEINS_IDENTIFIED_PROTEINS</NAMETEMPLATE> -<ID>48</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>23</PARENTOBJECTID> -<CHILDOBJECTID>47</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>PROTEINS_IDENTIFIED_PROTEINS</NAME> -<NAMETEMPLATE>PROTEINS_IDENTIFIED_PROTEINS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>3</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>SEQUENCES_IDENTIFIED_PROTEINS</NAME> -<NAMETEMPLATE>SEQUENCES_IDENTIFIED_PROTEINS</NAMETEMPLATE> -<ID>50</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>25</PARENTOBJECTID> -<CHILDOBJECTID>47</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>SEQUENCES_IDENTIFIED_PROTEINS</NAME> -<NAMETEMPLATE>SEQUENCES_IDENTIFIED_PROTEINS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>5</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>SAMPLES_ABUNDANCES</NAME> -<NAMETEMPLATE>SAMPLES_ABUNDANCES</NAMETEMPLATE> -<ID>92</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>24</PARENTOBJECTID> -<CHILDOBJECTID>91</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>SAMPLES_ABUNDANCES</NAME> -<NAMETEMPLATE>SAMPLES_ABUNDANCES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>4</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>4</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>PROTEINS_ABUNDANCES</NAME> -<NAMETEMPLATE>PROTEINS_ABUNDANCES</NAMETEMPLATE> -<ID>94</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>23</PARENTOBJECTID> -<CHILDOBJECTID>91</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>PROTEINS_ABUNDANCES</NAME> -<NAMETEMPLATE>PROTEINS_ABUNDANCES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>3</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>DATA_SETS_PROBABILITY_FDR_MAPPINGS</NAME> -<NAMETEMPLATE>DATA_SETS_PROBABILITY_FDR_MAPPINGS</NAMETEMPLATE> -<ID>97</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>17</PARENTOBJECTID> -<CHILDOBJECTID>96</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>DATA_SETS_PROBABILITY_FDR_MAPPINGS</NAME> -<NAMETEMPLATE>DATA_SETS_PROBABILITY_FDR_MAPPINGS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>5</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>DATABASES_SEQUENCES</NAME> -<NAMETEMPLATE>DATABASES_SEQUENCES</NAMETEMPLATE> -<ID>111</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>110</PARENTOBJECTID> -<CHILDOBJECTID>25</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>DATABASES_SEQUENCES</NAME> -<NAMETEMPLATE>DATABASES_SEQUENCES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>5</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>5</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>PROTEIN_REFERENCES_SEQUENCES</NAME> -<NAMETEMPLATE>PROTEIN_REFERENCES_SEQUENCES</NAMETEMPLATE> -<ID>112</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>98</PARENTOBJECTID> -<CHILDOBJECTID>25</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>PROTEIN_REFERENCES_SEQUENCES</NAME> -<NAMETEMPLATE>PROTEIN_REFERENCES_SEQUENCES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>6</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>6</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>DATABASES_DATA_SETS</NAME> -<NAMETEMPLATE>DATABASES_DATA_SETS</NAMETEMPLATE> -<ID>125</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>110</PARENTOBJECTID> -<CHILDOBJECTID>17</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>DATABASES_DATA_SETS</NAME> -<NAMETEMPLATE>DATABASES_DATA_SETS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>6</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>6</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>PEPTIDES_MODIFIED_PEPTIDES</NAME> -<NAMETEMPLATE>PEPTIDES_MODIFIED_PEPTIDES</NAMETEMPLATE> -<ID>138</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>21</PARENTOBJECTID> -<CHILDOBJECTID>136</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>PEPTIDES_MODIFIED_PEPTIDES</NAME> -<NAMETEMPLATE>PEPTIDES_MODIFIED_PEPTIDES</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>3</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>3</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -<REL> -<NAME>MODIFIED_PEPTIDES_MODIFICATIONS</NAME> -<NAMETEMPLATE>MODIFIED_PEPTIDES_MODIFICATIONS</NAMETEMPLATE> -<ID>139</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<PARENTOBJECTID>136</PARENTOBJECTID> -<CHILDOBJECTID>19</CHILDOBJECTID> -<CARDINALITY>0</CARDINALITY> -<RELTYPE>1</RELTYPE> -<MANDATORYPARENT>1</MANDATORYPARENT> -<UPDATERULE>0</UPDATERULE> -<DELETERULE>0</DELETERULE> -<CONSTRAINT> -<NAME>MODIFIED_PEPTIDES_MODIFICATIONS</NAME> -<NAMETEMPLATE>MODIFIED_PEPTIDES_MODIFICATIONS</NAMETEMPLATE> -<ID>1</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<CONLEVEL>2</CONLEVEL> -<CONTYPE>4</CONTYPE> -<ATTRIBUTEIDS> -<ATTRIBUTEID>7</ATTRIBUTEID> -</ATTRIBUTEIDS> -</CONSTRAINT> -<PAIRS> -<PAIR> -<NAME></NAME> -<ID>0</ID> -<POSNR>0</POSNR> -<SCHEMA></SCHEMA> -<DESC></DESC> -<KEYID>2</KEYID> -<FOREIGNKEYID>7</FOREIGNKEYID> -</PAIR> -</PAIRS> -</REL> -</RELATIONSHIPS> -<SUBCATEGORYCONNECTIONS> -</SUBCATEGORYCONNECTIONS> -</DATADICT> -</VERSION> - -</dezign> \ No newline at end of file diff --git a/rtd_phosphonetx/sourceTest/core-plugins/core-plugins.properties b/rtd_phosphonetx/sourceTest/core-plugins/core-plugins.properties deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/dss/proteomics/server/plugins/APMSReportTest.java b/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/dss/proteomics/server/plugins/APMSReportTest.java deleted file mode 100644 index 84e93ffbf16c8e7509d555835de1b4bc8c5278f7..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/dss/proteomics/server/plugins/APMSReportTest.java +++ /dev/null @@ -1,297 +0,0 @@ -/* - * Copyright 2011 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.dss.proteomics.server.plugins; - -import static ch.systemsx.cisd.openbis.dss.proteomics.server.plugins.APMSReport.DEFAULT_PROTEIN_PROPERTY_CODE; - -import java.io.File; -import java.io.IOException; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; -import java.util.Properties; -import java.util.Set; - -import javax.activation.DataHandler; - -import org.apache.commons.io.IOUtils; -import org.hamcrest.BaseMatcher; -import org.hamcrest.Description; -import org.hamcrest.core.IsNull; -import org.jmock.Expectations; -import org.jmock.Mockery; -import org.testng.annotations.AfterMethod; -import org.testng.annotations.BeforeMethod; -import org.testng.annotations.Test; - -import ch.rinn.restrictions.Friend; -import ch.systemsx.cisd.base.tests.AbstractFileSystemTestCase; -import ch.systemsx.cisd.common.exceptions.UserFailureException; -import ch.systemsx.cisd.common.filesystem.FileUtilities; -import ch.systemsx.cisd.common.mail.EMailAddress; -import ch.systemsx.cisd.common.mail.IMailClient; -import ch.systemsx.cisd.common.test.RecordingMatcher; -import ch.systemsx.cisd.openbis.dss.generic.server.plugins.standard.MockDataSetDirectoryProvider; -import ch.systemsx.cisd.openbis.dss.generic.shared.Constants; -import ch.systemsx.cisd.openbis.dss.generic.shared.DataSetProcessingContext; -import ch.systemsx.cisd.openbis.dss.generic.shared.IEncapsulatedOpenBISService; -import ch.systemsx.cisd.openbis.dss.generic.shared.ProcessingStatus; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IEntityProperty; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ListSampleCriteria; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModel; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModelColumnHeader; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModelRow; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.builders.SampleBuilder; -import ch.systemsx.cisd.openbis.generic.shared.dto.DatasetDescription; -import ch.systemsx.cisd.openbis.generic.shared.dto.builders.DatasetDescriptionBuilder; -import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.SampleIdentifierFactory; - -/** - * @author Franz-Josef Elmer - */ -@Friend(toClasses = APMSReport.class) -public class APMSReportTest extends AbstractFileSystemTestCase -{ - private static final String EXAMPLE_PROTEINS = - "# Protein abundances computed from file 'result.consensusXML'\n" - + "# Parameters (relevant only): top=3, average=median, include_all, consensus:normalize\n" - + "# Files/samples associated with abundance values below:" - + " 0: '/cluster/s1.featureXML'," - + " 1: '/cluster/s2.featureXML'," - + " 2: '/cluster/s3.featureXML'\n" - + "\"protein\",\"n_proteins\",\"protein_score\",\"n_peptides\",\"abundance_0\",\"abundance_1\",\"abundance_2\"\n" - + "\"P1\",1,1,5,1.5,2.5,3.5\n" + "\"P2\",1,1,6,11.5,0,13.5\n" - + "\"P3\",1,1,14,21.5,22.5,0\n"; - - private Mockery context; - - private APMSReport report; - - private IEncapsulatedOpenBISService service; - - private IMailClient mailClient; - - private DataSetProcessingContext processingContext; - - @BeforeMethod - public void beforeMethod() - { - File dataSetFolder = createDataSet("1"); - FileUtilities.writeToFile(new File(dataSetFolder, APMSReport.PROTEIN_FILE_NAME), - EXAMPLE_PROTEINS); - createDataSet("2"); - - context = new Mockery(); - service = context.mock(IEncapsulatedOpenBISService.class); - mailClient = context.mock(IMailClient.class); - report = new APMSReport(new Properties(), workingDirectory); - report.setService(service); - MockDataSetDirectoryProvider directoryProvider = - new MockDataSetDirectoryProvider(workingDirectory, Constants.DEFAULT_SHARE_ID); - processingContext = - new DataSetProcessingContext(null, directoryProvider, - Collections.<String, String> emptyMap(), mailClient, "test-user", "a@bc.de"); - } - - private File createDataSet(String location) - { - File share = new File(workingDirectory, Constants.DEFAULT_SHARE_ID); - File originalFolder = new File(new File(share, location), "original"); - originalFolder.mkdirs(); - File dataSetFolder = new File(originalFolder, "data-set-folder"); - dataSetFolder.mkdirs(); - return dataSetFolder; - } - - @AfterMethod - public void afterMethod() - { - // To following line of code should also be called at the end of each test method. - // Otherwise one do not known which test failed. - context.assertIsSatisfied(); - } - - @Test - public void testProcess() throws IOException - { - Sample b2 = new SampleBuilder("/S/B2").id(12).getSample(); - prepareGetSample(new SampleBuilder("/MS_DATA/S1").id(1).childOf(b2).getSample()); - prepareGetSample(new SampleBuilder("/MS_DATA/S2").id(2).childOf(b2).getSample()); - prepareGetSample(new SampleBuilder("/MS_DATA/S3").id(3).childOf(b2).getSample()); - DatasetDescriptionBuilder ds1 = - new DatasetDescriptionBuilder("ds1").location("1").space("s").project("p") - .experiment("e"); - DatasetDescriptionBuilder ds2 = new DatasetDescriptionBuilder("ds2").location("2"); - List<DatasetDescription> dataSets = - Arrays.asList(ds1.getDatasetDescription(), ds2.getDatasetDescription()); - final RecordingMatcher<String> subjectMatcher = new RecordingMatcher<String>(); - final RecordingMatcher<String> contentMatcher = new RecordingMatcher<String>(); - final RecordingMatcher<String> fileNameMatcher = new RecordingMatcher<String>(); - final RecordingMatcher<DataHandler> attachmentMatcher = new RecordingMatcher<DataHandler>(); - final RecordingMatcher<EMailAddress[]> addressesMatcher = - new RecordingMatcher<EMailAddress[]>(); - context.checking(new Expectations() - { - { - one(mailClient).sendEmailMessageWithAttachment(with(subjectMatcher), - with(contentMatcher), with(fileNameMatcher), with(attachmentMatcher), - with(new IsNull<EMailAddress>()), with(new IsNull<EMailAddress>()), - with(addressesMatcher)); - } - }); - - ProcessingStatus status = report.process(dataSets, processingContext); - assertEquals("Protein APMS Report", subjectMatcher.recordedObject()); - assertEquals("Dear User\n\n" - + "Enclosed you will find the Protein APMS report file for experiment s/p/e.\n" - + "Data Set: ds1", contentMatcher.recordedObject()); - @SuppressWarnings("unchecked") - List<String> fileLines = - IOUtils.readLines(attachmentMatcher.recordedObject().getInputStream()); - assertEquals("Sample ID,Bait,Prey,freq of obs," - + "avg MS1 intensities (normalized for the bait),STDV MS1 intensity", - fileLines.get(0)); - assertEquals(4, fileLines.size()); - assertEquals("[ERROR: \"Exception occured: " - + UserFailureException.class.getName() + ": File " - + APMSReport.PROTEIN_FILE_NAME + " missing.\"]", status.getErrorStatuses() - .toString()); - - context.assertIsSatisfied(); - } - - @Test - public void testCreateReport() - { - Sample master = - new SampleBuilder("/master").property(DEFAULT_PROTEIN_PROPERTY_CODE, "Q1") - .getSample(); - Sample b1 = new SampleBuilder("/S/B1").id(11).childOf(master).getSample(); - Sample b2 = new SampleBuilder("/S/B2").id(12).getSample(); - prepareGetSample(new SampleBuilder("/MS_DATA/S1").id(1).childOf(b1).getSample()); - prepareGetSample(new SampleBuilder("/MS_DATA/S2").id(2).childOf(b1).getSample()); - prepareGetSample(new SampleBuilder("/MS_DATA/S3").id(3).childOf(b2).getSample()); - DatasetDescriptionBuilder ds1 = new DatasetDescriptionBuilder("ds1").location("1"); - List<DatasetDescription> dataSets = Arrays.asList(ds1.getDatasetDescription()); - - TableModel table = report.createReport(dataSets, processingContext); - - List<TableModelColumnHeader> headers = table.getHeader(); - assertEquals("[Sample ID, Bait, Prey, freq of obs, " - + "avg MS1 intensities (normalized for the bait), STDV MS1 intensity]", - headers.toString()); - List<TableModelRow> rows = table.getRows(); - assertEquals("[B1, Q1, P1, 1.0, 2.0, 0.5]", rows.get(0).getValues().toString()); - assertEquals("[B2, , P1, 1.0, 3.5, 0.0]", rows.get(1).getValues().toString()); - assertEquals("[B1, Q1, P2, 0.5, 5.75, 5.75]", rows.get(2).getValues().toString()); - assertEquals("[B2, , P2, 1.0, 13.5, 0.0]", rows.get(3).getValues().toString()); - assertEquals("[B1, Q1, P3, 1.0, 22.0, 0.5]", rows.get(4).getValues().toString()); - assertEquals("[B2, , P3, 0.0, 0.0, 0.0]", rows.get(5).getValues().toString()); - assertEquals(3 * 2, rows.size()); - - context.assertIsSatisfied(); - } - - @Test - public void testCreateReportForMissingProteinsFile() - { - DatasetDescriptionBuilder ds = new DatasetDescriptionBuilder("ds2").location("2"); - try - { - report.createReport(Arrays.asList(ds.getDatasetDescription()), processingContext); - fail("UserFailureException expected"); - } catch (UserFailureException ex) - { - assertEquals("File " + APMSReport.PROTEIN_FILE_NAME + " missing.", ex.getMessage()); - } - - context.assertIsSatisfied(); - } - - @Test - public void testCreateReportForTwoDataSets() - { - DatasetDescriptionBuilder ds1 = new DatasetDescriptionBuilder("ds1").location("1"); - DatasetDescriptionBuilder ds2 = new DatasetDescriptionBuilder("ds2").location("2"); - try - { - report.createReport( - Arrays.asList(ds1.getDatasetDescription(), ds2.getDatasetDescription()), null); - fail("UserFailureException expected"); - } catch (UserFailureException ex) - { - assertEquals("Chosen plugin works with exactly one data set. 2 data sets selected.", - ex.getMessage()); - } - - context.assertIsSatisfied(); - } - - private void prepareGetSample(final Sample sample) - { - context.checking(new Expectations() - { - { - one(service).tryGetSampleWithExperiment( - SampleIdentifierFactory.parse(sample.getIdentifier())); - will(returnValue(sample)); - } - }); - prepareGetAncestors(sample); - } - - protected void prepareGetAncestors(final Sample sample) - { - List<IEntityProperty> properties = sample.getProperties(); - for (IEntityProperty property : properties) - { - if (property.getPropertyType().getCode().equals(DEFAULT_PROTEIN_PROPERTY_CODE)) - { - return; - } - } - final Set<Sample> parents = sample.getParents(); - context.checking(new Expectations() - { - { - one(service).listSamples(with(new BaseMatcher<ListSampleCriteria>() - { - @Override - public boolean matches(Object item) - { - return sample.getId() == ((ListSampleCriteria) item) - .getChildSampleId().getId(); - } - - @Override - public void describeTo(Description description) - { - description.appendText("parents of " + sample.getIdentifier()); - } - })); - will(returnValue(new ArrayList<Sample>(parents))); - } - }); - for (Sample parent : parents) - { - prepareGetAncestors(parent); - } - } - -} diff --git a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/dss/proteomics/server/plugins/LocalAndRemoteCopierTest.java b/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/dss/proteomics/server/plugins/LocalAndRemoteCopierTest.java deleted file mode 100644 index cf6469dc4312cf69a1829744be7a5411c4d0a07c..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/dss/proteomics/server/plugins/LocalAndRemoteCopierTest.java +++ /dev/null @@ -1,392 +0,0 @@ -/* - * Copyright 2010 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.dss.proteomics.server.plugins; - -import static ch.systemsx.cisd.openbis.dss.generic.server.plugins.standard.DataSetCopier.SSH_TIMEOUT_MILLIS; - -import java.io.File; -import java.io.IOException; -import java.util.Arrays; -import java.util.HashMap; -import java.util.List; -import java.util.Properties; - -import org.apache.commons.io.FileUtils; -import org.jmock.Expectations; -import org.jmock.Mockery; -import org.testng.annotations.AfterMethod; -import org.testng.annotations.BeforeMethod; -import org.testng.annotations.Test; - -import ch.rinn.restrictions.Friend; -import ch.systemsx.cisd.base.exceptions.CheckedExceptionTunnel; -import ch.systemsx.cisd.base.tests.AbstractFileSystemTestCase; -import ch.systemsx.cisd.common.concurrent.ExecutionResult; -import ch.systemsx.cisd.common.exceptions.ConfigurationFailureException; -import ch.systemsx.cisd.common.exceptions.EnvironmentFailureException; -import ch.systemsx.cisd.common.exceptions.Status; -import ch.systemsx.cisd.common.filesystem.BooleanStatus; -import ch.systemsx.cisd.common.filesystem.FileUtilities; -import ch.systemsx.cisd.common.filesystem.IPathCopier; -import ch.systemsx.cisd.common.filesystem.ssh.ISshCommandExecutor; -import ch.systemsx.cisd.common.process.ProcessResult; -import ch.systemsx.cisd.common.utilities.ITextHandler; -import ch.systemsx.cisd.openbis.dss.generic.server.plugins.standard.DataSetCopier; -import ch.systemsx.cisd.openbis.dss.generic.server.plugins.standard.IPathCopierFactory; -import ch.systemsx.cisd.openbis.dss.generic.server.plugins.standard.ISshCommandExecutorFactory; -import ch.systemsx.cisd.openbis.dss.generic.shared.dto.DataSetInformation; -import ch.systemsx.cisd.openbis.dss.generic.shared.utils.RSyncConfig; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSetKind; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSetType; - -/** - * @author Franz-Josef Elmer - */ -@Friend(toClasses = LocalAndRemoteCopier.class) -public class LocalAndRemoteCopierTest extends AbstractFileSystemTestCase -{ - private static final ProcessResult OK_RESULT = new ProcessResult(Arrays.asList(""), 0, null, - ExecutionResult.create(null), null, 0, (List<String>) null, null, null, null); - - private static final String SAMPLE_CODE = "my-sample"; - - private static final DataSetType DATA_SET_TYPE = new DataSetType("MY"); - - private static final DataSetKind DATA_SET_KIND = DataSetKind.PHYSICAL; - - private static final String DATA_SET_CODE = "my-dataset-123"; - - private static final String FOLDER_NAME = DATA_SET_CODE; - - private static final String DATA = "hello test"; - - private Mockery context; - - private File dataSet; - - private IPathCopierFactory copierFactory; - - private IPathCopier copier; - - private ISshCommandExecutorFactory sshExecutorFactory; - - private ISshCommandExecutor sshExecutor; - - private File destination; - - private File dataFile; - - private File rsyncExec; - - private File sshExec; - - @BeforeMethod - public void beforeMethod() throws Exception - { - context = new Mockery(); - copierFactory = context.mock(IPathCopierFactory.class); - copier = context.mock(IPathCopier.class); - sshExecutorFactory = context.mock(ISshCommandExecutorFactory.class); - sshExecutor = context.mock(ISshCommandExecutor.class); - dataSet = new File(workingDirectory, "data-set"); - dataSet.mkdirs(); - dataFile = new File(dataSet, "data.txt"); - FileUtilities.writeToFile(dataFile, DATA); - destination = new File(workingDirectory, "destination"); - destination.mkdirs(); - rsyncExec = new File(workingDirectory, "my-rsync"); - rsyncExec.createNewFile(); - sshExec = new File(workingDirectory, "my-rssh"); - sshExec.createNewFile(); - } - - @AfterMethod - public void afterMethod() - { - // To following line of code should also be called at the end of each test method. - // Otherwise one do not known which test failed. - context.assertIsSatisfied(); - } - - @Test - public void testLocalWithKnownSample() - { - Properties properties = new Properties(); - prepareCopier(properties); - properties.setProperty(DataSetCopier.DESTINATION_KEY, destination.getPath()); - LocalAndRemoteCopier msInjectionCopier = - new LocalAndRemoteCopier(properties, copierFactory, sshExecutorFactory); - prepareForCheckingLastModifiedDate(); - - DataSetInformation dataSetInformation = new DataSetInformation(); - dataSetInformation.setDataSetCode(DATA_SET_CODE); - dataSetInformation.setDataSetType(DATA_SET_TYPE); - dataSetInformation.setDataSetKind(DATA_SET_KIND); - HashMap<String, String> parameterBindings = new HashMap<String, String>(); - parameterBindings.put(DATA_SET_CODE, SAMPLE_CODE); - Status status = msInjectionCopier.handle(dataSet, dataSetInformation, parameterBindings); - - assertEquals(Status.OK, status); - File copiedDataSet = new File(destination, FOLDER_NAME); - assertEquals(true, copiedDataSet.isDirectory()); - assertEquals(dataSet.lastModified(), copiedDataSet.lastModified()); - assertEquals(DATA, FileUtilities.loadToString(new File(copiedDataSet, dataFile.getName())) - .trim()); - - context.assertIsSatisfied(); - } - - @Test - public void testLocalWithUnknownSample() - { - Properties properties = new Properties(); - prepareCopier(properties); - properties.setProperty(DataSetCopier.DESTINATION_KEY, destination.getPath()); - LocalAndRemoteCopier msInjectionCopier = - new LocalAndRemoteCopier(properties, copierFactory, sshExecutorFactory); - - DataSetInformation dataSetInformation = new DataSetInformation(); - dataSetInformation.setDataSetCode(DATA_SET_CODE); - dataSetInformation.setDataSetType(DATA_SET_TYPE); - dataSetInformation.setDataSetKind(DATA_SET_KIND); - HashMap<String, String> parameterBindings = new HashMap<String, String>(); - Status status = msInjectionCopier.handle(dataSet, dataSetInformation, parameterBindings); - - assertEquals(Status.OK, status); - File copiedDataSet = new File(destination, DATA_SET_CODE); - assertEquals(true, copiedDataSet.isDirectory()); - - context.assertIsSatisfied(); - } - - @Test - public void testLocalWithAlreadyExistingDestination() - { - Properties properties = new Properties(); - prepareCopier(properties); - properties.setProperty(DataSetCopier.DESTINATION_KEY, destination.getPath()); - LocalAndRemoteCopier msInjectionCopier = - new LocalAndRemoteCopier(properties, copierFactory, sshExecutorFactory); - File copiedDataSet = new File(destination, FOLDER_NAME); - copiedDataSet.mkdirs(); - File dummy = new File(copiedDataSet, "dummy"); - FileUtilities.writeToFile(dummy, "hello"); - - DataSetInformation dataSetInformation = new DataSetInformation(); - dataSetInformation.setDataSetCode(DATA_SET_CODE); - dataSetInformation.setDataSetType(DATA_SET_TYPE); - dataSetInformation.setDataSetKind(DATA_SET_KIND); - HashMap<String, String> parameterBindings = new HashMap<String, String>(); - parameterBindings.put(DATA_SET_CODE, SAMPLE_CODE); - Status status = msInjectionCopier.handle(dataSet, dataSetInformation, parameterBindings); - - assertEquals(Status.OK, status); - assertEquals(true, copiedDataSet.isDirectory()); - assertEquals(DATA, FileUtilities.loadToString(new File(copiedDataSet, dataFile.getName())) - .trim()); - assertEquals(false, dummy.exists()); - - context.assertIsSatisfied(); - } - - @Test - public void testRemoteWithMarkerFile() - { - Properties properties = new Properties(); - properties.setProperty(LocalAndRemoteCopier.MARKER_FILE_PREFIX, "MARKER-"); - properties.setProperty(DataSetCopier.DESTINATION_KEY, "localhost:" + destination.getPath()); - properties.setProperty(DataSetCopier.RSYNC_EXEC + "-executable", rsyncExec.getPath()); - properties.setProperty(DataSetCopier.SSH_EXEC + "-executable", sshExec.getPath()); - context.checking(new Expectations() - { - { - one(copierFactory).create(rsyncExec, sshExec, DataSetCopier.SSH_TIMEOUT_MILLIS, - RSyncConfig.getInstance().getAdditionalCommandLineOptions()); - will(returnValue(copier)); - - one(copier).check(); - one(copier).checkRsyncConnectionViaSsh("localhost", null, - DataSetCopier.SSH_TIMEOUT_MILLIS); - will(returnValue(true)); - - one(sshExecutorFactory).create(sshExec, "localhost"); - will(returnValue(sshExecutor)); - - final String copiedDataSet = new File(destination, FOLDER_NAME).getPath(); - one(sshExecutor).exists(copiedDataSet, SSH_TIMEOUT_MILLIS); - will(returnValue(BooleanStatus.createTrue())); - - one(sshExecutor).executeCommandRemotely("rm -rf " + copiedDataSet, - SSH_TIMEOUT_MILLIS); - will(returnValue(OK_RESULT)); - - one(copier).copyToRemote(dataSet, destination.getPath(), "localhost", null, null, null, null); - will(returnValue(Status.OK)); - - one(sshExecutor).executeCommandRemotely( - "mv " + new File(destination, dataSet.getName()) + " " + copiedDataSet, - SSH_TIMEOUT_MILLIS); - will(returnValue(OK_RESULT)); - - one(sshExecutor).executeCommandRemotely( - "touch " + new File(destination, "MARKER-" + FOLDER_NAME), - SSH_TIMEOUT_MILLIS); - will(returnValue(OK_RESULT)); - } - }); - LocalAndRemoteCopier msInjectionCopier = - new LocalAndRemoteCopier(properties, copierFactory, sshExecutorFactory); - - DataSetInformation dataSetInformation = new DataSetInformation(); - dataSetInformation.setDataSetCode(DATA_SET_CODE); - dataSetInformation.setDataSetType(DATA_SET_TYPE); - dataSetInformation.setDataSetKind(DATA_SET_KIND); - HashMap<String, String> parameterBindings = new HashMap<String, String>(); - parameterBindings.put(DATA_SET_CODE, SAMPLE_CODE); - Status status = msInjectionCopier.handle(dataSet, dataSetInformation, parameterBindings); - - assertEquals(Status.OK, status); - context.assertIsSatisfied(); - } - - private void prepareForCheckingLastModifiedDate() - { - // Sleep long enough to test last modified date of target will be same as of source. - try - { - Thread.sleep(2000); - } catch (InterruptedException ex) - { - // ignored - } - } - - private void prepareCopier(Properties properties) - { - properties.setProperty(DataSetCopier.RSYNC_EXEC + "-executable", rsyncExec.getPath()); - context.checking(new Expectations() - { - { - one(copierFactory).create(rsyncExec, null, DataSetCopier.SSH_TIMEOUT_MILLIS, - RSyncConfig.getInstance().getAdditionalCommandLineOptions()); - will(returnValue(new MockCopier())); - } - }); - } - - private final class MockCopier implements IPathCopier - { - - @Override - public boolean isProgressEnabled() - { - return false; - } - - @Override - public boolean terminate() - { - return false; - } - - @Override - public boolean isRemote() - { - return false; - } - - @Override - public void check() throws EnvironmentFailureException, ConfigurationFailureException - { - } - - @Override - public Status copy(File sourcePath, File destinationDirectory, - ITextHandler stdoutHandlerOrNull, ITextHandler stderrHandlerOrNull) - { - return null; - } - - @Override - public Status copyContent(File sourcePath, File destinationDirectory, - ITextHandler stdoutHandlerOrNull, ITextHandler stderrHandlerOrNull) - { - return null; - } - - @Override - public Status copyToRemote(File sourcePath, String destinationDirectory, - String destinationHostOrNull, String rsyncModuleNameOrNull, - String rsyncPasswordFileOrNull, - ITextHandler stdoutHandlerOrNull, ITextHandler stderrHandlerOrNull) - { - try - { - FileUtils.copyDirectoryToDirectory(dataSet, new File(destinationDirectory)); - } catch (IOException ex) - { - throw CheckedExceptionTunnel.wrapIfNecessary(ex); - } - File file = new File(destinationDirectory, dataSet.getName()); - file.setLastModified(dataSet.lastModified()); - return Status.OK; - } - - @Override - public Status copyContentToRemote(File sourcePath, String destinationDirectory, - String destinationHostOrNull, String rsyncModuleNameOrNull, - String rsyncPasswordFileOrNull, - ITextHandler stdoutHandlerOrNull, ITextHandler stderrHandlerOrNull) - { - return null; - } - - @Override - public Status copyFromRemote(String sourcePath, String sourceHost, - File destinationDirectory, String rsyncModuleNameOrNull, - String rsyncPasswordFileOrNull, - ITextHandler stdoutHandlerOrNull, ITextHandler stderrHandlerOrNull) - { - return null; - } - - @Override - public Status copyContentFromRemote(String sourcePath, String sourceHost, - File destinationDirectory, String rsyncModuleNameOrNull, - String rsyncPasswordFileOrNull, - ITextHandler stdoutHandlerOrNull, ITextHandler stderrHandlerOrNull) - { - return null; - } - - @Override - public boolean checkRsyncConnectionViaSsh(String host, String rsyncExecutableOnHostOrNull, - long millisToWaitForCompletion) - { - return false; - } - - @Override - public boolean checkRsyncConnectionViaRsyncServer(String host, String rsyncModule, - String rsyncPassworFileOrNull, long millisToWaitForCompletion) - { - return false; - } - - } - -} diff --git a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/etlserver/proteomics/AbundanceHandlerTest.java b/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/etlserver/proteomics/AbundanceHandlerTest.java deleted file mode 100644 index 2f71d9dd3a56f6599483e24e3048ab7129bd8369..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/etlserver/proteomics/AbundanceHandlerTest.java +++ /dev/null @@ -1,405 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.etlserver.proteomics; - -import java.util.Arrays; -import java.util.List; - -import org.hamcrest.BaseMatcher; -import org.hamcrest.Description; -import org.hamcrest.core.IsNull; -import org.jmock.Expectations; -import org.jmock.Mockery; -import org.testng.AssertJUnit; -import org.testng.annotations.AfterMethod; -import org.testng.annotations.BeforeMethod; -import org.testng.annotations.Test; - -import ch.systemsx.cisd.common.exceptions.UserFailureException; -import ch.systemsx.cisd.openbis.dss.generic.shared.IEncapsulatedOpenBISService; -import ch.systemsx.cisd.openbis.etlserver.proteomics.dto.Experiment; -import ch.systemsx.cisd.openbis.etlserver.proteomics.dto.Parameter; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewSample; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample; -import ch.systemsx.cisd.openbis.generic.shared.dto.ListSamplesByPropertyCriteria; -import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.ExperimentIdentifier; -import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.ProjectIdentifier; -import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.SampleIdentifier; -import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.SampleIdentifierFactory; -import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.SpaceIdentifier; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.CommonConstants; - -/** - * @author Franz-Josef Elmer - */ -public class AbundanceHandlerTest extends AssertJUnit -{ - private static final String SPACE_CODE = "G1"; - - private static final SpaceIdentifier SPACE_IDENTIFIER = new SpaceIdentifier(SPACE_CODE); - - private static final String EXPERIMENT_CODE = "E1"; - - private static final SpaceIdentifier SPACE_IDENTIFIER_MS = new SpaceIdentifier( - CommonConstants.MS_DATA_SPACE); - - private static final String PARAMETER_VALUE = "1234.5"; - - private static final double ABUNDANCE = 1234.5; - - private static final String PARAMETER_NAME = "ABC12"; - - private static final SampleIdentifier SAMPLE_IDENTIFER = new SampleIdentifier(SPACE_IDENTIFIER_MS, - PARAMETER_NAME); - - private static final ExperimentIdentifier EXPERIMENT_IDENTIFIER = new ExperimentIdentifier( - new ProjectIdentifier(SPACE_CODE, "P1"), EXPERIMENT_CODE); - - private static final String SAMPLE_PERM_ID = "s12-34"; - - private static final String EXPERIMENT_PERM_ID = "e12345-42"; - - private static final long EXPERIMENT_ID = 42; - - private static final long SAMPLE_ID = 43; - - private static final long PROTEIN_ID = 4711; - - private static final String PROTEIN_NAME = "my protein"; - - private static final ListSamplesByPropertyCriteria CRITERIA = - new ListSamplesByPropertyCriteria(AbundanceHandler.MZXML_FILENAME, PARAMETER_NAME, - SPACE_CODE, null); - - private Mockery context; - - private IProtDAO dao; - - private IEncapsulatedOpenBISService service; - - private Experiment experiment; - - private AbundanceHandler handler; - - @BeforeMethod - public void beforeMethod() - { - context = new Mockery(); - dao = context.mock(IProtDAO.class); - service = context.mock(IEncapsulatedOpenBISService.class); - experiment = new Experiment(); - experiment.setPermID(EXPERIMENT_PERM_ID); - experiment.setId(EXPERIMENT_ID); - handler = new AbundanceHandler(service, dao, EXPERIMENT_IDENTIFIER, experiment, "+", false); - } - - @AfterMethod - public void afterMethod() - { - // To following line of code should also be called at the end of each test method. - // Otherwise one do not known which test failed. - context.assertIsSatisfied(); - } - - @Test - public void testAddAbundanceValueWhichIsNotANumber() - { - prepareCreateSampleIdentifiedByCode(); - - try - { - handler.addAbundancesToDatabase(createParameter("blabla"), PROTEIN_ID, PROTEIN_NAME); - fail("UserFailureException expected"); - } catch (UserFailureException e) - { - assertEquals("Abundance of sample '" + PARAMETER_NAME + "' of protein '" + PROTEIN_NAME - + "' is not a number: blabla", e.getMessage()); - } - - context.assertIsSatisfied(); - } - - @Test - public void testAddTwoAbundanceValuesForASampleIdentifiedByCode() - { - prepareCreateSampleIdentifiedByCode(); - context.checking(new Expectations() - { - { - one(dao).createAbundance(PROTEIN_ID, SAMPLE_ID, ABUNDANCE); - one(dao).createAbundance(PROTEIN_ID, SAMPLE_ID, 1.5); - } - }); - - handler.addAbundancesToDatabase(createParameter(PARAMETER_VALUE), PROTEIN_ID, PROTEIN_NAME); - handler.addAbundancesToDatabase(createParameter("1.5"), PROTEIN_ID, PROTEIN_NAME); - - context.assertIsSatisfied(); - } - - @Test - public void testAddTwoAbundanceValuesForASampleIdentifiedByCodeAndSpace() - { - String sampleIdentifier = "/" + SPACE_CODE + "/" + PARAMETER_NAME; - prepareCreateSampleIdentifiedByIdentifier(sampleIdentifier); - context.checking(new Expectations() - { - { - one(dao).createAbundance(PROTEIN_ID, SAMPLE_ID, ABUNDANCE); - one(dao).createAbundance(PROTEIN_ID, SAMPLE_ID, 1.5); - } - }); - - handler.addAbundancesToDatabase(createParameter(sampleIdentifier, PARAMETER_VALUE), - PROTEIN_ID, PROTEIN_NAME); - handler.addAbundancesToDatabase(createParameter(sampleIdentifier, "1.5"), PROTEIN_ID, - PROTEIN_NAME); - - context.assertIsSatisfied(); - } - - @Test - public void testAddTwoAbundanceValuesForASampleIdentifiedByPropertyButNoSampleFound() - { - prepareCreateSampleIdentifiedByProperty(Arrays.<Sample> asList()); - - try - { - handler.addAbundancesToDatabase(createParameter(PARAMETER_VALUE), PROTEIN_ID, - PROTEIN_NAME); - fail("UserFailureException expected"); - } catch (UserFailureException e) - { - assertEquals("Protein '" + PROTEIN_NAME - + "' has an abundance value for an unidentified sample: " + PARAMETER_NAME, - e.getMessage()); - } - - try - { - handler.addAbundancesToDatabase(createParameter(PARAMETER_VALUE), PROTEIN_ID, - PROTEIN_NAME); - fail("UserFailureException expected"); - } catch (UserFailureException e) - { - assertEquals("Protein '" + PROTEIN_NAME - + "' has an abundance value for an unidentified sample: " + PARAMETER_NAME, - e.getMessage()); - } - - context.assertIsSatisfied(); - } - - @Test - public void testAddAbundanceValuesForASampleIdentifiedByPropertyButTwoSamplesFound() - { - Sample sample = new Sample(); - sample.setPermId(SAMPLE_PERM_ID); - prepareCreateSampleIdentifiedByProperty(Arrays.<Sample> asList(sample, sample)); - - try - { - handler.addAbundancesToDatabase(createParameter(PARAMETER_VALUE), PROTEIN_ID, - PROTEIN_NAME); - fail("UserFailureException expected"); - } catch (UserFailureException e) - { - assertEquals("Protein '" + PROTEIN_NAME - + "' has an abundance value for a not uniquely specified sample " - + "(2 samples are found): " + PARAMETER_NAME, e.getMessage()); - } - - context.assertIsSatisfied(); - } - - @Test - public void testAddAbundanceValuesForASampleIdentifiedByProperty() - { - final Sample sample = new Sample(); - sample.setPermId(SAMPLE_PERM_ID); - sample.setIdentifier("blabla"); - prepareCreateSampleIdentifiedByProperty(Arrays.<Sample> asList(sample)); - prepareCreateSample(); - context.checking(new Expectations() - { - { - one(dao).createAbundance(PROTEIN_ID, SAMPLE_ID, ABUNDANCE); - one(service).registerSample(with(new BaseMatcher<NewSample>() - { - - @Override - @SuppressWarnings("deprecation") - public boolean matches(Object item) - { - if (item instanceof NewSample) - { - NewSample newSample = (NewSample) item; - assertEquals(SPACE_IDENTIFIER + "/" + PARAMETER_NAME + "_" - + EXPERIMENT_CODE, newSample.getIdentifier()); - assertEquals(EXPERIMENT_IDENTIFIER.toString(), - newSample.getExperimentIdentifier()); - assertEquals(sample.getIdentifier(), - newSample.getParentIdentifier()); - return true; - } - return false; - } - - @Override - public void describeTo(Description description) - { - - } - }), with(new IsNull<String>())); - } - }); - - handler.addAbundancesToDatabase( - createParameter(PARAMETER_NAME + "+blabla.xml", PARAMETER_VALUE), PROTEIN_ID, - PROTEIN_NAME); - - context.assertIsSatisfied(); - } - - private Parameter createParameter(String value) - { - return createParameter(PARAMETER_NAME, value); - } - - Parameter createParameter(String parameterName, String value) - { - Parameter parameter = new Parameter(); - parameter.setName(parameterName); - parameter.setValue(value); - return parameter; - } - - private void prepareCreateSampleIdentifiedByCode() - { - prepareCreateSampleIdentifiedByIdentifier(PARAMETER_NAME); - } - - void prepareCreateSampleIdentifiedByIdentifier(final String sampleIdentifier) - { - Sample sample = new Sample(); - sample.setPermId(SAMPLE_PERM_ID); - sample.setIdentifier(sampleIdentifier); - prepareGetSample( - SampleIdentifierFactory - .parse(sampleIdentifier, "/" + CommonConstants.MS_DATA_SPACE).toString(), - sample); - prepareCreateSample(); - context.checking(new Expectations() - { - { - one(service).registerSample(with(new BaseMatcher<NewSample>() - { - @Override - @SuppressWarnings("deprecation") - public boolean matches(Object item) - { - if (item instanceof NewSample) - { - NewSample newSample = (NewSample) item; - assertEquals(SPACE_IDENTIFIER + "/" + PARAMETER_NAME + "_" - + EXPERIMENT_CODE, newSample.getIdentifier()); - assertEquals(EXPERIMENT_IDENTIFIER.toString(), - newSample.getExperimentIdentifier()); - assertEquals(sampleIdentifier, newSample.getParentIdentifier()); - return true; - } - return false; - } - - @Override - public void describeTo(Description description) - { - - } - }), with(new IsNull<String>())); - } - }); - } - - private void prepareCreateSample() - { - context.checking(new Expectations() - { - { - one(dao).tryToGetSampleByPermID(SAMPLE_PERM_ID); - will(returnValue(null)); - - one(dao).createSample(EXPERIMENT_ID, SAMPLE_PERM_ID); - will(returnValue(SAMPLE_ID)); - } - }); - } - - private void prepareCreateSampleIdentifiedByProperty(final List<Sample> samples) - { - prepareGetSample(SAMPLE_IDENTIFER.toString(), null); - context.checking(new Expectations() - { - { - one(service).listSamplesByCriteria( - with(new BaseMatcher<ListSamplesByPropertyCriteria>() - { - @Override - public boolean matches(Object item) - { - return CRITERIA.toString().equals(item.toString()); - } - - @Override - public void describeTo(Description description) - { - description.appendValue(CRITERIA); - - } - })); - will(returnValue(samples)); - } - }); - } - - private void prepareGetSample(final String expectedSampleIdentifier, final Sample sample) - { - context.checking(new Expectations() - { - { - one(service).tryGetSampleWithExperiment( - with(new BaseMatcher<SampleIdentifier>() - { - - @Override - public boolean matches(Object item) - { - return expectedSampleIdentifier.equals(item.toString()); - } - - @Override - public void describeTo(Description description) - { - description.appendValue(expectedSampleIdentifier); - - } - })); - will(returnValue(sample)); - } - }); - } -} diff --git a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/etlserver/proteomics/DataSetInfoExtractorForMSInjectionTest.java b/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/etlserver/proteomics/DataSetInfoExtractorForMSInjectionTest.java deleted file mode 100644 index d6c11894cb1cb7c60389a74b2463506174950283..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/etlserver/proteomics/DataSetInfoExtractorForMSInjectionTest.java +++ /dev/null @@ -1,722 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.etlserver.proteomics; - -import static ch.systemsx.cisd.openbis.etlserver.proteomics.DataSetInfoExtractorForMSInjection.BIOLOGICAL_SAMPLE_IDENTIFIER_KEY; -import static ch.systemsx.cisd.openbis.etlserver.proteomics.DataSetInfoExtractorForMSInjection.DATA_SET_PROPERTIES_FILE; -import static ch.systemsx.cisd.openbis.etlserver.proteomics.DataSetInfoExtractorForMSInjection.DATA_SET_TYPE_KEY; -import static ch.systemsx.cisd.openbis.etlserver.proteomics.DataSetInfoExtractorForMSInjection.EXPERIMENT_CODE_KEY; -import static ch.systemsx.cisd.openbis.etlserver.proteomics.DataSetInfoExtractorForMSInjection.EXPERIMENT_TYPE_CODE; -import static ch.systemsx.cisd.openbis.etlserver.proteomics.DataSetInfoExtractorForMSInjection.MS_INJECTION_PROPERTIES_FILE; -import static ch.systemsx.cisd.openbis.etlserver.proteomics.DataSetInfoExtractorForMSInjection.PARENT_TYPE_KEY; -import static ch.systemsx.cisd.openbis.etlserver.proteomics.DataSetInfoExtractorForMSInjection.PROJECT_CODE_KEY; -import static ch.systemsx.cisd.openbis.etlserver.proteomics.DataSetInfoExtractorForMSInjection.SAMPLE_CODE_KEY; -import static ch.systemsx.cisd.openbis.etlserver.proteomics.DataSetInfoExtractorForMSInjection.USER_KEY; - -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; -import java.util.Arrays; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Properties; - -import org.apache.commons.io.IOUtils; -import org.hamcrest.BaseMatcher; -import org.hamcrest.Description; -import org.jmock.Expectations; -import org.jmock.Mockery; -import org.testng.Assert; -import org.testng.annotations.AfterMethod; -import org.testng.annotations.BeforeMethod; -import org.testng.annotations.Test; - -import ch.systemsx.cisd.base.exceptions.CheckedExceptionTunnel; -import ch.systemsx.cisd.base.tests.AbstractFileSystemTestCase; -import ch.systemsx.cisd.common.exceptions.ConfigurationFailureException; -import ch.systemsx.cisd.common.exceptions.UserFailureException; -import ch.systemsx.cisd.etlserver.IDataSetInfoExtractor; -import ch.systemsx.cisd.openbis.dss.generic.shared.IEncapsulatedOpenBISService; -import ch.systemsx.cisd.openbis.dss.generic.shared.dto.DataSetInformation; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.AbstractExternalData; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSetType; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSetTypePropertyType; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSetTypeWithVocabularyTerms; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityProperty; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Experiment; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IEntityProperty; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewExperiment; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewSample; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.PhysicalDataSet; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.PropertyType; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SampleType; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SampleTypePropertyType; -import ch.systemsx.cisd.openbis.generic.shared.dto.NewProperty; -import ch.systemsx.cisd.openbis.generic.shared.dto.SampleUpdatesDTO; -import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.ExperimentIdentifier; -import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.SampleIdentifier; -import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.SampleIdentifierFactory; -import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.SpaceIdentifier; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.CommonConstants; - -/** - * @author Franz-Josef Elmer - */ -public class DataSetInfoExtractorForMSInjectionTest extends AbstractFileSystemTestCase -{ - private static final String PROJECT_CODE = "MS2"; - - private static final String EXPERIMENT_CODE = "2010-02"; - - private static final String SAMPLE_CODE = "U09-1242"; - - private static final String SAMPLE_IDENTIFIER = - SpaceIdentifier.Constants.IDENTIFIER_SEPARATOR + CommonConstants.MS_DATA_SPACE - + SpaceIdentifier.Constants.IDENTIFIER_SEPARATOR + SAMPLE_CODE; - - private static final String EXPERIMENT_IDENTIFIER = - SpaceIdentifier.Constants.IDENTIFIER_SEPARATOR + CommonConstants.MS_DATA_SPACE - + SpaceIdentifier.Constants.IDENTIFIER_SEPARATOR + PROJECT_CODE - + SpaceIdentifier.Constants.IDENTIFIER_SEPARATOR + EXPERIMENT_CODE; - - private static final long EXPERIMENT_ID = 42; - - private static final long SAMPLE_ID = 43; - - private static final String SAMPLE_PROPERTY = "name"; - - private Mockery context; - - private IEncapsulatedOpenBISService service; - - private IDataSetInfoExtractor extractor; - - private File dataSet; - - @BeforeMethod - public void beforeMethod() - { - context = new Mockery(); - service = context.mock(IEncapsulatedOpenBISService.class); - extractor = new DataSetInfoExtractorForMSInjection(service); - dataSet = new File(workingDirectory, "data-set"); - dataSet.mkdirs(); - } - - @AfterMethod - public void afterMethod() - { - // To following line of code should also be called at the end of each test method. - // Otherwise one do not known which test failed. - context.assertIsSatisfied(); - } - - @Test - public void testMissingPropertiesFile() - { - try - { - extractor.getDataSetInformation(dataSet, service); - fail("UserFailureException expected"); - } catch (UserFailureException ex) - { - assertEquals("Missing properties file '" + MS_INJECTION_PROPERTIES_FILE + "'.", ex - .getMessage()); - } - - context.assertIsSatisfied(); - } - - @Test - public void testPropertiesFileIsAFolder() - { - new File(dataSet, MS_INJECTION_PROPERTIES_FILE).mkdir(); - try - { - extractor.getDataSetInformation(dataSet, service); - fail("UserFailureException expected"); - } catch (UserFailureException ex) - { - assertEquals("Properties file '" + MS_INJECTION_PROPERTIES_FILE + "' is a folder.", ex - .getMessage()); - } - - context.assertIsSatisfied(); - } - - @Test - public void testMissingSampleCode() - { - Properties properties = new Properties(); - save(properties, MS_INJECTION_PROPERTIES_FILE); - - try - { - extractor.getDataSetInformation(dataSet, service); - fail("ConfigurationFailureException expected"); - } catch (ConfigurationFailureException ex) - { - assertEquals("Given key '" + SAMPLE_CODE_KEY + "' not found in properties '[]'", ex - .getMessage()); - } - - context.assertIsSatisfied(); - } - - @Test - public void testMissingProjectCode() - { - Properties properties = new Properties(); - - properties.setProperty(SAMPLE_CODE_KEY, SAMPLE_CODE); - save(properties, MS_INJECTION_PROPERTIES_FILE); - - try - { - extractor.getDataSetInformation(dataSet, service); - fail("ConfigurationFailureException expected"); - } catch (ConfigurationFailureException ex) - { - assertEquals("Given key '" + PROJECT_CODE_KEY + "' not found in properties '[" - + SAMPLE_CODE_KEY + "]'", ex.getMessage()); - } - - context.assertIsSatisfied(); - } - - @Test - public void testMissingExperimentCode() - { - Properties properties = new Properties(); - properties.setProperty(SAMPLE_CODE_KEY, SAMPLE_CODE); - properties.setProperty(PROJECT_CODE_KEY, PROJECT_CODE); - save(properties, MS_INJECTION_PROPERTIES_FILE); - - try - { - extractor.getDataSetInformation(dataSet, service); - fail("ConfigurationFailureException expected"); - } catch (ConfigurationFailureException ex) - { - assertEquals("Given key '" + EXPERIMENT_CODE_KEY + "' not found in properties '[" - + PROJECT_CODE_KEY + ", " + SAMPLE_CODE_KEY + "]'", ex.getMessage()); - } - - context.assertIsSatisfied(); - } - - @Test - public void testMissingDataSetPropertiesFile() - { - Properties sampleProperties = new Properties(); - sampleProperties.setProperty(SAMPLE_CODE_KEY, SAMPLE_CODE); - sampleProperties.setProperty(PROJECT_CODE_KEY, PROJECT_CODE); - sampleProperties.setProperty(EXPERIMENT_CODE_KEY, EXPERIMENT_CODE); - sampleProperties.setProperty(USER_KEY, "user1"); - save(sampleProperties, MS_INJECTION_PROPERTIES_FILE); - SampleTypePropertyType pt = createPropertyType(SAMPLE_CODE_KEY, true); - prepareGetExperimentAndGetSampleType(true, pt); - prepareRegisterSample(null); - - try - { - extractor.getDataSetInformation(dataSet, service); - fail("UserFailureException expected"); - } catch (UserFailureException ex) - { - assertEquals("Missing properties file '" + DATA_SET_PROPERTIES_FILE + "'.", ex - .getMessage()); - } - - context.assertIsSatisfied(); - } - - @Test - public void testMissingDataSetType() - { - Properties sampleProperties = new Properties(); - sampleProperties.setProperty(SAMPLE_CODE_KEY, SAMPLE_CODE); - sampleProperties.setProperty(PROJECT_CODE_KEY, PROJECT_CODE); - sampleProperties.setProperty(EXPERIMENT_CODE_KEY, EXPERIMENT_CODE); - sampleProperties.setProperty(USER_KEY, "user1"); - save(sampleProperties, MS_INJECTION_PROPERTIES_FILE); - Properties dataSetProperties = new Properties(); - save(dataSetProperties, DATA_SET_PROPERTIES_FILE); - SampleTypePropertyType pt = createPropertyType(SAMPLE_CODE_KEY, true); - prepareGetExperimentAndGetSampleType(true, pt); - prepareRegisterSample(null); - - try - { - extractor.getDataSetInformation(dataSet, service); - fail("ConfigurationFailureException expected"); - } catch (ConfigurationFailureException ex) - { - assertEquals("Given key '" + DATA_SET_TYPE_KEY + "' not found in properties '[]'", ex - .getMessage()); - } - - context.assertIsSatisfied(); - } - - @Test - public void testRegisterRawData() - { - Properties sampleProperties = new Properties(); - sampleProperties.setProperty(PROJECT_CODE_KEY, PROJECT_CODE); - sampleProperties.setProperty(SAMPLE_CODE_KEY, SAMPLE_CODE); - sampleProperties.setProperty(EXPERIMENT_CODE_KEY, EXPERIMENT_CODE); - sampleProperties.setProperty(USER_KEY, "user1"); - sampleProperties.setProperty("TEMPERATURE", "47.11"); - save(sampleProperties, MS_INJECTION_PROPERTIES_FILE); - Properties dataSetProperties = new Properties(); - dataSetProperties.setProperty(DATA_SET_TYPE_KEY, "RAW_DATA"); - dataSetProperties.setProperty("CENTROID", "true"); - dataSetProperties.setProperty("BLABLA", "blub"); - save(dataSetProperties, DATA_SET_PROPERTIES_FILE); - SampleTypePropertyType pt1 = createPropertyType(SAMPLE_CODE_KEY, true); - SampleTypePropertyType pt2 = createPropertyType("VOLUME", false); - prepareGetExperimentAndGetSampleType(false, pt1, pt2); - prepareRegisterSample(null); - prepareGetDataSetType("RAW_DATA", createDataSetPropertyType("CENTROID", false)); - - DataSetInformation info = extractor.getDataSetInformation(dataSet, service); - - assertEquals(CommonConstants.MS_DATA_SPACE, info.getSpaceCode()); - assertEquals(SAMPLE_CODE, info.getSampleCode()); - assertEquals(EXPERIMENT_IDENTIFIER, info.getExperimentIdentifier().toString()); - List<NewProperty> dProps = info.getDataSetProperties(); - assertEquals(1, dProps.size()); - assertEquals("CENTROID", dProps.get(0).getPropertyCode()); - assertEquals("true", dProps.get(0).getValue()); - - context.assertIsSatisfied(); - } - - @Test - public void testRegisterRawDataAndLinkToBiologicalSampe() - { - Properties sampleProperties = new Properties(); - sampleProperties.setProperty(PROJECT_CODE_KEY, PROJECT_CODE); - sampleProperties.setProperty(SAMPLE_CODE_KEY, SAMPLE_CODE); - sampleProperties.setProperty(EXPERIMENT_CODE_KEY, EXPERIMENT_CODE); - sampleProperties.setProperty(BIOLOGICAL_SAMPLE_IDENTIFIER_KEY, "bio-sample"); - sampleProperties.setProperty(USER_KEY, "user1"); - sampleProperties.setProperty("TEMPERATURE", "47.11"); - save(sampleProperties, MS_INJECTION_PROPERTIES_FILE); - Properties dataSetProperties = new Properties(); - dataSetProperties.setProperty(DATA_SET_TYPE_KEY, "RAW_DATA"); - dataSetProperties.setProperty("CENTROID", "true"); - dataSetProperties.setProperty("BLABLA", "blub"); - save(dataSetProperties, DATA_SET_PROPERTIES_FILE); - SampleTypePropertyType pt1 = createPropertyType(SAMPLE_CODE_KEY, true); - SampleTypePropertyType pt2 = createPropertyType("VOLUME", false); - prepareGetExperimentAndGetSampleType(false, pt1, pt2); - prepareRegisterSample("bio-sample"); - prepareGetDataSetType("RAW_DATA", createDataSetPropertyType("CENTROID", false)); - context.checking(new Expectations() - { - { - one(service).tryGetSampleWithExperiment(SampleIdentifierFactory.parse("bio-sample")); - will(returnValue(new Sample())); - } - }); - - DataSetInformation info = extractor.getDataSetInformation(dataSet, service); - - assertEquals(CommonConstants.MS_DATA_SPACE, info.getSpaceCode()); - assertEquals(SAMPLE_CODE, info.getSampleCode()); - assertEquals(EXPERIMENT_IDENTIFIER, info.getExperimentIdentifier().toString()); - List<NewProperty> dProps = info.getDataSetProperties(); - assertEquals(1, dProps.size()); - assertEquals("CENTROID", dProps.get(0).getPropertyCode()); - assertEquals("true", dProps.get(0).getValue()); - - context.assertIsSatisfied(); - } - - @Test - public void testRegisterSupersedingRawDataWhichUpdatesSampleProperties() - { - Properties sampleProperties = new Properties(); - sampleProperties.setProperty(PROJECT_CODE_KEY, PROJECT_CODE); - sampleProperties.setProperty(SAMPLE_CODE_KEY, SAMPLE_CODE); - sampleProperties.setProperty(EXPERIMENT_CODE_KEY, EXPERIMENT_CODE); - sampleProperties.setProperty(SAMPLE_PROPERTY, "Isaac"); - sampleProperties.setProperty("TEMPERATURE", "47.11"); - save(sampleProperties, MS_INJECTION_PROPERTIES_FILE); - Properties dataSetProperties = new Properties(); - dataSetProperties.setProperty(DATA_SET_TYPE_KEY, "RAW_DATA"); - dataSetProperties.setProperty("CENTROID", "true"); - dataSetProperties.setProperty("BLABLA", "blub"); - save(dataSetProperties, DATA_SET_PROPERTIES_FILE); - prepareGetExperimentAndGetSampleType(false, createPropertyType(SAMPLE_PROPERTY, true)); - prepareUpdateSample("Isaac", null); - prepareGetDataSetType("RAW_DATA", createDataSetPropertyType("CENTROID", false)); - - DataSetInformation info = extractor.getDataSetInformation(dataSet, service); - - assertEquals(CommonConstants.MS_DATA_SPACE, info.getSpaceCode()); - assertEquals(SAMPLE_CODE, info.getSampleCode()); - assertEquals(EXPERIMENT_IDENTIFIER, info.getExperimentIdentifier().toString()); - List<NewProperty> dProps = info.getDataSetProperties(); - assertEquals(1, dProps.size()); - assertEquals("CENTROID", dProps.get(0).getPropertyCode()); - assertEquals("true", dProps.get(0).getValue()); - - context.assertIsSatisfied(); - } - - @Test - public void testRegisterSupersedingRawDataWhichUpdatesSampleParent() - { - Properties sampleProperties = new Properties(); - sampleProperties.setProperty(BIOLOGICAL_SAMPLE_IDENTIFIER_KEY, "bio-sample"); - sampleProperties.setProperty(PROJECT_CODE_KEY, PROJECT_CODE); - sampleProperties.setProperty(SAMPLE_CODE_KEY, SAMPLE_CODE); - sampleProperties.setProperty(EXPERIMENT_CODE_KEY, EXPERIMENT_CODE); - sampleProperties.setProperty(SAMPLE_PROPERTY, "Isaac"); - sampleProperties.setProperty("TEMPERATURE", "47.11"); - save(sampleProperties, MS_INJECTION_PROPERTIES_FILE); - Properties dataSetProperties = new Properties(); - dataSetProperties.setProperty(DATA_SET_TYPE_KEY, "RAW_DATA"); - dataSetProperties.setProperty("CENTROID", "true"); - dataSetProperties.setProperty("BLABLA", "blub"); - save(dataSetProperties, DATA_SET_PROPERTIES_FILE); - prepareGetExperimentAndGetSampleType(false, createPropertyType(SAMPLE_PROPERTY, true)); - prepareUpdateSample("Isaac", new String[] { "bio-sample" }); - prepareGetDataSetType("RAW_DATA", createDataSetPropertyType("CENTROID", false)); - context.checking(new Expectations() - { - { - one(service).tryGetSampleWithExperiment( - SampleIdentifierFactory.parse("bio-sample")); - will(returnValue(new Sample())); - } - }); - - DataSetInformation info = extractor.getDataSetInformation(dataSet, service); - - assertEquals(CommonConstants.MS_DATA_SPACE, info.getSpaceCode()); - assertEquals(SAMPLE_CODE, info.getSampleCode()); - assertEquals(EXPERIMENT_IDENTIFIER, info.getExperimentIdentifier().toString()); - List<NewProperty> dProps = info.getDataSetProperties(); - assertEquals(1, dProps.size()); - assertEquals("CENTROID", dProps.get(0).getPropertyCode()); - assertEquals("true", dProps.get(0).getValue()); - - context.assertIsSatisfied(); - } - - @Test - public void testRegisterParentDataSet() - { - Properties sampleProperties = new Properties(); - sampleProperties.setProperty(PROJECT_CODE_KEY, PROJECT_CODE); - sampleProperties.setProperty(SAMPLE_CODE_KEY, SAMPLE_CODE); - sampleProperties.setProperty(EXPERIMENT_CODE_KEY, EXPERIMENT_CODE); - sampleProperties.setProperty(SAMPLE_PROPERTY, "Albert"); - save(sampleProperties, MS_INJECTION_PROPERTIES_FILE); - Properties dataSetProperties = new Properties(); - dataSetProperties.setProperty(DATA_SET_TYPE_KEY, "MZXML_DATA"); - dataSetProperties.setProperty(PARENT_TYPE_KEY, "RAW_DATA"); - save(dataSetProperties, DATA_SET_PROPERTIES_FILE); - SampleTypePropertyType pt1 = createPropertyType(SAMPLE_PROPERTY, false); - SampleTypePropertyType pt2 = createPropertyType("VOLUME", false); - SampleTypePropertyType pt3 = createPropertyType("TEMPERATURE", false); - prepareGetExperimentAndGetSampleType(true, pt1, pt2, pt3); - prepareUpdateSample(null, null); - prepareGetDataSetType("MZXML_DATA"); - context.checking(new Expectations() - { - { - one(service).listDataSetsBySampleID(SAMPLE_ID, false); - AbstractExternalData ds1 = createDataSet("RAW_DATA", "raw1", 11); - AbstractExternalData ds2 = createDataSet("MZXML_DATA", "mzxml1", 13); - AbstractExternalData ds3 = createDataSet("RAW_DATA", "raw2", 12); - will(returnValue(Arrays.asList(ds1, ds2, ds3))); - } - }); - - DataSetInformation info = extractor.getDataSetInformation(dataSet, service); - - assertEquals(CommonConstants.MS_DATA_SPACE, info.getSpaceCode()); - assertEquals(SAMPLE_CODE, info.getSampleCode()); - assertEquals(new SampleIdentifier(new SpaceIdentifier(CommonConstants.MS_DATA_SPACE), - SAMPLE_CODE), info.getSampleIdentifier()); - assertEquals(EXPERIMENT_IDENTIFIER, info.getExperimentIdentifier().toString()); - assertEquals(0, info.getDataSetProperties().size()); - List<String> parentDataSetCodes = info.getParentDataSetCodes(); - assertEquals("raw2", parentDataSetCodes.get(0)); - assertEquals(1, parentDataSetCodes.size()); - - context.assertIsSatisfied(); - } - - @Test - public void testMissingMandatoryProperties() - { - Properties properties = new Properties(); - properties.setProperty(PROJECT_CODE_KEY, PROJECT_CODE); - properties.setProperty(SAMPLE_CODE_KEY, SAMPLE_CODE); - properties.setProperty(EXPERIMENT_CODE_KEY, EXPERIMENT_CODE); - save(properties, MS_INJECTION_PROPERTIES_FILE); - SampleTypePropertyType pt1 = createPropertyType(SAMPLE_CODE_KEY, true); - SampleTypePropertyType pt2 = createPropertyType("VOLUME", true); - SampleTypePropertyType pt3 = createPropertyType("TEMPERATURE", true); - prepareGetExperimentAndGetSampleType(true, pt1, pt2, pt3); - context.checking(new Expectations() - { - { - one(service).tryGetSampleWithExperiment( - SampleIdentifierFactory.parse(SAMPLE_IDENTIFIER)); - will(returnValue(null)); - } - }); - - try - { - extractor.getDataSetInformation(dataSet, service); - fail("UserFailureException expected"); - } catch (UserFailureException ex) - { - assertEquals("The following mandatory properties are missed: [VOLUME, TEMPERATURE]", ex - .getMessage()); - } - - context.assertIsSatisfied(); - } - - private void prepareGetExperimentAndGetSampleType(final boolean experimentExists, - final SampleTypePropertyType... sampleTypePropertyTypes) - { - context.checking(new Expectations() - { - { - ExperimentIdentifier identifier = - new ExperimentIdentifier(CommonConstants.MS_DATA_SPACE, PROJECT_CODE, - EXPERIMENT_CODE); - one(service).tryGetExperiment(identifier); - Experiment experiment = new Experiment(); - experiment.setId(EXPERIMENT_ID); - will(returnValue(experimentExists ? experiment : null)); - - if (experimentExists == false) - { - one(service).registerExperiment( - new NewExperiment(identifier.toString(), EXPERIMENT_TYPE_CODE)); - } - } - }); - prepareGetSampleType(sampleTypePropertyTypes); - } - - private void prepareGetSampleType(final SampleTypePropertyType... sampleTypePropertyTypes) - { - context.checking(new Expectations() - { - { - one(service).getSampleType(CommonConstants.MS_INJECTION_SAMPLE_TYPE_CODE); - SampleType sampleType = new SampleType(); - sampleType.setCode(CommonConstants.MS_INJECTION_SAMPLE_TYPE_CODE); - sampleType.setSampleTypePropertyTypes(Arrays.asList(sampleTypePropertyTypes)); - will(returnValue(sampleType)); - } - }); - } - - private void prepareGetDataSetType(final String dataSetType, - final DataSetTypePropertyType... types) - { - context.checking(new Expectations() - { - { - one(service).getDataSetType(dataSetType); - DataSetTypeWithVocabularyTerms result = new DataSetTypeWithVocabularyTerms(); - DataSetType type = new DataSetType(dataSetType); - type.setDataSetTypePropertyTypes(Arrays.asList(types)); - result.setDataSetType(type); - will(returnValue(result)); - } - }); - } - - private void prepareRegisterSample(final String parentIdentifier) - { - context.checking(new Expectations() - { - { - one(service).tryGetSampleWithExperiment( - SampleIdentifierFactory.parse(SAMPLE_IDENTIFIER)); - will(returnValue(null)); - - one(service).registerSample(with(new BaseMatcher<NewSample>() - { - @Override - public boolean matches(Object item) - { - if (item instanceof NewSample) - { - NewSample sample = (NewSample) item; - assertEquals(CommonConstants.MS_INJECTION_SAMPLE_TYPE_CODE, sample.getSampleType().getCode()); - assertEquals(SAMPLE_IDENTIFIER, sample.getIdentifier()); - assertEquals(EXPERIMENT_IDENTIFIER, sample - .getExperimentIdentifier()); - String[] parents = sample.getParentsOrNull(); - assertEquals(parentIdentifier, parents == null ? null : parents[0]); - IEntityProperty[] properties = sample.getProperties(); - Map<String, IEntityProperty> map = - new HashMap<String, IEntityProperty>(); - for (IEntityProperty property : properties) - { - map.put(property.getPropertyType().getCode(), property); - } - - assertEquals(SAMPLE_CODE, map.get(SAMPLE_CODE_KEY).getValue()); - assertEquals(1, map.size()); - return true; - } - return false; - } - - @Override - public void describeTo(Description description) - { - description.appendText(SAMPLE_IDENTIFIER); - } - }), with("user1")); - } - }); - } - - private void prepareUpdateSample(final String newName, final String[] expectedModifiedParentCodesOrNull) - { - context.checking(new Expectations() - { - { - one(service).tryGetSampleWithExperiment( - SampleIdentifierFactory.parse(SAMPLE_IDENTIFIER)); - Sample sample = new Sample(); - sample.setId(SAMPLE_ID); - sample.setModificationDate(new Date(4711)); - sample.setProperties(Arrays.<IEntityProperty> asList(createProperty( - SAMPLE_PROPERTY, "Albert"))); - SampleType sampleType = new SampleType(); - sampleType.setSampleTypePropertyTypes(Arrays.asList(createPropertyType( - SAMPLE_PROPERTY, true))); - sample.setSampleType(sampleType); - will(returnValue(sample)); - - one(service).updateSample(with(new BaseMatcher<SampleUpdatesDTO>() - { - @Override - public boolean matches(Object item) - { - if (item instanceof SampleUpdatesDTO) - { - SampleUpdatesDTO sampleUpdate = (SampleUpdatesDTO) item; - assertEquals(SAMPLE_ID, sampleUpdate.getSampleIdOrNull() - .getId().longValue()); - assertEquals(0, sampleUpdate.getAttachments().size()); - assertEquals(null, sampleUpdate.getContainerIdentifierOrNull()); - Assert.assertEquals( - sampleUpdate.getModifiedParentCodesOrNull(), - expectedModifiedParentCodesOrNull); - assertEquals(EXPERIMENT_IDENTIFIER, sampleUpdate - .getExperimentIdentifierOrNull().toString()); - assertEquals(SAMPLE_IDENTIFIER, sampleUpdate - .getSampleIdentifier().toString()); - List<IEntityProperty> properties = sampleUpdate.getProperties(); - assertEquals(SAMPLE_PROPERTY, properties.get(0) - .getPropertyType().getCode()); - assertEquals(newName == null ? "Albert" : newName, properties - .get(0).getValue()); - assertEquals(1, properties.size()); - return true; - } - return false; - } - - @Override - public void describeTo(Description description) - { - } - })); - } - }); - } - - private void save(Properties properties, String fileName) - { - File propertiesFile = new File(dataSet, fileName); - FileOutputStream outputStream = null; - try - { - outputStream = new FileOutputStream(propertiesFile); - properties.store(outputStream, null); - } catch (IOException ex) - { - throw CheckedExceptionTunnel.wrapIfNecessary(ex); - } finally - { - IOUtils.closeQuietly(outputStream); - } - } - - private SampleTypePropertyType createPropertyType(String key, boolean mandatory) - { - SampleTypePropertyType stpt = new SampleTypePropertyType(); - stpt.setMandatory(mandatory); - PropertyType propertyType = new PropertyType(); - propertyType.setCode(key); - stpt.setPropertyType(propertyType); - return stpt; - } - - private DataSetTypePropertyType createDataSetPropertyType(String key, boolean mandatory) - { - DataSetTypePropertyType etpt = new DataSetTypePropertyType(); - etpt.setMandatory(mandatory); - PropertyType propertyType = new PropertyType(); - propertyType.setCode(key); - etpt.setPropertyType(propertyType); - return etpt; - } - - private EntityProperty createProperty(String name, String value) - { - EntityProperty entityProperty = new EntityProperty(); - PropertyType propertyType = new PropertyType(); - propertyType.setCode(name); - entityProperty.setPropertyType(propertyType); - entityProperty.setValue(value); - return entityProperty; - } - - private AbstractExternalData createDataSet(String type, String code, int timestamp) - { - PhysicalDataSet ds = new PhysicalDataSet(); - ds.setDataSetType(new DataSetType(type)); - ds.setCode(code); - ds.setRegistrationDate(new Date(timestamp)); - return ds; - } - -} \ No newline at end of file diff --git a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/etlserver/proteomics/DataSetInfoExtractorForProteinResultsTest.java b/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/etlserver/proteomics/DataSetInfoExtractorForProteinResultsTest.java deleted file mode 100644 index a6d4275ff7ffcebe7292542c9657a00c5c24bc57..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/etlserver/proteomics/DataSetInfoExtractorForProteinResultsTest.java +++ /dev/null @@ -1,479 +0,0 @@ -/* - * Copyright 2010 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.etlserver.proteomics; - -import static ch.systemsx.cisd.openbis.etlserver.proteomics.DataSetInfoExtractorForProteinResults.DEFAULT_EXPERIMENT_TYPE_CODE; -import static ch.systemsx.cisd.openbis.etlserver.proteomics.DataSetInfoExtractorForProteinResults.EXPERIMENT_IDENTIFIER_KEY; -import static ch.systemsx.cisd.openbis.etlserver.proteomics.DataSetInfoExtractorForProteinResults.EXPERIMENT_PROPERTIES_FILE_NAME_KEY; -import static ch.systemsx.cisd.openbis.etlserver.proteomics.DataSetInfoExtractorForProteinResults.EXPERIMENT_TYPE_CODE_KEY; -import static ch.systemsx.cisd.openbis.etlserver.proteomics.DataSetInfoExtractorForProteinResults.PARENT_DATA_SET_CODES; - -import java.io.File; -import java.util.Arrays; -import java.util.Collections; -import java.util.HashMap; -import java.util.Map; -import java.util.Properties; - -import org.hamcrest.BaseMatcher; -import org.hamcrest.Description; -import org.jmock.Expectations; -import org.jmock.Mockery; -import org.testng.annotations.AfterMethod; -import org.testng.annotations.BeforeMethod; -import org.testng.annotations.Test; - -import ch.rinn.restrictions.Friend; -import ch.systemsx.cisd.base.tests.AbstractFileSystemTestCase; -import ch.systemsx.cisd.common.exceptions.UserFailureException; -import ch.systemsx.cisd.common.filesystem.FileUtilities; -import ch.systemsx.cisd.common.test.RecordingMatcher; -import ch.systemsx.cisd.etlserver.IDataSetInfoExtractor; -import ch.systemsx.cisd.openbis.dss.generic.shared.IEncapsulatedOpenBISService; -import ch.systemsx.cisd.openbis.dss.generic.shared.dto.DataSetInformation; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.AbstractExternalData; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityKind; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Experiment; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExperimentType; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExperimentTypePropertyType; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IEntityProperty; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewExperiment; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.PropertyType; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.builders.DataSetBuilder; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.builders.ExperimentBuilder; -import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.ExperimentIdentifier; -import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.ProjectIdentifier; - -/** - * @author Franz-Josef Elmer - */ -@Friend(toClasses = DataSetInfoExtractorForProteinResults.class) -public class DataSetInfoExtractorForProteinResultsTest extends AbstractFileSystemTestCase -{ - private static final String PARENT_DATA_SET_CODES_KEY = - DataSetInfoExtractorForProteinResults.PARENT_DATA_SET_CODES.toUpperCase(); - - private Mockery context; - - private IEncapsulatedOpenBISService service; - - private File dataSet; - - private File protXmlFile; - - @BeforeMethod - public void beforeMethod() - { - context = new Mockery(); - service = context.mock(IEncapsulatedOpenBISService.class); - dataSet = new File(workingDirectory, "space1&project1"); - dataSet.mkdirs(); - protXmlFile = new File(dataSet, "prot.xml"); - } - - @AfterMethod - public void afterMethod() - { - // To following line of code should also be called at the end of each test method. - // Otherwise one do not known which test failed. - context.assertIsSatisfied(); - } - - @Test - public void testWithNonDefaultExperimentTypeAndPropertiesFileName() - { - FileUtilities.writeToFile(protXmlFile, ""); - String propertiesFile = "my.properties"; - FileUtilities.writeToFile(new File(dataSet, propertiesFile), "answer=42\nblabla=blub\n" - + EXPERIMENT_IDENTIFIER_KEY + "= /TEST/PROJECT/EXP_TO_BE_IGNORED\n" - + PARENT_DATA_SET_CODES + "=1 2 3 4\n"); - Properties properties = new Properties(); - String experimentType = "MY_EXPERIMENT"; - properties.setProperty(EXPERIMENT_TYPE_CODE_KEY, experimentType); - properties.setProperty(EXPERIMENT_PROPERTIES_FILE_NAME_KEY, propertiesFile); - prepareGetDataSet("1"); - prepareGetDataSet("2"); - prepareGetDataSet("3"); - prepareGetDataSet("4"); - prepare(experimentType); - context.checking(new Expectations() - { - { - one(service).registerExperiment(with(any(NewExperiment.class))); - } - }); - - IDataSetInfoExtractor extractor = createExtractor(properties); - - DataSetInformation info = extractor.getDataSetInformation(dataSet, service); - - assertEquals("/SPACE1/PROJECT1/E4711", info.getExperimentIdentifier().toString()); - assertEquals("[1, 2, 3, 4]", info.getParentDataSetCodes().toString()); - context.assertIsSatisfied(); - } - - @Test - public void testWithProvidedExperimentCode() - { - FileUtilities.writeToFile(protXmlFile, ""); - String propertiesFile = "my.properties"; - FileUtilities.writeToFile(new File(dataSet, propertiesFile), "answer=42\nblabla=blub\n" - + DataSetInfoExtractorForProteinResults.EXPERIMENT_CODE_KEY + "= MY_EXP1\n"); - Properties properties = new Properties(); - String experimentType = "MY_EXPERIMENT"; - properties.setProperty(EXPERIMENT_TYPE_CODE_KEY, experimentType); - properties.setProperty(EXPERIMENT_PROPERTIES_FILE_NAME_KEY, propertiesFile); - prepare(experimentType, false); - context.checking(new Expectations() - { - { - one(service).registerExperiment(with(any(NewExperiment.class))); - } - }); - - IDataSetInfoExtractor extractor = createExtractor(properties); - - DataSetInformation info = extractor.getDataSetInformation(dataSet, service); - - assertEquals("/SPACE1/PROJECT1/MY_EXP1", info.getExperimentIdentifier().toString()); - context.assertIsSatisfied(); - } - - @Test - public void testRegistrationWithOneMandatoryProperty() - { - FileUtilities.writeToFile(protXmlFile, ""); - FileUtilities.writeToFile(new File(dataSet, - DataSetInfoExtractorForProteinResults.DEFAULT_EXPERIMENT_PROPERTIES_FILE_NAME), - "answer=42\nblabla=blub\n" + PARENT_DATA_SET_CODES + "=1 2 3 4\n"); - prepare(DEFAULT_EXPERIMENT_TYPE_CODE); - prepareGetDataSet("1"); - prepareGetDataSet("2"); - prepareGetDataSet("3"); - prepareGetDataSet("4"); - - context.checking(new Expectations() - { - { - one(service).registerExperiment(with(new BaseMatcher<NewExperiment>() - { - @Override - public boolean matches(Object item) - { - if (item instanceof NewExperiment) - { - NewExperiment experiment = (NewExperiment) item; - assertEquals(DEFAULT_EXPERIMENT_TYPE_CODE, - experiment.getExperimentTypeCode()); - IEntityProperty[] properties = experiment.getProperties(); - assertEquals(1, properties.length); - assertEquals("answer", properties[0].getPropertyType() - .getCode()); - assertEquals("42", properties[0].tryGetAsString()); - return true; - } - return false; - } - - @Override - public void describeTo(Description description) - { - } - })); - } - }); - - IDataSetInfoExtractor extractor = createExtractor(new Properties()); - DataSetInformation info = extractor.getDataSetInformation(dataSet, service); - - assertEquals("/SPACE1/PROJECT1/E4711", info.getExperimentIdentifier().toString()); - assertEquals("[1, 2, 3, 4]", info.getParentDataSetCodes().toString()); - context.assertIsSatisfied(); - } - - @Test - public void testRegistrationWithMissingProtXmlFile() - { - prepare(DEFAULT_EXPERIMENT_TYPE_CODE); - - IDataSetInfoExtractor extractor = createExtractor(new Properties()); - try - { - extractor.getDataSetInformation(dataSet, service); - fail("UserFailureException expected"); - } catch (UserFailureException ex) - { - assertEquals("No *prot.xml file found in data set '" + dataSet + "'.", ex.getMessage()); - } - - context.assertIsSatisfied(); - } - - @Test - public void testRegistrationWithMissingMandatoryProperty() - { - FileUtilities.writeToFile(protXmlFile, ""); - prepare(DEFAULT_EXPERIMENT_TYPE_CODE); - - IDataSetInfoExtractor extractor = createExtractor(new Properties()); - try - { - extractor.getDataSetInformation(dataSet, service); - fail("UserFailureException expected"); - } catch (UserFailureException ex) - { - assertEquals("The following mandatory properties are missed: [answer]", ex.getMessage()); - } - - context.assertIsSatisfied(); - } - - @Test - public void testWithParentDataSetsDefinedByBaseExperimentAndProtXmlFileTooLarge() - { - FileUtilities.writeToFile(protXmlFile, "abc"); - String propertiesFile = "my.properties"; - FileUtilities.writeToFile(new File(dataSet, propertiesFile), "answer=42\nblabla=blub\n" - + EXPERIMENT_IDENTIFIER_KEY + "= /TEST/PROJECT/EXP1\n"); - Properties properties = new Properties(); - String experimentType = "MY_EXPERIMENT"; - properties.setProperty(EXPERIMENT_TYPE_CODE_KEY, experimentType); - properties.setProperty(EXPERIMENT_PROPERTIES_FILE_NAME_KEY, propertiesFile); - properties.setProperty(DataSetInfoExtractorForProteinResults.PROT_XML_SIZE_THRESHOLD, "0"); - prepare(experimentType); - final RecordingMatcher<NewExperiment> experimentMatcher = new RecordingMatcher<NewExperiment>(); - context.checking(new Expectations() - { - { - one(service).tryGetExperiment( - new ExperimentIdentifier(new ProjectIdentifier("TEST", "PROJECT"), - "EXP1")); - Experiment experiment = new ExperimentBuilder().id(123789L).getExperiment(); - will(returnValue(experiment)); - - one(service).listDataSetsByExperimentID(experiment.getId()); - AbstractExternalData ds1 = new DataSetBuilder().code("ds1").getDataSet(); - AbstractExternalData ds2 = new DataSetBuilder().code("ds2").getDataSet(); - will(returnValue(Arrays.asList(ds1, ds2))); - - one(service).registerExperiment(with(experimentMatcher)); - } - }); - - IDataSetInfoExtractor extractor = createExtractor(properties); - - DataSetInformation info = extractor.getDataSetInformation(dataSet, service); - - assertEquals("/SPACE1/PROJECT1/E4711", info.getExperimentIdentifier().toString()); - assertEquals("[ds1, ds2]", info.getParentDataSetCodes().toString()); - IEntityProperty[] expProps = experimentMatcher.recordedObject().getProperties(); - assertEquals("Size of prot.xml file prot.xml is with 3 bytes too large. Maximum size is 0 bytes", - asMap(expProps).get(DataSetInfoExtractorForProteinResults.NOT_PROCESSED_PROPERTY).getValue()); - context.assertIsSatisfied(); - } - - @Test - public void testWithUnkownBaseExperiment() - { - FileUtilities.writeToFile(protXmlFile, ""); - String propertiesFile = "my.properties"; - FileUtilities.writeToFile(new File(dataSet, propertiesFile), "answer=42\nblabla=blub\n" - + EXPERIMENT_IDENTIFIER_KEY + "= /TEST/PROJECT/EXP1\n"); - Properties properties = new Properties(); - String experimentType = "MY_EXPERIMENT"; - properties.setProperty(EXPERIMENT_TYPE_CODE_KEY, experimentType); - properties.setProperty(EXPERIMENT_PROPERTIES_FILE_NAME_KEY, propertiesFile); - prepare(experimentType); - context.checking(new Expectations() - { - { - one(service).tryGetExperiment( - new ExperimentIdentifier(new ProjectIdentifier("TEST", "PROJECT"), - "EXP1")); - will(returnValue(null)); - - } - }); - - IDataSetInfoExtractor extractor = createExtractor(properties); - - try - { - extractor.getDataSetInformation(dataSet, service); - fail("UserFailureException expected."); - } catch (UserFailureException ex) - { - assertEquals("Unkown experiment /TEST/PROJECT/EXP1", ex.getMessage()); - } - context.assertIsSatisfied(); - } - - @Test - public void testWithUnkownParentDataSets() - { - FileUtilities.writeToFile(protXmlFile, ""); - String propertiesFile = "my.properties"; - FileUtilities.writeToFile(new File(dataSet, propertiesFile), "answer=42\nblabla=blub\n" - + EXPERIMENT_IDENTIFIER_KEY + "= /TEST/PROJECT/EXP1\n" + PARENT_DATA_SET_CODES_KEY - + " = ds1 ds2, ds3"); - Properties properties = new Properties(); - String experimentType = "MY_EXPERIMENT"; - properties.setProperty(EXPERIMENT_TYPE_CODE_KEY, experimentType); - properties.setProperty(EXPERIMENT_PROPERTIES_FILE_NAME_KEY, propertiesFile); - prepare(experimentType); - prepareGetDataSet("ds1"); - prepareGetDataSet("ds2", null); - prepareGetDataSet("ds3", null); - - IDataSetInfoExtractor extractor = createExtractor(properties); - - try - { - extractor.getDataSetInformation(dataSet, service); - fail("UserFailureException expected."); - } catch (UserFailureException ex) - { - assertEquals("Unknown data sets: ds2, ds3", ex.getMessage()); - } - context.assertIsSatisfied(); - } - - @Test - public void testWithParentDataSetsSeparatedBySpaces() - { - FileUtilities.writeToFile(protXmlFile, ""); - String propertiesFile = "my.properties"; - FileUtilities.writeToFile(new File(dataSet, propertiesFile), "answer=42\nblabla=blub\n" - + EXPERIMENT_IDENTIFIER_KEY + "= /TEST/PROJECT/EXP1\n" + PARENT_DATA_SET_CODES_KEY - + " = ds1 ds2"); - Properties properties = new Properties(); - String experimentType = "MY_EXPERIMENT"; - properties.setProperty(EXPERIMENT_TYPE_CODE_KEY, experimentType); - properties.setProperty(EXPERIMENT_PROPERTIES_FILE_NAME_KEY, propertiesFile); - prepare(experimentType); - prepareGetDataSet("ds1"); - prepareGetDataSet("ds2"); - context.checking(new Expectations() - { - { - one(service).registerExperiment(with(any(NewExperiment.class))); - } - }); - - IDataSetInfoExtractor extractor = createExtractor(properties); - - DataSetInformation info = extractor.getDataSetInformation(dataSet, service); - - assertEquals("/SPACE1/PROJECT1/E4711", info.getExperimentIdentifier().toString()); - assertEquals("[ds1, ds2]", info.getParentDataSetCodes().toString()); - context.assertIsSatisfied(); - } - - @Test - public void testWithParentDataSetsSeparatedByComma() - { - FileUtilities.writeToFile(protXmlFile, ""); - String propertiesFile = "my.properties"; - FileUtilities.writeToFile(new File(dataSet, propertiesFile), "answer=42\nblabla=blub\n" - + PARENT_DATA_SET_CODES_KEY + " = ds1,ds2"); - Properties properties = new Properties(); - String experimentType = "MY_EXPERIMENT"; - properties.setProperty(EXPERIMENT_TYPE_CODE_KEY, experimentType); - properties.setProperty(EXPERIMENT_PROPERTIES_FILE_NAME_KEY, propertiesFile); - prepare(experimentType); - prepareGetDataSet("ds1"); - prepareGetDataSet("ds2"); - context.checking(new Expectations() - { - { - one(service).registerExperiment(with(any(NewExperiment.class))); - } - }); - - IDataSetInfoExtractor extractor = createExtractor(properties); - - DataSetInformation info = extractor.getDataSetInformation(dataSet, service); - - assertEquals("/SPACE1/PROJECT1/E4711", info.getExperimentIdentifier().toString()); - assertEquals("[ds1, ds2]", info.getParentDataSetCodes().toString()); - context.assertIsSatisfied(); - } - - private void prepare(final String experimentType) - { - prepare(experimentType, true); - } - - private void prepare(final String experimentType, final boolean experimentCodeGenerated) - { - context.checking(new Expectations() - { - { - if (experimentCodeGenerated) - { - one(service).generateCodes("E", EntityKind.EXPERIMENT, 1); - will(returnValue(Collections.singletonList("E4711"))); - } - - one(service).getExperimentType(experimentType); - ExperimentType type = new ExperimentType(); - ExperimentTypePropertyType etpt1 = new ExperimentTypePropertyType(); - PropertyType propertyType1 = new PropertyType(); - propertyType1.setCode("answer"); - etpt1.setPropertyType(propertyType1); - etpt1.setMandatory(true); - ExperimentTypePropertyType etpt2 = new ExperimentTypePropertyType(); - PropertyType propertyType2 = new PropertyType(); - propertyType2.setCode(DataSetInfoExtractorForProteinResults.NOT_PROCESSED_PROPERTY); - etpt2.setPropertyType(propertyType2); - type.setExperimentTypePropertyTypes(Arrays.asList(etpt1, etpt2)); - will(returnValue(type)); - } - }); - } - - private void prepareGetDataSet(final String dataSetCode) - { - prepareGetDataSet(dataSetCode, new DataSetBuilder().code(dataSetCode).getDataSet()); - } - - private void prepareGetDataSet(final String dataSetCode, final AbstractExternalData data) - { - context.checking(new Expectations() - { - { - one(service).tryGetDataSet(dataSetCode); - will(returnValue(data)); - } - }); - } - - private Map<String, IEntityProperty> asMap(IEntityProperty[] properties) - { - Map<String, IEntityProperty> result = new HashMap<String, IEntityProperty>(); - for (IEntityProperty property : properties) - { - result.put(property.getPropertyType().getCode(), property); - } - return result; - } - - private IDataSetInfoExtractor createExtractor(Properties properties) - { - return new DataSetInfoExtractorForProteinResults(properties, service); - } -} diff --git a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/etlserver/proteomics/ProtXMLLoaderTest.java b/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/etlserver/proteomics/ProtXMLLoaderTest.java deleted file mode 100644 index a9664abc6a86be49a2c6f2d04c811c4ce7c1ed16..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/etlserver/proteomics/ProtXMLLoaderTest.java +++ /dev/null @@ -1,113 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.etlserver.proteomics; - -import java.io.File; -import java.util.List; - -import org.testng.annotations.Test; - -import ch.systemsx.cisd.common.filesystem.FileUtilities; -import ch.systemsx.cisd.openbis.etlserver.proteomics.ProtXMLLoader; -import ch.systemsx.cisd.openbis.etlserver.proteomics.dto.AminoAcidMass; -import ch.systemsx.cisd.openbis.etlserver.proteomics.dto.AnnotatedProtein; -import ch.systemsx.cisd.openbis.etlserver.proteomics.dto.Parameter; -import ch.systemsx.cisd.openbis.etlserver.proteomics.dto.Peptide; -import ch.systemsx.cisd.openbis.etlserver.proteomics.dto.PeptideModification; -import ch.systemsx.cisd.openbis.etlserver.proteomics.dto.Protein; -import ch.systemsx.cisd.openbis.etlserver.proteomics.dto.ProteinGroup; -import ch.systemsx.cisd.openbis.etlserver.proteomics.dto.ProteinProphetDetails; -import ch.systemsx.cisd.openbis.etlserver.proteomics.dto.ProteinSummary; -import ch.systemsx.cisd.openbis.etlserver.proteomics.dto.ProteinSummaryDataFilter; -import ch.systemsx.cisd.openbis.etlserver.proteomics.dto.ProteinSummaryHeader; - -/** - * @author Franz-Josef Elmer - */ -public class ProtXMLLoaderTest extends ProtXMLTestCase -{ - @Test - public void test() - { - File file = new File(workingDirectory, "test.xml"); - FileUtilities.writeToFile(file, EXAMPLE); - ProteinSummary summary = new ProtXMLLoader(true).readProtXML(file); - - ProteinSummaryHeader header = summary.getSummaryHeader(); - assertEquals("some/path/uniprot.HUMAN.v125.fasta", header.getReferenceDatabase()); - ProteinProphetDetails proteinProphet = - (ProteinProphetDetails) summary.getSummaryHeader().getProgramDetails().getSummary()[0]; - List<ProteinSummaryDataFilter> dataFilters = proteinProphet.getDataFilters(); - assertEquals(1, dataFilters.size()); - assertEquals(0.25, dataFilters.get(0).getMinProbability()); - assertEquals(1.0, dataFilters.get(0).getSensitivity()); - assertEquals(0.5, dataFilters.get(0).getFalsePositiveErrorRate()); - - List<ProteinGroup> groups = summary.getProteinGroups(); - assertEquals(2, groups.size()); - assertEquals(1.0, groups.get(0).getProbability()); - List<Protein> proteins = groups.get(0).getProteins(); - assertEquals(2, proteins.size()); - Protein protein1 = proteins.get(0); - assertEquals(1.0, protein1.getProbability()); - List<Parameter> parameters = protein1.getParameters(); - assertEquals(2, parameters.size()); - assertEquals("key1", parameters.get(0).getName()); - assertEquals("value1", parameters.get(0).getValue()); - assertEquals("type1", parameters.get(0).getType()); - assertEquals("key2", parameters.get(1).getName()); - assertEquals("value2", parameters.get(1).getValue()); - assertEquals("type2", parameters.get(1).getType()); - assertEquals("P42", protein1.getAnnotation().getDescription()); - List<AnnotatedProtein> indistinguishableProteins = protein1.getIndistinguishableProteins(); - assertEquals(2, indistinguishableProteins.size()); - assertEquals("P43", indistinguishableProteins.get(0).getAnnotation().getDescription()); - assertEquals("P44", indistinguishableProteins.get(1).getAnnotation().getDescription()); - List<Peptide> peptides = protein1.getPeptides(); - assertEquals(2, peptides.size()); - assertEquals("VYQIDGNYSR", peptides.get(0).getSequence()); - assertEquals(1, peptides.get(0).getModifications().size()); - PeptideModification peptideModification = peptides.get(0).getModifications().get(0); - assertEquals(42.0, peptideModification.getNTermMass()); - assertEquals(24.25, peptideModification.getCTermMass()); - List<AminoAcidMass> masses = peptideModification.getAminoAcidMasses(); - assertEquals(2, masses.size()); - assertEquals(1, masses.get(0).getPosition()); - assertEquals(115.25, masses.get(0).getMass()); - assertEquals(4, masses.get(1).getPosition()); - assertEquals(31.75, masses.get(1).getMass()); - assertEquals("ITSN", peptides.get(1).getSequence()); - assertEquals(0, peptides.get(1).getModifications().size()); - Protein protein2 = proteins.get(1); - assertEquals(0.0, protein2.getProbability()); - assertEquals("Q42", protein2.getAnnotation().getDescription()); - assertEquals(0, protein2.getIndistinguishableProteins().size()); - assertEquals(1, protein2.getPeptides().size()); - assertEquals("YSR", protein2.getPeptides().get(0).getSequence()); - assertEquals(0, protein2.getPeptides().get(0).getModifications().size()); - - assertEquals(0.75, groups.get(1).getProbability()); - assertEquals(1, groups.get(1).getProteins().size()); - Protein protein = groups.get(1).getProteins().get(0); - assertEquals(0.75, protein.getProbability()); - assertEquals("R42", protein.getAnnotation().getDescription()); - assertEquals(0, protein.getIndistinguishableProteins().size()); - assertEquals(1, protein.getPeptides().size()); - assertEquals("IYSR", protein.getPeptides().get(0).getSequence()); - assertEquals(0, protein.getPeptides().get(0).getModifications().size()); - } -} diff --git a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/etlserver/proteomics/ProtXMLTestCase.java b/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/etlserver/proteomics/ProtXMLTestCase.java deleted file mode 100644 index d94493700d847f4c83de8b0eff4538d5f16f1108..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/etlserver/proteomics/ProtXMLTestCase.java +++ /dev/null @@ -1,97 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.etlserver.proteomics; - -import ch.systemsx.cisd.base.tests.AbstractFileSystemTestCase; - -/** - * @author Franz-Josef Elmer - */ -public abstract class ProtXMLTestCase extends AbstractFileSystemTestCase -{ - - protected static final String EXAMPLE = - "<?xml version='1.0' encoding='UTF-8'?>\n" - + "<protein_summary xmlns='http://regis-web.systemsbiology.net/protXML' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' " - + - "xsi:schemaLocation='http://regis-web.systemsbiology.net/protXML http://sashimi.sourceforge.net/schema_revision/protXML/protXML_v5.xsd'>\n" - + "<protein_summary_header reference_database='some/path/uniprot.HUMAN.v125.fasta' residue_substitution_list='I -> L' " - + - "source_files='/home/lars/tmp/interact.pep.xml' source_files_alt='/home/lars/tmp/interact.pep.xml' min_peptide_probability='0.20' min_peptide_weight='0.50' num_predicted_correct_prots='755.6' num_input_1_spectra='0' num_input_2_spectra='77824' num_input_3_spectra='38201' num_input_4_spectra='0' num_input_5_spectra='0' initial_min_peptide_prob='0.05' total_no_spectrum_ids='104665.2' sample_enzyme='trypsin'>\n" - + " <program_details analysis='' time='2009-08-12T09:08:07'>\n" - + " <proteinprophet_details occam_flag='true' groups_flag='Y' degen_flag='Y' nsp_flag='Y' initial_peptide_wt_iters='2' " - + - "nsp_distribution_iters='2' final_peptide_wt_iters='4' run_options='XML'>\n" - + " <nsp_information neighboring_bin_smoothing='Y'>\n" - + " <nsp_distribution bin_no='0' nsp_lower_bound_incl='0.00' nsp_upper_bound_incl='0.00' pos_freq='0.003' neg_freq='0.320' pos_to_neg_ratio='0.01'/>\n" - + " </nsp_information>\n" - + " <ni_information>\n" - + " <ni_distribution bin_no='1' pos_freq='42' neg_freq='42' pos_to_neg_ratio='1'/>\n" - + " </ni_information>\n" - + " <protein_summary_data_filter min_probability='0.25' sensitivity='1' false_positive_error_rate='0.5' predicted_num_correct='9' " - + - "predicted_num_incorrect='4'/>\n" - + " </proteinprophet_details>\n" - + " </program_details>\n" - + "</protein_summary_header>\n" - + "<dataset_derivation generation_no='1'/>\n" - + "<protein_group probability='1' group_number='1'>\n" - + " <protein probability='1' protein_name='a' n_indistinguishable_proteins='3' group_sibling_id='0'>\n" - + " <parameter name='key1' value='value1' type='type1'/>\n" - + " <parameter name='key2' value='value2' type='type2'/>\n" - + " <annotation protein_description='P42'/>\n" - + " <indistinguishable_protein protein_name='a'><annotation protein_description='P43'/></indistinguishable_protein>\n" - + " <indistinguishable_protein protein_name='a'><annotation protein_description='P44'/></indistinguishable_protein>\n" - + " <peptide peptide_sequence='VYQIDGNYSR' charge='1' initial_probability='0' is_nondegenerate_evidence='true' n_enzymatic_termini='1' n_instances='1' is_contributing_evidence='N'>\n" - + " <modification_info mod_nterm_mass='42' mod_cterm_mass='24.25'>\n" - + " <mod_aminoacid_mass position='1' mass='115.25'/>\n" - + " <mod_aminoacid_mass position='4' mass='31.75'/>\n" - + " </modification_info>\n" - + " </peptide>\n" - + " <peptide peptide_sequence='ITSN' charge='1' initial_probability='0' is_nondegenerate_evidence='Y' n_enzymatic_termini='1' n_instances='1' is_contributing_evidence='N'/>\n" - + " </protein>\n" - + " <protein probability='0' protein_name='a' n_indistinguishable_proteins='1' group_sibling_id='1'>\n" - + " <annotation protein_description='Q42'/>\n" - + " <peptide peptide_sequence='YSR' charge='1' initial_probability='0' is_nondegenerate_evidence='Y' n_enzymatic_termini='1' n_instances='1' is_contributing_evidence='N'/>\n" - + " </protein>\n" - + "</protein_group>\n" - + "<protein_group probability='0.75' group_number='2'>\n" - + " <protein probability='0.75' protein_name='a' n_indistinguishable_proteins='1' group_sibling_id='2'>\n" - + " <annotation protein_description='R42'/>\n" - + " <peptide peptide_sequence='IYSR' charge='1' initial_probability='0' is_nondegenerate_evidence='Y' n_enzymatic_termini='1' n_instances='1' is_contributing_evidence='N'/>\n" - + " </protein>\n" - + "</protein_group>\n" - + "</protein_summary>\n"; - - /** - * - * - */ - public ProtXMLTestCase() - { - super(); - } - - /** - * @param cleanAfterMethod - */ - public ProtXMLTestCase(boolean cleanAfterMethod) - { - super(cleanAfterMethod); - } - -} \ No newline at end of file diff --git a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/etlserver/proteomics/ProtXMLUploaderTest.java b/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/etlserver/proteomics/ProtXMLUploaderTest.java deleted file mode 100644 index 28a17c1fff12acbda91c7c168e358712ecf09c7b..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/etlserver/proteomics/ProtXMLUploaderTest.java +++ /dev/null @@ -1,155 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.etlserver.proteomics; - -import java.io.File; -import java.util.Properties; - -import org.jmock.Mockery; -import org.testng.annotations.AfterMethod; -import org.testng.annotations.BeforeMethod; -import org.testng.annotations.Test; - -import ch.systemsx.cisd.common.filesystem.FileUtilities; -import ch.systemsx.cisd.openbis.dss.generic.shared.IEncapsulatedOpenBISService; -import ch.systemsx.cisd.openbis.dss.generic.shared.dto.DataSetInformation; -import ch.systemsx.cisd.openbis.etlserver.proteomics.dto.ProteinSummary; -import ch.systemsx.cisd.openbis.etlserver.proteomics.dto.ProteinSummaryHeader; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.builders.ExperimentBuilder; - -/** - * @author Franz-Josef Elmer - */ -public class ProtXMLUploaderTest extends ProtXMLTestCase -{ - private static final class MockUploader extends ProtXMLUploader - { - private final IEncapsulatedOpenBISService openbisService; - - private DataSetInformation dataSetInformation; - - private ProteinSummary proteinSummary; - - public MockUploader(Properties properties, IEncapsulatedOpenBISService openbisService) - { - super(properties, openbisService); - this.openbisService = openbisService; - } - - @Override - protected ResultDataSetUploader createUploader() - { - return new ResultDataSetUploader(null, null, null, true, "+", false) - { - @Override - void upload(DataSetInformation dataSetInfo, ProteinSummary summary) - { - dataSetInformation = dataSetInfo; - proteinSummary = summary; - } - }; - } - - public IEncapsulatedOpenBISService getService() - { - return openbisService; - } - - public DataSetInformation getDataSetInformation() - { - return dataSetInformation; - } - - public ProteinSummary getProteinSummary() - { - return proteinSummary; - } - } - - private Mockery context; - - private IEncapsulatedOpenBISService service; - - private MockUploader uploader; - - @BeforeMethod - public void startUp() - { - context = new Mockery(); - service = context.mock(IEncapsulatedOpenBISService.class); - Properties properties = new Properties(); - properties.setProperty("database.kind", "test"); - uploader = new MockUploader(properties, service); - } - - @AfterMethod - public void afterMethod() - { - // To following line of code should also be called at the end of each test method. - // Otherwise one do not known which test failed. - context.assertIsSatisfied(); - } - - @Test - public void testDataSetIsProtXMLFile() - { - File file = new File(workingDirectory, "test.xml"); - FileUtilities.writeToFile(file, EXAMPLE); - DataSetInformation dataSetInformation = new DataSetInformation(); - - uploader.upload(file, dataSetInformation); - - assertSame(service, uploader.getService()); - assertSame(dataSetInformation, uploader.getDataSetInformation()); - ProteinSummaryHeader header = uploader.getProteinSummary().getSummaryHeader(); - assertEquals("some/path/uniprot.HUMAN.v125.fasta", header.getReferenceDatabase()); - context.assertIsSatisfied(); - } - - @Test - public void testDataSetIsFolderWithProtXMLFile() - { - File dataSet = new File(workingDirectory, "data-set"); - dataSet.mkdir(); - FileUtilities.writeToFile(new File(dataSet, "test-prot.xml"), EXAMPLE); - DataSetInformation dataSetInformation = new DataSetInformation(); - - uploader.upload(dataSet, dataSetInformation); - - assertSame(service, uploader.getService()); - assertSame(dataSetInformation, uploader.getDataSetInformation()); - ProteinSummaryHeader header = uploader.getProteinSummary().getSummaryHeader(); - assertEquals("some/path/uniprot.HUMAN.v125.fasta", header.getReferenceDatabase()); - context.assertIsSatisfied(); - } - - @Test - public void testDataSetIsFolderWithProtXMLFileToBeTooLarge() - { - File dataSet = new File(workingDirectory, "data-set"); - dataSet.mkdir(); - FileUtilities.writeToFile(new File(dataSet, "test-prot.xml"), EXAMPLE); - DataSetInformation dataSetInformation = new DataSetInformation(); - dataSetInformation.setExperiment(new ExperimentBuilder().property( - DataSetInfoExtractorForProteinResults.NOT_PROCESSED_PROPERTY, "too large").getExperiment()); - - uploader.upload(dataSet, dataSetInformation); - - assertEquals(null, uploader.getDataSetInformation()); - context.assertIsSatisfied(); - } -} diff --git a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/etlserver/proteomics/ProteinDescriptionTest.java b/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/etlserver/proteomics/ProteinDescriptionTest.java deleted file mode 100644 index 977515a90c156660041a4fd3b04b0b2d4016e059..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/etlserver/proteomics/ProteinDescriptionTest.java +++ /dev/null @@ -1,182 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.etlserver.proteomics; - -import org.testng.AssertJUnit; -import org.testng.annotations.Test; - -import ch.systemsx.cisd.common.exceptions.UserFailureException; -import ch.systemsx.cisd.openbis.etlserver.proteomics.ProteinDescription; -import ch.systemsx.cisd.openbis.etlserver.proteomics.dto.ProteinAnnotation; - -/** - * @author Franz-Josef Elmer - */ -public class ProteinDescriptionTest extends AssertJUnit -{ - @Test - public void testWithOutAccessionNumber() - { - ProteinAnnotation annotation = createAnnotation("Q92902"); - try - { - new ProteinDescription(annotation, 0, true); - fail("UserFailureException expected"); - } catch (UserFailureException ex) - { - assertEquals("Can not find a amino-acid sequence in following protein description: Q92902", ex.getMessage()); - } - } - - @Test - public void testWithAccessionNumberAndSequence() - { - ProteinAnnotation annotation = - createAnnotation("Q92902 \\ID=HPS1_HUMAN \\MODRES= " - + "\\VARIANT=(55|.|)(100|E|D)(186|A|V)(283|G|W)(480|A|T) " - + "\\NCBITAXID=9606 \\DE=Hermansky-Pudlak syndrome 1 protein " - + "\\SEQ=MKCVLVATEGAEVLFYWTDQEFEESLRLKFGQSENEEEELPA"); - ProteinDescription description = new ProteinDescription(annotation, 0, true); - assertEquals("Q92902", description.getAccessionNumber()); - assertEquals("Hermansky-Pudlak syndrome 1 protein", description.getDescription()); - assertEquals("MKCVLVATEGAEVLFYWTDQEFEESLRLKFGQSENEEEELPA", description.getSequence()); - } - - @Test - public void testWithSwissProtNameAsAccessionNumber() - { - ProteinAnnotation annotation = createAnnotation("my protein"); - ProteinDescription description = new ProteinDescription(annotation, 4711, false); - - assertEquals("my protein", description.getDescription()); - assertEquals("", description.getSequence()); - assertEquals("sp|swissprot-42", description.getAccessionNumber()); - } - - @Test - public void testWithTremblNameAsAccessionNumber() - { - ProteinAnnotation annotation = createAnnotation("my protein"); - annotation.setSwissprotName(null); - ProteinDescription description = new ProteinDescription(annotation, 4711, false); - - assertEquals("my protein", description.getDescription()); - assertEquals("", description.getSequence()); - assertEquals("tr|trembl-42", description.getAccessionNumber()); - } - - @Test - public void testWithIpiNameAsAccessionNumber() - { - ProteinAnnotation annotation = createAnnotation("my protein"); - annotation.setSwissprotName(null); - annotation.setTremblName(null); - ProteinDescription description = new ProteinDescription(annotation, 4711, false); - - assertEquals("my protein", description.getDescription()); - assertEquals("", description.getSequence()); - assertEquals("ipi|ipi-42", description.getAccessionNumber()); - } - - @Test - public void testWithEnsemblNameAsAccessionNumber() - { - ProteinAnnotation annotation = createAnnotation("my protein"); - annotation.setSwissprotName(null); - annotation.setTremblName(null); - annotation.setIpiName(null); - ProteinDescription description = new ProteinDescription(annotation, 4711, false); - - assertEquals("my protein", description.getDescription()); - assertEquals("", description.getSequence()); - assertEquals("ens|ensembl-42", description.getAccessionNumber()); - } - - @Test - public void testWithRefSeqNameAsAccessionNumber() - { - ProteinAnnotation annotation = createAnnotation("my protein"); - annotation.setSwissprotName(null); - annotation.setTremblName(null); - annotation.setIpiName(null); - annotation.setEnsemblName(null); - ProteinDescription description = new ProteinDescription(annotation, 4711, false); - - assertEquals("my protein", description.getDescription()); - assertEquals("", description.getSequence()); - assertEquals("rs|refseq-42", description.getAccessionNumber()); - } - - @Test - public void testWithLocusLinkNameAsAccessionNumber() - { - ProteinAnnotation annotation = createAnnotation("my protein"); - annotation.setSwissprotName(null); - annotation.setTremblName(null); - annotation.setIpiName(null); - annotation.setEnsemblName(null); - annotation.setRefseqName(null); - ProteinDescription description = new ProteinDescription(annotation, 4711, false); - - assertEquals("my protein", description.getDescription()); - assertEquals("", description.getSequence()); - assertEquals("ll|locus-link-42", description.getAccessionNumber()); - } - - @Test - public void testWithFlybaseNameAsAccessionNumber() - { - ProteinAnnotation annotation = createAnnotation("my protein"); - annotation.setSwissprotName(null); - annotation.setTremblName(null); - annotation.setIpiName(null); - annotation.setEnsemblName(null); - annotation.setRefseqName(null); - annotation.setLocusLinkName(null); - ProteinDescription description = new ProteinDescription(annotation, 4711, false); - - assertEquals("my protein", description.getDescription()); - assertEquals("", description.getSequence()); - assertEquals("fb|flybase-42", description.getAccessionNumber()); - } - - @Test - public void testWithNoAccessionNumber() - { - ProteinAnnotation annotation = new ProteinAnnotation(); - annotation.setDescription(""); - ProteinDescription description = new ProteinDescription(annotation, 4711, false); - - assertEquals("", description.getDescription()); - assertEquals("", description.getSequence()); - assertEquals("unknown|4711", description.getAccessionNumber()); - } - - private ProteinAnnotation createAnnotation(String description) - { - ProteinAnnotation proteinAnnotation = new ProteinAnnotation(); - proteinAnnotation.setDescription(description); - proteinAnnotation.setEnsemblName("ensembl-42"); - proteinAnnotation.setFlybase("flybase-42"); - proteinAnnotation.setIpiName("ipi-42"); - proteinAnnotation.setLocusLinkName("locus-link-42"); - proteinAnnotation.setRefseqName("refseq-42"); - proteinAnnotation.setSwissprotName("swissprot-42"); - proteinAnnotation.setTremblName("trembl-42"); - return proteinAnnotation; - } -} diff --git a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/etlserver/proteomics/ProteinResultDataSetParentLinkingTaskTest.java b/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/etlserver/proteomics/ProteinResultDataSetParentLinkingTaskTest.java deleted file mode 100644 index 9392844d0dafe4ec8e4c7845d2369944e8ac3a7f..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/etlserver/proteomics/ProteinResultDataSetParentLinkingTaskTest.java +++ /dev/null @@ -1,178 +0,0 @@ -/* - * Copyright 2011 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.etlserver.proteomics; - -import java.util.Arrays; -import java.util.List; - -import org.apache.log4j.Level; -import org.jmock.Expectations; -import org.jmock.Mockery; -import org.testng.AssertJUnit; -import org.testng.annotations.AfterMethod; -import org.testng.annotations.BeforeMethod; -import org.testng.annotations.Test; - -import ch.systemsx.cisd.common.logging.BufferedAppender; -import ch.systemsx.cisd.common.test.RecordingMatcher; -import ch.systemsx.cisd.openbis.dss.generic.shared.IEncapsulatedOpenBISService; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Experiment; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.PhysicalDataSet; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.builders.DataSetBuilder; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.builders.ExperimentBuilder; -import ch.systemsx.cisd.openbis.generic.shared.dto.AtomicEntityOperationDetails; -import ch.systemsx.cisd.openbis.generic.shared.dto.DataSetBatchUpdatesDTO; -import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.ExperimentIdentifierFactory; -import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.ProjectIdentifier; -import ch.systemsx.cisd.openbis.util.LogRecordingUtils; - -/** - * @author Franz-Josef Elmer - */ -public class ProteinResultDataSetParentLinkingTaskTest extends AssertJUnit -{ - private static final String PARENT_DATA_SET_CODES_KEY = - DataSetInfoExtractorForProteinResults.PARENT_DATA_SET_CODES.toUpperCase(); - - private static final String BASE_EXPERIMENT_KEY = - DataSetInfoExtractorForProteinResults.EXPERIMENT_IDENTIFIER_KEY.toUpperCase(); - - private BufferedAppender logRecorder; - - private Mockery context; - - private IEncapsulatedOpenBISService service; - - private ProteinResultDataSetParentLinkingTask task; - - @BeforeMethod - public void beforeMethod() - { - logRecorder = LogRecordingUtils.createRecorder("%-5p %c - %m%n", Level.DEBUG); - context = new Mockery(); - service = context.mock(IEncapsulatedOpenBISService.class); - task = new ProteinResultDataSetParentLinkingTask(service); - } - - @AfterMethod - public void afterMethod() - { - logRecorder.reset(); - // To following line of code should also be called at the end of each test method. - // Otherwise one do not known which test failed. - context.assertIsSatisfied(); - } - - @Test - public void test() - { - final Experiment e1 = - new ExperimentBuilder().id(1).identifier("/S/P1/E1").property("ABC", "non-sense") - .getExperiment(); - final Experiment e2 = - new ExperimentBuilder().id(2).identifier("/A/P2/E2") - .property(PARENT_DATA_SET_CODES_KEY, "non-sense2").getExperiment(); - final Experiment e3 = - new ExperimentBuilder().id(3).identifier("/A/P2/E3") - .property(PARENT_DATA_SET_CODES_KEY, "ds1, ds3").getExperiment(); - final Experiment e4 = - new ExperimentBuilder().id(4).identifier("/S/P1/E4") - .property(BASE_EXPERIMENT_KEY, "/S/P1/E1").getExperiment(); - final PhysicalDataSet ds1 = - new DataSetBuilder(1).code("ds1").fileFormat("A").experiment(e1) - .version(11).getDataSet(); - final PhysicalDataSet ds2 = - new DataSetBuilder(2).code("ds2").fileFormat("B").experiment(e4) - .version(22).getDataSet(); - final PhysicalDataSet ds3 = - new DataSetBuilder(3).code("ds3").fileFormat("C").experiment(e3) - .version(33).property("ALPHA", "3.1").getDataSet(); - final RecordingMatcher<AtomicEntityOperationDetails> operationRecorder = - new RecordingMatcher<AtomicEntityOperationDetails>(); - context.checking(new Expectations() - { - { - one(service).listProjects(); - will(returnValue(Arrays.asList(e1.getProject(), e2.getProject()))); - - one(service).listExperiments(new ProjectIdentifier("S", "P1")); - will(returnValue(Arrays.asList(e1, e4))); - - one(service).listExperiments(new ProjectIdentifier("A", "P2")); - will(returnValue(Arrays.asList(e2, e3))); - - one(service).tryGetExperiment(ExperimentIdentifierFactory.parse("/S/P1/E1")); - will(returnValue(e1)); - - one(service).tryGetDataSet("non-sense2"); - will(returnValue(null)); - - one(service).tryGetDataSet("ds1"); - will(returnValue(ds1)); - - one(service).tryGetDataSet("ds3"); - will(returnValue(ds3)); - - one(service).listDataSetsByExperimentID(e1.getId()); - will(returnValue(Arrays.asList(ds1))); - - one(service).listDataSetsByExperimentID(e3.getId()); - will(returnValue(Arrays.asList(ds3))); - - one(service).listDataSetsByExperimentID(e4.getId()); - will(returnValue(Arrays.asList(ds2))); - - one(service).performEntityOperations(with(operationRecorder)); - } - }); - - task.execute(); - - assertEquals("INFO OPERATION.ProteinResultDataSetParentLinkingTask - " - + "Parent data set links of data set ds2 " - + "from experiment /S/P1/E4 will be updated.\n" - + "INFO OPERATION.ProteinResultDataSetParentLinkingTask - " - + "Parent data set links of data set ds3 " - + "from experiment /A/P2/E3 will be updated.\n" - + "INFO OPERATION.ProteinResultDataSetParentLinkingTask - " - + "Parent data set links for 2 data sets have been updated.", - logRecorder.getLogContent()); - List<DataSetBatchUpdatesDTO> dataSetUpdates = - operationRecorder.recordedObject().getDataSetUpdates(); - assertEquals(2L, dataSetUpdates.get(0).getDatasetId().getId().longValue()); - assertEquals(22, dataSetUpdates.get(0).getVersion()); - assertEquals("B", dataSetUpdates.get(0).getFileFormatTypeCode()); - assertEquals("[]", dataSetUpdates.get(0).getProperties().toString()); - assertEquals(e4.getIdentifier(), dataSetUpdates.get(0).getExperimentIdentifierOrNull() - .toString()); - assertEquals("[ds1]", - Arrays.asList(dataSetUpdates.get(0).getModifiedParentDatasetCodesOrNull()) - .toString()); - assertEquals(3L, dataSetUpdates.get(1).getDatasetId().getId().longValue()); - assertEquals(33, dataSetUpdates.get(1).getVersion()); - assertEquals("C", dataSetUpdates.get(1).getFileFormatTypeCode()); - assertEquals("[ALPHA: 3.1]", dataSetUpdates.get(1).getProperties().toString()); - assertEquals(e3.getIdentifier(), dataSetUpdates.get(1).getExperimentIdentifierOrNull() - .toString()); - assertEquals("[ds1, ds3]", - Arrays.asList(dataSetUpdates.get(1).getModifiedParentDatasetCodesOrNull()) - .toString()); - assertEquals(2, dataSetUpdates.size()); - context.assertIsSatisfied(); - } - -} diff --git a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/etlserver/proteomics/ResultDataSetUploaderTest.java b/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/etlserver/proteomics/ResultDataSetUploaderTest.java deleted file mode 100644 index fb70ac7b248f1321d6dd7608ad43fc59e8e857a3..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/etlserver/proteomics/ResultDataSetUploaderTest.java +++ /dev/null @@ -1,705 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.etlserver.proteomics; - -import java.sql.Connection; -import java.sql.SQLException; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; - -import org.hamcrest.BaseMatcher; -import org.hamcrest.Description; -import org.hamcrest.core.IsNull; -import org.jmock.Expectations; -import org.jmock.Mockery; -import org.testng.AssertJUnit; -import org.testng.annotations.AfterMethod; -import org.testng.annotations.BeforeMethod; -import org.testng.annotations.Test; - -import ch.systemsx.cisd.base.exceptions.CheckedExceptionTunnel; -import ch.systemsx.cisd.common.exceptions.UserFailureException; -import ch.systemsx.cisd.common.test.AssertionUtil; -import ch.systemsx.cisd.openbis.dss.generic.shared.IEncapsulatedOpenBISService; -import ch.systemsx.cisd.openbis.dss.generic.shared.dto.DataSetInformation; -import ch.systemsx.cisd.openbis.etlserver.proteomics.dto.AminoAcidMass; -import ch.systemsx.cisd.openbis.etlserver.proteomics.dto.AnnotatedProtein; -import ch.systemsx.cisd.openbis.etlserver.proteomics.dto.DataSet; -import ch.systemsx.cisd.openbis.etlserver.proteomics.dto.Database; -import ch.systemsx.cisd.openbis.etlserver.proteomics.dto.Experiment; -import ch.systemsx.cisd.openbis.etlserver.proteomics.dto.Parameter; -import ch.systemsx.cisd.openbis.etlserver.proteomics.dto.Peptide; -import ch.systemsx.cisd.openbis.etlserver.proteomics.dto.PeptideModification; -import ch.systemsx.cisd.openbis.etlserver.proteomics.dto.ProgramDetails; -import ch.systemsx.cisd.openbis.etlserver.proteomics.dto.Protein; -import ch.systemsx.cisd.openbis.etlserver.proteomics.dto.ProteinAnnotation; -import ch.systemsx.cisd.openbis.etlserver.proteomics.dto.ProteinGroup; -import ch.systemsx.cisd.openbis.etlserver.proteomics.dto.ProteinProphetDetails; -import ch.systemsx.cisd.openbis.etlserver.proteomics.dto.ProteinReference; -import ch.systemsx.cisd.openbis.etlserver.proteomics.dto.ProteinSummary; -import ch.systemsx.cisd.openbis.etlserver.proteomics.dto.ProteinSummaryDataFilter; -import ch.systemsx.cisd.openbis.etlserver.proteomics.dto.ProteinSummaryHeader; -import ch.systemsx.cisd.openbis.etlserver.proteomics.dto.Sequence; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewSample; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Space; -import ch.systemsx.cisd.openbis.generic.shared.dto.ListSamplesByPropertyCriteria; -import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.ExperimentIdentifier; -import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.SampleIdentifier; -import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.SpaceIdentifier; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.CommonConstants; - -/** - * @author Franz-Josef Elmer - */ -public class ResultDataSetUploaderTest extends AssertJUnit -{ - private static final long MOD_PEPTIDE_ID = 101L; - - private static final long PEPTIDE_ID = 99L; - - private static final long CELL_LYSATE_ID1 = 88L; - - private static final String CELL_LYSATE1 = "cell_lysate1"; - - private static final String CELL_LYSATE_PERM_ID1 = "c1"; - - private static final long SEQUENCE_ID = 77L; - - private static final long PROTEIN_REFERENCE_ID = 66L; - - private static final String UNIPROT_ID1 = "unipr1"; - - private static final String PROTEIN_NAME1 = "my protein"; - - private static final String SEQUENCE1 = "seq"; - - private static final String UNIPROT_ID2 = "unipr2"; - - private static final String PROTEIN_NAME2 = "my 2. protein"; - - private static final String SEQUENCE2 = "seqe"; - - private static final long PROTEIN1_ID = 55L; - - private static final long DATA_SET_ID = 42L; - - private static final String DATA_SET_CODE = "ds1"; - - private static final long DATABASE_ID = 33l; - - private static final String NAME_AND_VERSION = "uniprot.HUMAN.v123.fasta"; - - private static final String REFERENCE_DATABASE = "/here/and/there/" + NAME_AND_VERSION; - - private static final String EXPERIMENT_CODE = "E1"; - - private static final long EXPERIMENT_ID = 11l; - - private static final String EXPERIMENT_PERM_ID = "e1234"; - - private static final String SAMPLE_PERM_ID = "s1234"; - - private static final String DB_INSTANCE = "DB"; - - private static final String SPACE_CODE = "S1"; - - private static final String PROJECT_CODE = "P1"; - - private Mockery context; - - private Connection connection; - - private IEncapsulatedOpenBISService service; - - private IProtDAO dao; - - private ResultDataSetUploader uploader; - - @BeforeMethod - public void beforeMethod() - { - context = new Mockery(); - connection = context.mock(Connection.class); - dao = context.mock(IProtDAO.class); - service = context.mock(IEncapsulatedOpenBISService.class); - - uploader = new ResultDataSetUploader(dao, connection, service, true, "+", false); - } - - @AfterMethod - public void afterMethod() - { - // To following line of code should also be called at the end of each test method. - // Otherwise one do not known which test failed. - context.assertIsSatisfied(); - } - - @Test - public void testNoProteinsGetExperimentSampleDatabaseAndDataSet() - { - context.checking(new Expectations() - { - { - one(dao).tryToGetExperimentByPermID(EXPERIMENT_PERM_ID); - Experiment experiment = new Experiment(); - experiment.setPermID(EXPERIMENT_PERM_ID); - experiment.setId(EXPERIMENT_ID); - will(returnValue(experiment)); - - one(dao).tryToGetDatabaseByName(NAME_AND_VERSION); - Database database = new Database(); - database.setNameAndVersion(NAME_AND_VERSION); - database.setId(DATABASE_ID); - will(returnValue(database)); - - one(dao).tryToGetDataSetByPermID(DATA_SET_CODE); - DataSet dataSet = new DataSet(); - dataSet.setId(DATA_SET_ID); - dataSet.setDatabaseID(DATABASE_ID); - will(returnValue(dataSet)); - } - }); - - uploader.upload(createDataSetInfo(), createProteinSummary()); - - context.assertIsSatisfied(); - } - - @Test - public void testNoProteinsCreateExperimentSampleDatabaseAndDataSet() - { - prepareForCreatingExperimentSampleDatabaseAndDataSet(); - - uploader.upload(createDataSetInfo(), createProteinSummary()); - - context.assertIsSatisfied(); - } - - @Test - public void testEmptyProteinGroup() - { - prepareForCreatingExperimentSampleDatabaseAndDataSet(); - - ProteinSummary summary = createProteinSummary(); - summary.getProteinGroups().add(createProteinGroup()); - uploader.upload(createDataSetInfo(), summary); - - context.assertIsSatisfied(); - } - - @Test - public void testProteinWithIndistiguishableProtein() - { - prepareForCreatingExperimentSampleDatabaseAndDataSet(); - double probability = 1.0; - prepareForCreatingProtein(probability); - ProteinAnnotation a1 = createAnnotation(UNIPROT_ID1, PROTEIN_NAME1, SEQUENCE1); - prepareForCreatingIdentifiedProtein(a1, false, true); - ProteinAnnotation a2 = createAnnotation(UNIPROT_ID2, PROTEIN_NAME2, SEQUENCE2); - prepareForCreatingIdentifiedProtein(a2, true, false); - - ProteinSummary summary = createProteinSummary(); - Protein p1 = createProtein(probability, a1, a2); - p1.setPeptides(Collections.<Peptide> emptyList()); - summary.getProteinGroups().add(createProteinGroup(p1)); - - uploader.upload(createDataSetInfo(), summary); - context.assertIsSatisfied(); - } - - @Test - public void testProteinGroupWithTwoProteins() - { - prepareForCreatingExperimentSampleDatabaseAndDataSet(); - double probability = 1.0; - ProteinAnnotation a1 = createAnnotation(UNIPROT_ID1, PROTEIN_NAME1, SEQUENCE1); - prepareForCreatingProtein(probability); - prepareForCreatingIdentifiedProtein(a1, false, true); - Protein p1 = createProtein(probability, a1); - p1.setPeptides(Collections.<Peptide> emptyList()); - ProteinAnnotation a2 = createAnnotation(UNIPROT_ID2, PROTEIN_NAME2, SEQUENCE2); - probability = 0.99; - prepareForCreatingProtein(probability); - prepareForCreatingIdentifiedProtein(a2, false, true); - Protein p2 = createProtein(probability, a2); - p2.setPeptides(Collections.<Peptide> emptyList()); - - ProteinSummary summary = createProteinSummary(); - summary.getProteinGroups().add(createProteinGroup(p1, p2)); - - uploader.upload(createDataSetInfo(), summary); - context.assertIsSatisfied(); - } - - @Test - public void testAbundancesForSameSampleInTwoDifferentProteins() - { - prepareForCreatingExperimentSampleDatabaseAndDataSet(); - double probability = 0.75; - ProteinSummary summary = createProteinSummary(); - prepareForCreatingProtein(probability); - ProteinAnnotation a1 = createAnnotation(UNIPROT_ID1, PROTEIN_NAME1, SEQUENCE1); - prepareForCreatingIdentifiedProtein(a1, false, true); - Protein p1 = createProtein(probability, a1); - p1.setName(PROTEIN_NAME1); - p1.getParameters().add(createAbundance(CELL_LYSATE1, 2.5)); - p1.getParameters().add(new Parameter()); - prepareCreateSample(); - context.checking(new Expectations() - { - { - one(service).registerSample(with(any(NewSample.class)), with(new IsNull<String>())); - - one(dao).createAbundance(PROTEIN1_ID, CELL_LYSATE_ID1, 2.5); - } - }); - p1.setPeptides(Collections.<Peptide> emptyList()); - - prepareForCreatingProtein(probability); - summary.getProteinGroups().add(createProteinGroup(p1)); - ProteinAnnotation a2 = createAnnotation(UNIPROT_ID2, PROTEIN_NAME2, SEQUENCE2); - prepareForCreatingIdentifiedProtein(a2, false, true); - Protein p2 = createProtein(probability, a2); - p2.setName(PROTEIN_NAME1); - p2.getParameters().add(createAbundance(CELL_LYSATE1, 42.5)); - context.checking(new Expectations() - { - { - one(dao).createAbundance(PROTEIN1_ID, CELL_LYSATE_ID1, 42.5); - } - }); - p2.setPeptides(Collections.<Peptide> emptyList()); - summary.getProteinGroups().add(createProteinGroup(p2)); - prepareForCommit(); - - uploader.upload(createDataSetInfo(), summary); - uploader.commit(); - context.assertIsSatisfied(); - } - - @Test - public void testAbundancesForNonExistingSample() - { - prepareForCreatingExperimentSampleDatabaseAndDataSet(); - double probability = 0.75; - prepareForCreatingProtein(probability); - ProteinSummary summary = createProteinSummary(); - Protein p1 = createProtein(probability); - p1.setName(PROTEIN_NAME1); - p1.getParameters().add(createAbundance(CELL_LYSATE1, 2.5)); - p1.getParameters().add(new Parameter()); - final SpaceIdentifier groupIdentifier = new SpaceIdentifier(CommonConstants.MS_DATA_SPACE); - final SampleIdentifier sampleIdentifier = - new SampleIdentifier(groupIdentifier, CELL_LYSATE1); - final ListSamplesByPropertyCriteria criteria = - new ListSamplesByPropertyCriteria(AbstractSampleHandler.MZXML_FILENAME, CELL_LYSATE1, - SPACE_CODE, null); - context.checking(new Expectations() - { - { - one(service).tryGetSampleWithExperiment(sampleIdentifier); - will(returnValue(null)); - - one(service).listSamplesByCriteria( - with(new BaseMatcher<ListSamplesByPropertyCriteria>() - { - @Override - public boolean matches(Object item) - { - return criteria.toString().equals(item.toString()); - } - - @Override - public void describeTo(Description description) - { - description.appendValue(criteria); - } - })); - } - }); - p1.setPeptides(Collections.<Peptide> emptyList()); - summary.getProteinGroups().add(createProteinGroup(p1)); - prepareForRollback(); - - try - { - uploader.upload(createDataSetInfo(), summary); - fail("UserFailureException expected"); - } catch (UserFailureException ex) - { - AssertionUtil.assertContains("Protein '" + PROTEIN_NAME1 - + "' has an abundance value for an unidentified sample: " + CELL_LYSATE1, ex - .getMessage()); - } - - context.assertIsSatisfied(); - } - - @Test - public void testProteinWithUnmodifiedPeptide() - { - prepareForCreatingExperimentSampleDatabaseAndDataSet(); - double probability = 1.0; - prepareForCreatingProtein(probability); - ProteinAnnotation a1 = createAnnotation(UNIPROT_ID1, PROTEIN_NAME1, SEQUENCE1); - prepareForCreatingIdentifiedProtein(a1, false, true); - - ProteinSummary summary = createProteinSummary(); - Protein p1 = createProtein(probability, a1); - final Peptide peptide = new Peptide(); - peptide.setSequence("abcd"); - peptide.setCharge(3); - p1.setPeptides(Arrays.asList(peptide)); - summary.getProteinGroups().add(createProteinGroup(p1)); - context.checking(new Expectations() - { - { - one(dao).createPeptide(PROTEIN1_ID, peptide.getSequence(), peptide.getCharge()); - will(returnValue(PEPTIDE_ID)); - } - }); - - uploader.upload(createDataSetInfo(), summary); - - context.assertIsSatisfied(); - } - - @Test - public void testProteinWithModifiedPeptide() - { - prepareForCreatingExperimentSampleDatabaseAndDataSet(); - double probability = 1.0; - prepareForCreatingProtein(probability); - ProteinAnnotation a1 = createAnnotation(UNIPROT_ID1, PROTEIN_NAME1, SEQUENCE1); - prepareForCreatingIdentifiedProtein(a1, false, true); - - ProteinSummary summary = createProteinSummary(); - Protein p1 = createProtein(probability, a1); - final Peptide peptide = new Peptide(); - peptide.setSequence("abcd"); - peptide.setCharge(3); - final PeptideModification modification = new PeptideModification(); - modification.setNTermMass(42); - modification.setCTermMass(4711); - final AminoAcidMass mass = new AminoAcidMass(); - mass.setMass(123); - mass.setPosition(1); - modification.setAminoAcidMasses(Arrays.asList(mass)); - peptide.getModifications().add(modification); - p1.setPeptides(Arrays.asList(peptide)); - summary.getProteinGroups().add(createProteinGroup(p1)); - context.checking(new Expectations() - { - { - one(dao).createPeptide(PROTEIN1_ID, peptide.getSequence(), peptide.getCharge()); - will(returnValue(PEPTIDE_ID)); - - one(dao).createModifiedPeptide(PEPTIDE_ID, modification.getNTermMass(), - modification.getCTermMass()); - will(returnValue(MOD_PEPTIDE_ID)); - - one(dao).createModification(MOD_PEPTIDE_ID, mass.getPosition(), mass.getMass()); - } - }); - - uploader.upload(createDataSetInfo(), summary); - - context.assertIsSatisfied(); - } - - @Test - public void testProteinWithPeptideWithModificationParameter() - { - prepareForCreatingExperimentSampleDatabaseAndDataSet(); - double probability = 1.0; - prepareForCreatingProtein(probability); - ProteinAnnotation a1 = createAnnotation(UNIPROT_ID1, PROTEIN_NAME1, SEQUENCE1); - prepareForCreatingIdentifiedProtein(a1, false, true); - - ProteinSummary summary = createProteinSummary(); - Protein p1 = createProtein(probability, a1); - final Peptide peptide = new Peptide(); - Parameter parameter = new Parameter(); - parameter.setName(CELL_LYSATE1); - parameter.setValue("2:9.5:0.125"); - parameter.setType(ResultDataSetUploader.PARAMETER_TYPE_MODIFICATION); - peptide.setParameters(Arrays.asList(parameter)); - peptide.setSequence("abcd"); - peptide.setCharge(3); - p1.setPeptides(Arrays.asList(peptide)); - summary.getProteinGroups().add(createProteinGroup(p1)); - prepareCreateSample(); - context.checking(new Expectations() - { - { - one(dao).createPeptide(PROTEIN1_ID, peptide.getSequence(), peptide.getCharge()); - will(returnValue(PEPTIDE_ID)); - - one(dao).createModifiedPeptide(PEPTIDE_ID, 0, 0); - will(returnValue(MOD_PEPTIDE_ID)); - - one(dao).createModification(MOD_PEPTIDE_ID, 2, 9.5); - will(returnValue(157L)); - - one(dao).createModificationFraction(157L, CELL_LYSATE_ID1, 0.125); - } - }); - - uploader.upload(createDataSetInfo(), summary); - - context.assertIsSatisfied(); - } - - private Parameter createAbundance(String sampleCode, double value) - { - Parameter parameter = new Parameter(); - parameter.setName(sampleCode); - parameter.setValue(Double.toString(value)); - parameter.setType(ResultDataSetUploader.PARAMETER_TYPE_ABUNDANCE); - return parameter; - } - - private Protein createProtein(double probability, ProteinAnnotation... annotations) - { - Protein protein = new Protein(); - protein.setProbability(probability); - if (annotations.length > 0) - { - protein.setAnnotation(annotations[0]); - } - List<AnnotatedProtein> indistinguishableProteins = new ArrayList<AnnotatedProtein>(); - for (int i = 1; i < annotations.length; i++) - { - AnnotatedProtein annotatedProtein = new AnnotatedProtein(); - annotatedProtein.setAnnotation(annotations[i]); - indistinguishableProteins.add(annotatedProtein); - } - protein.setIndistinguishableProteins(indistinguishableProteins); - return protein; - } - - private ProteinAnnotation createAnnotation(String uniprotID, String description, String sequence) - { - ProteinAnnotation proteinAnnotation = new ProteinAnnotation(); - proteinAnnotation.setDescription(uniprotID - + " " - + ProteinDescription.createKeyValuePair(ProteinDescription.DESCRIPTION_KEY, - description) + " " - + ProteinDescription.createKeyValuePair(ProteinDescription.SEQUENCE_KEY, sequence)); - return proteinAnnotation; - } - - private ProteinGroup createProteinGroup(Protein... proteins) - { - ProteinGroup proteinGroup = new ProteinGroup(); - proteinGroup.setProteins(Arrays.asList(proteins)); - return proteinGroup; - } - - private void prepareForCreatingProtein(final double probability) - { - context.checking(new Expectations() - { - { - one(dao).createProtein(DATA_SET_ID, probability); - will(returnValue(PROTEIN1_ID)); - } - }); - } - - private void prepareCreateSample() - { - context.checking(new Expectations() - { - { - one(service).tryGetSampleWithExperiment( - new SampleIdentifier(new SpaceIdentifier( - CommonConstants.MS_DATA_SPACE), CELL_LYSATE1)); - ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample sample = - new ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample(); - sample.setPermId(CELL_LYSATE_PERM_ID1); - will(returnValue(sample)); - one(dao).tryToGetSampleByPermID(CELL_LYSATE_PERM_ID1); - will(returnValue(null)); - one(dao).createSample(EXPERIMENT_ID, CELL_LYSATE_PERM_ID1); - will(returnValue(CELL_LYSATE_ID1)); - } - }); - } - - private void prepareForCreatingIdentifiedProtein(ProteinAnnotation annotation, - final boolean referenceExist, final boolean primary) - { - ProteinDescription proteinDescription = new ProteinDescription(annotation, 0, true); - final String uniprotID = proteinDescription.getAccessionNumber(); - final String description = proteinDescription.getDescription(); - final String sequence = proteinDescription.getSequence(); - context.checking(new Expectations() - { - { - one(dao).tryToGetProteinReference(uniprotID); - if (referenceExist == false) - { - will(returnValue(null)); - - one(dao).createProteinReference(uniprotID, description); - will(returnValue(PROTEIN_REFERENCE_ID)); - } else - { - ProteinReference proteinReference = new ProteinReference(); - proteinReference.setId(PROTEIN_REFERENCE_ID); - will(returnValue(proteinReference)); - - one(dao).updateProteinReferenceDescription(PROTEIN_REFERENCE_ID, - description); - } - - one(dao).tryToGetSequencesByReferenceAndDatabase(PROTEIN_REFERENCE_ID, - DATABASE_ID); - Sequence seq = new Sequence(sequence); - seq.setId(SEQUENCE_ID); - if (referenceExist == false) - { - will(returnValue(null)); - - seq.setDatabaseID(DATABASE_ID); - seq.setProteinReferenceID(PROTEIN_REFERENCE_ID); - one(dao).createSequence(seq); - will(returnValue(SEQUENCE_ID)); - } else - { - will(returnValue(Arrays.asList(seq))); - } - - one(dao).createIdentifiedProtein(PROTEIN1_ID, SEQUENCE_ID, 0, primary); - } - }); - } - - private void prepareForCreatingExperimentSampleDatabaseAndDataSet() - { - context.checking(new Expectations() - { - { - one(dao).tryToGetExperimentByPermID(EXPERIMENT_PERM_ID); - will(returnValue(null)); - one(dao).createExperiment(EXPERIMENT_PERM_ID); - will(returnValue(EXPERIMENT_ID)); - - one(dao).tryToGetDatabaseByName(NAME_AND_VERSION); - will(returnValue(null)); - one(dao).createDatabase(NAME_AND_VERSION); - will(returnValue(DATABASE_ID)); - - one(dao).tryToGetDataSetByPermID(DATA_SET_CODE); - will(returnValue(null)); - one(dao).createDataSet(EXPERIMENT_ID, DATA_SET_CODE, DATABASE_ID); - will(returnValue(DATA_SET_ID)); - } - }); - } - - private void prepareForCommit() - { - context.checking(new Expectations() - { - { - try - { - one(connection).commit(); - one(connection).close(); - } catch (SQLException ex) - { - throw CheckedExceptionTunnel.wrapIfNecessary(ex); - } - } - }); - } - - private void prepareForRollback() - { - context.checking(new Expectations() - { - { - try - { - one(connection).isClosed(); - will(returnValue(false)); - one(connection).rollback(); - one(connection).close(); - } catch (SQLException ex) - { - throw CheckedExceptionTunnel.wrapIfNecessary(ex); - } - } - }); - } - - private DataSetInformation createDataSetInfo() - { - DataSetInformation info = new DataSetInformation(); - info.setExperimentIdentifier(new ExperimentIdentifier(SPACE_CODE, PROJECT_CODE, EXPERIMENT_CODE)); - info.setDataSetCode(DATA_SET_CODE); - ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample sample = - new ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample(); - sample.setPermId(SAMPLE_PERM_ID); - ch.systemsx.cisd.openbis.generic.shared.basic.dto.Experiment experiment = - new ch.systemsx.cisd.openbis.generic.shared.basic.dto.Experiment(); - experiment.setPermId(EXPERIMENT_PERM_ID); - sample.setExperiment(experiment); - Space space = new Space(); - space.setCode(SPACE_CODE); - sample.setSpace(space); - info.setSample(sample); - return info; - } - - private ProteinSummary createProteinSummary() - { - ProteinSummary proteinSummary = new ProteinSummary(); - ProteinSummaryHeader proteinSummaryHeader = new ProteinSummaryHeader(); - proteinSummaryHeader.setReferenceDatabase(REFERENCE_DATABASE); - ProgramDetails programDetails = new ProgramDetails(); - ProteinProphetDetails proteinProphetDetails = new ProteinProphetDetails(); - ProteinSummaryDataFilter m1 = createFilter(0.5, 0.125); - ProteinSummaryDataFilter m2 = createFilter(1.0, 0.0); - proteinProphetDetails.setDataFilters(Arrays.asList(m1, m2)); - programDetails.setSummary(new Object[] - { proteinProphetDetails }); - proteinSummaryHeader.setProgramDetails(programDetails); - proteinSummary.setSummaryHeader(proteinSummaryHeader); - proteinSummary.setProteinGroups(new ArrayList<ProteinGroup>()); - return proteinSummary; - } - - private ProteinSummaryDataFilter createFilter(final double probability, final double fdr) - { - context.checking(new Expectations() - { - { - one(dao).createProbabilityToFDRMapping(DATA_SET_ID, probability, fdr); - } - }); - ProteinSummaryDataFilter mapping = new ProteinSummaryDataFilter(); - mapping.setMinProbability(probability); - mapping.setFalsePositiveErrorRate(fdr); - return mapping; - } - -} diff --git a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/etlserver/proteomics/TypeExtractorForMSInjectionTest.java b/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/etlserver/proteomics/TypeExtractorForMSInjectionTest.java deleted file mode 100644 index d1ec3a35ec2513e4026e9ffa1259f5ce8abc4942..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/etlserver/proteomics/TypeExtractorForMSInjectionTest.java +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Copyright 2010 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.etlserver.proteomics; - -import static ch.systemsx.cisd.openbis.etlserver.proteomics.DataSetInfoExtractorForMSInjection.DATA_SET_PROPERTIES_FILE; - -import java.io.File; -import java.util.Properties; - -import org.testng.annotations.Test; - -import ch.systemsx.cisd.base.tests.AbstractFileSystemTestCase; -import ch.systemsx.cisd.common.exceptions.UserFailureException; -import ch.systemsx.cisd.common.filesystem.FileUtilities; -import ch.systemsx.cisd.openbis.etlserver.proteomics.TypeExtractorForMSInjection; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSetType; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.LocatorType; - -/** - * @author Franz-Josef Elmer - */ -public class TypeExtractorForMSInjectionTest extends AbstractFileSystemTestCase -{ - @Test - public void testMissingDataSetPropertiesFile() - { - TypeExtractorForMSInjection extractor = new TypeExtractorForMSInjection(new Properties()); - try - { - extractor.getDataSetType(workingDirectory); - fail("UserFailureException expected"); - } catch (UserFailureException ex) - { - assertEquals("Missing properties file '" + DATA_SET_PROPERTIES_FILE + "'.", ex.getMessage()); - } - } - - @Test - public void testGetDataSetType() - { - FileUtilities.writeToFile(new File(workingDirectory, DATA_SET_PROPERTIES_FILE), "DATA_SET_TYPE = RAW"); - TypeExtractorForMSInjection extractor = new TypeExtractorForMSInjection(new Properties()); - DataSetType dataSetType = extractor.getDataSetType(workingDirectory); - assertEquals("RAW", dataSetType.getCode()); - } - - @Test - public void testGetProcessorType() - { - FileUtilities.writeToFile(new File(workingDirectory, DATA_SET_PROPERTIES_FILE), "DATA_SET_TYPE = RAW"); - TypeExtractorForMSInjection extractor = new TypeExtractorForMSInjection(new Properties()); - assertEquals(null, extractor.getProcessorType(workingDirectory)); - } - - @Test - public void testGetFileFormatType() - { - FileUtilities.writeToFile(new File(workingDirectory, DATA_SET_PROPERTIES_FILE), "FILE_TYPE = XML"); - TypeExtractorForMSInjection extractor = new TypeExtractorForMSInjection(new Properties()); - assertEquals("XML", extractor.getFileFormatType(workingDirectory).getCode()); - } - - @Test - public void testGetLocatorType() - { - FileUtilities.writeToFile(new File(workingDirectory, DATA_SET_PROPERTIES_FILE), "FILE_TYPE = XML"); - TypeExtractorForMSInjection extractor = new TypeExtractorForMSInjection(new Properties()); - assertEquals(LocatorType.DEFAULT_LOCATOR_TYPE_CODE, extractor.getLocatorType(workingDirectory).getCode()); - } -} diff --git a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/etlserver/proteomics/UtilTest.java b/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/etlserver/proteomics/UtilTest.java deleted file mode 100644 index 7742a5a902d54a6586236e49fca5d4cc3b825908..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/etlserver/proteomics/UtilTest.java +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Copyright 2010 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.etlserver.proteomics; - -import java.util.Arrays; -import java.util.Properties; - -import org.testng.AssertJUnit; -import org.testng.annotations.Test; - -import ch.systemsx.cisd.common.exceptions.UserFailureException; -import ch.systemsx.cisd.openbis.etlserver.proteomics.Util; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IEntityProperty; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.PropertyType; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SampleType; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SampleTypePropertyType; - -/** - * @author Franz-Josef Elmer - */ -public class UtilTest extends AssertJUnit -{ - @Test - public void testGetAndCheckProperties() - { - SampleType entityType = new SampleType(); - SampleTypePropertyType etpt1 = createETPT("answer", false); - SampleTypePropertyType etpt2 = createETPT("greetings", true); - entityType.setSampleTypePropertyTypes(Arrays.asList(etpt1, etpt2)); - Properties properties = new Properties(); - properties.setProperty("greetings", "hello"); - properties.setProperty("blabla", "blub"); - - IEntityProperty[] entityProperties = Util.getAndCheckProperties(properties, entityType); - - assertEquals(1, entityProperties.length); - assertEquals("greetings", entityProperties[0].getPropertyType().getCode()); - assertEquals("hello", entityProperties[0].tryGetAsString()); - } - - @Test - public void testGetAndCheckPropertiesForMissingMandatoryProperty() - { - SampleType entityType = new SampleType(); - SampleTypePropertyType etpt1 = createETPT("answer", true); - SampleTypePropertyType etpt2 = createETPT("greetings", true); - entityType.setSampleTypePropertyTypes(Arrays.asList(etpt1, etpt2)); - Properties properties = new Properties(); - properties.setProperty("greetings", "hello"); - - try - { - Util.getAndCheckProperties(properties, entityType); - fail("UserFailureException expected"); - } catch (UserFailureException ex) - { - assertEquals("The following mandatory properties are missed: [answer]", ex.getMessage()); - } - } - - private SampleTypePropertyType createETPT(String code, boolean mandatory) - { - PropertyType propertyType = new PropertyType(); - propertyType.setCode(code); - SampleTypePropertyType etpt = new SampleTypePropertyType(); - etpt.setPropertyType(propertyType); - etpt.setMandatory(mandatory); - return etpt; - } -} diff --git a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/proteomics/DependencyCheckingTest.java b/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/proteomics/DependencyCheckingTest.java deleted file mode 100644 index c5d317bd38f6e56ecf3712b19bd18245f49a30d8..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/proteomics/DependencyCheckingTest.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright 2011 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics; - -import ch.systemsx.cisd.common.test.AbstractDependencyCheckingTestCase; - -/** - * @author Franz-Josef Elmer - */ -public class DependencyCheckingTest extends AbstractDependencyCheckingTestCase -{ - -} diff --git a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/api/v1/ProteomicsDataApiFacadeTest.java b/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/api/v1/ProteomicsDataApiFacadeTest.java deleted file mode 100644 index 82048aff03aad181415f1eeb91927b66f72ff958..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/api/v1/ProteomicsDataApiFacadeTest.java +++ /dev/null @@ -1,223 +0,0 @@ -/* - * Copyright 2010 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.client.api.v1; - -import java.util.Arrays; -import java.util.HashMap; -import java.util.HashSet; -import java.util.LinkedList; -import java.util.List; -import java.util.Set; - -import org.jmock.Expectations; -import org.jmock.Mockery; -import org.testng.AssertJUnit; -import org.testng.annotations.AfterMethod; -import org.testng.annotations.BeforeMethod; -import org.testng.annotations.Test; - -import ch.systemsx.cisd.openbis.generic.shared.api.v1.IGeneralInformationService; -import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.Project; -import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.Role; -import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.SpaceWithProjectsAndRoleAssignments; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.api.v1.IProteomicsDataService; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.api.v1.dto.DataStoreServerProcessingPluginInfo; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.api.v1.dto.MsInjectionDataInfo; - -/** - * @author Franz-Josef Elmer - */ -public class ProteomicsDataApiFacadeTest extends AssertJUnit -{ - private static final String SESSION_TOKEN = "Session-42"; - - private Mockery context; - - private IProteomicsDataService proteomicsDataService; - - private IGeneralInformationService generalInfoService; - - private IProteomicsDataApiFacade facade; - - @BeforeMethod - public void beforeMethod() - { - context = new Mockery(); - proteomicsDataService = context.mock(IProteomicsDataService.class); - generalInfoService = context.mock(IGeneralInformationService.class); - facade = new ProteomicsDataApiFacade(proteomicsDataService, generalInfoService, SESSION_TOKEN); - } - - @AfterMethod - public void afterMethod() - { - context.assertIsSatisfied(); - } - - @Test - public void testGetSessionToken() - { - assertEquals(SESSION_TOKEN, facade.getSessionToken()); - - context.assertIsSatisfied(); - } - - @Test - public void testLogout() - { - context.checking(new Expectations() - { - { - one(generalInfoService).logout(SESSION_TOKEN); - } - }); - - facade.logout(); - - context.assertIsSatisfied(); - } - - @Test - public void testListDataStoreServerProcessingPluginInfos() - { - final List<DataStoreServerProcessingPluginInfo> result = - new LinkedList<DataStoreServerProcessingPluginInfo>(); - context.checking(new Expectations() - { - { - one(proteomicsDataService).listDataStoreServerProcessingPluginInfos(SESSION_TOKEN); - will(returnValue(result)); - } - }); - - assertSame(result, facade.listDataStoreServerProcessingPluginInfos()); - context.assertIsSatisfied(); - } - - @Test - public void testListRawDataSamples() - { - final List<MsInjectionDataInfo> result = new LinkedList<MsInjectionDataInfo>(); - context.checking(new Expectations() - { - { - one(proteomicsDataService).listRawDataSamples(SESSION_TOKEN, "user1"); - will(returnValue(result)); - } - }); - - assertSame(result, facade.listRawDataSamples("user1")); - context.assertIsSatisfied(); - } - - @Test - public void testListAllRawDataSamples() - { - final List<MsInjectionDataInfo> result = new LinkedList<MsInjectionDataInfo>(); - context.checking(new Expectations() - { - { - one(proteomicsDataService).listAllRawDataSamples(SESSION_TOKEN, "user1"); - will(returnValue(result)); - } - }); - - assertSame(result, facade.listAllRawDataSamples("user1")); - context.assertIsSatisfied(); - } - - @Test - public void testProcessDataSets() - { - context.checking(new Expectations() - { - { - one(proteomicsDataService).processDataSets(SESSION_TOKEN, "user1", "key", - Arrays.asList("ds1", "ds2")); - } - }); - - facade.processDataSets("user1", "key", Arrays.asList("ds1", "ds2")); - - context.assertIsSatisfied(); - } - - @Test - public void testListProjectsButNoUserRoles() - { - context.checking(new Expectations() - { - { - one(generalInfoService).listNamedRoleSets(SESSION_TOKEN); - will(returnValue(new HashMap<String, Set<Role>>())); - } - }); - - try - { - facade.listProjects("user1"); - fail("IllegalStateException expected"); - } catch (IllegalStateException ex) - { - assertEquals("Role set SPACE_USER not known.", ex.getMessage()); - } - - context.assertIsSatisfied(); - } - - @Test - public void testListProjects() - { - context.checking(new Expectations() - { - { - one(generalInfoService).listNamedRoleSets(SESSION_TOKEN); - HashMap<String, Set<Role>> sets = new HashMap<String, Set<Role>>(); - HashSet<Role> set = new HashSet<Role>(); - set.add(new Role("R1", true)); - set.add(new Role("R2", false)); - sets.put("SPACE_USER", set); - will(returnValue(sets)); - - one(generalInfoService).listSpacesWithProjectsAndRoleAssignments(SESSION_TOKEN, null); - SpaceWithProjectsAndRoleAssignments a = createSpace("A", "alpha", "beta"); - a.add("user1", new Role("R1", true)); - a.add("user1", new Role("R3", false)); - SpaceWithProjectsAndRoleAssignments b = createSpace("B", "gamma"); - b.add("user1", new Role("R2", true)); - will(returnValue(Arrays.asList(a, b))); - } - }); - - List<Project> projects = facade.listProjects("user1"); - - assertEquals("[/A/alpha, /A/beta]", projects.toString()); - context.assertIsSatisfied(); - } - - private SpaceWithProjectsAndRoleAssignments createSpace(String spaceCode, String... projects) - { - SpaceWithProjectsAndRoleAssignments space = new SpaceWithProjectsAndRoleAssignments(spaceCode); - long id = 1; - for (String project : projects) - { - space.add(new Project(id, Long.toString(id), spaceCode, project, null)); - ++id; - } - return space; - } -} diff --git a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/application/ProteinRenderersTest.java b/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/application/ProteinRenderersTest.java deleted file mode 100644 index 9676c640cba10f9c03259d39af9eacae462b6f40..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/application/ProteinRenderersTest.java +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright 2011 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.application; - -import java.util.Arrays; - -import org.testng.AssertJUnit; -import org.testng.annotations.Test; - -import ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.application.ProteinRenderers; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.Peptide; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.PeptideModification; - -/** - * @author Franz-Josef Elmer - */ -public class ProteinRenderersTest extends AssertJUnit -{ - @Test - public void testRenderAminoAcidSymbol() - { - assertEquals("<font style='text-decoration:underline; cursor:pointer' " - + "color='blue' title='mass=4.5'>A</font>", - ProteinRenderers.renderAminoAcidSymbol('A', null, 4.5)); - assertEquals("<font style='text-decoration:underline; cursor:pointer' " - + "color='blue' title='position=42, mass=4.5'>A</font>", - ProteinRenderers.renderAminoAcidSymbol('A', 42, 4.5)); - } - - @Test - public void testMarkOccurrencesWithHtml() - { - Peptide p1 = peptide("defgh:2=4.25"); - Peptide p2 = peptide("ijk:1=-2.75"); - Peptide p3 = peptide("jko"); - Peptide p4 = peptide("jjab"); - String e = ProteinRenderers.renderAminoAcidSymbol('e', 5, 4.25); - String i1 = ProteinRenderers.renderAminoAcidSymbol('i', 9, -2.75); - String i2 = ProteinRenderers.renderAminoAcidSymbol('i', 15, -2.75); - assertEquals( - "abc<font color='red'>d" + e + " fgh" + i1 + "j k</font>lmn<font color='red'>" - + i2 + " jko</font>pq rstu", - ProteinRenderers.markOccurrencesWithHtml("abcdefghijklmnijkopqrstu", - Arrays.asList(p1, p2, p3, p4), 5)); - } - - private Peptide peptide(String description) - { - Peptide peptide = new Peptide(); - int indexOfColon = description.indexOf(':'); - if (indexOfColon < 0) - { - peptide.setSequence(description); - return peptide; - } - peptide.setSequence(description.substring(0, indexOfColon)); - String[] modificationDescriptions = description.substring(indexOfColon + 1).split(","); - for (String modificationDescription : modificationDescriptions) - { - String[] posAndMass = modificationDescription.split("="); - PeptideModification peptideModification = new PeptideModification(); - peptideModification.setPosition(Integer.parseInt(posAndMass[0])); - peptideModification.setMass(Double.parseDouble(posAndMass[1])); - peptide.getModifications().add(peptideModification); - } - return peptide; - } - -} diff --git a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/dto/.gitignore b/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/dto/.gitignore deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/server/PhosphoNetXClientServiceTest.java b/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/server/PhosphoNetXClientServiceTest.java deleted file mode 100644 index 6eee125b577dfe12c22d17e4244a4d6b51f07eb1..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/server/PhosphoNetXClientServiceTest.java +++ /dev/null @@ -1,302 +0,0 @@ -/* - * Copyright 2011 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.client.web.server; - -import java.io.File; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashMap; -import java.util.List; -import java.util.Properties; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpSession; - -import org.jmock.Expectations; -import org.jmock.Mockery; -import org.testng.annotations.AfterMethod; -import org.testng.annotations.BeforeMethod; -import org.testng.annotations.Test; - -import ch.rinn.restrictions.Friend; -import ch.systemsx.cisd.base.tests.AbstractFileSystemTestCase; -import ch.systemsx.cisd.common.exceptions.UserFailureException; -import ch.systemsx.cisd.common.filesystem.FileUtilities; -import ch.systemsx.cisd.common.servlet.IRequestContextProvider; -import ch.systemsx.cisd.common.utilities.MockTimeProvider; -import ch.systemsx.cisd.openbis.generic.client.web.client.dto.GridRowModels; -import ch.systemsx.cisd.openbis.generic.client.web.client.dto.IResultSetConfig; -import ch.systemsx.cisd.openbis.generic.client.web.client.dto.ResultSetFetchConfig; -import ch.systemsx.cisd.openbis.generic.client.web.client.dto.TypedTableResultSet; -import ch.systemsx.cisd.openbis.generic.client.web.server.AbstractClientService; -import ch.systemsx.cisd.openbis.generic.client.web.server.resultset.DefaultResultSet; -import ch.systemsx.cisd.openbis.generic.client.web.server.resultset.IOriginalDataProvider; -import ch.systemsx.cisd.openbis.generic.client.web.server.resultset.IResultSet; -import ch.systemsx.cisd.openbis.generic.client.web.server.resultset.IResultSetManager; -import ch.systemsx.cisd.openbis.generic.shared.WebClientConfigurationProvider; -import ch.systemsx.cisd.openbis.generic.shared.basic.GridRowModel; -import ch.systemsx.cisd.openbis.generic.shared.basic.SessionConstants; -import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModelColumnHeader; -import ch.systemsx.cisd.openbis.generic.shared.util.CacheManager; -import ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.Constants; -import ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.dto.ListProteinByExperimentCriteria; -import ch.systemsx.cisd.openbis.plugin.proteomics.client.web.server.PhosphoNetXClientService; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.IPhosphoNetXServer; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.AbundanceColumnDefinition; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.AggregateFunction; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.ProteinInfo; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.Treatment; - -/** - * @author Franz-Josef Elmer - */ -@Friend(toClasses = { AbstractClientService.class, PhosphoNetXClientService.class, CacheManager.class }) -public class PhosphoNetXClientServiceTest extends AbstractFileSystemTestCase -{ - private static final String SESSION_TOKEN = "session-token"; - - private static final class SimpleResultSetManager<K> implements IResultSetManager<K> - { - - @Override - public <T> IResultSet<K, T> getResultSet(String sessionToken, - IResultSetConfig<K, T> resultConfig, IOriginalDataProvider<T> dataProvider) - throws UserFailureException - { - List<TableModelColumnHeader> headers = dataProvider.getHeaders(); - List<T> originalData = dataProvider.getOriginalData(Integer.MAX_VALUE); - List<GridRowModel<T>> rows = new ArrayList<GridRowModel<T>>(); - for (int i = 0; i < originalData.size(); i++) - { - T rowData = originalData.get(i); - rows.add(new GridRowModel<T>(rowData, null)); - } - return new DefaultResultSet<K, T>(resultConfig.getCacheConfig().tryGetResultSetKey(), - new GridRowModels<T>(rows, headers, null, null), rows.size(), false); - } - - @Override - public void removeResultSet(K resultSetKey) throws UserFailureException - { - } - - @Override - public void lockResultSet(K resultSetKey) - { - } - - } - - private Mockery context; - - private IPhosphoNetXServer server; - - private PhosphoNetXClientService clientService; - - private IRequestContextProvider requestContextProvider; - - private HttpServletRequest request; - - private HttpSession httpSession; - - private File cacheFolder; - - @BeforeMethod - public final void beforeMethod() throws Exception - { - context = new Mockery(); - server = context.mock(IPhosphoNetXServer.class); - requestContextProvider = context.mock(IRequestContextProvider.class); - request = context.mock(HttpServletRequest.class); - httpSession = context.mock(HttpSession.class); - clientService = new PhosphoNetXClientService(); - clientService.server = server; - clientService.requestContextProvider = requestContextProvider; - context.checking(new Expectations() - { - { - allowing(requestContextProvider).getHttpServletRequest(); - will(returnValue(request)); - - allowing(request).getSession(false); - will(returnValue(httpSession)); - - allowing(httpSession).getAttribute("openbis-session-token"); - will(returnValue(SESSION_TOKEN)); - - allowing(httpSession).getAttribute(SessionConstants.OPENBIS_RESULT_SET_MANAGER); - will(returnValue(new SimpleResultSetManager<String>())); - } - }); - Properties properties = new Properties(); - cacheFolder = new File(workingDirectory, "cache"); - if (cacheFolder.exists()) - { - assertTrue(FileUtilities.deleteRecursively(cacheFolder)); - } - properties.setProperty("technologies", Constants.TECHNOLOGY_NAME); - properties.setProperty(Constants.TECHNOLOGY_NAME + "." + CacheManager.CACHE_FOLDER_KEY, - cacheFolder.getPath()); - clientService.webClientConfigurationProvider = - new WebClientConfigurationProvider(properties); - clientService.timeProvider = new MockTimeProvider(); - clientService.afterPropertiesSet(); - } - - @AfterMethod - public final void afterMethod() - { - context.assertIsSatisfied(); - } - - @Test - public void testGetAbundanceColumnDefinitionsForProteinByExperiment() - { - final TechId experimentID = new TechId(41L); - final AbundanceColumnDefinition colDef = new AbundanceColumnDefinition(); - colDef.setSampleCode("S1"); - Treatment treatment = new Treatment(); - treatment.setType("type1"); - treatment.setTypeCode("code"); - colDef.setTreatments(Arrays.asList(treatment)); - context.checking(new Expectations() - { - { - one(server).getAbundanceColumnDefinitionsForProteinByExperiment(SESSION_TOKEN, - experimentID, null); - will(returnValue(Arrays.asList(colDef))); - } - }); - - List<AbundanceColumnDefinition> colDefs = - clientService.getAbundanceColumnDefinitionsForProteinByExperiment(experimentID, - null); - colDefs = - clientService.getAbundanceColumnDefinitionsForProteinByExperiment(experimentID, - null); - assertEquals(colDef.getSampleCode(), colDefs.get(0).getSampleCode()); - assertEquals(treatment.getType(), colDefs.get(0).getTreatments().get(0).getType()); - assertEquals(1, colDefs.size()); - assertEquals(3, cacheFolder.listFiles().length); - - context.assertIsSatisfied(); - } - - @Test - public void testListProteinsByExperiment() - { - final TechId experimentID1 = new TechId(42L); - final TechId experimentID2 = new TechId(4711L); - final AbundanceColumnDefinition colDef = new AbundanceColumnDefinition(); - colDef.setSampleCode("S1"); - Treatment treatment = new Treatment(); - treatment.setType("type1"); - treatment.setTypeCode("code"); - colDef.setTreatments(Arrays.asList(treatment)); - final double fdr1 = 0.125; - final double fdr2 = 0.25; - final AggregateFunction f1 = AggregateFunction.MAX; - final AggregateFunction f2 = AggregateFunction.MIN; - final String treatment1 = "t1"; - final String treatment2 = "t2"; - final ProteinInfo p1 = createProtein(1); - final ProteinInfo p2 = createProtein(2); - final ProteinInfo p3 = createProtein(3); - final ProteinInfo p4 = createProtein(4); - final ProteinInfo p5 = createProtein(5); - final ProteinInfo p6 = createProtein(6); - context.checking(new Expectations() - { - { - one(server).getAbundanceColumnDefinitionsForProteinByExperiment(SESSION_TOKEN, - experimentID1, treatment1); - will(returnValue(Arrays.asList(colDef))); - one(server).getAbundanceColumnDefinitionsForProteinByExperiment(SESSION_TOKEN, - experimentID1, treatment2); - will(returnValue(Arrays.asList(colDef))); - one(server).getAbundanceColumnDefinitionsForProteinByExperiment(SESSION_TOKEN, - experimentID2, treatment1); - will(returnValue(Arrays.asList(colDef))); - one(server).listProteinsByExperiment(SESSION_TOKEN, experimentID1, fdr1, f1, - treatment1, false); - will(returnValue(Arrays.asList(p1))); - one(server).listProteinsByExperiment(SESSION_TOKEN, experimentID2, fdr1, f1, - treatment1, false); - will(returnValue(Arrays.asList(p2))); - one(server).listProteinsByExperiment(SESSION_TOKEN, experimentID1, fdr2, f1, - treatment1, false); - will(returnValue(Arrays.asList(p3))); - one(server).listProteinsByExperiment(SESSION_TOKEN, experimentID1, fdr1, f2, - treatment1, false); - will(returnValue(Arrays.asList(p4))); - one(server).listProteinsByExperiment(SESSION_TOKEN, experimentID1, fdr1, f1, - treatment2, false); - will(returnValue(Arrays.asList(p5))); - one(server).listProteinsByExperiment(SESSION_TOKEN, experimentID1, fdr1, f1, - treatment1, true); - will(returnValue(Arrays.asList(p6))); - - } - }); - - listAndCheckProteins(p1, experimentID1, fdr1, f1, treatment1, false); - listAndCheckProteins(p2, experimentID2, fdr1, f1, treatment1, false); - listAndCheckProteins(p3, experimentID1, fdr2, f1, treatment1, false); - listAndCheckProteins(p4, experimentID1, fdr1, f2, treatment1, false); - listAndCheckProteins(p5, experimentID1, fdr1, f1, treatment2, false); - listAndCheckProteins(p6, experimentID1, fdr1, f1, treatment1, true); - listAndCheckProteins(p1, experimentID1, fdr1, f1, treatment1, false); - listAndCheckProteins(p2, experimentID2, fdr1, f1, treatment1, false); - listAndCheckProteins(p3, experimentID1, fdr2, f1, treatment1, false); - listAndCheckProteins(p4, experimentID1, fdr1, f2, treatment1, false); - listAndCheckProteins(p5, experimentID1, fdr1, f1, treatment2, false); - listAndCheckProteins(p6, experimentID1, fdr1, f1, treatment1, true); - assertEquals("Unexpectd number of files: " + Arrays.asList(cacheFolder.listFiles()), 19, - cacheFolder.listFiles().length); - - context.assertIsSatisfied(); - } - - private void listAndCheckProteins(ProteinInfo protein, TechId experimentId, - double falseDiscoveryRate, AggregateFunction function, String treatmentTypeCode, - boolean aggregateOnOriginal) - { - ListProteinByExperimentCriteria criteria = new ListProteinByExperimentCriteria(); - criteria.setCacheConfig(ResultSetFetchConfig.createFetchFromCache("key")); - criteria.setExperimentID(experimentId); - criteria.setFalseDiscoveryRate(falseDiscoveryRate); - criteria.setAggregateFunction(function); - criteria.setTreatmentTypeCode(treatmentTypeCode); - criteria.setAggregateOriginal(aggregateOnOriginal); - TypedTableResultSet<ProteinInfo> rs = clientService.listProteinsByExperiment(criteria); - ProteinInfo actualProtein = rs.getResultSet().getList().get(0).getOriginalObject().getObjectOrNull(); - assertEquals(protein.getId(), actualProtein.getId()); - assertEquals(protein.getDescription(), actualProtein.getDescription()); - assertEquals(1, rs.getResultSet().getTotalLength()); - } - - private ProteinInfo createProtein(long id) - { - ProteinInfo protein = new ProteinInfo(); - protein.setId(new TechId(id)); - protein.setDescription("Protein " + id); - protein.setAbundances(new HashMap<Long, Double>()); - return protein; - } - -} diff --git a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/server/RawDataSampleProviderTest.java b/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/server/RawDataSampleProviderTest.java deleted file mode 100644 index 8cac244ce9460b1ff8c2b7a78e14965edf26023d..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/server/RawDataSampleProviderTest.java +++ /dev/null @@ -1,231 +0,0 @@ -/* - * Copyright 2010 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.client.web.server; - -import static ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.RawDataSampleGridIDs.CODE; -import static ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.RawDataSampleGridIDs.PARENT; -import static ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.RawDataSampleGridIDs.REGISTRATION_DATE; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Date; -import java.util.List; - -import org.jmock.Expectations; -import org.testng.annotations.BeforeMethod; -import org.testng.annotations.Test; - -import ch.rinn.restrictions.Friend; -import ch.systemsx.cisd.openbis.generic.shared.AbstractServerTestCase; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataType; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataTypeCode; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Experiment; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.AbstractExternalData; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.GenericEntityProperty; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IEntityProperty; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.PropertyType; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModelColumnHeader; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModelRow; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModelRowWithObject; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TypedTableModel; -import ch.systemsx.cisd.openbis.plugin.proteomics.client.web.server.RawDataSampleProvider; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.IProteomicsDataServiceInternal; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.dto.MsInjectionSample; - -/** - * @author Franz-Josef Elmer - */ -@Friend(toClasses = RawDataSampleProvider.class) -public class RawDataSampleProviderTest extends AbstractServerTestCase -{ - private IProteomicsDataServiceInternal service; - - private RawDataSampleProvider provider; - - @Override - @BeforeMethod - public final void setUp() - { - super.setUp(); - service = context.mock(IProteomicsDataServiceInternal.class); - provider = new RawDataSampleProvider(service, SESSION_TOKEN); - } - - @Test - public void testGetHeadersForNoData() - { - prepareListRawDataSamples(); - - List<TableModelColumnHeader> headers = provider.getTableModel(Integer.MAX_VALUE).getHeader(); - - assertFixedColumns(headers); - assertEquals(4, headers.size()); - context.assertIsSatisfied(); - } - - @Test - public void testGetHeaders() - { - Sample ms1 = sample("MS1", sample("ABC", "alpha", "beta"), "one"); - Sample ms2 = sample("MS2", sample("DE", "gamma", "beta"), "one"); - Sample ms3 = sample("MS3", sample("DE", "gamma", "alpha"), "two"); - prepareListRawDataSamples(ms1, ms2, ms3); - - List<TableModelColumnHeader> headers = provider.getTableModel(Integer.MAX_VALUE).getHeader(); - - assertFixedColumns(headers); - assertPropertyHeader("one", "USER-ONE", 4, headers); - assertPropertyHeader("two", "USER-TWO", 5, headers); - assertPropertyHeader("alpha", "BIO_USER-ALPHA", 6, headers); - assertPropertyHeader("beta", "BIO_USER-BETA", 7, headers); - assertPropertyHeader("gamma", "BIO_USER-GAMMA", 8, headers); - assertEquals(9, headers.size()); - context.assertIsSatisfied(); - } - - @Test - public void testGetOriginalDataForNoData() - { - prepareListRawDataSamples(); - - List<TableModelRowWithObject<Sample>> data = provider.getTableModel(Integer.MAX_VALUE).getRows(); - - assertEquals(0, data.size()); - context.assertIsSatisfied(); - } - - @Test - public void testGetOriginalData() - { - Sample ms1 = sample("MS1", sample("ABC", "beta", "alpha"), "one"); - Sample ms2 = sample("MS2", sample("DE", "gamma", "beta"), "one"); - Sample parent = sample("FG", "alpha", "gamma"); - Experiment experiment = new Experiment(); - experiment.setIdentifier("/G/P/E1"); - parent.setExperiment(experiment); - Sample ms3 = sample("MS3", parent, "2"); - prepareListRawDataSamples(ms1, ms2, ms3); - - TypedTableModel<Sample> tableModel = provider.getTableModel(Integer.MAX_VALUE); - List<TableModelRowWithObject<Sample>> data = tableModel.getRows(); - - assertEquals(3, data.size()); - assertEquals("[null, null, null, null, 2, one, alpha, beta, gamma]", tableModel.getHeader().toString()); - assertRow("MS1, Mon Mar 30 17:18:20 CET 1970, /G/ABC, , , 3, 6, 4, ", data.get(0)); - assertRow("MS2, Mon Mar 30 17:20:00 CET 1970, /G/DE, , , 3, , 5, 5", data.get(1)); - assertRow("MS3, Mon Mar 30 17:21:40 CET 1970, /G/FG, /G/P/E1, 1, , 5, , 6", data.get(2)); - context.assertIsSatisfied(); - } - - private void assertRow(String expectedRow, TableModelRow row) - { - StringBuilder builder = new StringBuilder(); - int length = expectedRow.split(",").length; - for (int i = 0; i < length; i++) - { - if (builder.length() > 0) - { - builder.append(", "); - } - builder.append(row.getValues().get(i)); - } - assertEquals(expectedRow, builder.toString()); - } - - private void assertFixedColumns(List<TableModelColumnHeader> headers) - { - assertUntitledHeader(CODE, 0, DataTypeCode.VARCHAR, headers.get(0)); - assertUntitledHeader(REGISTRATION_DATE, 1, DataTypeCode.TIMESTAMP, headers.get(1)); - assertUntitledHeader(PARENT, 2, DataTypeCode.VARCHAR, headers.get(2)); - } - - private void assertUntitledHeader(String expectedCode, int expectedIndex, - DataTypeCode expectedType, TableModelColumnHeader header) - { - assertHeader(null, expectedCode, expectedIndex, expectedType, header); - } - - private void assertPropertyHeader(String expectedLabel, String expectedCode, int index, List<TableModelColumnHeader> headers) - { - TableModelColumnHeader header = headers.get(index); - assertHeader(expectedLabel, expectedCode, index, DataTypeCode.INTEGER, header); - } - - private void assertHeader(String expectedTitle, String expectedCode, int expectedIndex, - DataTypeCode expectedType, TableModelColumnHeader header) - { - assertEquals(expectedTitle, header.getTitle()); - assertEquals(expectedCode, header.getId()); - assertEquals(expectedIndex, header.getIndex()); - assertEquals(expectedType, header.getDataType()); - } - - private Sample sample(String code, Sample parent, String... properties) - { - Sample sample = sample(code, properties); - sample.setGeneratedFrom(parent); - return sample; - } - - private Sample sample(String code, String... properties) - { - Sample sample = new Sample(); - sample.setCode(code); - sample.setIdentifier("/G/" + code); - sample.setId((long) code.hashCode()); - sample.setRegistrationDate(new Date(code.hashCode() * 100000L)); - sample.setProperties(createProperties(properties)); - return sample; - } - - private List<IEntityProperty> createProperties(String... labels) - { - ArrayList<IEntityProperty> properties = new ArrayList<IEntityProperty>(); - for (String label : labels) - { - GenericEntityProperty property = new GenericEntityProperty(); - PropertyType propertyType = new PropertyType(); - propertyType.setLabel(label); - propertyType.setCode(propertyType.getLabel().toUpperCase()); - propertyType.setSimpleCode(propertyType.getCode()); - DataType dataType = new DataType(); - dataType.setCode(DataTypeCode.INTEGER); - propertyType.setDataType(dataType); - property.setPropertyType(propertyType); - property.setValue(Integer.toString(label.length() + properties.size())); - properties.add(property); - } - return properties; - } - - private void prepareListRawDataSamples(final Sample... samples) - { - context.checking(new Expectations() - { - { - one(service).listRawDataSamples(SESSION_TOKEN); - List<MsInjectionSample> list = new ArrayList<MsInjectionSample>(); - for (Sample sample : samples) - { - list.add(new MsInjectionSample(sample, Arrays.<AbstractExternalData> asList())); - } - will(returnValue(list)); - } - }); - } -} diff --git a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/server/resultset/ProteinSequenceProviderTest.java b/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/server/resultset/ProteinSequenceProviderTest.java deleted file mode 100644 index 01b17862c6cbdafa52a2b376b08283d9a4266538..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/server/resultset/ProteinSequenceProviderTest.java +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright 2011 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.client.web.server.resultset; - -import java.util.Arrays; - -import org.jmock.Expectations; -import org.testng.annotations.Test; - -import ch.systemsx.cisd.openbis.generic.client.web.server.resultset.AbstractProviderTest; -import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TypedTableModel; -import ch.systemsx.cisd.openbis.plugin.proteomics.client.web.server.resultset.ProteinSequenceProvider; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.IPhosphoNetXServer; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.ProteinSequence; - -/** - * @author Franz-Josef Elmer - */ -public class ProteinSequenceProviderTest extends AbstractProviderTest -{ - @Test - public void test() - { - final ProteinSequence ps = new ProteinSequence(); - ps.setShortName("short-name"); - ps.setDatabaseNameAndVersion("db-version"); - ps.setSequence("ABC"); - final IPhosphoNetXServer phosphonetxServer = context.mock(IPhosphoNetXServer.class); - context.checking(new Expectations() - { - { - one(phosphonetxServer).listProteinSequencesByProteinReference(SESSION_TOKEN, new TechId(42), new TechId(43)); - will(returnValue(Arrays.asList(ps))); - } - }); - ProteinSequenceProvider provider = - new ProteinSequenceProvider(phosphonetxServer, SESSION_TOKEN, new TechId(42), new TechId(43)); - - TypedTableModel<ProteinSequence> model = provider.createTableModel(); - - assertEquals("[SEQUENCE_SHORT_NAME, DATABASE_NAME_AND_VERSION, SEQUENCE]", getHeaderIDs(model).toString()); - assertEquals("[VARCHAR, VARCHAR, VARCHAR]", getHeaderDataTypes(model).toString()); - assertEquals("[null, null, null]", getHeaderEntityKinds(model).toString()); - assertSame(ps, model.getRows().get(0).getObjectOrNull()); - assertEquals("[short-name, db-version, ABC]", model.getRows().get(0).getValues().toString()); - assertEquals(1, model.getRows().size()); - context.assertIsSatisfied(); - } - -} diff --git a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/server/resultset/ProteinSummaryProviderTest.java b/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/server/resultset/ProteinSummaryProviderTest.java deleted file mode 100644 index bcd305c722136307cc06079f8b9d80fb1ca6bc93..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/server/resultset/ProteinSummaryProviderTest.java +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright 2011 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.client.web.server.resultset; - -import java.util.Arrays; - -import org.jmock.Expectations; -import org.testng.annotations.Test; - -import ch.systemsx.cisd.openbis.generic.client.web.server.resultset.AbstractProviderTest; -import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TypedTableModel; -import ch.systemsx.cisd.openbis.plugin.proteomics.client.web.server.resultset.ProteinSummaryProvider; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.IPhosphoNetXServer; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.ProteinSummary; - -/** - * @author Franz-Josef Elmer - */ -public class ProteinSummaryProviderTest extends AbstractProviderTest -{ - @Test - public void test() - { - final ProteinSummary ps = new ProteinSummary(); - ps.setFDR(0.125); - ps.setProteinCount(42); - ps.setPeptideCount(4711); - ps.setDecoyProteinCount(2); - ps.setDecoyPeptideCount(5); - final IPhosphoNetXServer phosphonetxServer = context.mock(IPhosphoNetXServer.class); - context.checking(new Expectations() - { - { - one(phosphonetxServer).listProteinSummariesByExperiment(SESSION_TOKEN, - new TechId(12)); - will(returnValue(Arrays.asList(ps))); - } - }); - ProteinSummaryProvider provider = - new ProteinSummaryProvider(phosphonetxServer, SESSION_TOKEN, new TechId(12)); - - TypedTableModel<ProteinSummary> model = provider.createTableModel(); - - assertEquals( - "[FDR, PROTEIN_COUNT, PEPTIDE_COUNT, DECOY_PROTEIN_COUNT, DECOY_PEPTIDE_COUNT]", - getHeaderIDs(model).toString()); - assertEquals("[REAL, INTEGER, INTEGER, INTEGER, INTEGER]", getHeaderDataTypes(model) - .toString()); - assertEquals("[null, null, null, null, null]", getHeaderEntityKinds(model).toString()); - assertSame(ps, model.getRows().get(0).getObjectOrNull()); - assertEquals("[0.125, 42, 4711, 2, 5]", model.getRows().get(0).getValues().toString()); - assertEquals(1, model.getRows().size()); - context.assertIsSatisfied(); - } -} diff --git a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/PhosphoNetXServerTest.java b/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/PhosphoNetXServerTest.java deleted file mode 100644 index 7c0980fc7aba97e44231e4ddefe35847680a1e9c..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/PhosphoNetXServerTest.java +++ /dev/null @@ -1,188 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.server; - -import java.util.Arrays; -import java.util.List; - -import org.jmock.Expectations; -import org.testng.annotations.BeforeMethod; -import org.testng.annotations.Test; - -import ch.rinn.restrictions.Friend; -import ch.systemsx.cisd.openbis.common.eodsql.MockDataSet; -import ch.systemsx.cisd.openbis.generic.server.plugin.IDataSetTypeSlaveServerPlugin; -import ch.systemsx.cisd.openbis.generic.server.plugin.ISampleTypeSlaveServerPlugin; -import ch.systemsx.cisd.openbis.generic.shared.AbstractServerTestCase; -import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample; -import ch.systemsx.cisd.openbis.generic.shared.dto.ExperimentPE; -import ch.systemsx.cisd.openbis.plugin.proteomics.server.business.IAbundanceColumnDefinitionTable; -import ch.systemsx.cisd.openbis.plugin.proteomics.server.business.IBusinessObjectFactory; -import ch.systemsx.cisd.openbis.plugin.proteomics.server.business.IProteinDetailsBO; -import ch.systemsx.cisd.openbis.plugin.proteomics.server.business.IProteinRelatedSampleTable; -import ch.systemsx.cisd.openbis.plugin.proteomics.server.business.ISampleProvider; -import ch.systemsx.cisd.openbis.plugin.proteomics.server.dataaccess.IPhosphoNetXDAOFactory; -import ch.systemsx.cisd.openbis.plugin.proteomics.server.dataaccess.IProteinQueryDAO; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.AbundanceColumnDefinition; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.ProteinDetails; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.ProteinRelatedSample; - -/** - * @author Franz-Josef Elmer - */ -@Friend(toClasses = PhosphoNetXServer.class) -public class PhosphoNetXServerTest extends AbstractServerTestCase -{ - private static final TechId EXPERIMENT_ID = new TechId(42L); - - private static final String EXPERIMENT_PERM_ID = "e123-45"; - - private static final String SAMPLE_PERM_ID = "s34-56"; - - private IPhosphoNetXDAOFactory phosphoNetXDAOFactory; - - private IBusinessObjectFactory boFactory; - - private ISampleTypeSlaveServerPlugin sampleTypeSlaveServerPlugin; - - private IDataSetTypeSlaveServerPlugin dataSetTypeSlaveServerPlugin; - - private IProteinQueryDAO proteinDAO; - - private PhosphoNetXServer server; - - private IAbundanceColumnDefinitionTable abundanceColumnDefinitionTable; - - private ISampleProvider sampleProvider; - - private IProteinDetailsBO proteinDetailsBO; - - private IProteinRelatedSampleTable proteinRelatedSampleTable; - - @Override - @BeforeMethod - public void setUp() - { - super.setUp(); - phosphoNetXDAOFactory = context.mock(IPhosphoNetXDAOFactory.class); - boFactory = context.mock(IBusinessObjectFactory.class); - sampleTypeSlaveServerPlugin = context.mock(ISampleTypeSlaveServerPlugin.class); - dataSetTypeSlaveServerPlugin = context.mock(IDataSetTypeSlaveServerPlugin.class); - proteinDAO = context.mock(IProteinQueryDAO.class); - abundanceColumnDefinitionTable = context.mock(IAbundanceColumnDefinitionTable.class); - proteinDetailsBO = context.mock(IProteinDetailsBO.class); - proteinRelatedSampleTable = context.mock(IProteinRelatedSampleTable.class); - sampleProvider = context.mock(ISampleProvider.class); - server = - new PhosphoNetXServer(sessionManager, daoFactory, propertiesBatchManager, - phosphoNetXDAOFactory, boFactory, sampleTypeSlaveServerPlugin, - dataSetTypeSlaveServerPlugin); - context.checking(new Expectations() - { - { - allowing(boFactory).createProteinDetailsBO(session); - will(returnValue(proteinDetailsBO)); - - allowing(boFactory).createProteinRelatedSampleTable(session); - will(returnValue(proteinRelatedSampleTable)); - } - }); - } - - @Test - public void testGetAbundanceColumnDefinitionsForProteinByExperiment() - { - prepareGetSession(); - final MockDataSet<String> mockDataSet = new MockDataSet<String>(); - mockDataSet.add(SAMPLE_PERM_ID); - final List<AbundanceColumnDefinition> result = Arrays.asList(); - context.checking(new Expectations() - { - { - one(experimentDAO).getByTechId(EXPERIMENT_ID); - ExperimentPE experimentPE = new ExperimentPE(); - experimentPE.setPermId(EXPERIMENT_PERM_ID); - will(returnValue(experimentPE)); - - allowing(phosphoNetXDAOFactory).getProteinQueryDAO(EXPERIMENT_ID); - will(returnValue(proteinDAO)); - - one(proteinDAO).listAbundanceRelatedSamplePermIDsByExperiment(EXPERIMENT_PERM_ID); - will(returnValue(mockDataSet)); - - one(boFactory).createAbundanceColumnDefinitionTable(session); - will(returnValue(abundanceColumnDefinitionTable)); - - one(boFactory).createSampleProvider(session); - will(returnValue(sampleProvider)); - - one(sampleProvider).loadByExperimentID(EXPERIMENT_ID); - - one(sampleProvider).getSample(SAMPLE_PERM_ID); - Sample sample = new Sample(); - sample.setPermId(SAMPLE_PERM_ID); - will(returnValue(sample)); - - one(abundanceColumnDefinitionTable).add(sample); - - one(abundanceColumnDefinitionTable).getSortedAndAggregatedDefinitions("PH"); - will(returnValue(result)); - } - }); - - List<AbundanceColumnDefinition> definitions = - server.getAbundanceColumnDefinitionsForProteinByExperiment(SESSION_TOKEN, - EXPERIMENT_ID, "PH"); - assertSame(result, definitions); - assertEquals(true, mockDataSet.hasCloseBeenInvoked()); - context.assertIsSatisfied(); - } - - @Test - public void testListProteinRelatedSamplesByProtein() - { - prepareGetSession(); - final TechId experimentID = new TechId(42); - final TechId proteinReferenceID = new TechId(4711); - final List<Object> result = Arrays.asList(); - context.checking(new Expectations() - { - { - one(proteinDetailsBO).loadByExperimentAndReference(experimentID, - proteinReferenceID); - one(proteinDetailsBO).getDetailsOrNull(); - ProteinDetails details = new ProteinDetails(); - String sequence = "abcdefabcab"; - details.setSequence(sequence); - will(returnValue(details)); - - one(proteinRelatedSampleTable).load(session, experimentID, proteinReferenceID, sequence); - one(proteinRelatedSampleTable).getSamples(); - will(returnValue(result)); - } - }); - - List<ProteinRelatedSample> list = - server.listProteinRelatedSamplesByProtein(SESSION_TOKEN, experimentID, - proteinReferenceID); - - assertSame(result, list); - context.assertIsSatisfied(); - } - -} diff --git a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/ProteomicsDataServiceInternalTest.java b/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/ProteomicsDataServiceInternalTest.java deleted file mode 100644 index 7d4729d7446bc2ec23d55ad371d65c4bfa8a8765..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/ProteomicsDataServiceInternalTest.java +++ /dev/null @@ -1,449 +0,0 @@ -/* - * Copyright 2010 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.server; - -import static ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataStoreServiceKind.PROCESSING; -import static ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataStoreServiceKind.QUERIES; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.Date; -import java.util.HashMap; -import java.util.HashSet; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Map; - -import org.jmock.Expectations; -import org.testng.annotations.BeforeMethod; -import org.testng.annotations.Test; - -import ch.rinn.restrictions.Friend; -import ch.systemsx.cisd.openbis.generic.server.TestJythonEvaluatorPool; -import ch.systemsx.cisd.openbis.generic.server.authorization.TestAuthorizationConfig; -import ch.systemsx.cisd.openbis.generic.server.business.bo.ICommonBusinessObjectFactory; -import ch.systemsx.cisd.openbis.generic.shared.AbstractServerTestCase; -import ch.systemsx.cisd.openbis.generic.shared.CommonTestUtils; -import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.AbstractExternalData; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataStoreServiceKind; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataTypeCode; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Experiment; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.PhysicalDataSet; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Space; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.RoleWithHierarchy.RoleCode; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.builders.DataSetBuilder; -import ch.systemsx.cisd.openbis.generic.shared.dto.DataStorePE; -import ch.systemsx.cisd.openbis.generic.shared.dto.DataStoreServicePE; -import ch.systemsx.cisd.openbis.generic.shared.dto.EntityPropertyPE; -import ch.systemsx.cisd.openbis.generic.shared.dto.ExperimentPE; -import ch.systemsx.cisd.openbis.generic.shared.dto.ExperimentTypePE; -import ch.systemsx.cisd.openbis.generic.shared.dto.ExternalDataPE; -import ch.systemsx.cisd.openbis.generic.shared.dto.PersonPE; -import ch.systemsx.cisd.openbis.generic.shared.dto.ProjectPE; -import ch.systemsx.cisd.openbis.generic.shared.dto.RoleAssignmentPE; -import ch.systemsx.cisd.openbis.generic.shared.dto.Session; -import ch.systemsx.cisd.openbis.generic.shared.dto.SpacePE; -import ch.systemsx.cisd.openbis.generic.shared.dto.properties.EntityKind; -import ch.systemsx.cisd.openbis.generic.shared.managed_property.ManagedPropertyEvaluatorFactory; -import ch.systemsx.cisd.openbis.plugin.proteomics.server.business.IBusinessObjectFactory; -import ch.systemsx.cisd.openbis.plugin.proteomics.server.business.ISampleLoader; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.IProteomicsDataServiceInternal; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.CommonConstants; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.dto.MsInjectionSample; - -/** - * @author Franz-Josef Elmer - */ -@Friend(toClasses = ProteomicsDataServiceInternal.class) -public class ProteomicsDataServiceInternalTest extends AbstractServerTestCase -{ - private static final String GROUP_CODE = "g"; - - private static final String COPY_PROCESSING_KEY = "copy-data-sets"; - - private static final String EXPERIMENT_TYPE = "EXPE"; - - private IProteomicsDataServiceInternal service; - - private ICommonBusinessObjectFactory commonBoFactory; - - private ExperimentTypePE experimentType; - - private IBusinessObjectFactory boFactory; - - private ISampleLoader sampleLoader; - - @Override - @BeforeMethod - public final void setUp() - { - super.setUp(); - commonBoFactory = context.mock(ICommonBusinessObjectFactory.class); - boFactory = context.mock(IBusinessObjectFactory.class); - sampleLoader = context.mock(ISampleLoader.class); - service = - new ProteomicsDataServiceInternal(sessionManager, daoFactory, - propertiesBatchManager, commonBoFactory, boFactory, - new ManagedPropertyEvaluatorFactory(null, new TestJythonEvaluatorPool())); - experimentType = new ExperimentTypePE(); - experimentType.setCode(EXPERIMENT_TYPE); - PersonPE person = new PersonPE(); - RoleAssignmentPE roleAssignment = new RoleAssignmentPE(); - roleAssignment.setRole(RoleCode.ADMIN); - SpacePE group = new SpacePE(); - group.setCode("Space-0"); - roleAssignment.setSpace(group); - person.setRoleAssignments(Collections.singleton(roleAssignment)); - session.setPerson(person); - } - - @Test - public void testListRawDataSamples() - { - prepareGetSession(); - prepareListRawDataSamples(42L); - - List<MsInjectionSample> samples = service.listRawDataSamples(SESSION_TOKEN); - - assertEquals(42L, samples.get(0).getSample().getId().longValue()); - assertEquals(1, samples.size()); - context.assertIsSatisfied(); - } - - @Test - public void testProcessDataSets() - { - prepareGetSession(); - HashMap<String, String> parameterBindings = new HashMap<String, String>(); - prepareProcessDataSets(session, parameterBindings, "ds1", "ds2"); - - service.processDataSets(SESSION_TOKEN, COPY_PROCESSING_KEY, Arrays.asList("ds1", "ds2")); - - context.assertIsSatisfied(); - } - - @Test - public void testListExperiments() - { - prepareGetSession(); - final ExperimentPE e1 = experiment(1); - final ExperimentPE e2 = experiment(2, "a"); - prepareListExperiments(e1, e2); - - List<Experiment> list = service.listExperiments(SESSION_TOKEN, EXPERIMENT_TYPE); - - assertEquals("/G/P/e1", list.get(0).getIdentifier()); - assertEquals(1, list.get(0).getRegistrationDate().getTime()); - assertEquals(0, list.get(0).getProperties().size()); - assertEquals("/G/P/e2", list.get(1).getIdentifier()); - assertEquals(4, list.get(1).getRegistrationDate().getTime()); - assertEquals("A", list.get(1).getProperties().get(0).getPropertyType().getCode()); - assertEquals("a-value", list.get(1).getProperties().get(0).getValue()); - assertEquals(1, list.get(1).getProperties().size()); - assertEquals(2, list.size()); - context.assertIsSatisfied(); - } - - @Test - public void testProcessSearchData() - { - final Session testSession = createSessionAndPrepareGetSession(GROUP_CODE); - final ExperimentPE e1 = experiment(1); - final ExperimentPE e2 = experiment(2, "a"); - context.checking(new Expectations() - { - { - one(experimentDAO).tryGetByTechId(new TechId(e1.getId())); - will(returnValue(e1)); - - one(dataSetDAO).listDataSets(e1); - ExternalDataPE ds1 = new ExternalDataPE(); - ds1.setCode("ds1"); - will(returnValue(Arrays.asList(ds1))); - - one(experimentDAO).tryGetByTechId(new TechId(e2.getId())); - will(returnValue(e2)); - - one(dataSetDAO).listDataSets(e2); - ExternalDataPE ds2 = new ExternalDataPE(); - ds2.setCode("ds2"); - will(returnValue(Arrays.asList(ds2))); - } - }); - prepareProcessDataSets(testSession, new HashMap<String, String>(), "ds1", "ds2"); - - service.processProteinResultDataSets(SESSION_TOKEN, COPY_PROCESSING_KEY, EXPERIMENT_TYPE, - new long[] { e1.getId(), e2.getId() }); - - context.assertIsSatisfied(); - } - - @Test - public void testProcessSearchDataFilteredByValidator() - { - Session testSession = createSessionAndPrepareGetSession(GROUP_CODE + 2); - final ExperimentPE e1 = experiment(1); - final ExperimentPE e2 = experiment(2, "a"); - - context.checking(new Expectations() - { - { - allowing(daoFactory).getAuthorizationConfig(); - will(returnValue(new TestAuthorizationConfig(false, false))); - - one(experimentDAO).tryGetByTechId(new TechId(e1.getId())); - will(returnValue(e1)); - - one(experimentDAO).tryGetByTechId(new TechId(e2.getId())); - will(returnValue(e2)); - } - }); - prepareProcessDataSets(testSession, new HashMap<String, String>()); - - service.processProteinResultDataSets(SESSION_TOKEN, COPY_PROCESSING_KEY, EXPERIMENT_TYPE, - new long[] { e1.getId(), e2.getId() }); - - context.assertIsSatisfied(); - } - - @Test - public void testProcessSearchDataFilteredByIds() - { - Session testSession = createSessionAndPrepareGetSession(GROUP_CODE); - final ExperimentPE e1 = experiment(1); - context.checking(new Expectations() - { - { - one(experimentDAO).tryGetByTechId(new TechId(e1.getId())); - will(returnValue(e1)); - - one(dataSetDAO).listDataSets(e1); - ExternalDataPE ds1 = new ExternalDataPE(); - ds1.setCode("ds1"); - will(returnValue(Arrays.asList(ds1))); - } - }); - prepareProcessDataSets(testSession, new HashMap<String, String>(), "ds1"); - - service.processProteinResultDataSets(SESSION_TOKEN, COPY_PROCESSING_KEY, EXPERIMENT_TYPE, - new long[] { e1.getId() }); - - context.assertIsSatisfied(); - } - - private Session createSessionAndPrepareGetSession(String spaceCode) - { - final Session testSession = - new Session(CommonTestUtils.USER_ID, SESSION_TOKEN, PRINCIPAL, "remote-host", 1); - PersonPE person = new PersonPE(); - RoleAssignmentPE roleAssignmentPE = new RoleAssignmentPE(); - SpacePE group = new SpacePE(); - group.setCode(spaceCode); - roleAssignmentPE.setRole(RoleCode.ADMIN); - roleAssignmentPE.setSpace(group); - person.setRoleAssignments(new HashSet<RoleAssignmentPE>(Arrays.asList(roleAssignmentPE))); - testSession.setPerson(person); - context.checking(new Expectations() - { - { - allowing(sessionManager).getSession(SESSION_TOKEN); - will(returnValue(testSession)); - } - }); - return testSession; - } - - private void prepareListExperiments(final ExperimentPE... experiments) - { - context.checking(new Expectations() - { - { - one(daoFactory).getEntityTypeDAO(EntityKind.EXPERIMENT); - will(returnValue(entityTypeDAO)); - - one(entityTypeDAO).tryToFindEntityTypeByCode(EXPERIMENT_TYPE); - will(returnValue(experimentType)); - - one(experimentDAO).listExperimentsWithProperties(experimentType, null, null); - will(returnValue(Arrays.asList(experiments))); - - one(metaprojectDAO).listMetaprojectAssignmentsForEntities( - session.tryGetPerson(), Arrays.asList(experiments), - EntityKind.EXPERIMENT); - } - }); - } - - private void prepareProcessDataSets(final Session testSession, - final Map<String, String> parameterBindings, final String... dataSetCodes) - { - context.checking(new Expectations() - { - { - one(dataStoreDAO).listDataStores(); - DataStorePE s1 = - store("s1", service("a", PROCESSING), - service(COPY_PROCESSING_KEY, QUERIES)); - DataStorePE s2 = store("s2", service(COPY_PROCESSING_KEY, PROCESSING)); - will(returnValue(Arrays.asList(s1, s2))); - - one(commonBoFactory).createDataSetTable(testSession); - will(returnValue(dataSetTable)); - - one(dataSetTable).processDatasets(COPY_PROCESSING_KEY, "s2", - Arrays.asList(dataSetCodes), parameterBindings); - } - - }); - } - - private void prepareListRawDataSamples(final Long... sampleIDs) - { - final List<Sample> samples = new ArrayList<Sample>(); - final LinkedHashSet<Long> experimentIds = new LinkedHashSet<Long>(); - final List<ExperimentPE> bioExperiments = new ArrayList<ExperimentPE>(); - for (Long id : sampleIDs) - { - Sample sample = new Sample(); - sample.setId(id); - sample.setCode("s-" + id); - sample.setIdentifier("S" + id); - Experiment experiment = new Experiment(); - experiment.setId(id * 10); - sample.setExperiment(experiment); - Sample parent = new Sample(); - parent.setId(id * 100); - Space space = new Space(); - space.setCode("Space-" + id % 2); - parent.setSpace(space); - Experiment parentExperiment = new Experiment(); - parentExperiment.setId(id * 20); - parent.setExperiment(parentExperiment); - sample.setGeneratedFrom(parent); - samples.add(sample); - if (id % 2 == 0) - { - ExperimentPE bioExperiment = - createExperiment("e-type", "exp-" + id, space.getCode()); - bioExperiment.setId(parentExperiment.getId()); - bioExperiments.add(bioExperiment); - experimentIds.add(bioExperiment.getId()); - } - } - context.checking(new Expectations() - { - { - one(boFactory).createSampleLoader(session); - will(returnValue(sampleLoader)); - - one(sampleLoader).listSamplesWithParentsByTypeAndSpace( - CommonConstants.MS_INJECTION_SAMPLE_TYPE_CODE, - CommonConstants.MS_DATA_SPACE); - will(returnValue(samples)); - - one(experimentDAO).listExperimentsWithProperties(experimentIds); - will(returnValue(bioExperiments)); - - List<Sample> filteredSamples = new ArrayList<Sample>(); - Map<Sample, List<PhysicalDataSet>> dataSetsBySamples = - new HashMap<Sample, List<PhysicalDataSet>>(); - for (Sample sample : samples) - { - if ("Space-0".equals(sample.getGeneratedFrom().getSpace().getCode())) - { - Long id = sample.getId(); - String dataSetType = "dt-" + id % 2; - long ds1Id = id * 1000; - PhysicalDataSet ds1 = - new DataSetBuilder(ds1Id).code("ds-" + id) - .registrationDate(new Date(ds1Id)).sample(sample) - .type(dataSetType).getDataSet(); - - long ds2Id = (id + 1) * 1001; - PhysicalDataSet ds2 = - new DataSetBuilder(ds2Id).code("ds-" + id + 1) - .registrationDate(new Date(ds2Id)).sample(sample) - .type(dataSetType).getDataSet(); - - long ds2ChildId = ds2.getId() + 1; - PhysicalDataSet ds2Child = - new DataSetBuilder(ds2ChildId).code(ds2.getCode() + "-child") - .registrationDate(new Date(ds2ChildId)).sample(sample) - .type(dataSetType).getDataSet(); - - ds2.setChildren(Arrays.<AbstractExternalData> asList(ds2Child)); - dataSetsBySamples.put(sample, Arrays.asList(ds1, ds2)); - - filteredSamples.add(sample); - } - } - - one(commonBoFactory).createDatasetLister(session); - will(returnValue(datasetLister)); - - one(datasetLister).listAllDataSetsFor(filteredSamples); - will(returnValue(dataSetsBySamples)); - - } - }); - } - - private ExperimentPE experiment(long id, String... properties) - { - ExperimentPE experiment = new ExperimentPE(); - experiment.setExperimentType(experimentType); - experiment.setId(id); - experiment.setCode("e" + id); - ProjectPE project = new ProjectPE(); - project.setCode("p"); - SpacePE group = - CommonTestUtils.createSpace(GROUP_CODE); - project.setSpace(group); - experiment.setProject(project); - experiment.setRegistrationDate(new Date(id * id)); - if (properties.length > 0) - { - LinkedHashSet<EntityPropertyPE> props = new LinkedHashSet<EntityPropertyPE>(); - for (String property : properties) - { - props.add(CommonTestUtils.createExperimentPropertyPE(property, EXPERIMENT_TYPE, - DataTypeCode.VARCHAR, property + "-value")); - } - experiment.setProperties(props); - } - return experiment; - } - - private DataStorePE store(String code, DataStoreServicePE... services) - { - DataStorePE store = new DataStorePE(); - store.setCode(code); - store.setServices(new LinkedHashSet<DataStoreServicePE>(Arrays.asList(services))); - return store; - } - - private DataStoreServicePE service(String key, DataStoreServiceKind kind) - { - DataStoreServicePE dataStoreService = new DataStoreServicePE(); - dataStoreService.setKey(key); - dataStoreService.setKind(kind); - return dataStoreService; - } -} diff --git a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/ServerInterfaceRegressionTest.java b/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/ServerInterfaceRegressionTest.java deleted file mode 100644 index e00a088a3c2000160687c7935ce208516d3f3d85..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/ServerInterfaceRegressionTest.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright 2012 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.server; - -import org.testng.annotations.Test; - -import ch.systemsx.cisd.openbis.generic.server.util.AnnotationAppliedTestCase; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.IPhosphoNetXServer; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.IProteomicsDataServiceInternal; - -/** - * @author Franz-Josef Elmer - */ -public class ServerInterfaceRegressionTest extends AnnotationAppliedTestCase -{ - @Test - public void testServerAnnotations() - { - assertMandatoryMethodAnnotations(IPhosphoNetXServer.class, PhosphoNetXServer.class, null); - } - - @Test - public void testDataServiceInternalAnnotations() - { - assertMandatoryMethodAnnotations(IProteomicsDataServiceInternal.class, - ProteomicsDataServiceInternal.class, null); - } - -} diff --git a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/api/v1/ProteomicsDataServiceTest.java b/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/api/v1/ProteomicsDataServiceTest.java deleted file mode 100644 index 6d981e82a8346fff1ff706d3fe2e6c34d2c6072f..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/api/v1/ProteomicsDataServiceTest.java +++ /dev/null @@ -1,426 +0,0 @@ -/* - * Copyright 2010 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.server.api.v1; - -import java.io.Serializable; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.Comparator; -import java.util.Date; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; -import java.util.Set; - -import org.jmock.Expectations; -import org.testng.annotations.BeforeMethod; -import org.testng.annotations.Test; - -import ch.systemsx.cisd.common.exceptions.UserFailureException; -import ch.systemsx.cisd.openbis.generic.shared.AbstractServerTestCase; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSetType; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataStoreServiceKind; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataType; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataTypeCode; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityProperty; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Experiment; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.AbstractExternalData; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IEntityProperty; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Project; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.PropertyType; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Space; -import ch.systemsx.cisd.openbis.generic.shared.dto.DataSetTypePE; -import ch.systemsx.cisd.openbis.generic.shared.dto.DataStorePE; -import ch.systemsx.cisd.openbis.generic.shared.dto.DataStoreServicePE; -import ch.systemsx.cisd.openbis.generic.shared.dto.SessionContextDTO; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.IProteomicsDataServiceInternal; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.api.v1.IProteomicsDataService; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.api.v1.dto.DataSet; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.api.v1.dto.DataStoreServerProcessingPluginInfo; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.api.v1.dto.MsInjectionDataInfo; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.api.v1.dto.PropertyKey; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.dto.MsInjectionSample; - -/** - * @author Franz-Josef Elmer - */ -public class ProteomicsDataServiceTest extends AbstractServerTestCase -{ - private static final String MS_SEARCH = "MS_SEARCH"; - - private static final String RAW_DATA = "RAW_DATA"; - - private static final String MZXML_DATA = "MZXML_DATA"; - - private IProteomicsDataServiceInternal internalService; - - private IProteomicsDataService service; - - private SessionContextDTO session2; - - @Override - @BeforeMethod - public final void setUp() - { - super.setUp(); - internalService = context.mock(IProteomicsDataServiceInternal.class); - service = - new ProteomicsDataService(sessionManager, daoFactory, propertiesBatchManager, - internalService); - session2 = new SessionContextDTO(); - session2.setSessionToken(SESSION_TOKEN + "2"); - } - - @Test - public void testListDataStoreServerProcessingPluginInfos() - { - prepareGetSession(); - DataStoreServicePE s1 = new DataStoreServicePE(); - s1.setKind(DataStoreServiceKind.QUERIES); - DataStoreServicePE s2 = new DataStoreServicePE(); - s2.setKind(DataStoreServiceKind.PROCESSING); - s2.setKey("my-key"); - s2.setLabel("my label"); - DataSetTypePE dataSetType = new DataSetTypePE(); - dataSetType.setCode("my type"); - s2.setDatasetTypes(Collections.singleton(dataSetType)); - final DataStorePE store = new DataStorePE(); - store.setServices(new HashSet<DataStoreServicePE>(Arrays.asList(s1, s2))); - context.checking(new Expectations() - { - { - one(dataStoreDAO).listDataStores(); - will(returnValue(Arrays.asList(store))); - } - }); - - List<DataStoreServerProcessingPluginInfo> infos = - service.listDataStoreServerProcessingPluginInfos(SESSION_TOKEN); - - assertEquals(s2.getKey(), infos.get(0).getKey()); - assertEquals(s2.getLabel(), infos.get(0).getLabel()); - assertEquals(Arrays.asList(dataSetType.getCode()), infos.get(0).getDatasetTypeCodes()); - assertEquals(1, infos.size()); - context.assertIsSatisfied(); - } - - @Test - public void testListRawDataSamplesForUnknownUser() - { - prepareGetSession(); - prepareLoginLogout(null); - - try - { - service.listRawDataSamples(SESSION_TOKEN, "abc"); - fail("UserFailureException expected"); - } catch (UserFailureException ex) - { - assertEquals("Unknown user ID: abc", ex.getMessage()); - } - - context.assertIsSatisfied(); - } - - @Test - public void testListRawDataSamples() - { - prepareGetSession(); - prepareLoginLogout(session2); - final Sample sample = new Sample(); - sample.setId(4711L); - sample.setCode("ms-inj-42"); - sample.setRegistrationDate(new Date(4711)); - IEntityProperty p1 = property("integer", DataTypeCode.INTEGER, "123456"); - IEntityProperty p2 = property("real", DataTypeCode.REAL, "1.25"); - IEntityProperty p3 = property("string", DataTypeCode.VARCHAR, "hello"); - sample.setProperties(Arrays.asList(p1, p2, p3)); - Sample parent = new Sample(); - parent.setId(4710L); - parent.setIdentifier("parent"); - IEntityProperty p4 = property("boolean", DataTypeCode.BOOLEAN, "true"); - IEntityProperty p5 = property("link", DataTypeCode.HYPERLINK, "link"); - parent.setProperties(Arrays.asList(p4, p5)); - Experiment experiment = new Experiment(); - experiment.setId(4747L); - experiment.setCode("exp1"); - Project project = new Project(); - project.setCode("project1"); - Space space = new Space(); - space.setCode("space1"); - project.setSpace(space); - experiment.setProject(project); - experiment.setRegistrationDate(new Date(1234567)); - IEntityProperty p6 = property("ex", DataTypeCode.VARCHAR, "exp"); - experiment.setProperties(Arrays.<IEntityProperty> asList(p6)); - parent.setExperiment(experiment); - sample.setGeneratedFrom(parent); - final AbstractExternalData ds1 = createDataSet(RAW_DATA, 10); - final AbstractExternalData ds2 = createDataSet(MZXML_DATA, 20); - AbstractExternalData ds3 = createDataSet(MZXML_DATA, 15); - AbstractExternalData ds4 = createDataSet(RAW_DATA, 30); - ds2.setChildren(Arrays.asList(ds3)); - ds3.setChildren(Arrays.asList(ds4)); - context.checking(new Expectations() - { - { - one(internalService).listRawDataSamples(session2.getSessionToken()); - MsInjectionSample msInjectionSample = new MsInjectionSample(sample, Arrays.asList(ds1, ds2)); - will(returnValue(Arrays.asList(msInjectionSample))); - } - }); - - List<MsInjectionDataInfo> infos = service.listRawDataSamples(SESSION_TOKEN, "abc"); - - MsInjectionDataInfo info = infos.get(0); - assertEquals(sample.getId().longValue(), info.getMsInjectionSampleID()); - assertEquals(sample.getCode(), info.getMsInjectionSampleCode()); - assertEquals(sample.getRegistrationDate(), info.getMsInjectionSampleRegistrationDate()); - checkProperties(info.getMsInjectionSampleProperties(), p1, p2, p3); - assertEquals(parent.getId().longValue(), info.getBiologicalSampleID()); - assertEquals(parent.getIdentifier(), info.getBiologicalSampleIdentifier()); - checkProperties(info.getBiologicalSampleProperties(), p4, p5); - assertEquals("4747:space1/project1/exp1 date:1234567 {ex[EX]=exp}", - renderExperiment(info.getBiologicalExperiment())); - checkProperties(info.getBiologicalExperiment().getProperties(), p6); - List<DataSet> dataSets = new ArrayList<DataSet>(info.getDataSets()); - Collections.sort(dataSets, new Comparator<DataSet>() - { - @Override - public int compare(DataSet d1, DataSet d2) - { - return d1.getCode().compareTo(d2.getCode()); - } - }); - assertEquals("20:MZXML_DATA-20 [MZXML_DATA date:20] {n[N]=2.5}, children:15", - renderDataSet(dataSets.get(0))); - assertEquals("10:RAW_DATA-10 [RAW_DATA date:10] {n[N]=2.5}", renderDataSet(dataSets.get(1))); - assertEquals("15:MZXML_DATA-15 [MZXML_DATA date:15] {n[N]=2.5}, parent:20 , children:30", - renderDataSet(dataSets.get(0).getChildren().iterator().next())); - assertEquals("30:RAW_DATA-30 [RAW_DATA date:30] {n[N]=2.5}, parent:15", - renderDataSet(dataSets.get(0).getChildren().iterator().next().getChildren() - .iterator().next())); - assertEquals(2, dataSets.size()); - Map<String, Date> dates = info.getLatestDataSetRegistrationDates(); - assertEquals(30, dates.get(RAW_DATA).getTime()); - assertEquals(20, dates.get(MZXML_DATA).getTime()); - assertEquals(2, dates.size()); - assertEquals(1, infos.size()); - context.assertIsSatisfied(); - } - - private String renderExperiment(ch.systemsx.cisd.openbis.plugin.proteomics.shared.api.v1.dto.Experiment experiment) - { - StringBuilder builder = new StringBuilder(); - builder.append(experiment.getId()).append(":").append(experiment.getSpaceCode()); - builder.append('/').append(experiment.getProjectCode()); - builder.append('/').append(experiment.getCode()); - builder.append(" date:").append(experiment.getRegistrationDate().getTime()); - builder.append(' ').append(experiment.getProperties()); - return builder.toString(); - } - - private String renderDataSet(DataSet dataSet) - { - StringBuilder builder = new StringBuilder(); - builder.append(dataSet.getId()).append(":").append(dataSet.getCode()); - builder.append(" [").append(dataSet.getType()).append(" date:"); - builder.append(dataSet.getRegistrationDate().getTime()).append("] "); - builder.append(dataSet.getProperties()); - Set<DataSet> parents = dataSet.getParents(); - if (parents != null && parents.isEmpty() == false) - { - builder.append(", parent:"); - for (DataSet parent : parents) - { - builder.append(parent.getId()).append(' '); - } - } - Set<DataSet> children = dataSet.getChildren(); - if (children != null && children.isEmpty() == false) - { - builder.append(", children:"); - for (DataSet child : children) - { - builder.append(child.getId()).append(' '); - } - } - return builder.toString().trim(); - } - - @Test - public void testProcessDataSetsForUnknownUser() - { - prepareGetSession(); - prepareLoginLogout(null); - - try - { - service.processDataSets(SESSION_TOKEN, "abc", null, Arrays.asList("ds1")); - fail("UserFailureException expected"); - } catch (UserFailureException ex) - { - assertEquals("Unknown user ID: abc", ex.getMessage()); - } - - context.assertIsSatisfied(); - } - - @Test - public void testProcessDataSets() - { - prepareGetSession(); - prepareLoginLogout(session2); - context.checking(new Expectations() - { - { - one(internalService).processDataSets(session2.getSessionToken(), "dsp1", Arrays.asList("ds1")); - } - }); - - service.processDataSets(SESSION_TOKEN, "abc", "dsp1", Arrays.asList("ds1")); - - context.assertIsSatisfied(); - } - - @Test - public void testListExperiments() - { - prepareGetSession(); - prepareLoginLogout(session2); - final Experiment e = new Experiment(); - e.setId(42L); - e.setCode("E42"); - Project project = new Project(); - project.setCode("p"); - Space space = new Space(); - space.setCode("s"); - project.setSpace(space); - e.setProject(project); - e.setRegistrationDate(new Date(4711)); - EntityProperty p1 = new EntityProperty(); - PropertyType propertyType = new PropertyType(); - propertyType.setCode("ANSWER"); - propertyType.setLabel("answer"); - propertyType.setDataType(new DataType(DataTypeCode.INTEGER)); - p1.setPropertyType(propertyType); - p1.setValue("42"); - e.setProperties(Arrays.<IEntityProperty> asList(p1)); - context.checking(new Expectations() - { - { - one(internalService).listExperiments(session2.getSessionToken(), MS_SEARCH); - will(returnValue(Arrays.asList(e))); - } - }); - - List<ch.systemsx.cisd.openbis.plugin.proteomics.shared.api.v1.dto.Experiment> experiments = - service.listExperiments(SESSION_TOKEN, "abc", MS_SEARCH); - - assertEquals(e.getId().longValue(), experiments.get(0).getId()); - assertEquals(e.getCode(), experiments.get(0).getCode()); - assertEquals(e.getProject().getCode(), experiments.get(0).getProjectCode()); - assertEquals(e.getProject().getSpace().getCode(), experiments.get(0).getSpaceCode()); - assertEquals(e.getRegistrationDate(), experiments.get(0).getRegistrationDate()); - Map<PropertyKey, Serializable> properties = experiments.get(0).getProperties(); - Set<Entry<PropertyKey, Serializable>> entrySet = properties.entrySet(); - List<Entry<PropertyKey, Serializable>> list = new ArrayList<Entry<PropertyKey, Serializable>>(entrySet); - assertEquals(e.getProperties().get(0).getPropertyType().getCode(), list.get(0).getKey().getId()); - assertEquals(e.getProperties().get(0).getPropertyType().getLabel(), list.get(0).getKey().getLabel()); - Serializable value = list.get(0).getValue(); - assertEquals(Long.class, value.getClass()); - assertEquals(e.getProperties().get(0).getValue(), value.toString()); - assertEquals(1, properties.size()); - assertEquals(1, experiments.size()); - context.assertIsSatisfied(); - } - - @Test - public void testProcessSearchData() - { - prepareGetSession(); - prepareLoginLogout(session2); - final long[] ids = new long[] { 42 }; - context.checking(new Expectations() - { - { - one(internalService).processProteinResultDataSets(session2.getSessionToken(), - "dsp1", MS_SEARCH, ids); - } - }); - - service.processProteinResultDataSets(SESSION_TOKEN, "abc", "dsp1", MS_SEARCH, ids); - - context.assertIsSatisfied(); - } - - private void prepareLoginLogout(final SessionContextDTO mySession) - { - context.checking(new Expectations() - { - { - one(internalService).tryAuthenticate("abc", "dummy-password"); - will(returnValue(mySession)); - - if (mySession != null) - { - one(internalService).logout(mySession.getSessionToken()); - } - } - }); - } - - private void checkProperties(Map<PropertyKey, Serializable> properties, IEntityProperty... expectedProperties) - { - for (IEntityProperty expectedProperty : expectedProperties) - { - PropertyType propertyType = expectedProperty.getPropertyType(); - PropertyKey key = new PropertyKey(propertyType.getCode(), propertyType.getLabel()); - Serializable v = properties.get(key); - assertNotNull("Missing property: " + key, v); - assertEquals("Property " + propertyType, expectedProperty.tryGetAsString(), String.valueOf(v)); - } - assertEquals(expectedProperties.length, properties.size()); - } - - private IEntityProperty property(String code, DataTypeCode dataTypeCode, String value) - { - EntityProperty property = new EntityProperty(); - PropertyType propertyType = new PropertyType(); - propertyType.setCode(code.toUpperCase()); - propertyType.setLabel(code); - propertyType.setDataType(new DataType(dataTypeCode)); - property.setPropertyType(propertyType); - property.setValue(value); - return property; - } - - private AbstractExternalData createDataSet(String type, long date) - { - AbstractExternalData dataSet = new ch.systemsx.cisd.openbis.generic.shared.basic.dto.PhysicalDataSet(); - dataSet.setId(date); - dataSet.setCode(type + "-" + date); - dataSet.setDataSetType(new DataSetType(type)); - dataSet.setRegistrationDate(new Date(date)); - dataSet.setDataSetProperties(Arrays.asList(property("n", DataTypeCode.REAL, "2.5"))); - return dataSet; - } - -} diff --git a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/api/v1/ServerInterfaceRegressionTest.java b/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/api/v1/ServerInterfaceRegressionTest.java deleted file mode 100644 index 78a756dd9d2375be02653bdfd73f42f21c2c3e55..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/api/v1/ServerInterfaceRegressionTest.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright 2012 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.server.api.v1; - -import org.testng.annotations.Test; - -import ch.systemsx.cisd.openbis.generic.server.util.AnnotationAppliedTestCase; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.api.v1.IProteomicsDataService; - -/** - * @author Franz-Josef Elmer - */ -public class ServerInterfaceRegressionTest extends AnnotationAppliedTestCase -{ - @Test - public void testServerAnnotations() - { - assertMandatoryMethodAnnotations(IProteomicsDataService.class, ProteomicsDataService.class, - "logout: RolesAllowed\n" + "tryToAuthenticateAtRawDataServer: RolesAllowed\n", null); - } -} diff --git a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/authorization/validator/RawDataSampleValidatorTest.java b/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/authorization/validator/RawDataSampleValidatorTest.java deleted file mode 100644 index 1252d2eb5b7ec40a5a1e3210ed0a8c8bdecf4c97..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/authorization/validator/RawDataSampleValidatorTest.java +++ /dev/null @@ -1,182 +0,0 @@ -/* - * Copyright 2010 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.server.authorization.validator; - -import java.util.Arrays; -import java.util.LinkedHashSet; - -import org.jmock.Expectations; -import org.jmock.Mockery; -import org.testng.AssertJUnit; -import org.testng.annotations.AfterMethod; -import org.testng.annotations.BeforeMethod; -import org.testng.annotations.Test; - -import ch.systemsx.cisd.openbis.generic.server.authorization.AuthorizationDataProvider; -import ch.systemsx.cisd.openbis.generic.server.authorization.TestAuthorizationConfig; -import ch.systemsx.cisd.openbis.generic.server.dataaccess.IDAOFactory; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.AbstractExternalData; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.RoleWithHierarchy.RoleCode; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Space; -import ch.systemsx.cisd.openbis.generic.shared.dto.PersonPE; -import ch.systemsx.cisd.openbis.generic.shared.dto.RoleAssignmentPE; -import ch.systemsx.cisd.openbis.generic.shared.dto.SpacePE; -import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.SampleIdentifier; -import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.SampleIdentifierFactory; -import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.SpaceIdentifier; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.dto.MsInjectionSample; - -/** - * @author Franz-Josef Elmer - */ -public class RawDataSampleValidatorTest extends AssertJUnit -{ - - private static final MsInjectionSample NO_PARENT = create("no-parent", null); - - private static final MsInjectionSample WITH_INSTANCE_PARENT = create("with-instance-parent", "/parent"); - - private static final MsInjectionSample WITH_PARENT_IN_G1 = create("with-parent-in-g1", "/g1/parent"); - - private static final MsInjectionSample WITH_PARENT_IN_G2 = create("with-parent-in-g2", "/g2/parent"); - - private Mockery context; - - private RawDataSampleValidator validator; - - private IDAOFactory daoFactory; - - @BeforeMethod - protected void beforeMethod() - { - context = new Mockery(); - daoFactory = context.mock(IDAOFactory.class); - validator = new RawDataSampleValidator(); - validator.init(new AuthorizationDataProvider(daoFactory)); - } - - @AfterMethod - protected void afterMethod() - { - context.assertIsSatisfied(); - } - - private static MsInjectionSample create(String sampleCode, String parentSampleIdentifierOrNull) - { - Sample sample = new Sample(); - sample.setCode(sampleCode); - if (parentSampleIdentifierOrNull != null) - { - Sample parent = new Sample(); - parent.setIdentifier(parentSampleIdentifierOrNull); - SampleIdentifier identifier = - SampleIdentifierFactory.parse(parentSampleIdentifierOrNull); - parent.setCode(identifier.getSampleCode()); - SpaceIdentifier spaceLevel = identifier.getSpaceLevel(); - if (spaceLevel != null) - { - Space space = new Space(); - space.setCode(spaceLevel.getSpaceCode()); - parent.setSpace(space); - } - sample.setGeneratedFrom(parent); - } - return new MsInjectionSample(sample, Arrays.<AbstractExternalData> asList()); - } - - @Test - public void testUserWithNoRights() - { - context.checking(new Expectations() - { - { - allowing(daoFactory).getAuthorizationConfig(); - will(returnValue(new TestAuthorizationConfig(false, false))); - } - }); - - PersonPE person = createPersonWithRoles(); - - assertEquals(false, validator.isValid(person, NO_PARENT)); - assertEquals(true, validator.isValid(person, WITH_INSTANCE_PARENT)); - assertEquals(false, validator.isValid(person, WITH_PARENT_IN_G1)); - assertEquals(false, validator.isValid(person, WITH_PARENT_IN_G2)); - } - - @Test - public void testUserWithRightsForGroupG1() - { - context.checking(new Expectations() - { - { - allowing(daoFactory).getAuthorizationConfig(); - will(returnValue(new TestAuthorizationConfig(false, false))); - } - }); - - PersonPE person = createPersonWithRoles(createRole("G1")); - - assertEquals(false, validator.isValid(person, NO_PARENT)); - assertEquals(true, validator.isValid(person, WITH_INSTANCE_PARENT)); - assertEquals(true, validator.isValid(person, WITH_PARENT_IN_G1)); - assertEquals(false, validator.isValid(person, WITH_PARENT_IN_G2)); - } - - @Test - public void testUserWithRightsForGroupG1AndG2() - { - PersonPE person = createPersonWithRoles(createRole("G1"), createRole("G2")); - - assertEquals(false, validator.isValid(person, NO_PARENT)); - assertEquals(true, validator.isValid(person, WITH_INSTANCE_PARENT)); - assertEquals(true, validator.isValid(person, WITH_PARENT_IN_G1)); - assertEquals(true, validator.isValid(person, WITH_PARENT_IN_G2)); - } - - @Test - public void testUserWithRightsForForInstanceT() - { - PersonPE person = createPersonWithRoles(createRole(null)); - - assertEquals(false, validator.isValid(person, NO_PARENT)); - assertEquals(true, validator.isValid(person, WITH_INSTANCE_PARENT)); - assertEquals(true, validator.isValid(person, WITH_PARENT_IN_G1)); - assertEquals(true, validator.isValid(person, WITH_PARENT_IN_G2)); - } - - private PersonPE createPersonWithRoles(RoleAssignmentPE... roles) - { - PersonPE person = new PersonPE(); - person.setRoleAssignments(new LinkedHashSet<RoleAssignmentPE>(Arrays.asList(roles))); - return person; - } - - private RoleAssignmentPE createRole(String groupCodeOrNull) - { - RoleAssignmentPE role = new RoleAssignmentPE(); - role.setRole(RoleCode.ADMIN); - - if (groupCodeOrNull != null) - { - SpacePE group = new SpacePE(); - group.setCode(groupCodeOrNull); - role.setSpace(group); - } - return role; - } -} diff --git a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/AbstractBOTestCase.java b/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/AbstractBOTestCase.java deleted file mode 100644 index df0bba52ee2ddc8aa8422e1dd7160aa262e0851d..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/AbstractBOTestCase.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright 2011 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.server.business; - -import org.testng.annotations.BeforeMethod; - -import ch.systemsx.cisd.openbis.generic.shared.AbstractServerTestCase; -import ch.systemsx.cisd.openbis.plugin.proteomics.server.dataaccess.IPhosphoNetXDAOFactory; -import ch.systemsx.cisd.openbis.plugin.proteomics.server.dataaccess.IProteinQueryDAO; - -/** - * @author Franz-Josef Elmer - */ -public abstract class AbstractBOTestCase extends AbstractServerTestCase -{ - protected IPhosphoNetXDAOFactory specificDAOFactory; - - protected IProteinQueryDAO proteinDAO; - - @Override - @BeforeMethod - public void setUp() - { - super.setUp(); - specificDAOFactory = context.mock(IPhosphoNetXDAOFactory.class); - proteinDAO = context.mock(IProteinQueryDAO.class); - } - -} diff --git a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/AbstractLoaderTestCase.java b/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/AbstractLoaderTestCase.java deleted file mode 100644 index b8ea7079891d2f24d62db22a207b3f697430bdff..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/AbstractLoaderTestCase.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Copyright 2010 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.server.business; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.test.annotation.Rollback; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.transaction.annotation.Transactional; - -import ch.systemsx.cisd.authentication.Principal; -import ch.systemsx.cisd.openbis.generic.server.business.bo.ICommonBusinessObjectFactory; -import ch.systemsx.cisd.openbis.generic.server.dataaccess.db.AbstractDAOWithoutContextTest; -import ch.systemsx.cisd.openbis.generic.shared.CommonTestUtils; -import ch.systemsx.cisd.openbis.generic.shared.dto.Session; - -/** - * @author Franz-Josef Elmer - */ -@ContextConfiguration(locations = "classpath:proteomics-applicationContext.xml") -// In 'commonContext.xml', our transaction manager is called 'transaction-manager' (by default -// Spring looks for 'transactionManager'). -@Transactional(transactionManager = "transaction-manager") -@Rollback -public abstract class AbstractLoaderTestCase extends AbstractDAOWithoutContextTest -{ - private static final Principal PRINCIPAL = new Principal(CommonTestUtils.USER_ID, "john", - "doe", "j@d"); - - private static final String SESSION_TOKEN = "session-token"; - - protected ICommonBusinessObjectFactory boFactory; - - @Autowired - public final void setBoFactory(final ICommonBusinessObjectFactory boFactory) - { - this.boFactory = boFactory; - } - - protected Session session() - { - return new Session(CommonTestUtils.USER_ID, SESSION_TOKEN, - PRINCIPAL, "remote-host", 1); - } -} diff --git a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/AbundanceColumnDefinitionTableTest.java b/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/AbundanceColumnDefinitionTableTest.java deleted file mode 100644 index eb09955054bcdf837ac971d1e726db3e93fb132c..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/AbundanceColumnDefinitionTableTest.java +++ /dev/null @@ -1,169 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.server.business; - -import static ch.systemsx.cisd.openbis.plugin.proteomics.server.business.TreatmentFinder.TREATMENT_TYPE_CODE; -import static ch.systemsx.cisd.openbis.plugin.proteomics.server.business.TreatmentFinder.TREATMENT_VALUE_CODE; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; - -import org.testng.annotations.BeforeMethod; -import org.testng.annotations.Test; - -import ch.systemsx.cisd.openbis.generic.shared.AbstractServerTestCase; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataType; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataTypeCode; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityProperty; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IEntityProperty; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.PropertyType; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.VocabularyTerm; -import ch.systemsx.cisd.openbis.plugin.proteomics.server.business.AbundanceColumnDefinitionTable; -import ch.systemsx.cisd.openbis.plugin.proteomics.server.dataaccess.IPhosphoNetXDAOFactory; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.AbundanceColumnDefinition; - -/** - * @author Franz-Josef Elmer - */ -public class AbundanceColumnDefinitionTableTest extends AbstractServerTestCase -{ - private IPhosphoNetXDAOFactory phosphoNetXDAOFactory; - - private AbundanceColumnDefinitionTable table; - - @Override - @BeforeMethod - public void setUp() - { - super.setUp(); - phosphoNetXDAOFactory = context.mock(IPhosphoNetXDAOFactory.class); - table = new AbundanceColumnDefinitionTable(daoFactory, phosphoNetXDAOFactory, session); - } - - @Test - public void testNoAbundanceColumns() - { - List<AbundanceColumnDefinition> definitions = table.getSortedAndAggregatedDefinitions(null); - - assertEquals(0, definitions.size()); - - context.assertIsSatisfied(); - } - - @Test - public void testOneAbundanceColumnWithoutTreatment() - { - Sample s1 = createSample(42); - - table.add(s1); - List<AbundanceColumnDefinition> definitions = table.getSortedAndAggregatedDefinitions(null); - - assertEquals(1, definitions.size()); - assertEquals(42l, definitions.get(0).getID()); - assertEquals("code-42", definitions.get(0).getSampleCode()); - assertEquals(0, definitions.get(0).getTreatments().size()); - - context.assertIsSatisfied(); - } - - @Test - public void testOneAbundanceColumnWithOneTreatment() - { - Sample s1 = createSample(42); - addTreatment(s1, "", "abc"); - - table.add(s1); - List<AbundanceColumnDefinition> definitions = table.getSortedAndAggregatedDefinitions(null); - - assertEquals(1, definitions.size()); - assertEquals(42l, definitions.get(0).getID()); - assertEquals("code-42", definitions.get(0).getSampleCode()); - assertEquals(1, definitions.get(0).getTreatments().size()); - assertEquals("pH", definitions.get(0).getTreatments().get(0).getType()); - assertEquals("PH", definitions.get(0).getTreatments().get(0).getTypeCode()); - assertEquals("abc", definitions.get(0).getTreatments().get(0).getValue()); - - context.assertIsSatisfied(); - } - - @Test - public void testAbundanceColumnsForTwoSamplesWithSameParent() - { - Sample s1 = createSample(42); - Sample s2 = createSample(43); - Sample parent = createSample(4711); - s1.setGeneratedFrom(parent); - s2.setGeneratedFrom(parent); - addTreatment(parent, "", "abc"); - - table.add(s1); - table.add(s2); - List<AbundanceColumnDefinition> definitions = table.getSortedAndAggregatedDefinitions(null); - - assertEquals(1, definitions.size()); - assertEquals(4711l, definitions.get(0).getID()); - assertEquals("code-4711", definitions.get(0).getSampleCode()); - assertEquals(1, definitions.get(0).getTreatments().size()); - assertEquals("pH", definitions.get(0).getTreatments().get(0).getType()); - assertEquals("PH", definitions.get(0).getTreatments().get(0).getTypeCode()); - assertEquals("abc", definitions.get(0).getTreatments().get(0).getValue()); - - context.assertIsSatisfied(); - } - - private Sample createSample(long sampleID) - { - Sample sample = new Sample(); - sample.setId(sampleID); - sample.setCode("code-" + sampleID); - sample.setPermId("abc-" + sampleID); - sample.setProperties(Collections.<IEntityProperty> emptyList()); - return sample; - } - - private void addTreatment(Sample sample, String type, String value) - { - List<IEntityProperty> properties = new ArrayList<IEntityProperty>(); - EntityProperty sampleProperty = new EntityProperty(); - sampleProperty.setPropertyType(createPropertyType(TREATMENT_TYPE_CODE + type)); - VocabularyTerm term = new VocabularyTerm(); - term.setCode("PH"); - term.setLabel("pH"); - sampleProperty.setVocabularyTerm(term); - properties.add(sampleProperty); - - sampleProperty = new EntityProperty(); - sampleProperty.setPropertyType(createPropertyType(TREATMENT_VALUE_CODE + type)); - sampleProperty.setValue(value); - properties.add(sampleProperty); - - sample.setProperties(properties); - } - - private PropertyType createPropertyType(String code) - { - PropertyType propertyType = new PropertyType(); - propertyType.setCode(code); - DataType dataType = new DataType(); - dataType.setCode(DataTypeCode.VARCHAR); - propertyType.setDataType(dataType); - return propertyType; - } - -} diff --git a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/AbundanceManagerTest.java b/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/AbundanceManagerTest.java deleted file mode 100644 index 34fe966b910c9c43988ce98685bfdec65b96c0c9..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/AbundanceManagerTest.java +++ /dev/null @@ -1,170 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.server.business; - -import java.util.Arrays; -import java.util.Collection; -import java.util.Collections; -import java.util.Iterator; - -import org.jmock.Expectations; -import org.testng.annotations.BeforeMethod; -import org.testng.annotations.Test; - -import ch.systemsx.cisd.openbis.generic.shared.AbstractServerTestCase; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample; -import ch.systemsx.cisd.openbis.plugin.proteomics.server.business.AbundanceManager; -import ch.systemsx.cisd.openbis.plugin.proteomics.server.business.ISampleProvider; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.dto.ProteinAbundance; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.dto.ProteinReferenceWithProtein; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.dto.ProteinWithAbundances; - -/** - * @author Franz-Josef Elmer - */ -public class AbundanceManagerTest extends AbstractServerTestCase -{ - private static final String PERM_ID1 = "s101"; - - private static final String PERM_ID2 = "s102"; - - private static final long SAMPLE_ID_A = 42; - - private static final long SAMPLE_ID_B = 4711; - - private AbundanceManager abundanceManager; - - private ISampleProvider sampleProvider; - - @Override - @BeforeMethod - public void setUp() - { - super.setUp(); - - sampleProvider = context.mock(ISampleProvider.class); - abundanceManager = new AbundanceManager(sampleProvider); - } - - @Test - public void testNoProteinReferenceHandled() - { - assertEquals(0, abundanceManager.getSampleIDs().size()); - assertEquals(0, abundanceManager.getProteinsWithAbundances().size()); - } - - @Test - public void testHandleTwoProteinReferencesButOnlyOneHasAnAbundance() - { - prepareSampleIDProvider(); - ProteinReferenceWithProtein protein1 = new ProteinReferenceWithProtein(); - protein1.setId(1); - protein1.setAccessionNumber("abc1"); - protein1.setDescription("abc one"); - ProteinAbundance proteinAbundance = new ProteinAbundance(); - proteinAbundance.setSampleID(PERM_ID1); - proteinAbundance.setAbundance(1.5); - abundanceManager.handle(protein1, Collections.singletonList(proteinAbundance)); - ProteinReferenceWithProtein protein2 = new ProteinReferenceWithProtein(); - protein2.setId(2); - protein2.setAccessionNumber("abc2"); - protein2.setDescription("abc two"); - abundanceManager.handle(protein2, null); - - assertEquals(1, abundanceManager.getSampleIDs().size()); - Collection<ProteinWithAbundances> proteinsWithAbundances = abundanceManager.getProteinsWithAbundances(); - assertEquals(2, proteinsWithAbundances.size()); - Iterator<ProteinWithAbundances> iterator = proteinsWithAbundances.iterator(); - ProteinWithAbundances p1 = iterator.next(); - assertEquals(1, p1.getId()); - assertEquals("abc one", p1.getDescription()); - assertEquals("abc1", p1.getAccessionNumber()); - assertEquals(1, p1.getSampleIDs().size()); - assertEquals(SAMPLE_ID_A, p1.getSampleIDs().iterator().next().longValue()); - assertEquals(0, p1.getAbundancesForSample(12345678).length); - assertEquals(1, p1.getAbundancesForSample(SAMPLE_ID_A).length); - assertEquals(1.5, p1.getAbundancesForSample(SAMPLE_ID_A)[0]); - ProteinWithAbundances p2 = iterator.next(); - assertEquals(2, p2.getId()); - assertEquals("abc two", p2.getDescription()); - assertEquals("abc2", p2.getAccessionNumber()); - assertEquals(0, p2.getSampleIDs().size()); - - context.assertIsSatisfied(); - } - - @Test - public void testHandleProteinReferencesWithManyAbundancesForTwoSamples() - { - prepareSampleIDProvider(); - ProteinReferenceWithProtein protein1 = new ProteinReferenceWithProtein(); - protein1.setId(1); - protein1.setAccessionNumber("abc1"); - protein1.setDescription("abc one"); - - abundanceManager.handle(protein1, Arrays.asList(a(PERM_ID1, 1.5), a(PERM_ID1, 2.25), a( - PERM_ID2, 42), a(PERM_ID2, 4.75), a(PERM_ID2, 7.5))); - - assertEquals(2, abundanceManager.getSampleIDs().size()); - Collection<ProteinWithAbundances> proteinsWithAbundances = abundanceManager.getProteinsWithAbundances(); - assertEquals(1, proteinsWithAbundances.size()); - ProteinWithAbundances protein = proteinsWithAbundances.iterator().next(); - assertEquals(1, protein.getId()); - assertEquals("abc one", protein.getDescription()); - assertEquals("abc1", protein.getAccessionNumber()); - assertEquals(2, protein.getSampleIDs().size()); - Iterator<Long> iterator = protein.getSampleIDs().iterator(); - assertEquals(SAMPLE_ID_A, iterator.next().longValue()); - assertEquals(SAMPLE_ID_B, iterator.next().longValue()); - assertEquals(2, protein.getAbundancesForSample(SAMPLE_ID_A).length); - assertEquals(1.5, protein.getAbundancesForSample(SAMPLE_ID_A)[0]); - assertEquals(2.25, protein.getAbundancesForSample(SAMPLE_ID_A)[1]); - assertEquals(3, protein.getAbundancesForSample(SAMPLE_ID_B).length); - assertEquals(42.0, protein.getAbundancesForSample(SAMPLE_ID_B)[0]); - assertEquals(4.75, protein.getAbundancesForSample(SAMPLE_ID_B)[1]); - assertEquals(7.5, protein.getAbundancesForSample(SAMPLE_ID_B)[2]); - - context.assertIsSatisfied(); - } - - private void prepareSampleIDProvider() - { - context.checking(new Expectations() - { - { - allowing(sampleProvider).getSample(PERM_ID1); - Sample s1 = new Sample(); - s1.setId(SAMPLE_ID_A); - will(returnValue(s1)); - allowing(sampleProvider).getSample(PERM_ID2); - Sample s2 = new Sample(); - Sample parent = new Sample(); - parent.setId(SAMPLE_ID_B); - s2.setGeneratedFrom(parent); - will(returnValue(s2)); - } - }); - } - - private ProteinAbundance a(String samplePermID, double abundance) - { - ProteinAbundance protein = new ProteinAbundance(); - protein.setSampleID(samplePermID); - protein.setAbundance(abundance); - return protein; - } -} diff --git a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/AccessionNumberBuilderTest.java b/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/AccessionNumberBuilderTest.java deleted file mode 100644 index 4a881fe08b1375f1e66f6a0de79cb44c422a6805..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/AccessionNumberBuilderTest.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.server.business; - -import org.testng.AssertJUnit; -import org.testng.annotations.Test; - -import ch.systemsx.cisd.openbis.plugin.proteomics.server.business.AccessionNumberBuilder; - -/** - * @author Franz-Josef Elmer - */ -public class AccessionNumberBuilderTest extends AssertJUnit -{ - @Test - public void test() - { - check(null, "", ""); - check(null, "abc", "abc"); - check(null, "DECOY_abc", "DECOY_abc"); - check("", "abc", "|abc"); - check("", "DECOY_abc", "DECOY_|abc"); - check("", "ab", "|ab|c"); - check("a", "b", "a|b"); - check("a", "DECOY_b", "DECOY_a|b"); - check("a", "DECOY_b", "DECOY_a|DECOY_b"); - check("a", "b", "a|b|c"); - check("a", "DECOY_b", "DECOY_a|b|c"); - check("a", "DECOY_b", "DECOY_a|DECOY_b|c"); - check("a", "", "a||c"); - check("a", "DECOY_", "DECOY_a||c"); - check("", "", "||c"); - check("", "", "||"); - check("", "", "|"); - } - - private void check(String expectedType, String expectedAccessionNumber, String fullAccessionNumber) - { - AccessionNumberBuilder builder = new AccessionNumberBuilder(fullAccessionNumber); - assertEquals(expectedType, builder.getTypeOrNull()); - assertEquals(expectedAccessionNumber, builder.getAccessionNumber()); - } -} diff --git a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/ErrorModelTest.java b/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/ErrorModelTest.java deleted file mode 100644 index 394afd559d3063441f30f29a44eed4b91a992055..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/ErrorModelTest.java +++ /dev/null @@ -1,159 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.server.business; - -import org.jmock.Expectations; -import org.jmock.Mockery; -import org.testng.AssertJUnit; -import org.testng.annotations.AfterMethod; -import org.testng.annotations.BeforeMethod; -import org.testng.annotations.Test; - -import ch.systemsx.cisd.openbis.common.eodsql.MockDataSet; -import ch.systemsx.cisd.openbis.plugin.proteomics.server.dataaccess.IProteinQueryDAO; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.dto.IdentifiedProtein; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.dto.ProbabilityFDRMapping; - -/** - * @author Franz-Josef Elmer - */ -public class ErrorModelTest extends AssertJUnit -{ - private static final double TOL = 1e-6; - - private static final long DATA_SET1_ID = 42; - - private static final long DATA_SET2_ID = 43; - - private static final long DATA_SET3_ID = 44; - - private Mockery context; - - private IProteinQueryDAO proteinQueryDAO; - - private ErrorModel errorModel; - - @BeforeMethod - public void beforeMethod() - { - context = new Mockery(); - proteinQueryDAO = context.mock(IProteinQueryDAO.class); - errorModel = new ErrorModel(proteinQueryDAO); - context.checking(new Expectations() - { - { - - atMost(1).of(proteinQueryDAO).getProbabilityFDRMapping(DATA_SET1_ID); - MockDataSet<ProbabilityFDRMapping> dataSet1 = new MockDataSet<ProbabilityFDRMapping>(); - createEntry(dataSet1, 0.4, 0.9); - createEntry(dataSet1, 0.5, 0.95); - will(returnValue(dataSet1)); - - atMost(1).of(proteinQueryDAO).getProbabilityFDRMapping(DATA_SET2_ID); - MockDataSet<ProbabilityFDRMapping> dataSet2 = new MockDataSet<ProbabilityFDRMapping>(); - createEntry(dataSet2, 1, 1); - createEntry(dataSet2, 0.4, 0.9); - createEntry(dataSet2, 0.1, 0.7); - createEntry(dataSet2, 0.0, 0.6); - will(returnValue(dataSet2)); - - atMost(1).of(proteinQueryDAO).getProbabilityFDRMapping(DATA_SET3_ID); - MockDataSet<ProbabilityFDRMapping> dataSet3 = new MockDataSet<ProbabilityFDRMapping>(); - will(returnValue(dataSet3)); - } - }); - } - - @AfterMethod - public void afterMethod() - { - // To following line of code should also be called at the end of each test method. - // Otherwise one do not known which test failed. - context.assertIsSatisfied(); - } - - @Test - public void testExact() - { - IdentifiedProtein protein = create(DATA_SET1_ID, 0.4); - errorModel.setFalseDiscoveryRateFor(protein); - - assertEquals(0.9, protein.getFalseDiscoveryRate(), TOL); - - context.assertIsSatisfied(); - } - - @Test - public void testInterpolation() - { - IdentifiedProtein protein = create(DATA_SET1_ID, 0.42); - errorModel.setFalseDiscoveryRateFor(protein); - - assertEquals(0.91, protein.getFalseDiscoveryRate(), TOL); - - context.assertIsSatisfied(); - } - - @Test - public void testCachedMapping() - { - IdentifiedProtein protein = create(DATA_SET1_ID, 0.42); - errorModel.setFalseDiscoveryRateFor(protein); - - assertEquals(0.91, protein.getFalseDiscoveryRate(), TOL); - - protein = create(DATA_SET2_ID, 0.25); - errorModel.setFalseDiscoveryRateFor(protein); - - assertEquals(0.8, protein.getFalseDiscoveryRate(), TOL); - - protein = create(DATA_SET1_ID, 0.5); - errorModel.setFalseDiscoveryRateFor(protein); - - assertEquals(0.95, protein.getFalseDiscoveryRate(), TOL); - - context.assertIsSatisfied(); - } - - @Test - public void testNoMappings() - { - IdentifiedProtein protein = create(DATA_SET3_ID, 0.2); - - errorModel.setFalseDiscoveryRateFor(protein); - - double falseDiscoveryRate = protein.getFalseDiscoveryRate(); - assertTrue("unexpected FDR: " + falseDiscoveryRate, Double.isNaN(falseDiscoveryRate)); - } - - private IdentifiedProtein create(long dataSetID, double probability) - { - IdentifiedProtein protein = new IdentifiedProtein(); - protein.setDataSetID(dataSetID); - protein.setProbability(probability); - return protein; - } - - private void createEntry(MockDataSet<ProbabilityFDRMapping> dataSet, double propability, - double falseDiscoveryRate) - { - ProbabilityFDRMapping mapping = new ProbabilityFDRMapping(); - mapping.setProbability(propability); - mapping.setFalseDiscoveryRate(falseDiscoveryRate); - dataSet.add(mapping); - } -} diff --git a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/ExperimentLoaderTest.java b/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/ExperimentLoaderTest.java deleted file mode 100644 index 3f7b6ad988774e5f6aca5357ed05e99d677df2f9..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/ExperimentLoaderTest.java +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Copyright 2010 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.server.business; - -import static org.testng.AssertJUnit.assertEquals; - -import java.util.ArrayList; -import java.util.List; - -import org.testng.annotations.Test; - -import ch.systemsx.cisd.openbis.generic.server.TestJythonEvaluatorPool; -import ch.systemsx.cisd.openbis.generic.server.dataaccess.ISampleDAO; -import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Experiment; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample; -import ch.systemsx.cisd.openbis.generic.shared.managed_property.ManagedPropertyEvaluatorFactory; -import ch.systemsx.cisd.openbis.generic.shared.translator.SampleTranslator; - -/** - * @author Franz-Josef Elmer - */ -@Test(groups = "db") -public class ExperimentLoaderTest extends AbstractLoaderTestCase -{ - @Test - public void test() - { - ExperimentLoader loader = - new ExperimentLoader(daoFactory, new ManagedPropertyEvaluatorFactory(null, new TestJythonEvaluatorPool())); - List<Sample> samples = loadSamples(980L, 981L, 986L); - - loader.enrichWithExperiments(session(), samples); - - StringBuilder builder = new StringBuilder(); - for (Sample sample : samples) - { - builder.append(sample.getId()).append(' ').append(sample.getCode()); - Experiment experiment = sample.getExperiment(); - if (experiment != null) - { - builder.append(": ").append(experiment.getCode()).append(' '); - builder.append(getSortedProperties(experiment)); - } - builder.append('\n'); - } - assertEquals("980 3V-126\n" + "981 DP\n" - + "986 3VCP5: EXP10 [DESCRIPTION: A simple experiment, GENDER: MALE]\n", - builder.toString()); - } - - private List<Sample> loadSamples(Long... ids) - { - ISampleDAO sampleDAO = daoFactory.getSampleDAO(); - List<Sample> list = new ArrayList<Sample>(); - for (Long id : ids) - { - list.add(SampleTranslator.translate(sampleDAO.tryGetByTechId(new TechId(id)), "", null, - new ManagedPropertyEvaluatorFactory(null, new TestJythonEvaluatorPool()), null)); - - } - return list; - } -} diff --git a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/ProteinInfoTableTest.java b/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/ProteinInfoTableTest.java deleted file mode 100644 index 3c2741cf5b658882a3ab1ab0ac02d73b30e4f062..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/ProteinInfoTableTest.java +++ /dev/null @@ -1,302 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.server.business; - -import it.unimi.dsi.fastutil.longs.LongArraySet; -import it.unimi.dsi.fastutil.longs.LongSet; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; -import java.util.Map; - -import net.lemnik.eodsql.DataSet; - -import org.jmock.Expectations; -import org.testng.annotations.BeforeMethod; -import org.testng.annotations.Test; - -import ch.systemsx.cisd.openbis.common.eodsql.MockDataSet; -import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample; -import ch.systemsx.cisd.openbis.generic.shared.dto.ExperimentPE; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.AbundanceColumnDefinition; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.AggregateFunction; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.ProteinInfo; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.dto.ProbabilityFDRMapping; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.dto.ProteinAbundance; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.dto.ProteinReferenceWithProtein; - -/** - * @author Franz-Josef Elmer - */ -public class ProteinInfoTableTest extends AbstractBOTestCase -{ - private static final double COVERAGE = 0.5; - - private static final String PERM_ID_PREFIX = "abc-"; - - private static final long SAMPLE_ID_3 = 211L; - - private static final long SAMPLE_ID_2 = 102L; - - private static final long SAMPLE_ID_1 = 101L; - - private static final Double ABUNDANCE = new Double(47.11); - - private static final long PROTEIN_ID = 4141L; - - private static final long PROTEIN_REFERENCE_ID = 41L; - - private static final String SAMPLE_PERM_ID = "s47-11"; - - private static final long SAMPLE_ID = 4711; - - private static final long DATA_SET_ID = 42L; - - private static final TechId EXPERIMENT_ID = new TechId(234L); - - private static final String EXPERIMENT_PERM_ID = "abc-234"; - - private static final double FALSE_DISCOVERY_RATE = 0.25; - - private static final String ACCESSION_NUMBER = "ABC123"; - - private ProteinInfoTable table; - - private ArrayList<AbundanceColumnDefinition> definitions; - - private ISampleProvider sampleProvider; - - @Override - @BeforeMethod - public void setUp() - { - super.setUp(); - sampleProvider = context.mock(ISampleProvider.class); - table = new ProteinInfoTable(daoFactory, specificDAOFactory, session, sampleProvider); - definitions = new ArrayList<AbundanceColumnDefinition>(); - definitions.add(create(SAMPLE_ID_1, SAMPLE_ID_2)); - definitions.add(create(SAMPLE_ID_3)); - } - - private AbundanceColumnDefinition create(long... ids) - { - AbundanceColumnDefinition definition = new AbundanceColumnDefinition(); - for (long id : ids) - { - definition.addSampleID(id); - } - return definition; - } - - @Test - public void testLoadLeadingToAnEmptyTable() - { - prepareGetProteinQueryDAO(EXPERIMENT_PERM_ID); - MockDataSet<ProteinReferenceWithProtein> proteinReferences = new MockDataSet<ProteinReferenceWithProtein>(); - MockDataSet<ProteinAbundance> proteinAbundances = new MockDataSet<ProteinAbundance>(); - prepareLoadDataSet(proteinReferences, proteinAbundances); - - table.load(Arrays.<AbundanceColumnDefinition> asList(), EXPERIMENT_ID, - FALSE_DISCOVERY_RATE, AggregateFunction.MEAN, false); - - assertEquals(0, table.getProteinInfos().size()); - - assertEquals(true, proteinReferences.hasCloseBeenInvoked()); - assertEquals(true, proteinAbundances.hasCloseBeenInvoked()); - context.assertIsSatisfied(); - } - - @Test - public void testSimpleLoad() - { - prepareGetProteinQueryDAO(EXPERIMENT_PERM_ID); - MockDataSet<ProteinReferenceWithProtein> proteinReferences = - new MockDataSet<ProteinReferenceWithProtein>(); - MockDataSet<ProteinAbundance> abundances = new MockDataSet<ProteinAbundance>(); - ProteinReferenceWithProtein proteinReference = new ProteinReferenceWithProtein(); - proteinReference.setDataSetID(DATA_SET_ID); - proteinReference.setProteinID(PROTEIN_ID); - proteinReference.setAccessionNumber(ACCESSION_NUMBER); - proteinReference.setId(PROTEIN_REFERENCE_ID); - proteinReferences.add(proteinReference); - ProteinAbundance proteinAbundance = new ProteinAbundance(); - proteinAbundance.setId(PROTEIN_ID); - proteinAbundance.setAbundance(ABUNDANCE); - proteinAbundance.setSampleID(SAMPLE_PERM_ID); - abundances.add(proteinAbundance); - proteinReference = new ProteinReferenceWithProtein(); - proteinReference.setProteinID(PROTEIN_ID); - proteinReference.setId(PROTEIN_REFERENCE_ID); - proteinReference.setProbability(1); - proteinReference.setDataSetID(DATA_SET_ID); - proteinReferences.add(proteinReference); - final MockDataSet<ProbabilityFDRMapping> mappings = new MockDataSet<ProbabilityFDRMapping>(); - mappings.add(new ProbabilityFDRMapping()); - ProbabilityFDRMapping mapping = new ProbabilityFDRMapping(); - mapping.setProbability(1); - mapping.setFalseDiscoveryRate(1); - mappings.add(mapping); - prepareLoadDataSet(proteinReferences, abundances); - context.checking(new Expectations() - { - { - one(proteinDAO).getProbabilityFDRMapping(DATA_SET_ID); - will(returnValue(mappings)); - - one(sampleProvider).getSample(SAMPLE_PERM_ID); - Sample sample = new Sample(); - Sample parent = new Sample(); - parent.setId(SAMPLE_ID); - sample.setGeneratedFrom(parent); - will(returnValue(sample)); - } - }); - - table.load(Arrays.<AbundanceColumnDefinition> asList(), EXPERIMENT_ID, - FALSE_DISCOVERY_RATE, AggregateFunction.MEAN, false); - - Collection<ProteinInfo> proteins = table.getProteinInfos(); - assertEquals(1, proteins.size()); - ProteinInfo protein = proteins.iterator().next(); - assertEquals(PROTEIN_REFERENCE_ID, protein.getId().getId().longValue()); - assertEquals(ACCESSION_NUMBER, protein.getAccessionNumber()); - - assertEquals(true, proteinReferences.hasCloseBeenInvoked()); - assertEquals(true, mappings.hasCloseBeenInvoked()); - context.assertIsSatisfied(); - } - - @Test - public void testLoadWithAggregationOnOriginal() - { - checkAggregationType(2.0, true); - } - - @Test - public void testLoadWithAggregationOnAggregation() - { - checkAggregationType(2.25, false); - } - - private void checkAggregationType(double expectedAbundance, boolean aggregateOriginal) - { - prepareGetProteinQueryDAO(EXPERIMENT_PERM_ID); - final MockDataSet<ProteinReferenceWithProtein> proteinReferences = - new MockDataSet<ProteinReferenceWithProtein>(); - ProteinReferenceWithProtein proteinReference = new ProteinReferenceWithProtein(); - proteinReference.setProteinID(PROTEIN_ID); - proteinReference.setDataSetID(DATA_SET_ID); - proteinReference.setAccessionNumber(ACCESSION_NUMBER); - proteinReference.setId(PROTEIN_REFERENCE_ID); - proteinReference.setCoverage(COVERAGE); - proteinReferences.add(proteinReference); - MockDataSet<ProteinAbundance> proteinAbundances = new MockDataSet<ProteinAbundance>(); - proteinAbundances.add(createProteinAbundance(SAMPLE_ID_1, 1)); - proteinAbundances.add(createProteinAbundance(SAMPLE_ID_1, 2)); - proteinAbundances.add(createProteinAbundance(SAMPLE_ID_2, 3)); - proteinAbundances.add(createProteinAbundance(SAMPLE_ID_3, 20)); - final MockDataSet<ProbabilityFDRMapping> mappings = new MockDataSet<ProbabilityFDRMapping>(); - mappings.add(new ProbabilityFDRMapping()); - ProbabilityFDRMapping mapping = new ProbabilityFDRMapping(); - mapping.setProbability(1); - mapping.setFalseDiscoveryRate(1); - mappings.add(mapping); - prepareLoadDataSet(proteinReferences, proteinAbundances); - context.checking(new Expectations() - { - { - one(proteinDAO).getProbabilityFDRMapping(DATA_SET_ID); - will(returnValue(mappings)); - - for (long id : new long[] { SAMPLE_ID_1, SAMPLE_ID_2, SAMPLE_ID_3 }) - { - atLeast(1).of(sampleProvider).getSample(PERM_ID_PREFIX + id); - Sample sample = new Sample(); - sample.setId(id); - will(returnValue(sample)); - } - } - }); - - table.load(definitions, EXPERIMENT_ID, - FALSE_DISCOVERY_RATE, AggregateFunction.MEAN, aggregateOriginal); - - Collection<ProteinInfo> proteins = table.getProteinInfos(); - assertEquals(1, proteins.size()); - ProteinInfo protein = proteins.iterator().next(); - assertEquals(PROTEIN_REFERENCE_ID, protein.getId().getId().longValue()); - assertEquals(ACCESSION_NUMBER, protein.getAccessionNumber()); - Map<Long, Double> abundances = protein.getAbundances(); - assertEquals(2, abundances.size()); - assertEquals(expectedAbundance, abundances.get(SAMPLE_ID_1 * 37 + SAMPLE_ID_2).doubleValue()); - assertEquals(20.0, abundances.get(SAMPLE_ID_3).doubleValue()); - assertEquals(100 * COVERAGE, protein.getCoverage()); - - assertEquals(true, proteinReferences.hasCloseBeenInvoked()); - assertEquals(true, mappings.hasCloseBeenInvoked()); - context.assertIsSatisfied(); - } - - private void prepareGetProteinQueryDAO(final String experimentPermID) - { - context.checking(new Expectations() - { - { - one(specificDAOFactory).getProteinQueryDAO(experimentPermID); - will(returnValue(proteinDAO)); - } - }); - } - - private void prepareLoadDataSet( - final MockDataSet<ProteinReferenceWithProtein> proteinReferences, - final DataSet<ProteinAbundance> proteinAbundances) - { - context.checking(new Expectations() - { - { - one(experimentDAO).getByTechId(EXPERIMENT_ID); - ExperimentPE experimentPE = new ExperimentPE(); - experimentPE.setPermId(EXPERIMENT_PERM_ID); - will(returnValue(experimentPE)); - - one(proteinDAO).listProteinReferencesByExperiment(EXPERIMENT_PERM_ID); - will(returnValue(proteinReferences)); - - LongSet proteinIDs = new LongArraySet(); - for (ProteinReferenceWithProtein p : proteinReferences) - { - proteinIDs.add(p.getProteinID()); - } - one(proteinDAO).listProteinWithAbundanceByExperiment(proteinIDs); - will(returnValue(proteinAbundances)); - } - }); - } - - private ProteinAbundance createProteinAbundance(long sampleID, double abundance) - { - ProteinAbundance proteinAbundance = new ProteinAbundance(); - proteinAbundance.setSampleID(PERM_ID_PREFIX + sampleID); - proteinAbundance.setId(PROTEIN_ID); - proteinAbundance.setAbundance(abundance); - return proteinAbundance; - } - -} diff --git a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/ProteinRelatedSampleTableTest.java b/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/ProteinRelatedSampleTableTest.java deleted file mode 100644 index 66e5a0a788eab2c5df8f2c0bcc5f9522e8ec69da..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/ProteinRelatedSampleTableTest.java +++ /dev/null @@ -1,182 +0,0 @@ -/* - * Copyright 2011 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.server.business; - -import java.util.List; - -import org.jmock.Expectations; -import org.testng.annotations.BeforeMethod; -import org.testng.annotations.Test; - -import ch.systemsx.cisd.openbis.common.eodsql.MockDataSet; -import ch.systemsx.cisd.openbis.generic.server.TestJythonEvaluatorPool; -import ch.systemsx.cisd.openbis.generic.shared.CommonTestUtils; -import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataTypeCode; -import ch.systemsx.cisd.openbis.generic.shared.dto.EntityTypePropertyTypePE; -import ch.systemsx.cisd.openbis.generic.shared.dto.ExperimentPE; -import ch.systemsx.cisd.openbis.generic.shared.dto.PropertyTypePE; -import ch.systemsx.cisd.openbis.generic.shared.dto.SamplePE; -import ch.systemsx.cisd.openbis.generic.shared.dto.SampleTypePE; -import ch.systemsx.cisd.openbis.generic.shared.dto.SpacePE; -import ch.systemsx.cisd.openbis.generic.shared.dto.builders.EntityTypePropertyTypePEBuilder; -import ch.systemsx.cisd.openbis.generic.shared.dto.builders.SamplePEBuilder; -import ch.systemsx.cisd.openbis.generic.shared.dto.builders.SampleTypePEBuilder; -import ch.systemsx.cisd.openbis.generic.shared.dto.builders.SpacePEBuilder; -import ch.systemsx.cisd.openbis.generic.shared.managed_property.ManagedPropertyEvaluatorFactory; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.ProteinRelatedSample; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.dto.SampleAbundance; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.dto.SamplePeptideModification; - -/** - * @author Franz-Josef Elmer - */ -public class ProteinRelatedSampleTableTest extends AbstractBOTestCase -{ - private ProteinRelatedSampleTable table; - - private SamplePE sample1; - - private SamplePE sample2; - - private SamplePE sample3; - - @Override - @BeforeMethod - public void setUp() - { - super.setUp(); - table = - new ProteinRelatedSampleTable(daoFactory, specificDAOFactory, - new ManagedPropertyEvaluatorFactory(null, new TestJythonEvaluatorPool())); - - SpacePE space = - new SpacePEBuilder() - .code("s") - .getSpace(); - SampleTypePEBuilder sampleTypeBuilder = new SampleTypePEBuilder().code("my-type"); - PropertyTypePE propertyType = - CommonTestUtils.createPropertyType("A", DataTypeCode.VARCHAR, null, null); - EntityTypePropertyTypePEBuilder e = sampleTypeBuilder.assign(propertyType); - EntityTypePropertyTypePE etpt = e.getEntityTypePropertyType(); - SampleTypePE sampleType = sampleTypeBuilder.getSampleType(); - sample1 = - new SamplePEBuilder(1).space(space).code("S1").permID("s-1").type(sampleType) - .property(etpt, "hello").getSample(); - sample2 = - new SamplePEBuilder(2).space(space).code("S2").permID("s-2").type(sampleType) - .getSample(); - sample3 = - new SamplePEBuilder(3).space(space).code("S3").permID("s-3").type(sampleType) - .getSample(); - } - - @Test - public void test() - { - final TechId experimentID = new TechId(42); - final TechId proteinReferenceID = new TechId(43); - context.checking(new Expectations() - { - { - one(specificDAOFactory).getProteinQueryDAO(experimentID); - will(returnValue(proteinDAO)); - - one(experimentDAO).getByTechId(experimentID); - ExperimentPE experiment = new ExperimentPE(); - experiment.setPermId("exp-1"); - will(returnValue(experiment)); - - one(proteinDAO).listSampleAbundanceByProtein(experiment.getPermId(), - proteinReferenceID.getId()); - MockDataSet<SampleAbundance> sampleAbundances = - new MockDataSet<SampleAbundance>(); - sampleAbundances.add(sampleAbundance("s-1", 0.25)); - sampleAbundances.add(sampleAbundance("s-2", 0.75)); - will(returnValue(sampleAbundances)); - - one(proteinDAO).listSamplePeptideModificatioByProtein(experiment.getPermId(), - proteinReferenceID.getId()); - MockDataSet<SamplePeptideModification> modifications = - new MockDataSet<SamplePeptideModification>(); - modifications.add(modification("s-2", "ab", 1, 21.5, 0.25)); - modifications.add(modification("s-3", "def", 1, 12.375, 0.5)); - modifications.add(modification("s-3", "def", 3, -1.5, 0.75)); - will(returnValue(modifications)); - - one(sampleDAO).tryToFindByPermID("s-1"); - will(returnValue(sample1)); - - one(sampleDAO).tryToFindByPermID("s-2"); - will(returnValue(sample2)); - - one(sampleDAO).tryToFindByPermID("s-3"); - will(returnValue(sample3)); - } - }); - - table.load(session, experimentID, proteinReferenceID, "abcdefabcab"); - - List<ProteinRelatedSample> samples = table.getSamples(); - assertEquals("1:s-1:S1:/s/S1:SAMPLE:my-type:[A: hello]:0.25::null:null:null", - render(samples.get(0))); - assertEquals("2:s-2:S2:/s/S2:SAMPLE:my-type:[]:0.75:a:1:21.5:0.25", - render(samples.get(1))); - assertEquals("2:s-2:S2:/s/S2:SAMPLE:my-type:[]:0.75:a:7:21.5:0.25", - render(samples.get(2))); - assertEquals("2:s-2:S2:/s/S2:SAMPLE:my-type:[]:0.75:a:10:21.5:0.25", - render(samples.get(3))); - assertEquals("3:s-3:S3:/s/S3:SAMPLE:my-type:[]:null:d:4:12.375:0.5", - render(samples.get(4))); - assertEquals("3:s-3:S3:/s/S3:SAMPLE:my-type:[]:null:f:6:-1.5:0.75", - render(samples.get(5))); - assertEquals(6, samples.size()); - context.assertIsSatisfied(); - } - - private String render(ProteinRelatedSample sample) - { - char modifiedAminoAcid = sample.getModifiedAminoAcid(); - return sample.getId() + ":" + sample.getPermId() + ":" + sample.getCode() + ":" - + sample.getIdentifier() + ":" + sample.getEntityKind() + ":" - + sample.getEntityType() + ":" + sample.getProperties() + ":" - + sample.getAbundance() + ":" - + (modifiedAminoAcid == 0 ? "" : Character.toString(modifiedAminoAcid)) + ":" - + sample.getModificationPosition() + ":" + sample.getModificationMass() + ":" - + sample.getModificationFraction(); - } - - private SampleAbundance sampleAbundance(String permID, double abundance) - { - SampleAbundance sampleAbundance = new SampleAbundance(); - sampleAbundance.setSamplePermID(permID); - sampleAbundance.setAbundance(abundance); - return sampleAbundance; - } - - private SamplePeptideModification modification(String permID, String sequence, int position, - double mass, double fraction) - { - SamplePeptideModification modification = new SamplePeptideModification(); - modification.setSamplePermID(permID); - modification.setSequence(sequence); - modification.setPosition(position); - modification.setMass(mass); - modification.setFraction(fraction); - return modification; - } -} diff --git a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/ProteinSummaryTableTest.java b/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/ProteinSummaryTableTest.java deleted file mode 100644 index 119088608edc9947a410a2ec03fc997485223054..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/ProteinSummaryTableTest.java +++ /dev/null @@ -1,206 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.server.business; - -import static ch.systemsx.cisd.openbis.plugin.proteomics.server.business.ProteinSummaryTable.FDR_LEVELS; - -import java.util.Arrays; -import java.util.List; - -import org.jmock.Expectations; -import org.testng.annotations.BeforeMethod; -import org.testng.annotations.Test; - -import ch.systemsx.cisd.openbis.common.eodsql.MockDataSet; -import ch.systemsx.cisd.openbis.generic.shared.AbstractServerTestCase; -import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; -import ch.systemsx.cisd.openbis.generic.shared.dto.ExperimentPE; -import ch.systemsx.cisd.openbis.plugin.proteomics.server.dataaccess.IPhosphoNetXDAOFactory; -import ch.systemsx.cisd.openbis.plugin.proteomics.server.dataaccess.IProteinQueryDAO; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.ProteinSummary; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.dto.ProbabilityFDRMapping; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.dto.ProteinReferenceWithProbabilityAndPeptide; - -/** - * @author Franz-Josef Elmer - */ -public class ProteinSummaryTableTest extends AbstractServerTestCase -{ - private static final TechId EXPERIMENT_ID = new TechId(234L); - - private static final String EXPERIMENT_PERM_ID = "abc-234"; - - private static final long DATA_SET_ID = 42L; - - private IPhosphoNetXDAOFactory specificDAOFactory; - - private IProteinQueryDAO proteinDAO; - - private ProteinSummaryTable table; - - @Override - @BeforeMethod - public void setUp() - { - super.setUp(); - specificDAOFactory = context.mock(IPhosphoNetXDAOFactory.class); - proteinDAO = context.mock(IProteinQueryDAO.class); - table = new ProteinSummaryTable(daoFactory, specificDAOFactory, session); - } - - @Test - public void testLoadEmptyData() - { - prepare(); - - table.load(EXPERIMENT_ID); - - List<ProteinSummary> summaries = table.getProteinSummaries(); - for (ProteinSummary proteinSummary : summaries) - { - assertEquals(0, proteinSummary.getProteinCount()); - assertEquals(0, proteinSummary.getPeptideCount()); - } - assertEquals(FDR_LEVELS.length, summaries.size()); - context.assertIsSatisfied(); - } - - @Test - public void testLoadData() - { - ProteinReferenceWithProbabilityAndPeptide i1 = createItem("A", 0.5, 123, "ABCD"); - ProteinReferenceWithProbabilityAndPeptide i2 = createItem("B", 0.5, 123, "DEF"); - ProteinReferenceWithProbabilityAndPeptide i3 = createItem("C", 0.75, 123, "DEF"); - ProteinReferenceWithProbabilityAndPeptide i4 = createItem("D", 0.75, 456, "ABC"); - ProteinReferenceWithProbabilityAndPeptide i5 = createItem("E", 1, 456, "DEF"); - ProteinReferenceWithProbabilityAndPeptide i6 = createItem("F", 1, 456, "XYZ"); - ProteinReferenceWithProbabilityAndPeptide i7 = createItem("DECOY_F", 0.75, 456, "XYZ"); - prepare(i1, i2, i3, i4, i5, i6, i7); - context.checking(new Expectations() - { - { - allowing(proteinDAO).getProbabilityFDRMapping(DATA_SET_ID); - MockDataSet<ProbabilityFDRMapping> dataSet = - new MockDataSet<ProbabilityFDRMapping>(); - dataSet.add(createMappingItem(0.5, FDR_LEVELS[3])); - dataSet.add(createMappingItem(0.75, FDR_LEVELS[2])); - dataSet.add(createMappingItem(1, FDR_LEVELS[0])); - will(returnValue(dataSet)); - } - - }); - table.load(EXPERIMENT_ID); - - List<ProteinSummary> summaries = table.getProteinSummaries(); - assertSummary(0, 1, 2, 0, 0, summaries); - assertSummary(1, 1, 2, 0, 0, summaries); - assertSummary(2, 2, 3, 1, 1, summaries); - assertSummary(3, 2, 4, 1, 1, summaries); - assertSummary(4, 2, 4, 1, 1, summaries); - assertEquals(FDR_LEVELS.length, summaries.size()); - context.assertIsSatisfied(); - } - - @Test - public void testLoadDataWithNoFDRMapping() - { - ProteinReferenceWithProbabilityAndPeptide i1 = createItem("A", 0.5, 123, "ABCD"); - ProteinReferenceWithProbabilityAndPeptide i2 = createItem("B", 0.5, 123, "DEF"); - ProteinReferenceWithProbabilityAndPeptide i3 = createItem("C", 0.75, 123, "DEF"); - ProteinReferenceWithProbabilityAndPeptide i4 = createItem("D", 0.75, 456, "ABC"); - ProteinReferenceWithProbabilityAndPeptide i5 = createItem("E", 1, 456, "DEF"); - ProteinReferenceWithProbabilityAndPeptide i6 = createItem("F", 1, 456, "XYZ"); - ProteinReferenceWithProbabilityAndPeptide i7 = createItem("DECOY_F", 0.75, 456, "XYZ"); - prepare(i1, i2, i3, i4, i5, i6, i7); - context.checking(new Expectations() - { - { - allowing(proteinDAO).getProbabilityFDRMapping(DATA_SET_ID); - MockDataSet<ProbabilityFDRMapping> dataSet = - new MockDataSet<ProbabilityFDRMapping>(); - will(returnValue(dataSet)); - } - }); - table.load(EXPERIMENT_ID); - - List<ProteinSummary> summaries = table.getProteinSummaries(); - assertSummary(0, 2, 4, 1, 1, summaries); - assertSummary(1, 2, 4, 1, 1, summaries); - assertSummary(2, 2, 4, 1, 1, summaries); - assertSummary(3, 2, 4, 1, 1, summaries); - assertSummary(4, 2, 4, 1, 1, summaries); - assertEquals(FDR_LEVELS.length, summaries.size()); - context.assertIsSatisfied(); - } - - private void assertSummary(int index, int expectedProteinCount, int expectedPeptideCount, - int expectedDecoyProteinCount, int expectedDecoyPeptideCount, - List<ProteinSummary> summaries) - { - ProteinSummary proteinSummary = summaries.get(index); - assertEquals(FDR_LEVELS[index], proteinSummary.getFDR(), 1e-6); - assertEquals(expectedProteinCount, proteinSummary.getProteinCount()); - assertEquals(expectedPeptideCount, proteinSummary.getPeptideCount()); - assertEquals(expectedDecoyProteinCount, proteinSummary.getDecoyProteinCount()); - assertEquals(expectedDecoyPeptideCount, proteinSummary.getDecoyPeptideCount()); - } - - private ProbabilityFDRMapping createMappingItem(double probability, double falseDiscoveryRate) - { - ProbabilityFDRMapping m1 = new ProbabilityFDRMapping(); - m1.setProbability(probability); - m1.setFalseDiscoveryRate(falseDiscoveryRate); - return m1; - } - - private void prepare(final ProteinReferenceWithProbabilityAndPeptide... items) - { - context.checking(new Expectations() - { - { - allowing(specificDAOFactory).getProteinQueryDAO(EXPERIMENT_ID); - will(returnValue(proteinDAO)); - - one(experimentDAO).getByTechId(EXPERIMENT_ID); - ExperimentPE experimentPE = new ExperimentPE(); - experimentPE.setPermId(EXPERIMENT_PERM_ID); - will(returnValue(experimentPE)); - - one(proteinDAO).listProteinsWithProbabilityAndPeptidesByExperiment( - EXPERIMENT_PERM_ID); - MockDataSet<ProteinReferenceWithProbabilityAndPeptide> dataSet = - new MockDataSet<ProteinReferenceWithProbabilityAndPeptide>(); - dataSet.addAll(Arrays.asList(items)); - will(returnValue(dataSet)); - } - }); - } - - private ProteinReferenceWithProbabilityAndPeptide createItem(String accessionNumber, double probability, - long id, String peptideSequence) - { - ProteinReferenceWithProbabilityAndPeptide item = - new ProteinReferenceWithProbabilityAndPeptide(); - item.setDataSetID(DATA_SET_ID); - item.setProbability(probability); - item.setId(id); - item.setPeptideSequence(peptideSequence); - item.setAccessionNumber(accessionNumber); - return item; - } - -} diff --git a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/SampleIDProviderTest.java b/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/SampleIDProviderTest.java deleted file mode 100644 index 0196a241d724afc78a001c3b701a472888173378..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/SampleIDProviderTest.java +++ /dev/null @@ -1,122 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.server.business; - -import org.jmock.Expectations; -import org.testng.annotations.BeforeMethod; -import org.testng.annotations.Test; - -import ch.systemsx.cisd.common.exceptions.UserFailureException; -import ch.systemsx.cisd.openbis.generic.shared.AbstractServerTestCase; -import ch.systemsx.cisd.openbis.generic.shared.basic.BasicConstant; -import ch.systemsx.cisd.openbis.generic.shared.dto.PersonPE; -import ch.systemsx.cisd.openbis.generic.shared.dto.RelationshipTypePE; -import ch.systemsx.cisd.openbis.generic.shared.dto.SamplePE; -import ch.systemsx.cisd.openbis.generic.shared.dto.SampleRelationshipPE; - -/** - * @author Franz-Josef Elmer - */ -public class SampleIDProviderTest extends AbstractServerTestCase -{ - private static final String PERM_ID = "abc-1"; - - private static final Long ID = 42L; - - private SampleIDProvider sampleIDProvider; - - @BeforeMethod - @Override - public void setUp() - { - super.setUp(); - sampleIDProvider = new SampleIDProvider(sampleDAO); - } - - @Test - public void testGetUnkownSample() - { - context.checking(new Expectations() - { - { - one(sampleDAO).tryToFindByPermID(PERM_ID); - will(returnValue(null)); - } - }); - - try - { - sampleIDProvider.getSampleIDOrParentSampleID(PERM_ID); - fail("UserFailureException expected."); - } catch (UserFailureException e) - { - assertEquals("No sample found for permID " + PERM_ID, e.getMessage()); - } - - context.assertIsSatisfied(); - } - - @Test - public void testGetSampleIDTwice() - { - context.checking(new Expectations() - { - { - one(sampleDAO).tryToFindByPermID(PERM_ID); - SamplePE sample = new SamplePE(); - sample.setId(ID); - will(returnValue(sample)); - } - }); - - long s1 = sampleIDProvider.getSampleIDOrParentSampleID(PERM_ID); - long s2 = sampleIDProvider.getSampleIDOrParentSampleID(PERM_ID); - assertEquals(ID.longValue(), s1); - assertEquals(ID.longValue(), s2); - - context.assertIsSatisfied(); - } - - @Test - public void testGetParentSampleIDTwice() - { - context.checking(new Expectations() - { - { - one(sampleDAO).tryToFindByPermID(PERM_ID); - SamplePE parentSample = new SamplePE(); - parentSample.setCode("s1"); - parentSample.setId(ID); - SamplePE sample = new SamplePE(); - sample.setCode("s1"); - sample.setId(2 * ID); - RelationshipTypePE relationship = new RelationshipTypePE(); - relationship.setCode(BasicConstant.PARENT_CHILD_INTERNAL_RELATIONSHIP); - sample.addParentRelationship(new SampleRelationshipPE(parentSample, sample, - relationship, new PersonPE())); - will(returnValue(sample)); - } - }); - - long s1 = sampleIDProvider.getSampleIDOrParentSampleID(PERM_ID); - long s2 = sampleIDProvider.getSampleIDOrParentSampleID(PERM_ID); - assertEquals(ID.longValue(), s1); - assertEquals(ID.longValue(), s2); - - context.assertIsSatisfied(); - } -} diff --git a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/SampleLoaderTest.java b/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/SampleLoaderTest.java deleted file mode 100644 index 73196040ee2005cf2948041798128ffa6494fa71..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/SampleLoaderTest.java +++ /dev/null @@ -1,74 +0,0 @@ -/* - * Copyright 2010 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.server.business; - -import static org.testng.AssertJUnit.assertEquals; - -import java.util.Collections; -import java.util.Comparator; -import java.util.List; - -import org.testng.annotations.Test; - -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample; -import ch.systemsx.cisd.openbis.generic.shared.dto.PersonPE; -import ch.systemsx.cisd.openbis.generic.shared.dto.Session; - -/** - * @author Franz-Josef Elmer - */ -@Test(groups = "db") -public class SampleLoaderTest extends AbstractLoaderTestCase -{ - - @Test - public void test() - { - Session session = session(); - session.setPerson(new PersonPE()); - SampleLoader loader = new SampleLoader(session, daoFactory, boFactory); - List<Sample> samples = loader.listSamplesWithParentsByTypeAndSpace("CELL_PLATE", "CISD"); - Collections.sort(samples, new Comparator<Sample>() - { - @Override - public int compare(Sample s1, Sample s2) - { - return s1.getCode().compareTo(s2.getCode()); - } - }); - StringBuilder builder = new StringBuilder(); - for (Sample sample : samples) - { - Sample parent = sample.getGeneratedFrom(); - builder.append(sample.getCode()).append(" ").append(getSortedProperties(sample)); - builder.append(" <- ").append(parent.getCode()).append(" "); - builder.append(getSortedProperties(parent)).append('\n'); - } - assertEquals("3VCP5 [] <- 3V-125 [OFFSET: 49]\n" - + "3VCP7 [COMMENT: test comment, ORGANISM: RAT, SIZE: 4711] <- 3V-125 [OFFSET: 49]\n" - + "3VCP8 [] <- 3V-125 [OFFSET: 49]\n" - + "CP-TEST-1 [ANY_MATERIAL: 1 (GENE), BACTERIUM: BACTERIUM-X (BACTERIUM), " - + "COMMENT: very advanced stuff, ORGANISM: HUMAN, SIZE: 123] " - + "<- CP-TEST-2 [ANY_MATERIAL: 2 (GENE), BACTERIUM: BACTERIUM-Y (BACTERIUM), " - + "COMMENT: extremely simple stuff, ORGANISM: GORILLA, SIZE: 321]\n" - + "CP1-A1 [] <- DP1-A [OFFSET: 42]\n" - + "CP1-A2 [] <- DP1-A [OFFSET: 42]\n" - + "CP1-B1 [] <- DP1-B [OFFSET: 42]\n" - + "CP2-A1 [] <- DP2-A [OFFSET: 42]\n", builder.toString()); - } - -} diff --git a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/SampleProviderTest.java b/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/SampleProviderTest.java deleted file mode 100644 index a9f632f812e5243ceac1dd3e53660c01c7a3375d..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/SampleProviderTest.java +++ /dev/null @@ -1,180 +0,0 @@ -/* - * Copyright 2010 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.server.business; - -import java.util.Arrays; -import java.util.Collection; - -import org.hamcrest.BaseMatcher; -import org.hamcrest.Description; -import org.jmock.Expectations; -import org.jmock.Mockery; -import org.testng.AssertJUnit; -import org.testng.annotations.AfterMethod; -import org.testng.annotations.BeforeMethod; -import org.testng.annotations.Test; - -import ch.systemsx.cisd.authentication.Principal; -import ch.systemsx.cisd.common.exceptions.UserFailureException; -import ch.systemsx.cisd.openbis.generic.server.business.bo.samplelister.ISampleLister; -import ch.systemsx.cisd.openbis.generic.shared.CommonTestUtils; -import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ListOrSearchSampleCriteria; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample; -import ch.systemsx.cisd.openbis.generic.shared.dto.Session; -import ch.systemsx.cisd.openbis.plugin.proteomics.server.business.IBusinessObjectFactory; -import ch.systemsx.cisd.openbis.plugin.proteomics.server.business.ISampleProvider; -import ch.systemsx.cisd.openbis.plugin.proteomics.server.business.SampleProvider; - -/** - * @author Franz-Josef Elmer - */ -public class SampleProviderTest extends AssertJUnit -{ - private static final class MatcherOfSampleCriteriaByChildrenIDs extends - BaseMatcher<ListOrSearchSampleCriteria> - { - private final Collection<Long> childrenIDs; - - private MatcherOfSampleCriteriaByChildrenIDs(Collection<Long> childrenIDs) - { - this.childrenIDs = childrenIDs; - } - - @Override - public boolean matches(Object item) - { - if (item instanceof ListOrSearchSampleCriteria) - { - ListOrSearchSampleCriteria criteria = (ListOrSearchSampleCriteria) item; - assertEquals(true, criteria.isEnrichDependentSamplesWithProperties()); - assertEquals(childrenIDs.toString(), criteria.getChildrenSampleIds().toString()); - return true; - } - return false; - } - - @Override - public void describeTo(Description description) - { - } - } - - private static final Principal PRINCIPAL = - new Principal(CommonTestUtils.USER_ID, "john", "doe", "j@d"); - - private static final String SESSION_TOKEN = "session-token"; - - private static final Session SESSION = - new Session(CommonTestUtils.USER_ID, SESSION_TOKEN, PRINCIPAL, "remote-host", 1); - - private static final TechId EXPERIMENT_ID = new TechId(4711); - - private Mockery context; - - private IBusinessObjectFactory boFactory; - - private ISampleProvider sampleProvider; - - private ISampleLister sampleLister; - - @BeforeMethod - public void setUp() - { - context = new Mockery(); - boFactory = context.mock(IBusinessObjectFactory.class); - sampleLister = context.mock(ISampleLister.class); - sampleProvider = new SampleProvider(SESSION, boFactory); - } - - @AfterMethod - public void tearDown() - { - // To following line of code should also be called at the end of each test method. - // Otherwise one do not known which test failed. - context.assertIsSatisfied(); - } - - @Test - public void test() - { - final Sample s1 = createSample("abc"); - final Sample s2 = createSample("123"); - final Sample s3 = createSample("parent-of-123"); - context.checking(new Expectations() - { - { - one(boFactory).createSampleLister(SESSION); - will(returnValue(sampleLister)); - - one(sampleLister).list(with(new BaseMatcher<ListOrSearchSampleCriteria>() - { - @Override - public boolean matches(Object item) - { - if (item instanceof ListOrSearchSampleCriteria) - { - ListOrSearchSampleCriteria criteria = (ListOrSearchSampleCriteria) item; - assertEquals(true, criteria.isEnrichDependentSamplesWithProperties()); - assertEquals(EXPERIMENT_ID, criteria.getExperimentId()); - return true; - } - return false; - } - - @Override - public void describeTo(Description description) - { - } - })); - will(returnValue(Arrays.asList(s1, s2))); - - one(sampleLister).list( - with(new MatcherOfSampleCriteriaByChildrenIDs(Arrays.asList(s1.getId(), - s2.getId())))); - will(returnValue(Arrays.asList(s3))); - - one(sampleLister).list( - with(new MatcherOfSampleCriteriaByChildrenIDs(Arrays.asList(s3.getId())))); - will(returnValue(Arrays.asList())); - } - }); - - sampleProvider.loadByExperimentID(EXPERIMENT_ID); - assertSame(s1, sampleProvider.getSample(s1.getPermId())); - assertSame(s2, sampleProvider.getSample(s2.getPermId())); - assertSame(s3, sampleProvider.getSample(s3.getPermId())); - try - { - sampleProvider.getSample("42"); - fail("UserFailureException expected"); - } catch (UserFailureException ex) - { - assertEquals("No sample with following perm ID registered in openBIS: 42", ex.getMessage()); - } - - context.assertIsSatisfied(); - } - - private Sample createSample(String samplePermID) - { - Sample sample = new Sample(); - sample.setId((long) samplePermID.hashCode()); - sample.setPermId(samplePermID); - return sample; - } -} diff --git a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/TreatmentFinderTest.java b/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/TreatmentFinderTest.java deleted file mode 100644 index 00ee7155f25cbdf17f6b1015a8f7c044aee8f42b..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/proteomics/server/business/TreatmentFinderTest.java +++ /dev/null @@ -1,196 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.server.business; - -import static ch.systemsx.cisd.openbis.plugin.proteomics.server.business.TreatmentFinder.TREATMENT_TYPE_CODE; -import static ch.systemsx.cisd.openbis.plugin.proteomics.server.business.TreatmentFinder.TREATMENT_VALUE_CODE; - -import java.util.ArrayList; -import java.util.List; - -import org.testng.AssertJUnit; -import org.testng.annotations.Test; - -import ch.systemsx.cisd.common.exceptions.UserFailureException; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataType; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataTypeCode; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityProperty; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IEntityProperty; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Material; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.PropertyType; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.VocabularyTerm; -import ch.systemsx.cisd.openbis.plugin.proteomics.server.business.TreatmentFinder; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.Treatment; - -/** - * @author Franz-Josef Elmer - */ -public class TreatmentFinderTest extends AssertJUnit -{ - @Test - public void testFindingTreatmentsInSample() - { - Sample sample = createSample(); - sample.getProperties().add(create("BLABLA", "blub", DataTypeCode.MULTILINE_VARCHAR)); - addTreatment(sample, "", "pH", "7"); - addTreatment(sample, "1", "PLASMA", "20"); - addTreatment(sample, "2", "VIRUS", "HIV", DataTypeCode.MATERIAL); - - List<Treatment> treatments = new TreatmentFinder().findTreatmentsOf(sample); - - assertEquals(3, treatments.size()); - assertTreatment("7", "pH", treatments.get(0)); - assertTreatment("20", "PLASMA", treatments.get(1)); - assertTreatment("HIV", "VIRUS", DataTypeCode.MATERIAL, treatments.get(2)); - } - - @Test - public void testFindingTreatmentsInAncestorsOverriddenInDescendants() - { - Sample sample = createSample(); - Sample parentSample = createSample(); - sample.setGeneratedFrom(parentSample); - Sample grandParentSample = createSample(); - parentSample.setGeneratedFrom(grandParentSample); - addTreatment(grandParentSample, "1", "PLASMA", "35"); - parentSample.getProperties().add(create("BLABLA", "blub", DataTypeCode.MULTILINE_VARCHAR)); - addTreatment(parentSample, "", "pH", "7"); - addTreatment(sample, "", "PLASMA", "20"); - - List<Treatment> treatments = new TreatmentFinder().findTreatmentsOf(sample); - - assertEquals(2, treatments.size()); - assertTreatment("7", "pH", treatments.get(0)); - assertTreatment("20", "PLASMA", treatments.get(1)); - } - - @Test - public void testFindingTreatmentsWhereTreatmentTypeIsNotAVocabulary() - { - Sample sample = createSample(); - sample.getProperties().add(create(TREATMENT_TYPE_CODE, "pH", DataTypeCode.VARCHAR)); - - try - { - new TreatmentFinder().findTreatmentsOf(sample); - fail("UserFailureException expected"); - } catch (UserFailureException e) - { - assertEquals("Data type of property type '" + TREATMENT_TYPE_CODE - + "' must be a vocabulary.", e.getMessage()); - } - } - - @Test - public void testFindingTreatmentsWhereOnlyTreatmentTypeIsDefined() - { - Sample sample = createSample(); - sample.getProperties().add(create(TREATMENT_TYPE_CODE, "pH", DataTypeCode.CONTROLLEDVOCABULARY)); - - List<Treatment> treatments = new TreatmentFinder().findTreatmentsOf(sample); - - assertEquals(1, treatments.size()); - assertTreatment("", "pH", treatments.get(0)); - } - - @Test - public void testFindingTreatmentsWhereOnlyTreatmentValueIsDefined() - { - Sample sample = createSample(); - sample.getProperties().add(create(TREATMENT_VALUE_CODE, "HIV", DataTypeCode.MATERIAL)); - - List<Treatment> treatments = new TreatmentFinder().findTreatmentsOf(sample); - - assertEquals(1, treatments.size()); - assertTreatment("HIV", "", DataTypeCode.MATERIAL, treatments.get(0)); - } - - private void assertTreatment(String expectedValue, String expectedType, Treatment treatment) - { - assertTreatment(expectedValue, expectedType, DataTypeCode.VARCHAR, treatment); - } - - private void assertTreatment(String expectedValue, String expectedType, - DataTypeCode expectedDataType, Treatment treatment) - { - assertEquals("Actual treatment: " + treatment, expectedValue, treatment.getValue()); - assertEquals("Actual treatment: " + treatment, expectedDataType.toString(), treatment - .getValueType()); - assertEquals("Actual treatment: " + treatment, expectedType, treatment.getType()); - assertEquals("Actual treatment: " + treatment, expectedValue + " " + expectedType, - treatment.getLabel()); - } - - private void addTreatment(Sample sample, String treatmentCodePostfix, String treatmentType, - String treatmentValue) - { - addTreatment(sample, treatmentCodePostfix, treatmentType, treatmentValue, - DataTypeCode.VARCHAR); - } - - private void addTreatment(Sample sample, String treatmentCodePostfix, String treatmentType, - String treatmentValue, DataTypeCode valueType) - { - List<IEntityProperty> properties = sample.getProperties(); - properties.add(create(TREATMENT_TYPE_CODE + treatmentCodePostfix, treatmentType, - DataTypeCode.CONTROLLEDVOCABULARY)); - properties.add(create(TREATMENT_VALUE_CODE + treatmentCodePostfix, treatmentValue, - valueType)); - } - - private IEntityProperty create(String code, String value, DataTypeCode type) - { - EntityProperty sampleProperty = new EntityProperty(); - PropertyType propertyType = new PropertyType(); - propertyType.setCode(code); - DataType dataType = new DataType(); - dataType.setCode(type); - propertyType.setDataType(dataType); - sampleProperty.setPropertyType(propertyType); - switch (type) - { - case CONTROLLEDVOCABULARY: - VocabularyTerm term = new VocabularyTerm(); - if (Character.isUpperCase(value.charAt(0))) - { - term.setCode(value); - } else - { - term.setCode(value.toUpperCase()); - term.setLabel(value); - } - sampleProperty.setVocabularyTerm(term); - break; - case MATERIAL: - Material material = new Material(); - material.setCode(value); - sampleProperty.setMaterial(material); - break; - default: - sampleProperty.setValue(value); - } - return sampleProperty; - } - - private Sample createSample() - { - Sample sample = new Sample(); - sample.setProperties(new ArrayList<IEntityProperty>()); - return sample; - } -} diff --git a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/basic/dto/AbundanceColumnDefinitionTest.java b/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/basic/dto/AbundanceColumnDefinitionTest.java deleted file mode 100644 index 0ba2429877ede75a9bae031e88648c4258bfd30b..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/basic/dto/AbundanceColumnDefinitionTest.java +++ /dev/null @@ -1,120 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto; - -import java.util.Arrays; - -import org.testng.AssertJUnit; -import org.testng.annotations.Test; - -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.AbundanceColumnDefinition; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.Treatment; - -/** - * @author Franz-Josef Elmer - */ -public class AbundanceColumnDefinitionTest extends AssertJUnit -{ - @Test - public void testCompareTwoDefinitonsWithoutTreatmentsAndSampleCodes() - { - AbundanceColumnDefinition d1 = new AbundanceColumnDefinition(); - AbundanceColumnDefinition d2 = create(null); - - assertEquals(0, d1.compareTo(d2)); - - d1.setSampleCode("bla"); - - assertEquals(0, d1.compareTo(d2)); - } - - @Test - public void testCompareTwoDefinitonsWithoutTreatmentsButSampleCodes() - { - AbundanceColumnDefinition d1 = create("abc"); - AbundanceColumnDefinition d2 = create("abc"); - - assertEquals(0, d1.compareTo(d2)); - - d2.setSampleCode("def"); - - assertEquals(true, d1.compareTo(d2) < 0); - } - - @Test - public void testCompareTwoDefinitonsWithDifferentNumberOfTreatments() - { - AbundanceColumnDefinition d1 = create("abc"); - d1.setSampleCode("abc"); - AbundanceColumnDefinition d2 = create("abc", new Treatment()); - d2.setSampleCode("abc"); - - assertEquals(true, d1.compareTo(d2) < 0); - } - - @Test - public void testCompareTwoDefinitonsWithOneNonNumericalTreatment() - { - AbundanceColumnDefinition d1 = create("abc", treatment("light", "red")); - AbundanceColumnDefinition d2 = create("abc", treatment("light", "blue")); - - assertEquals(true, d1.compareTo(d2) > 0); - } - - @Test - public void testCompareTwoDefinitonsWithOneNumericalTreatment() - { - AbundanceColumnDefinition d1 = create("abc", treatment("pH", "7.5"), treatment("T", "yes")); - AbundanceColumnDefinition d2 = create("abc", treatment("pH", "9e-1")); - - assertEquals(true, d1.compareTo(d2) > 0); - } - - @Test - public void testCompareTwoDefinitonsWithOneNumericalTreatmentButDifferentTypes() - { - AbundanceColumnDefinition d1 = create("abc", treatment("K", "7.5")); - AbundanceColumnDefinition d2 = create("abc", treatment("pH", "9e-1")); - - assertEquals(true, d1.compareTo(d2) < 0); - } - - @Test - public void testCompareTwoDefinitonsWithTwoNumericalTreatment() - { - AbundanceColumnDefinition d1 = create("abc", treatment("pH", "7.50"), treatment("T", "13")); - AbundanceColumnDefinition d2 = create("abc", treatment("pH", "0.75e1"), treatment("T", "8")); - - assertEquals(true, d1.compareTo(d2) > 0); - } - - private AbundanceColumnDefinition create(String sampleCode, Treatment... treatments) - { - AbundanceColumnDefinition definition = new AbundanceColumnDefinition(); - definition.setSampleCode(sampleCode); - definition.setTreatments(Arrays.asList(treatments)); - return definition; - } - - private Treatment treatment(String type, String value) - { - Treatment treatment = new Treatment(); - treatment.setType(type); - treatment.setValue(value); - return treatment; - } -} diff --git a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/basic/dto/AggregateFunctionTest.java b/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/basic/dto/AggregateFunctionTest.java deleted file mode 100644 index 51ef5b1942171c8cb39d077c9bbdcff301b52026..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/basic/dto/AggregateFunctionTest.java +++ /dev/null @@ -1,74 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto; - -import org.testng.AssertJUnit; -import org.testng.annotations.Test; - -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.AggregateFunction; - -/** - * @author Franz-Josef Elmer - */ -public class AggregateFunctionTest extends AssertJUnit -{ - @Test - public void testMean() - { - assertEquals(42.0, AggregateFunction.MEAN.aggregate(new double[] { 42 })); - assertEquals(42.5, AggregateFunction.MEAN.aggregate(new double[] { 42, 43 })); - assertEquals(44.0, AggregateFunction.MEAN.aggregate(new double[] { 42, 42, 48 })); - } - - @Test - public void testMedian() - { - assertEquals(42.0, AggregateFunction.MEDIAN.aggregate(new double[] { 42 })); - assertEquals(42.5, AggregateFunction.MEDIAN.aggregate(new double[] { 42, 43 })); - assertEquals(43.0, AggregateFunction.MEDIAN.aggregate(new double[] { 42, 43, 50 })); - assertEquals(46.5, AggregateFunction.MEDIAN.aggregate(new double[] { 42, 43, 50, 59 })); - } - - @Test - public void testSum() - { - assertEquals(42.0, AggregateFunction.SUM.aggregate(new double[] { 42 })); - assertEquals(85.0, AggregateFunction.SUM.aggregate(new double[] { 42, 43 })); - } - - @Test - public void testMin() - { - assertEquals(42.0, AggregateFunction.MIN.aggregate(new double[] { 42 })); - assertEquals(42.0, AggregateFunction.MIN.aggregate(new double[] { 42, 43 })); - } - - @Test - public void testMax() - { - assertEquals(42.0, AggregateFunction.MAX.aggregate(new double[] { 42 })); - assertEquals(43.0, AggregateFunction.MAX.aggregate(new double[] { 42, 43 })); - } - - @Test - public void testCount() - { - assertEquals(1.0, AggregateFunction.COUNT.aggregate(new double[] { 42 })); - assertEquals(2.0, AggregateFunction.COUNT.aggregate(new double[] { 42, 43 })); - } - -} diff --git a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/basic/dto/OccurrenceUtilTest.java b/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/basic/dto/OccurrenceUtilTest.java deleted file mode 100644 index 248567447e0e6c42c284f1a968d2b1f000fbfb56..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/proteomics/shared/basic/dto/OccurrenceUtilTest.java +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Copyright 2009 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto; - -import java.util.Arrays; - -import org.testng.AssertJUnit; -import org.testng.annotations.Test; - -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.basic.dto.OccurrenceUtil; - -/** - * @author Franz-Josef Elmer - */ -public class OccurrenceUtilTest extends AssertJUnit -{ - @Test - public void testNoCoverage() - { - check("[]", ""); - check("[]", "abc", "xx"); - check("[]", "xx"); - check("[]", "abc"); - } - - @Test - public void testFullCoverage() - { - check("[[abc@0]]", "abc", "abc"); - } - - @Test - public void testPartialAndOverlappingCoverage() - { - check("[[ab@0], [abcd@4], [ab@13]]", "abc abcde hahab", "ab", "bcd"); - check("[[ab@0], [abcd@4], [ab@13]]", "abc abcde hahab", "ab", "cd"); - check("[[abc@0], [abc@4], [ab@13]]", "abc abcde hahab", "ab", "b", "c"); - check("[[abc@0], [abc@4], [b@14]]", "abc abcde hahab", "abc", "b"); - check("[[abcde@0]]", "abcdef", "abcd", "b", "de"); - check("[[haha@10]]", "abc abcde hahab", "haha", "h"); - } - - private void check(String expectedList, String sequence, String... words) - { - assertEquals(expectedList, OccurrenceUtil.getCoverage(sequence, Arrays.asList(words)).toString()); - } -} diff --git a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/proteomics/systemtests/AbstractProteomicsSystemTestCase.java b/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/proteomics/systemtests/AbstractProteomicsSystemTestCase.java deleted file mode 100644 index a1d2981b429983ca9e8321de6b57d60d1eedbfa4..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/proteomics/systemtests/AbstractProteomicsSystemTestCase.java +++ /dev/null @@ -1,112 +0,0 @@ -/* - * Copyright 2012 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.proteomics.systemtests; - -import ch.systemsx.cisd.openbis.datastoreserver.systemtests.SystemTestCase; -import ch.systemsx.cisd.openbis.generic.server.ICommonServerForInternalUse; -import ch.systemsx.cisd.openbis.generic.shared.IServiceForDataStoreServer; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Grantee; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.RoleWithHierarchy.RoleCode; -import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.SpaceIdentifier; -import ch.systemsx.cisd.openbis.plugin.generic.shared.IGenericServer; -import ch.systemsx.cisd.openbis.plugin.proteomics.server.api.v1.Constants; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.IPhosphoNetXServer; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.IProteomicsDataServiceInternal; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.ResourceNames; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.api.v1.IProteomicsDataService; - -/** - * @author Franz-Josef Elmer - */ -public abstract class AbstractProteomicsSystemTestCase extends SystemTestCase -{ - - /** - * - * - */ - public AbstractProteomicsSystemTestCase() - { - super(); - } - - @Override - protected String getApplicationContextLocation() - { - return "classpath:proteomics-applicationContext.xml"; - } - - protected String registerPerson(String userID) - { - ICommonServerForInternalUse commonServer = getCommonServer(); - String systemSessionToken = commonServer.tryToAuthenticateAsSystem().getSessionToken(); - commonServer.registerPerson(systemSessionToken, userID); - return userID; - } - - protected void assignInstanceRole(String userID, RoleCode roleCode) - { - ICommonServerForInternalUse commonServer = getCommonServer(); - String systemSessionToken = commonServer.tryToAuthenticateAsSystem().getSessionToken(); - commonServer.registerInstanceRole(systemSessionToken, roleCode, - Grantee.createPerson(userID)); - } - - protected void assignSpaceRole(String userID, RoleCode roleCode, SpaceIdentifier spaceIdentifier) - { - ICommonServerForInternalUse commonServer = getCommonServer(); - String systemSessionToken = commonServer.tryToAuthenticateAsSystem().getSessionToken(); - commonServer.registerSpaceRole(systemSessionToken, roleCode, spaceIdentifier, - Grantee.createPerson(userID)); - } - - protected String authenticateAs(String user) - { - return getCommonServer().tryAuthenticate(user, "password").getSessionToken(); - } - - protected ICommonServerForInternalUse getCommonServer() - { - return getBean(ch.systemsx.cisd.openbis.generic.shared.ResourceNames.COMMON_SERVER); - } - - protected IGenericServer getGenericServer() - { - return getBean(ch.systemsx.cisd.openbis.plugin.generic.shared.ResourceNames.GENERIC_PLUGIN_SERVER); - } - - protected IServiceForDataStoreServer getServiceForDSS() - { - return getBean(ch.systemsx.cisd.openbis.generic.shared.ResourceNames.ETL_SERVICE); - } - - protected IProteomicsDataServiceInternal getDataServiceInternal() - { - return getBean(Constants.PROTEOMICS_DATA_SERVICE_INTERNAL); - } - - protected IProteomicsDataService getDataService() - { - return getBean(Constants.PROTEOMICS_DATA_SERVICE); - } - - protected IPhosphoNetXServer getServer() - { - return getBean(ResourceNames.PROTEOMICS_PLUGIN_SERVER); - } - -} \ No newline at end of file diff --git a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/proteomics/systemtests/ProteomicsDataServiceTest.java b/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/proteomics/systemtests/ProteomicsDataServiceTest.java deleted file mode 100644 index 22c5f68a15f7f91b2e05e63a0063bc882cc35625..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/proteomics/systemtests/ProteomicsDataServiceTest.java +++ /dev/null @@ -1,201 +0,0 @@ -/* - * Copyright 2016 ETH Zuerich, SIS - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.proteomics.systemtests; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; - -import org.testng.annotations.BeforeTest; -import org.testng.annotations.Test; - -import ch.systemsx.cisd.common.collection.SimpleComparator; -import ch.systemsx.cisd.common.exceptions.EnvironmentFailureException; -import ch.systemsx.cisd.common.shared.basic.string.CommaSeparatedListBuilder; -import ch.systemsx.cisd.common.test.AssertionUtil; -import ch.systemsx.cisd.openbis.generic.shared.IServiceForDataStoreServer; -import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSetKind; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.FileFormatType; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ListSampleCriteria; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.LocatorType; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewAttachment; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewExperiment; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewSample; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewSamplesWithTypes; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SampleType; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.builders.DataSetTypeBuilder; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.builders.SampleTypeBuilder; -import ch.systemsx.cisd.openbis.generic.shared.dto.NewExternalData; -import ch.systemsx.cisd.openbis.generic.shared.dto.StorageFormat; -import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.ProjectIdentifierFactory; -import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.SampleIdentifierFactory; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.api.v1.dto.MsInjectionDataInfo; - -/** - * @author Franz-Josef Elmer - */ -@Test(groups = { "slow", "systemtest" }) -public class ProteomicsDataServiceTest extends AbstractProteomicsSystemTestCase -{ - private static final String EXPERIMENT_IDENTIFIER = "/MS_DATA/A/E"; - - private String sessionToken; - - private Long experimentId; - - private long[] sampleIds; - - @BeforeTest - public void setUpExamples() - { - sessionToken = authenticateAs("test"); - getCommonServer().registerSpace(sessionToken, "MS_DATA", null); - getCommonServer().registerProject(sessionToken, ProjectIdentifierFactory.parse("/MS_DATA/A"), - null, null, Arrays.<NewAttachment> asList()); - NewExperiment experiment = new NewExperiment(); - experiment.setExperimentTypeCode("MS_SEARCH"); - experiment.setIdentifier(EXPERIMENT_IDENTIFIER); - experimentId = getGenericServer().registerExperiment(sessionToken, experiment, Arrays.<NewAttachment> asList()).getId(); - NewSamplesWithTypes samples = new NewSamplesWithTypes(); - SampleType sampleType = new SampleTypeBuilder().code("MS_INJECTION").getSampleType(); - samples.setEntityType(sampleType); - List<NewSample> msInjectionSamples = createMsInjectionSamples("/TEST-SPACE/CP-TEST-4", null, "/CISD/3VCP5"); - samples.setNewEntities(msInjectionSamples); - getGenericServer().registerSamples(sessionToken, Arrays.asList(samples)); - IServiceForDataStoreServer serviceForDSS = getServiceForDSS(); - for (int i = 0; i < msInjectionSamples.size(); i++) - { - NewSample sample = msInjectionSamples.get(i); - NewExternalData dataSet = new NewExternalData(); - dataSet.setDataSetType(new DataSetTypeBuilder().code("UNKNOWN").getDataSetType()); - dataSet.setDataSetKind(DataSetKind.PHYSICAL); - dataSet.setCode("DS-" + i); - dataSet.setFileFormatType(new FileFormatType("XML")); - dataSet.setDataStoreCode("STANDARD"); - dataSet.setLocation("a/b/c/" + dataSet.getCode()); - dataSet.setLocatorType(new LocatorType("RELATIVE_LOCATION")); - dataSet.setStorageFormat(StorageFormat.PROPRIETARY); - serviceForDSS.registerDataSet(sessionToken, SampleIdentifierFactory.parse(sample), - dataSet); - } - ListSampleCriteria criteria = ListSampleCriteria.createForExperiment(new TechId(experimentId)); - List<Sample> samples2 = getCommonServer().listSamples(sessionToken, criteria); - sampleIds = new long[samples2.size()]; - for (int i = 0; i < sampleIds.length; i++) - { - sampleIds[i] = samples2.get(i).getId(); - } - Arrays.sort(sampleIds); - } - - @Test - public void testListRawDataSamplesForAdminUser() - { - List<MsInjectionDataInfo> samples = getDataService().listRawDataSamples(sessionToken, "test"); - - assertEquals("MSI-0:/TEST-SPACE/CP-TEST-4:/TEST-SPACE/NOE/EXP-TEST-2, " - + "MSI-2:/CISD/3VCP5:/CISD/NEMO/EXP10", renderMsInjectionDataInfos(samples)); - } - - @Test - public void testListRawDataSamplesForSpaceUser() - { - List<MsInjectionDataInfo> samples = getDataService().listRawDataSamples(sessionToken, "test_role"); - - assertEquals("MSI-2:/CISD/3VCP5:/CISD/NEMO/EXP10", renderMsInjectionDataInfos(samples)); - } - - @Test - public void testListAllRawDataSamplesForAdminUser() - { - List<MsInjectionDataInfo> samples = getDataService().listAllRawDataSamples(sessionToken, "test"); - - assertEquals("MSI-0:/TEST-SPACE/CP-TEST-4:/TEST-SPACE/NOE/EXP-TEST-2, " - + "MSI-2:/CISD/3VCP5:/CISD/NEMO/EXP10", renderMsInjectionDataInfos(samples)); - } - - @Test - public void testListAllRawDataSamplesForSpaceUser() - { - List<MsInjectionDataInfo> samples = getDataService().listAllRawDataSamples(sessionToken, "test_role"); - - assertEquals("MSI-0:null:null, " - + "MSI-2:/CISD/3VCP5:/CISD/NEMO/EXP10", renderMsInjectionDataInfos(samples)); - } - - @Test - public void testProcessingRawDataForAdminUser() - { - try - { - getDataService().processingRawData(sessionToken, "test", "test-processing", sampleIds, "UNKNOWN"); - } catch (EnvironmentFailureException ex) - { - AssertionUtil.assertContains("[DS-0, DS-2]", ex.getMessage()); - } - } - - @Test - public void testProcessingRawDataForSpaceUser() - { - try - { - getDataService().processingRawData(sessionToken, "test_role", "test-processing", sampleIds, "UNKNOWN"); - } catch (EnvironmentFailureException ex) - { - AssertionUtil.assertContains("[DS-2]", ex.getMessage()); - } - } - - private String renderMsInjectionDataInfos(List<MsInjectionDataInfo> infos) - { - Collections.sort(infos, new SimpleComparator<MsInjectionDataInfo, String>() - { - @Override - public String evaluate(MsInjectionDataInfo item) - { - return item.getMsInjectionSampleCode(); - } - }); - CommaSeparatedListBuilder builder = new CommaSeparatedListBuilder(); - for (MsInjectionDataInfo info : infos) - { - builder.append(info.getMsInjectionSampleCode() + ":" + info.getBiologicalSampleIdentifier() + ":" - + info.getBiologicalExperimentIdentifier()); - } - return builder.toString(); - } - - private List<NewSample> createMsInjectionSamples(String... parentIdentifiers) - { - List<NewSample> samples = new ArrayList<NewSample>(); - SampleType sampleType = new SampleTypeBuilder().code("MS_INJECTION").getSampleType(); - for (int i = 0; i < parentIdentifiers.length; i++) - { - NewSample sample = new NewSample(); - sample.setParentIdentifier(parentIdentifiers[i]); - sample.setIdentifier("/MS_DATA/MSI-" + i); - sample.setSampleType(sampleType); - sample.setExperimentIdentifier(EXPERIMENT_IDENTIFIER); - samples.add(sample); - } - return samples; - } -} diff --git a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/proteomics/systemtests/ServerAuthorizationTest.java b/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/proteomics/systemtests/ServerAuthorizationTest.java deleted file mode 100644 index 1211b9ac241282fff61d731ec53028dbf5807672..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/proteomics/systemtests/ServerAuthorizationTest.java +++ /dev/null @@ -1,108 +0,0 @@ -/* - * Copyright 2012 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.proteomics.systemtests; - -import org.testng.annotations.BeforeClass; -import org.testng.annotations.Test; - -import ch.systemsx.cisd.common.exceptions.AuthorizationFailureException; -import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.RoleWithHierarchy.RoleCode; -import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.SpaceIdentifier; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.IProteomicsDataServiceInternal; - -/** - * @author Franz-Josef Elmer - */ -@Test(groups = { "slow", "systemtest" }) -public class ServerAuthorizationTest extends AbstractProteomicsSystemTestCase -{ - private static final String USER_A = "USER_A"; - - private static final String USER_INSTANCE_OBSERVER = "USER_B"; - - private static final SpaceIdentifier SPACE_A = new SpaceIdentifier("CISD"); - - @BeforeClass - public void createTestUsers() - { - assignSpaceRole(registerPerson(USER_A), RoleCode.ETL_SERVER, SPACE_A); - assignInstanceRole(registerPerson(USER_INSTANCE_OBSERVER), RoleCode.OBSERVER); - } - - @Test(expectedExceptions = AuthorizationFailureException.class) - public void testForServerSetSessionUserFailedBecauseOfAuthorization() - { - String sessionToken = authenticateAs(USER_A); - getServer().setSessionUser(sessionToken, "abc"); - } - - @Test(expectedExceptions = AuthorizationFailureException.class) - public void testListProteinSummariesByExperimentFailedBecauseOfAuthorization() - { - String sessionToken = authenticateAs(USER_A); - getServer().listProteinSummariesByExperiment(sessionToken, new TechId(42)); - } - - @Test(expectedExceptions = AuthorizationFailureException.class) - public void testForDataServiceInternalSetSessionUserFailedBecauseOfAuthorization() - { - IProteomicsDataServiceInternal dataServiceInternal = getDataServiceInternal(); - String sessionToken = dataServiceInternal.tryAuthenticate(USER_A, "abc").getSessionToken(); - dataServiceInternal.setSessionUser(sessionToken, "abc"); - } - - @Test(expectedExceptions = AuthorizationFailureException.class) - public void testForDataServiceInternalListExperimentsFailedBecauseOfAuthorization() - { - IProteomicsDataServiceInternal dataServiceInternal = getDataServiceInternal(); - String sessionToken = dataServiceInternal.tryAuthenticate(USER_A, "abc").getSessionToken(); - dataServiceInternal.listExperiments(sessionToken, "MS_SEARCH"); - } - - @Test - public void testForDataServiceListExperimentsFailedBecauseOfAuthorization() - { - String sessionToken = authenticateAs(USER_A); - try - { - getDataService().listExperiments(sessionToken, USER_A, "MS_SEARCH"); - fail("AuthorizationFailureException expected"); - } catch (AuthorizationFailureException ex) - { - assertEquals("Authorization failure: ERROR: \"None of method roles " - + "'[INSTANCE_OBSERVER, INSTANCE_ADMIN]' " - + "could be found in roles of user 'USER_A'.\".", ex.getMessage()); - } - } - - @Test - public void testForDataServiceListExperimentsFailedBecauseOfAuthorizationOnSecondLevel() - { - String sessionToken = authenticateAs(USER_INSTANCE_OBSERVER); - try - { - getDataService().listExperiments(sessionToken, USER_A, "MS_SEARCH"); - fail("AuthorizationFailureException expected"); - } catch (AuthorizationFailureException ex) - { - assertEquals("Authorization failure: ERROR: \"None of method roles " - + "'[PROJECT_USER, PROJECT_POWER_USER, PROJECT_ADMIN, SPACE_ADMIN, INSTANCE_ADMIN, SPACE_POWER_USER, SPACE_USER]' " - + "could be found in roles of user 'USER_A'.\".", ex.getMessage()); - } - } -} diff --git a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/proteomics/systemtests/authorization/validator/CommonValidatorProteomicsSystemTest.java b/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/proteomics/systemtests/authorization/validator/CommonValidatorProteomicsSystemTest.java deleted file mode 100644 index 109f75aea326e53a506c64b364ba40a642581ce9..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/proteomics/systemtests/authorization/validator/CommonValidatorProteomicsSystemTest.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2017 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.proteomics.systemtests.authorization.validator; - -import ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.validator.CommonValidatorSystemTest; - -/** - * @author pkupczyk - */ -public abstract class CommonValidatorProteomicsSystemTest<O> extends CommonValidatorSystemTest<O> -{ - - @Override - protected String getApplicationContextLocation() - { - return "classpath:proteomics-applicationContext.xml"; - } - -} diff --git a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/proteomics/systemtests/authorization/validator/sample/ParentSampleValidatorSystemTest.java b/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/proteomics/systemtests/authorization/validator/sample/ParentSampleValidatorSystemTest.java deleted file mode 100644 index 09d22f285ec740d884a10ade19890b424f46ee3e..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/proteomics/systemtests/authorization/validator/sample/ParentSampleValidatorSystemTest.java +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Copyright 2017 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.proteomics.systemtests.authorization.validator.sample; - -import ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.ProjectAuthorizationUser; -import ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.common.SampleUtil; -import ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.validator.CommonValidatorSystemTestAssertions; -import ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.validator.CommonValidatorSystemTestSampleAssertions; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample; -import ch.systemsx.cisd.openbis.generic.shared.dto.ProjectPE; -import ch.systemsx.cisd.openbis.generic.shared.dto.SpacePE; -import ch.systemsx.cisd.openbis.proteomics.systemtests.authorization.validator.CommonValidatorProteomicsSystemTest; - -/** - * @author pkupczyk - */ -public class ParentSampleValidatorSystemTest extends CommonValidatorProteomicsSystemTest<Sample> -{ - - @Override - public Object[] getParams() - { - return getSampleKinds(SampleKind.SHARED_READ); - } - - @Override - protected Sample createObject(SpacePE spacePE, ProjectPE projectPE, Object param) - { - Sample parent = SampleUtil.createObject(this, spacePE, projectPE, param); - Sample sample = new Sample(); - sample.addParent(parent); - return sample; - } - - @Override - protected Sample validateObject(ProjectAuthorizationUser user, Sample object, Object param) - { - return getBean(SampleValidatorProteomicsTestService.class).testParentSampleValidator(user.getSessionProvider(), object); - } - - @Override - protected CommonValidatorSystemTestAssertions<Sample> getAssertions() - { - return new CommonValidatorSystemTestSampleAssertions<>(super.getAssertions()); - } - -} diff --git a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/proteomics/systemtests/authorization/validator/sample/RawDataSampleValidatorSystemTest.java b/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/proteomics/systemtests/authorization/validator/sample/RawDataSampleValidatorSystemTest.java deleted file mode 100644 index 9a06c6a653e826a1d9d70d8f4884916bddabd7f0..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/proteomics/systemtests/authorization/validator/sample/RawDataSampleValidatorSystemTest.java +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright 2017 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.proteomics.systemtests.authorization.validator.sample; - -import ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.ProjectAuthorizationUser; -import ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.common.SampleUtil; -import ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.validator.CommonValidatorSystemTestAssertions; -import ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.validator.CommonValidatorSystemTestSampleAssertions; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample; -import ch.systemsx.cisd.openbis.generic.shared.dto.ProjectPE; -import ch.systemsx.cisd.openbis.generic.shared.dto.SpacePE; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.dto.MsInjectionSample; -import ch.systemsx.cisd.openbis.proteomics.systemtests.authorization.validator.CommonValidatorProteomicsSystemTest; - -/** - * @author pkupczyk - */ -public class RawDataSampleValidatorSystemTest extends CommonValidatorProteomicsSystemTest<MsInjectionSample> -{ - - @Override - public Object[] getParams() - { - return getSampleKinds(SampleKind.SHARED_READ); - } - - @Override - protected MsInjectionSample createObject(SpacePE spacePE, ProjectPE projectPE, Object param) - { - Sample parent = SampleUtil.createObject(this, spacePE, projectPE, param); - Sample sample = new Sample(); - sample.addParent(parent); - return new MsInjectionSample(sample, null); - } - - @Override - protected MsInjectionSample validateObject(ProjectAuthorizationUser user, MsInjectionSample object, Object param) - { - return getBean(SampleValidatorProteomicsTestService.class).testRawDataSampleValidator(user.getSessionProvider(), object); - } - - @Override - protected CommonValidatorSystemTestAssertions<MsInjectionSample> getAssertions() - { - return new CommonValidatorSystemTestSampleAssertions<>(super.getAssertions()); - } - -} diff --git a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/proteomics/systemtests/authorization/validator/sample/SampleValidatorProteomicsTestService.java b/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/proteomics/systemtests/authorization/validator/sample/SampleValidatorProteomicsTestService.java deleted file mode 100644 index 4b988f35884271b7d188cdae8734ff6c80c87ed2..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/proteomics/systemtests/authorization/validator/sample/SampleValidatorProteomicsTestService.java +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Copyright 2017 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.proteomics.systemtests.authorization.validator.sample; - -import org.springframework.stereotype.Component; -import org.springframework.transaction.annotation.Transactional; - -import ch.systemsx.cisd.openbis.generic.server.authorization.annotation.ReturnValueFilter; -import ch.systemsx.cisd.openbis.generic.server.authorization.annotation.RolesAllowed; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.RoleWithHierarchy; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample; -import ch.systemsx.cisd.openbis.generic.shared.dto.IAuthSessionProvider; -import ch.systemsx.cisd.openbis.plugin.proteomics.server.authorization.validator.ParentSampleValidator; -import ch.systemsx.cisd.openbis.plugin.proteomics.server.authorization.validator.RawDataSampleValidator; -import ch.systemsx.cisd.openbis.plugin.proteomics.shared.dto.MsInjectionSample; - -/** - * @author pkupczyk - */ -@Component -public class SampleValidatorProteomicsTestService -{ - - @Transactional - @RolesAllowed(value = { RoleWithHierarchy.PROJECT_OBSERVER }) - @ReturnValueFilter(validatorClass = ParentSampleValidator.class) - public Sample testParentSampleValidator(IAuthSessionProvider sessionProvider, Sample sample) - { - return sample; - } - - @Transactional - @RolesAllowed(value = { RoleWithHierarchy.PROJECT_OBSERVER }) - @ReturnValueFilter(validatorClass = RawDataSampleValidator.class) - public MsInjectionSample testRawDataSampleValidator(IAuthSessionProvider sessionProvider, MsInjectionSample sample) - { - return sample; - } - -} diff --git a/rtd_phosphonetx/sourceTest/java/tests.xml b/rtd_phosphonetx/sourceTest/java/tests.xml deleted file mode 100644 index 34383147e472d19ce07022e3313331a7b07de82b..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/sourceTest/java/tests.xml +++ /dev/null @@ -1,14 +0,0 @@ -<suite name="All" verbose="2" > - <test name="All" annotations="JDK"> - <groups> - <run> - <exclude name="broken" /> - </run> - </groups> - <packages> - <package name="ch.systemsx.cisd.openbis.etlserver.proteomics.*" /> - <package name="ch.systemsx.cisd.openbis.dss.proteomics.*" /> - <package name="ch.systemsx.cisd.openbis.plugin.proteomics.*" /> - </packages> - </test> -</suite> diff --git a/rtd_phosphonetx/sourceTest/java/tests_project_authorization.xml b/rtd_phosphonetx/sourceTest/java/tests_project_authorization.xml deleted file mode 100644 index 22211d608c91df4b0afd428f144f8d71a18efaec..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/sourceTest/java/tests_project_authorization.xml +++ /dev/null @@ -1,12 +0,0 @@ -<suite name="projectAuthorization" verbose="2"> - <test name="unit" annotations="JDK"> - <groups> - <run> - <exclude name="broken" /> - </run> - </groups> - <packages> - <package name="ch.systemsx.cisd.openbis.proteomics.systemtests.authorization.validator.*" /> - </packages> - </test> -</suite> diff --git a/rtd_phosphonetx/sourceTest/java/tests_system.xml b/rtd_phosphonetx/sourceTest/java/tests_system.xml deleted file mode 100644 index f5f68092a5bfb6fb417d3fdb296606ce50fb70c5..0000000000000000000000000000000000000000 --- a/rtd_phosphonetx/sourceTest/java/tests_system.xml +++ /dev/null @@ -1,7 +0,0 @@ -<suite name="SystemTests" verbose="2" > - <test name="SystemTests" annotations="JDK"> - <packages> - <package name="ch.systemsx.cisd.openbis.proteomics.systemtests.*" /> - </packages> - </test> -</suite>