Merge branch 'dev' of git://github.com/galaxyproject/galaxy into move_tsg

This commit is contained in:
Dave Bouvier
2016-03-23 09:54:08 -04:00
114 changed files with 3924 additions and 260 deletions
+38 -3
View File
@@ -5,12 +5,47 @@ RELEASE_NEXT:=16.04
#RELEASE_NEXT_BRANCH:=release_$(RELEASE_NEXT)
RELEASE_NEXT_BRANCH:=dev
RELEASE_UPSTREAM:=upstream
# Location of virtualenv used for development.
VENV?=.venv
# Source virtualenv to execute command (flake8, sphinx, twine, etc...)
IN_VENV=if [ -f $(VENV)/bin/activate ]; then . $(VENV)/bin/activate; fi;
PROJECT_URL?=https://github.com/galaxyproject/galaxy
GRUNT_DOCKER_NAME:=galaxy/client-builder:16.01
all: help
@echo "This makefile is primarily used for building Galaxy's JS client. A sensible all target is not yet implemented."
npm-deps:
docs: ## generate Sphinx HTML documentation, including API docs
$(IN_VENV) $(MAKE) -C doc clean
$(IN_VENV) $(MAKE) -C doc html
_open-docs:
open doc/_build/html/index.html || xdg-open doc/_build/html/index.html
open-docs: docs _open-docs ## generate Sphinx HTML documentation and open in browser
open-project: ## open project on github
open $(PROJECT_URL) || xdg-open $(PROJECT_URL)
lint: ## check style using tox and flake8 for Python 2 and Python 3
$(IN_VENV) tox -e py27-lint && tox -e py34-lint
release-issue: ## Create release issue on github
$(IN_VENV) python scripts/bootstrap_history.py --create-release-issue $(RELEASE_CURR)
release-check-metadata: ## check github PR metadata for target release
$(IN_VENV) python scripts/bootstrap_history.py --check-release $(RELEASE_CURR)
release-check-blocking-issues: ## Check github for release blocking issues
$(IN_VENV) python scripts/bootstrap_history.py --check-blocking-issues $(RELEASE_CURR)
release-check-blocking-prs: ## Check github for release blocking PRs
$(IN_VENV) python scripts/bootstrap_history.py --check-blocking-prs $(RELEASE_CURR)
release-bootstrap-history: ## bootstrap history for a new release
$(IN_VENV) python scripts/bootstrap_history.py --release $(RELEASE_CURR)
npm-deps: ## Install NodeJS dependencies.
cd client && npm install
grunt: npm-deps ## Calls out to Grunt to build client
@@ -22,7 +57,7 @@ style: npm-deps ## Calls the style task of Grunt
webpack: npm-deps ## Pack javascript
cd client && node_modules/webpack/bin/webpack.js -p
client: grunt style webpack ## Process all client-side tasks
client: grunt style webpack ## Rebuild all client-side artifacts
grunt-docker-image: ## Build docker image for running grunt
docker build -t ${GRUNT_DOCKER_NAME} client
@@ -35,7 +70,7 @@ clean-grunt-docker-image: ## Remove grunt docker image
# Release Targets
create_release_rc: ## Create a release-candidate branch
release-create-rc: ## Create a release-candidate branch
git checkout dev
git pull --ff-only ${RELEASE_UPSTREAM} dev
git push origin dev
+1 -1
View File
@@ -274,7 +274,7 @@ var Tab = Backbone.View.extend({
this.$toggle.html( this.model.get( 'title' ) || '' )
.removeClass().addClass( 'dropdown-toggle' )
.addClass( this.model.get( 'cls' ) )
.addClass( this.model.get( 'icon' ) && 'fa fa-2x ' + this.model.get( 'icon' ) )
.addClass( this.model.get( 'icon' ) && 'dropdown-icon fa ' + this.model.get( 'icon' ) )
.addClass( this.model.get( 'toggle' ) && 'toggle' )
.attr( 'target', this.model.get( 'target' ) )
.attr( 'href', this.model.get( 'url' ) )
+26 -23
View File
@@ -32,7 +32,7 @@ var PageLayoutView = Backbone.View.extend( BaseMVC.LoggableMixin ).extend({
Galaxy.modal = this.modal = new Modal.View();
this.masthead = new Masthead.View( this.options.config );
this.$el.attr( 'scroll', 'no' );
this.$el.append( this._template() );
this.$el.html( this._template() );
this.$el.append( this.masthead.$el );
this.$el.append( this.modal.$el );
this.$messagebox = this.$( '#messagebox' );
@@ -72,11 +72,11 @@ var PageLayoutView = Backbone.View.extend( BaseMVC.LoggableMixin ).extend({
renderInactivityBox : function() {
if( this.options.show_inactivity_warning ){
var content = this.options.inactivity_box_content || '';
var verificationLink = $( '<a/>' ).attr( 'href', Galaxy.root + 'user/resend_verification' ).html( 'Resend verification.' );
var verificationLink = $( '<a/>' ).attr( 'href', Galaxy.root + 'user/resend_verification' ).text( 'Resend verification' );
this.$el.addClass( 'has-inactivity-box' );
this.$inactivebox
.html( content )
.append( ' ' + verificationLink )
.html( content + ' ' )
.append( verificationLink )
.toggle( !!content )
.show();
} else {
@@ -93,10 +93,14 @@ var PageLayoutView = Backbone.View.extend( BaseMVC.LoggableMixin ).extend({
if( _.has( page, panelId ) ){
page[ panelId ].setElement( '#' + panelId );
page[ panelId ].render();
} else if ( panelId !== 'center' ) {
page.center.$el.css( panelId, 0 );
}
});
if( !this.left ){
this.center.$el.css( 'left', 0 );
}
if( !this.right ){
this.center.$el.css( 'right', 0 );
}
return this;
},
@@ -106,27 +110,26 @@ var PageLayoutView = Backbone.View.extend( BaseMVC.LoggableMixin ).extend({
'<div id="everything">',
'<div id="background"/>',
'<div id="messagebox"/>',
'<div id="inactivebox" class="panel-warning-message"/>',
'<div id="left"/>',
'<div id="center" class="inbound"/>',
'<div id="right"/>',
'<div id="inactivebox" class="panel-warning-message" />',
this.left? '<div id="left" />' : '',
this.center? '<div id="center" class="inbound" />' : '',
this.right? '<div id="right" />' : '',
'</div>',
'<div id="dd-helper"/>',
'<noscript>',
'<div class="overlay overlay-background noscript-overlay">',
'<div>',
'<h3 class="title">Javascript Required for Galaxy</h3>',
'<div>',
'The Galaxy analysis interface requires a browser with Javascript enabled.<br>',
'Please enable Javascript and refresh this page',
'</div>',
'</div>',
'</div>',
'</noscript>'
'<div id="dd-helper" />',
].join('');
},
toString : function() { return 'PageLayoutView' }
/** hide both side panels if previously shown */
hideSidePanels : function(){
if( this.left ){
this.left.hide();
}
if( this.right ){
this.right.hide();
}
},
toString : function() { return 'PageLayoutView'; }
});
// ============================================================================
@@ -220,29 +220,22 @@ var FolderView = Backbone.View.extend({
tmpl_array.push(' <a href="#folders/<%- item.get("folder_id") %>/datasets/<%- item.id %>/permissions"><button data-toggle="tooltip" data-placement="top" title="Manage permissions" class="btn btn-default toolbtn_change_permissions primary-button" type="button"><span class="fa fa-group"></span> Permissions</span></button></a>');
tmpl_array.push(' <button data-toggle="tooltip" data-placement="top" title="Share dataset" class="btn btn-default toolbtn-share-dataset primary-button" type="button"><span class="fa fa-share"></span> Share</span></button>');
tmpl_array.push(' </div>');
// tmpl_array.push('<% if (item.get("is_unrestricted")) { %>');
tmpl_array.push(' <p>');
tmpl_array.push(' This dataset is unrestricted so everybody can access it. Just share the URL of this page. ');
tmpl_array.push(' <button data-toggle="tooltip" data-placement="top" title="Copy to clipboard" class="btn btn-default btn-copy-link-to-clipboard primary-button" type="button"><span class="fa fa-clipboard"></span> To Clipboard</span></button> ');
tmpl_array.push(' </p>');
// tmpl_array.push('<% } %>');
tmpl_array.push('<div class="dataset_table">');
tmpl_array.push(' <table class="grid table table-striped table-condensed">');
tmpl_array.push(' <tr>');
tmpl_array.push(' <th scope="row" id="id_row" data-id="<%= _.escape(item.get("ldda_id")) %>">Name</th>');
tmpl_array.push(' <td><%= _.escape(item.get("name")) %></td>');
tmpl_array.push(' </tr>');
tmpl_array.push(' <% if (item.get("file_ext")) { %>');
tmpl_array.push(' <tr>');
tmpl_array.push(' <th scope="row">Data type</th>');
tmpl_array.push(' <td><%= _.escape(item.get("file_ext")) %></td>');
tmpl_array.push(' </tr>');
tmpl_array.push(' <% } %>');
tmpl_array.push(' </table>');
tmpl_array.push('</div>');
@@ -99,7 +99,7 @@ var FolderToolbarView = Backbone.View.extend({
renderPaginator: function( options ){
this.options = _.extend( this.options, options );
var paginator_template = this.templatePaginator();
this.$el.find( '#folder_paginator' ).html( paginator_template({
$("body").find( '.folder-paginator' ).html( paginator_template({
id: this.options.id,
show_page: parseInt( this.options.show_page ),
page_count: parseInt( this.options.page_count ),
@@ -482,6 +482,13 @@ var FolderToolbarView = Backbone.View.extend({
}
});
$('.libimport-select-all').bind("click", function(){
$('#jstree_browser').jstree("check_all");
});
$('.libimport-select-none').bind("click", function(){
$('#jstree_browser').jstree("uncheck_all");
});
this.renderSelectBoxes();
options.disabled_jstree_element = 'folders';
this.renderJstree( options );
@@ -637,7 +644,9 @@ var FolderToolbarView = Backbone.View.extend({
* @see renderJstree
*/
importFromJstreePath: function ( that, options ){
var selected_nodes = $( '#jstree_browser' ).jstree().get_selected( true );
var all_nodes = $( '#jstree_browser' ).jstree().get_selected( true );
// remove the disabled elements that could have been trigerred with the 'select all'
selected_nodes = _.filter(all_nodes, function(node){ return node.state.disabled == false; })
var preserve_dirs = this.modal.$el.find( '.preserve-checkbox' ).is( ':checked' );
var link_data = this.modal.$el.find( '.link-checkbox' ).is( ':checked' );
var file_type = this.select_extension.value();
@@ -868,8 +877,6 @@ var FolderToolbarView = Backbone.View.extend({
* @param {array} lddas_set array of lddas to delete
*/
chainCallDeletingItems: function( items_to_delete ){
console.log('chaincall');
console.log(items_to_delete);
var self = this;
this.deleted_items = new mod_library_model.Folder();
var popped_item = items_to_delete.pop();
@@ -900,8 +907,6 @@ var FolderToolbarView = Backbone.View.extend({
console.error('Unknown library item type found.');
console.error(item.type || item.model_class);
}
console.log('updated item')
console.log(updated_item);
Galaxy.libraries.folderListView.collection.add( updated_item );
}
self.chainCallDeletingItems( items_to_delete );
@@ -949,7 +954,7 @@ var FolderToolbarView = Backbone.View.extend({
var dataset_ids = [];
var folder_ids = [];
checkedValues.each(function(){
if ($(this.parentElement.parentElement).data('id') !== '') {
if ($(this.parentElement.parentElement).data('id') !== undefined) {
if ($(this.parentElement.parentElement).data('id').substring(0,1) == 'F'){
folder_ids.push($(this.parentElement.parentElement).data('id'));
} else {
@@ -972,7 +977,6 @@ var FolderToolbarView = Backbone.View.extend({
var folder = new mod_library_model.FolderAsModel({id:folder_ids[i]});
items_to_delete.push(folder);
}
console.log(items_to_delete);
this.options.chain_call_control.total_number = items_total.length;
// call the recursive function to call ajax one after each other (request FIFO queue)
@@ -1059,7 +1063,7 @@ var FolderToolbarView = Backbone.View.extend({
tmpl_array.push(' <div id="library_toolbar">');
tmpl_array.push('<form class="form-inline" role="form">');
tmpl_array.push(' <span><strong>DATA LIBRARIES</strong></span>');
tmpl_array.push(' <span id="folder_paginator" class="library-paginator">');
tmpl_array.push(' <span class="library-paginator folder-paginator">');
// paginator will append here
tmpl_array.push(' </span>');
tmpl_array.push('<div class="checkbox toolbar-item logged-dataset-manipulation" style="height: 20px; display:none;">');
@@ -1119,6 +1123,8 @@ var FolderToolbarView = Backbone.View.extend({
tmpl_array.push(' <div id="folder_items_element">');
tmpl_array.push(' </div>');
tmpl_array.push('</div>');
tmpl_array.push('<div class="folder-paginator paginator-bottom"></div>');
// CONTAINER END
return _.template(tmpl_array.join(''));
@@ -1192,7 +1198,7 @@ var FolderToolbarView = Backbone.View.extend({
tmpl_array.push('<div id="new_folder_modal">');
tmpl_array.push('<form>');
tmpl_array.push('<input type="text" name="Name" value="" placeholder="Name">');
tmpl_array.push('<input type="text" name="Name" value="" placeholder="Name" autofocus>');
tmpl_array.push('<input type="text" name="Description" value="" placeholder="Description">');
tmpl_array.push('</form>');
tmpl_array.push('</div>');
@@ -1267,16 +1273,15 @@ var FolderToolbarView = Backbone.View.extend({
var tmpl_array = [];
tmpl_array.push('<div id="file_browser_modal">');
tmpl_array.push('<div class="alert alert-info jstree-files-message">All files you select will be imported into the current folder.</div>');
tmpl_array.push('<div class="alert alert-info jstree-files-message">All files you select will be imported into the current folder ignoring their folder structure.</div>');
tmpl_array.push('<div class="alert alert-info jstree-folders-message" style="display:none;">All files within the selected folders and their subfolders will be imported into the current folder.</div>');
tmpl_array.push('<div style="margin-bottom:1em;">');
tmpl_array.push('<label class="radio-inline">');
tmpl_array.push(' <input title="Switch to selecting files" type="radio" name="jstree-radio" value="jstree-disable-folders" checked="checked"> Files');
tmpl_array.push('<label title="Switch to selecting files" class="radio-inline import-type-switch">');
tmpl_array.push(' <input type="radio" name="jstree-radio" value="jstree-disable-folders" checked="checked"> Choose Files');
tmpl_array.push('</label>');
tmpl_array.push('<label class="radio-inline">');
tmpl_array.push(' <input title="Switch to selecting folders" type="radio" name="jstree-radio" value="jstree-disable-files"> Folders');
tmpl_array.push('<label title="Switch to selecting folders" class="radio-inline import-type-switch">');
tmpl_array.push(' <input type="radio" name="jstree-radio" value="jstree-disable-files"> Choose Folders');
tmpl_array.push('</label>');
tmpl_array.push('</div>');
tmpl_array.push('<div style="margin-bottom:1em;">');
@@ -1289,9 +1294,16 @@ var FolderToolbarView = Backbone.View.extend({
tmpl_array.push('Link files instead of copying');
tmpl_array.push(' </label>');
tmpl_array.push('</div>');
tmpl_array.push('<button title="Select all files" type="button" class="button primary-button libimport-select-all">');
tmpl_array.push('Select all');
tmpl_array.push('</button>');
tmpl_array.push('<button title="Select no files" type="button" class="button primary-button libimport-select-none">');
tmpl_array.push('Select none');
tmpl_array.push('</button>');
tmpl_array.push('<hr />');
// append jstree object here
tmpl_array.push('<div id="jstree_browser">');
tmpl_array.push('</div>');
tmpl_array.push('<hr />');
tmpl_array.push('<p>You can set extension type and genome for all imported datasets at once:</p>');
tmpl_array.push('<div>');
@@ -1320,7 +1332,7 @@ var FolderToolbarView = Backbone.View.extend({
tmpl_array.push(' </label>');
tmpl_array.push('</div>');
tmpl_array.push('<textarea id="import_paths" class="form-control" rows="5" placeholder="Absolute paths (or paths relative to Galaxy root) separated by newline"></textarea>');
tmpl_array.push('<textarea id="import_paths" class="form-control" rows="5" placeholder="Absolute paths (or paths relative to Galaxy root) separated by newline" autofocus></textarea>');
tmpl_array.push('<hr />');
tmpl_array.push('<p>You can set extension type and genome for all imported datasets at once:</p>');
@@ -15,7 +15,7 @@ var LibraryToolbarView = Backbone.View.extend({
},
events: {
'click #create_new_library_btn' : 'showLibraryModal',
'click #create_new_library_btn' : 'createLibraryFromModal',
'click #include_deleted_chk' : 'includeDeletedChecked',
'click #lib_page_size_prompt' : 'showPageSizePrompt',
'keyup .library-search-input' : 'searchLibraries'
@@ -58,7 +58,7 @@ var LibraryToolbarView = Backbone.View.extend({
* User clicked on 'New library' button. Show modal to
* satisfy the wish.
*/
showLibraryModal : function (event){
createLibraryFromModal : function (event){
event.preventDefault();
event.stopPropagation();
var self = this;
@@ -240,7 +240,7 @@ var LibraryToolbarView = Backbone.View.extend({
return _.template([
'<div id="new_library_modal">',
'<form>',
'<input type="text" name="Name" value="" placeholder="Name">',
'<input type="text" name="Name" value="" placeholder="Name" autofocus>',
'<input type="text" name="Description" value="" placeholder="Description">',
'<input type="text" name="Synopsis" value="" placeholder="Synopsis">',
'</form>',
@@ -79,7 +79,12 @@ define(['utils/utils', 'utils/deferred', 'mvc/ui/ui-misc', 'mvc/form/form-view',
url : build_url,
data : build_data,
success : function(new_model) {
self._buildForm(new_model['tool_model'] || new_model);
new_model = new_model.tool_model || new_model;
if( !new_model.display ) {
window.location = Galaxy.root;
return;
}
self._buildForm(new_model);
!hide_message && self.message.update({
status : 'success',
message : 'Now you are using \'' + self.options.name + '\' version ' + self.options.version + ', id \'' + self.options.id + '\'.',
@@ -87,11 +92,12 @@ define(['utils/utils', 'utils/deferred', 'mvc/ui/ui-misc', 'mvc/form/form-view',
});
Galaxy.emit.debug('tool-form-base::initialize()', 'Initial tool model ready.', new_model);
process.resolve();
},
error : function(response) {
error : function(response, xhr) {
var error_message = ( response && response.err_msg ) || 'Uncaught error.';
if ( self.$el.is(':empty') ) {
if ( xhr.status == 401 ) {
window.location = Galaxy.root + 'user/login?' + $.param({ redirect : Galaxy.root + '?tool_id=' + self.options.id });
} else if ( self.$el.is(':empty') ) {
self.$el.prepend((new Ui.Message({
message : error_message,
status : 'danger',
@@ -98,7 +98,7 @@ define(['utils/utils', 'mvc/tool/tool-form-base'],
type : 'boolean',
value : String(Boolean(this.post_job_actions['EmailAction' + output_id])),
ignore : 'false',
help : 'An email notification will be send when the job has completed.',
help : 'An email notification will be sent when the job has completed.',
payload : {
'host' : window.location.host
}
+1 -1
View File
@@ -14,7 +14,7 @@ define(['utils/utils', 'mvc/ui/ui-misc', 'mvc/tool/tool-form-base', 'mvc/tool/to
icon : 'fa-check',
tooltip : 'Execute: ' + options.name + ' (' + options.version + ')',
title : 'Execute',
cls : 'btn btn-primary',
cls : 'ui-button btn btn-primary',
floating : 'clear',
onclick : function() {
execute_btn.wait();
+4
View File
@@ -430,6 +430,10 @@ div.unified-panel-body-background {
.toggle {
color : gold;
}
.dropdown-icon {
top : 1px;
font-size : 1.8em;
}
.dropdown-note {
font-weight : bold;
font-size : 10px;
+12
View File
@@ -229,3 +229,15 @@ span.expandLink {
.library-paginator {
margin-left: 2em;
}
.paginator-bottom{
width: 27em;
margin-left: auto;
margin-right: auto;
}
.import-type-switch{
text-decoration: underline;
}
.libimport-select-none,
.libimport-select-all{
margin-left: 0.5em;
}
+3 -2
View File
@@ -111,7 +111,7 @@
// buttons
.ui-button {
i {
font-size: 1.2em;
font-size: 1.1em;
}
}
.ui-button-icon {
@@ -579,6 +579,7 @@
i {
padding-right: @ui-margin-horizontal;
font-size: 1.1em;
}
}
@@ -670,7 +671,7 @@
position: relative;
.icon-dropdown {
position: absolute;
top: 8px;
top: 7px;
right: 8px;
cursor: pointer;
}
+1
View File
@@ -63,6 +63,7 @@
color: @btn-default-border;
i {
margin-right: 10px;
font-size: inherit;
}
}
.upload-row {
+56
View File
@@ -15,6 +15,7 @@
<display file="ensembl/ensembl_bam.xml" />
<display file="igv/bam.xml" />
<display file="igb/bam.xml" />
<display file="iobio/bam.xml" />
</datatype>
<datatype extension="cram" type="galaxy.datatypes.binary:CRAM" mimetype="application/octet-stream" display_in_upload="true" description="CRAM is a file format for highly efficient and tunable reference-based compression of alignment data." description_url="http://www.ebi.ac.uk/ena/software/cram-usage"/>
<datatype extension="bed" type="galaxy.datatypes.interval:Bed" display_in_upload="true" description="BED format provides a flexible way to define the data lines that are displayed in an annotation track. BED lines have three required columns and nine additional optional columns. The three required columns are chrom, chromStart and chromEnd." description_url="https://wiki.galaxyproject.org/Learn/Datatypes#Bed">
@@ -247,6 +248,7 @@
<display file="ucsc/vcf.xml" />
<display file="igv/vcf.xml" />
<display file="rviewer/vcf.xml" inherit="True"/>
<display file="iobio/vcf.xml" />
</datatype>
<datatype extension="bcf" type="galaxy.datatypes.binary:Bcf" mimetype="application/octet-stream" display_in_upload="True">
<converter file="bcf_to_bcf_bgzip_converter.xml" target_datatype="bcf_bgzip"/>
@@ -441,6 +443,53 @@
<datatype extension="biom1" type="galaxy.datatypes.text:Biom1" display_in_upload="True" subclass="True" mimetype="application/json" />
<!-- Strand-specific Coordinate Count Datatype used by the Center for Eukaryotic Gene Regulation labs at Penn State -->
<datatype extension="scidx" type="galaxy.datatypes.interval:ScIdx" display_in_upload="true" />
<!--Cheminformatics Datatypes -->
<datatype extension="smi" type="galaxy.datatypes.molecules:SMILES" display_in_upload="True">
<!-- The ordering is important. The first one is considered as default converter in the build-in conversion function -> (as sdf)-->
<converter file="smi_to_sdf_converter.xml" target_datatype="sdf"/>
<converter file="smi_to_inchi_converter.xml" target_datatype="inchi"/>
<converter file="smi_to_cml_converter.xml" target_datatype="cml"/>
<converter file="smi_to_mol_converter.xml" target_datatype="mol"/>
<converter file="smi_to_mol2_converter.xml" target_datatype="mol2"/>
<converter file="smi_to_smi_converter.xml" target_datatype="smi"/>
</datatype>
<datatype extension="sdf" type="galaxy.datatypes.molecules:SDF" display_in_upload="True">
<converter file="sdf_to_smi_converter.xml" target_datatype="smi"/>
<converter file="sdf_to_inchi_converter.xml" target_datatype="inchi"/>
<converter file="sdf_to_mol2_converter.xml" target_datatype="mol2"/>
<converter file="sdf_to_cml_converter.xml" target_datatype="cml"/>
</datatype>
<datatype extension="inchi" type="galaxy.datatypes.molecules:InChI" display_in_upload="True">
<converter file="inchi_to_smi_converter.xml" target_datatype="smi"/>
<converter file="inchi_to_sdf_converter.xml" target_datatype="sdf"/>
<converter file="inchi_to_mol_converter.xml" target_datatype="mol"/>
<converter file="inchi_to_mol2_converter.xml" target_datatype="mol2"/>
<converter file="inchi_to_cml_converter.xml" target_datatype="cml"/>
</datatype>
<datatype extension="mol" type="galaxy.datatypes.molecules:MOL" display_in_upload="True">
<converter file="mol_to_smi_converter.xml" target_datatype="smi"/>
<converter file="mol_to_inchi_converter.xml" target_datatype="inchi"/>
<converter file="mol_to_mol2_converter.xml" target_datatype="mol2"/>
<converter file="mol_to_cml_converter.xml" target_datatype="cml"/>
</datatype>
<datatype extension="mol2" type="galaxy.datatypes.molecules:MOL2" display_in_upload="False">
<converter file="mol2_to_smi_converter.xml" target_datatype="smi"/>
<converter file="mol2_to_sdf_converter.xml" target_datatype="sdf"/>
<converter file="mol2_to_inchi_converter.xml" target_datatype="inchi"/>
<converter file="mol2_to_mol_converter.xml" target_datatype="mol"/>
<converter file="mol2_to_cml_converter.xml" target_datatype="cml"/>
</datatype>
<datatype extension="cml" type="galaxy.datatypes.molecules:CML" display_in_upload="True">
<converter file="cml_to_smi_converter.xml" target_datatype="smi"/>
<converter file="cml_to_inchi_converter.xml" target_datatype="inchi"/>
<converter file="cml_to_sdf_converter.xml" target_datatype="sdf"/>
<converter file="cml_to_mol2_converter.xml" target_datatype="mol2"/>
</datatype>
<datatype extension="fps" type="galaxy.datatypes.molecules:FPS" mimetype="text/html" display_in_upload="True" />
<datatype extension="obfs" type="galaxy.datatypes.molecules:OBFS" mimetype="text/html" display_in_upload="False" />
<datatype extension="phar" type="galaxy.datatypes.molecules:PHAR" display_in_upload="False" />
<datatype extension="pdb" type="galaxy.datatypes.molecules:PDB" display_in_upload="True" />
</registration>
<sniffers>
<!--
@@ -482,6 +531,7 @@
<sniffer type="galaxy.datatypes.proteomics:Msp"/>
<sniffer type="galaxy.datatypes.proteomics:SPLib"/>
<sniffer type="galaxy.datatypes.proteomics:ThermoRAW"/>
<sniffer type="galaxy.datatypes.molecules:CML"/>
<sniffer type="galaxy.datatypes.xml:GenericXml"/>
<sniffer type="galaxy.datatypes.triples:Turtle"/>
<sniffer type="galaxy.datatypes.triples:NTriples"/>
@@ -491,6 +541,12 @@
<sniffer type="galaxy.datatypes.sequence:csFasta"/>
<sniffer type="galaxy.datatypes.qualityscore:QualityScoreSOLiD"/>
<sniffer type="galaxy.datatypes.qualityscore:QualityScore454"/>
<sniffer type="galaxy.datatypes.molecules:SDF"/>
<sniffer type="galaxy.datatypes.molecules:PDB"/>
<sniffer type="galaxy.datatypes.molecules:MOL2"/>
<sniffer type="galaxy.datatypes.molecules:InChI"/>
<sniffer type="galaxy.datatypes.molecules:FPS"/>
<!-- TODO: see molecules.py <sniffer type="galaxy.datatypes.molecules:SMILES"/>-->
<sniffer type="galaxy.datatypes.sequence:Fasta"/>
<sniffer type="galaxy.datatypes.sequence:Fastq"/>
<sniffer type="galaxy.datatypes.interval:Wiggle"/>
+7
View File
@@ -656,6 +656,13 @@ nglims_config_file = tool-data/nglims.yaml
# log_events and log_actions functionality will eventually be merged.
#log_actions = True
# Fluentd configuration. Various events can be logged to the fluentd instance
# configured below by enabling fluent_log.
#fluent_log = False
#fluent_host = localhost
#fluent_port = 24224
# Sanitize all HTML tool output. By default, all tool output served as
# 'text/html' will be sanitized thoroughly. This can be disabled if you have
# special tools that require unaltered output. WARNING: disabling this does
+10
View File
@@ -75,4 +75,14 @@
<columns>dbkey, name, value</columns>
<file path="tool-data/liftOver.loc" />
</table>
<!-- iobio bam servers -->
<table name="bam_iobio" comment_char="#">
<columns>value, name, url</columns>
<file path="tool-data/bam_iobio.loc" />
</table>
<!-- iobio vcf servers -->
<table name="vcf_iobio" comment_char="#">
<columns>value, name, url</columns>
<file path="tool-data/vcf_iobio.loc" />
</table>
</tables>
+14 -12
View File
@@ -8,6 +8,8 @@
# chkconfig: 2345 98 20
# description: Galaxy http://galaxyproject.org/
#--- loading functions
. /etc/init.d/functions
#--- config
SERVICE_NAME="galaxy"
@@ -53,17 +55,17 @@ stop() {
echo "done."
}
status() {
echo -n "$SERVICE_NAME status: "
while read pid; do
if [ "$(readlink -m /proc/$pid/cwd)" = "$(readlink -m $RUN_IN)" ]; then
echo "started"
return 0
fi
done < <(ps ax -o 'pid cmd' | grep -P '^\s*\d+ python ./scripts/paster.py serve' | awk '{print $1}')
echo "stopped"
return 3
galaxy_status() {
if [[ $(grep '\[server:' $RUN_IN/config/galaxy.ini|awk -F'(:)|(])' '{ print $2 }') == 'main' ]]
then
echo -n "$SERVICE_NAME status: "
status -p $RUN_IN/paster.pid galaxy
else
for proc in $(grep '\[server:' $RUN_IN/config/galaxy.ini|awk -F'(:)|(])' '{ print $2 }')
do
status -p $RUN_IN/${proc}.pid ${proc}
done
fi
}
notsupported() {
@@ -90,7 +92,7 @@ case "$1" in
;;
status)
set +e
status
galaxy_status
exit $?
;;
'')
+95
View File
@@ -0,0 +1,95 @@
#!/bin/bash
#
# Init file for Galaxy (http://galaxyproject.org/)
# Suitable for use on Fedora and derivatives (RedHat Enterprise Linux, Scientific Linux, CentOS)
#
# Contributed by Brad Chapman
#
# chkconfig: 2345 98 20
# description: Galaxy http://galaxyproject.org/
#--- loading functions
. /etc/init.d/functions
#--- config
SERVICE_NAME="galaxy-reports"
RUN_AS="galaxy"
RUN_IN="/path/to/galaxy-dist"
#--- main actions
start() {
echo "Starting $SERVICE_NAME... "
cmd="cd $RUN_IN && sh run_reports.sh --daemon"
case "$(id -un)" in
$RUN_AS)
eval "$cmd"
;;
root)
su - $RUN_AS -c "$cmd"
;;
*)
echo "*** ERROR *** must be $RUN_AS or root in order to control this service" >&2
exit 1
esac
echo "...done."
}
stop() {
echo -n "Stopping $SERVICE_NAME... "
cmd="cd $RUN_IN && sh run_reports.sh --stop-daemon"
case "$(id -un)" in
$RUN_AS)
eval "$cmd"
;;
root)
su - $RUN_AS -c "$cmd"
;;
*)
echo "*** ERROR *** must be $RUN_AS or root in order to control this service" >&2
exit 1
esac
echo "done."
}
notsupported() {
echo "*** ERROR*** $SERVICE_NAME: operation [$1] not supported"
}
usage() {
echo "Usage: $SERVICE_NAME start|stop|restart|status"
}
#---
case "$1" in
start)
start "$@"
;;
stop)
stop
;;
restart|reload)
stop
start
;;
status)
set +e
echo -n "$SERVICE_NAME status: "
status -p $RUN_IN/reports_webapp.pid $SERVICE_NAME
exit $?
;;
'')
usage >&2
exit 1
;;
*)
notsupported "$1" >&2
usage >&2
exit 1
;;
esac
+8
View File
@@ -0,0 +1,8 @@
<?xml version="1.0"?>
<display id="iobio_bam" version="1.0.0" name="display at bam.iobio">
<dynamic_links from_data_table="bam_iobio" skip_startswith="#" id="value" name="name">
<url>${url}?bam=${bam_file.qp}</url>
<param type="data" name="bam_file" url="galaxy_${DATASET_HASH}.bam" />
<param type="data" name="bai_file" url="galaxy_${DATASET_HASH}.bam.bai" metadata="bam_index" />
</dynamic_links>
</display>
+8
View File
@@ -0,0 +1,8 @@
<?xml version="1.0"?>
<display id="iobio_vcf" version="1.0.0" name="display at vcf.iobio">
<dynamic_links from_data_table="vcf_iobio" skip_startswith="#" id="value" name="name">
<url>${url}?vcf=${bgzip_file.qp}</url>
<param type="data" name="bgzip_file" url="galaxy_${DATASET_HASH}.vcf.gz" format="vcf_bgzip" />
<param type="data" name="tabix_file" dataset="bgzip_file" url="galaxy_${DATASET_HASH}.vcf.gz.tbi" format="tabix" />
</dynamic_links>
</display>
+2
View File
@@ -4,6 +4,8 @@ Releases
.. toctree::
:maxdepth: 1
.. annoucements
16.04_announce
16.01_announce
15.10_announce
15.07_announce
@@ -0,0 +1,22 @@
<tool id="CONVERTER_cml_to_inchi" name="CML to InChI" version="1.0.0">
<description></description>
<parallelism method="multi" split_inputs="input" split_mode="to_size" split_size="10000" shared_inputs="" merge_outputs="output"></parallelism>
<requirements>
<requirement type="package" version="2.3.2">openbabel</requirement>
</requirements>
<command>
<![CDATA[
obabel -icml "${input}" -oinchi -O "${output}" -e 2>&1
]]>
</command>
<inputs>
<param name="input" type="data" format="cml" label="Molecules in CML-format"/>
</inputs>
<outputs>
<data name="output" format="inchi"/>
</outputs>
<help>
<![CDATA[
]]>
</help>
</tool>
@@ -0,0 +1,22 @@
<tool id="CONVERTER_cml_to_mol2" name="CML to mol2" version="1.0.0">
<description></description>
<parallelism method="multi" split_inputs="input" split_mode="to_size" split_size="10000" shared_inputs="" merge_outputs="output"></parallelism>
<requirements>
<requirement type="package" version="2.3.2">openbabel</requirement>
</requirements>
<command>
<![CDATA[
obabel -icml "${input}" -omol2 -O "${output}" -e 2>&1
]]>
</command>
<inputs>
<param name="input" type="data" format="cml" label="Molecules in CML-format"/>
</inputs>
<outputs>
<data name="output" format="mol2"/>
</outputs>
<help>
<![CDATA[
]]>
</help>
</tool>
@@ -0,0 +1,22 @@
<tool id="CONVERTER_cml_to_sdf" name="CML to SDF" version="1.0.0">
<description></description>
<parallelism method="multi" split_inputs="input" split_mode="to_size" split_size="10000" shared_inputs="" merge_outputs="output"></parallelism>
<requirements>
<requirement type="package" version="2.3.2">openbabel</requirement>
</requirements>
<command>
<![CDATA[
obabel -icml "${input}" -osdf "${output}" -e 2>&1
]]>
</command>
<inputs>
<param name="input" type="data" format="cml" label="Molecules in CML-format"/>
</inputs>
<outputs>
<data name="output" format="sdf"/>
</outputs>
<help>
<![CDATA[
]]>
</help>
</tool>
@@ -0,0 +1,48 @@
<tool id="CONVERTER_cml_to_smiles" name="CML to SMILES" version="1.0.0">
<description></description>
<parallelism method="multi" split_inputs="input" split_mode="to_size" split_size="10000" shared_inputs="" merge_outputs="output"></parallelism>
<requirements>
<requirement type="package" version="2.3.2">openbabel</requirement>
</requirements>
<command >
<![CDATA[
obabel
-icml "${input}"
#if $can:
-ocan
#else:
-osmi
#end if
-O "${output}"
-e
$remove_h
#if $iso_chi or $can or $exp_h:
-x$iso_chi$exp_h$can
#end if
#if $dative_bonds:
-b
#end if
#if int($ph) >= 0:
-p $ph
#end if
2>&1
]]>
</command>
<inputs>
<param name="input" type="data" format="cml" label="Molecules in CML-format"/>
<param name="iso_chi" type="boolean" label="Do not include isotopic or chiral markings (-xi)" truevalue="i" falsevalue="" checked="false" />
<param name="can" type="boolean" label="Output in canonical form (-xc)" truevalue="c" falsevalue="" checked="false" />
<param name="exp_h" type="boolean" label="Output explicit hydrogens as such (-xh)" truevalue="h" falsevalue="" checked="false" />
<param name="remove_h" type="boolean" label="Delete hydrogen atoms (-d)" truevalue="-d" falsevalue="" />
<param name="ph" type="float" value="-1" label="Add hydrogens appropriate for pH (-p)" help="-1 means deactivated"/>
<param name="dative_bonds" type="boolean" label="Convert dative bonds (e.g. [N+]([O-])=O to N(=O)=O) (-b)" truevalue="-b" falsevalue="" />
</inputs>
<outputs>
<data name="output" format="smi"/>
</outputs>
<help>
<![CDATA[
]]>
</help>
</tool>
@@ -0,0 +1,22 @@
<tool id="CONVERTER_inchi_to_cml" name="InChI to CML" version="1.0.0">
<description></description>
<parallelism method="multi" split_inputs="input" split_mode="to_size" split_size="10000" shared_inputs="" merge_outputs="output"></parallelism>
<requirements>
<requirement type="package" version="2.3.2">openbabel</requirement>
</requirements>
<command>
<![CDATA[
obabel -iinchi "${input}" -ocml -O "${output}" -e 2>&1
]]>
</command>
<inputs>
<param name="input" type="data" format="inchi" label="Molecules in InChI format"/>
</inputs>
<outputs>
<data name="output" format="cml"/>
</outputs>
<help>
<![CDATA[
]]>
</help>
</tool>
@@ -0,0 +1,22 @@
<tool id="CONVERTER_inchi_to_mol2" name="InChI to MOL2" version="1.0.0">
<description></description>
<parallelism method="multi" split_inputs="input" split_mode="to_size" split_size="10000" shared_inputs="" merge_outputs="output"></parallelism>
<requirements>
<requirement type="package" version="2.3.2">openbabel</requirement>
</requirements>
<command>
<![CDATA[
obabel -iinchi "${input}" -omol2 -O "${output}" -e 2>&1
]]>
</command>
<inputs>
<param name="input" type="data" format="inchi" label="Molecules in InChI format"/>
</inputs>
<outputs>
<data name="output" format="mol2"/>
</outputs>
<help>
<![CDATA[
]]>
</help>
</tool>
@@ -0,0 +1,22 @@
<tool id="CONVERTER_inchi_to_mol" name="InChI to MOL" version="1.0.0">
<description></description>
<parallelism method="multi" split_inputs="input" split_mode="to_size" split_size="10000" shared_inputs="" merge_outputs="output"></parallelism>
<requirements>
<requirement type="package" version="2.3.2">openbabel</requirement>
</requirements>
<command>
<![CDATA[
obabel -iinchi "${input}" -omol -O "${output}" -e 2>&1
]]>
</command>
<inputs>
<param name="input" type="data" format="inchi" label="Molecules in InChI-format"/>
</inputs>
<outputs>
<data name="output" format="mol"/>
</outputs>
<help>
<![CDATA[
]]>
</help>
</tool>
@@ -0,0 +1,22 @@
<tool id="CONVERTER_inchi_to_sdf" name="InChI to SDF" version="1.0.0">
<description></description>
<parallelism method="multi" split_inputs="input" split_mode="to_size" split_size="10000" shared_inputs="" merge_outputs="output"></parallelism>
<requirements>
<requirement type="package" version="2.3.2">openbabel</requirement>
</requirements>
<command>
<![CDATA[
obabel -iinchi "${input}" -osdf -O "${output}" -e 2>&1
]]>
</command>
<inputs>
<param name="input" type="data" format="inchi" label="Molecules in InChI format"/>
</inputs>
<outputs>
<data name="output" format="sdf"/>
</outputs>
<help>
<![CDATA[
]]>
</help>
</tool>
@@ -0,0 +1,22 @@
<tool id="CONVERTER_inchi_to_smi" name="InChI to SMILES" version="1.0.0">
<description></description>
<parallelism method="multi" split_inputs="input" split_mode="to_size" split_size="10000" shared_inputs="" merge_outputs="output"></parallelism>
<requirements>
<requirement type="package" version="2.3.2">openbabel</requirement>
</requirements>
<command>
<![CDATA[
obabel -iinchi "${input}" -osmi -O "${output}" -e 2>&1
]]>
</command>
<inputs>
<param name="input" type="data" format="inchi" label="Molecules in InChI format"/>
</inputs>
<outputs>
<data name="output" format="smi"/>
</outputs>
<help>
<![CDATA[
]]>
</help>
</tool>
@@ -0,0 +1,22 @@
<tool id="CONVERTER_mol2_to_cml" name="MOL2 to CML" version="1.0.0">
<description></description>
<parallelism method="multi" split_inputs="input" split_mode="to_size" split_size="10000" shared_inputs="" merge_outputs="output"></parallelism>
<requirements>
<requirement type="package" version="2.3.2">openbabel</requirement>
</requirements>
<command>
<![CDATA[
obabel -imol2 "${input}" -ocml -O "${output}" -e 2>&1
]]>
</command>
<inputs>
<param name="input" type="data" format="mol2" label="Molecules in MOL2-format"/>
</inputs>
<outputs>
<data name="output" format="cml"/>
</outputs>
<help>
<![CDATA[
]]>
</help>
</tool>
@@ -0,0 +1,22 @@
<tool id="CONVERTER_mol2_to_inchi" name="MOL2 to InChI" version="1.0.0">
<description></description>
<parallelism method="multi" split_inputs="input" split_mode="to_size" split_size="10000" shared_inputs="" merge_outputs="output"></parallelism>
<requirements>
<requirement type="package" version="2.3.2">openbabel</requirement>
</requirements>
<command>
<![CDATA[
obabel -imol2 "${input}" -oinchi -O "${output}" -e 2>&1
]]>
</command>
<inputs>
<param name="input" type="data" format="mol2" label="Molecules in MOL2-format"/>
</inputs>
<outputs>
<data name="output" format="inchi"/>
</outputs>
<help>
<![CDATA[
]]>
</help>
</tool>
@@ -0,0 +1,22 @@
<tool id="CONVERTER_mol2_to_mol" name="MOL2 to MOL" version="1.0.0">
<description></description>
<parallelism method="multi" split_inputs="input" split_mode="to_size" split_size="10000" shared_inputs="" merge_outputs="output"></parallelism>
<requirements>
<requirement type="package" version="2.3.2">openbabel</requirement>
</requirements>
<command>
<![CDATA[
obabel -imol2 "${input}" -omol -O "${output}" -e 2>&1
]]>
</command>
<inputs>
<param name="input" type="data" format="mol2" label="Molecules in MOL2-format"/>
</inputs>
<outputs>
<data name="output" format="mol"/>
</outputs>
<help>
<![CDATA[
]]>
</help>
</tool>
@@ -0,0 +1,22 @@
<tool id="CONVERTER_mol2_to_sdf" name="MOL2 to SDF" version="1.0.0">
<description></description>
<parallelism method="multi" split_inputs="input" split_mode="to_size" split_size="10000" shared_inputs="" merge_outputs="output"></parallelism>
<requirements>
<requirement type="package" version="2.3.2">openbabel</requirement>
</requirements>
<command>
<![CDATA[
obabel -imol2 "${input}" -osdf "${output}" -e 2>&1
]]>
</command>
<inputs>
<param name="input" type="data" format="mol2" label="Molecules in MOL2-format"/>
</inputs>
<outputs>
<data name="output" format="sdf"/>
</outputs>
<help>
<![CDATA[
]]>
</help>
</tool>
@@ -0,0 +1,22 @@
<tool id="CONVERTER_mol2_to_smi" name="MOL2 to SMILES" version="1.0.0">
<description></description>
<parallelism method="multi" split_inputs="input" split_mode="to_size" split_size="10000" shared_inputs="" merge_outputs="output"></parallelism>
<requirements>
<requirement type="package" version="2.3.2">openbabel</requirement>
</requirements>
<command>
<![CDATA[
obabel -imol2 "${input}" -omol "${output}" -e 2>&1
]]>
</command>
<inputs>
<param name="input" type="data" format="mol2" label="Molecules in MOL2-format"/>
</inputs>
<outputs>
<data name="output" format="smi"/>
</outputs>
<help>
<![CDATA[
]]>
</help>
</tool>
@@ -0,0 +1,21 @@
<tool id="CONVERTER_mol_to_cml" name="MOL to CML" version="1.0.0">
<description></description>
<requirements>
<requirement type="package" version="2.3.2">openbabel</requirement>
</requirements>
<command>
<![CDATA[
obabel -imol "${input}" -ocml -O "${output}" -e 2>&1
]]>
</command>
<inputs>
<param name="input" type="data" format="mol" label="Molecules in MOL-format"/>
</inputs>
<outputs>
<data name="output" format="cml"/>
</outputs>
<help>
<![CDATA[
]]>
</help>
</tool>
@@ -0,0 +1,21 @@
<tool id="CONVERTER_mol_to_mol2" name="MOL to MOL2" version="1.0.0">
<description></description>
<requirements>
<requirement type="package" version="2.3.2">openbabel</requirement>
</requirements>
<command>
<![CDATA[
obabel -imol "${input}" -omol2 -O "${output}" -e 2>&1
]]>
</command>
<inputs>
<param name="input" type="data" format="mol" label="Molecules in MOL-format"/>
</inputs>
<outputs>
<data name="output" format="mol2"/>
</outputs>
<help>
<![CDATA[
]]>
</help>
</tool>
@@ -0,0 +1,21 @@
<tool id="CONVERTER_mol_to_mol2" name="MOL to MOL2" version="1.0.0">
<description></description>
<requirements>
<requirement type="package" version="2.3.2">openbabel</requirement>
</requirements>
<command>
<![CDATA[
obabel -imol "${input}" -omol2 -O "${output}" -e 2>&1
]]>
</command>
<inputs>
<param name="input" type="data" format="mol" label="Molecules in MOL-format"/>
</inputs>
<outputs>
<data name="output" format="mol2"/>
</outputs>
<help>
<![CDATA[
]]>
</help>
</tool>
@@ -0,0 +1,21 @@
<tool id="CONVERTER_mol_to_smi" name="MOL to SMILES" version="1.0.0">
<description></description>
<requirements>
<requirement type="package" version="2.3.2">openbabel</requirement>
</requirements>
<command>
<![CDATA[
obabel -imol "${input}" -osmi -O "${output}" -e 2>&1
]]>
</command>
<inputs>
<param name="input" type="data" format="mol" label="Molecules in MOL-format"/>
</inputs>
<outputs>
<data name="output" format="smi"/>
</outputs>
<help>
<![CDATA[
]]>
</help>
</tool>
@@ -0,0 +1,22 @@
<tool id="CONVERTER_sdf_to_cml" name="SDF to CML" version="1.0.0">
<description></description>
<parallelism method="multi" split_inputs="input" split_mode="to_size" split_size="10000" shared_inputs="" merge_outputs="output"></parallelism>
<requirements>
<requirement type="package" version="2.3.2">openbabel</requirement>
</requirements>
<command>
<![CDATA[
obabel -isdf "${input}" -ocml -O "${output}" -e 2>&1
]]>
</command>
<inputs>
<param name="input" type="data" format="sdf" label="Molecules in SDF-format"/>
</inputs>
<outputs>
<data name="output" format="cml"/>
</outputs>
<help>
<![CDATA[
]]>
</help>
</tool>
@@ -0,0 +1,22 @@
<tool id="CONVERTER_sdf_to_inchi" name="SDF to InChI" version="1.0.0">
<description></description>
<parallelism method="multi" split_inputs="input" split_mode="to_size" split_size="10000" shared_inputs="" merge_outputs="output"></parallelism>
<requirements>
<requirement type="package" version="2.3.2">openbabel</requirement>
</requirements>
<command>
<![CDATA[
obabel -isdf "${input}" -oinchi -O "${output}" -e 2>&1
]]>
</command>
<inputs>
<param name="input" type="data" format="sdf" label="Molecules in SDF-format"/>
</inputs>
<outputs>
<data name="output" format="inchi"/>
</outputs>
<help>
<![CDATA[
]]>
</help>
</tool>
@@ -0,0 +1,22 @@
<tool id="CONVERTER_sdf_to_mol2" name="SDF to mol2" version="1.0.0">
<description></description>
<parallelism method="multi" split_inputs="input" split_mode="to_size" split_size="10000" shared_inputs="" merge_outputs="output"></parallelism>
<requirements>
<requirement type="package" version="2.3.2">openbabel</requirement>
</requirements>
<command>
<![CDATA[
obabel -isdf "${input}" -omol2 -O "${output}" -e 2>&1
]]>
</command>
<inputs>
<param name="input" type="data" format="sdf" label="Molecules in SDF-format"/>
</inputs>
<outputs>
<data name="output" format="mol2"/>
</outputs>
<help>
<![CDATA[
]]>
</help>
</tool>
@@ -0,0 +1,27 @@
<tool id="CONVERTER_sdf_to_smiles" name="SDF to SMILES" version="1.0.1">
<description></description>
<parallelism method="multi" split_inputs="input" split_mode="to_size" split_size="10000" shared_inputs="" merge_outputs="output"></parallelism>
<requirements>
<requirement type="package" version="2.3.2">openbabel</requirement>
</requirements>
<command >
<![CDATA[
obabel
-isdf "${input}"
-ocan
-O "${output}"
-e
2>&1
]]>
</command>
<inputs>
<param name="input" type="data" format="sdf" label="Molecules in SDF-format"/>
</inputs>
<outputs>
<data name="output" format="smi"/>
</outputs>
<help>
<![CDATA[
]]>
</help>
</tool>
@@ -0,0 +1,22 @@
<tool id="CONVERTER_SMILES_to_cml" name="SMILES to CML" version="1.0.0">
<description></description>
<parallelism method="multi" split_inputs="input" split_mode="to_size" split_size="10000" shared_inputs="" merge_outputs="output"></parallelism>
<requirements>
<requirement type="package" version="2.3.2">openbabel</requirement>
</requirements>
<command>
<![CDATA[
obabel -ismi "${input}" -ocml -O "${output}" -e 2>&1
]]>
</command>
<inputs>
<param name="input" type="data" format="smi" label="Molecules in SMILES format"/>
</inputs>
<outputs>
<data name="output" format="cml"/>
</outputs>
<help>
<![CDATA[
]]>
</help>
</tool>
@@ -0,0 +1,22 @@
<tool id="CONVERTER_SMILES_to_inchi" name="SMILES to InChI" version="1.0.0">
<description></description>
<parallelism method="multi" split_inputs="input" split_mode="to_size" split_size="10000" shared_inputs="" merge_outputs="output"></parallelism>
<requirements>
<requirement type="package" version="2.3.2">openbabel</requirement>
</requirements>
<command>
<![CDATA[
obabel -ismi "${input}" -oinchi -O "${output}" -e 2>&1
]]>
</command>
<inputs>
<param name="input" type="data" format="smi" label="Molecules in SMILES format"/>
</inputs>
<outputs>
<data name="output" format="inchi"/>
</outputs>
<help>
<![CDATA[
]]>
</help>
</tool>
@@ -0,0 +1,22 @@
<tool id="CONVERTER_SMILES_to_MOL2" name="SMILES to MOL2" version="1.0.0">
<description></description>
<parallelism method="multi" split_inputs="input" split_mode="to_size" split_size="10000" shared_inputs="" merge_outputs="output"></parallelism>
<requirements>
<requirement type="package" version="2.3.2">openbabel</requirement>
</requirements>
<command>
<![CDATA[
obabel -ismi "${input}" -omol2 -O "${output}" -e 2>&1
]]>
</command>
<inputs>
<param name="input" type="data" format="smi" label="Molecules in SMILES format"/>
</inputs>
<outputs>
<data name="output" format="mol2"/>
</outputs>
<help>
<![CDATA[
]]>
</help>
</tool>
@@ -0,0 +1,22 @@
<tool id="CONVERTER_SMILES_to_MOL" name="SMILES to MOL" version="1.0.0">
<description></description>
<parallelism method="multi" split_inputs="input" split_mode="to_size" split_size="10000" shared_inputs="" merge_outputs="output"></parallelism>
<requirements>
<requirement type="package" version="2.3.2">openbabel</requirement>
</requirements>
<command>
<![CDATA[
obabel -ismi "${input}" -omol -O "${output}" -e 2>&1
]]>
</command>
<inputs>
<param name="input" type="data" format="smi" label="Molecules in SMILES format"/>
</inputs>
<outputs>
<data name="output" format="mol"/>
</outputs>
<help>
<![CDATA[
]]>
</help>
</tool>
@@ -0,0 +1,22 @@
<tool id="CONVERTER_SMILES_to_sdf" name="SMILES to SDF" version="1.0.0">
<description></description>
<parallelism method="multi" split_inputs="input" split_mode="to_size" split_size="10000" shared_inputs="" merge_outputs="output"></parallelism>
<requirements>
<requirement type="package" version="2.3.2">openbabel</requirement>
</requirements>
<command>
<![CDATA[
obabel -ismi "${input}" -osdf -O "${output}" -e 2>&1
]]>
</command>
<inputs>
<param name="input" type="data" format="smi" label="Molecules in SMILES format"/>
</inputs>
<outputs>
<data name="output" format="sdf"/>
</outputs>
<help>
<![CDATA[
]]>
</help>
</tool>
@@ -0,0 +1,48 @@
<tool id="CONVERTER_smiles_to_smiles" name="SMILES to SMILES" version="1.0.0">
<description></description>
<parallelism method="multi" split_inputs="input" split_mode="to_size" split_size="10000" shared_inputs="" merge_outputs="output"></parallelism>
<requirements>
<requirement type="package" version="2.3.2">openbabel</requirement>
</requirements>
<command >
<![CDATA[
obabel
-ismi "${input}"
#if $can:
-ocan
#else:
-osmi
#end if
-O "${output}"
-e
$remove_h
#if $iso_chi or $can or $exp_h:
-x$iso_chi$exp_h$can
#end if
#if $dative_bonds:
-b
#end if
#if int($ph) >= 0:
-p $ph
#end if
2>&1
]]>
</command>
<inputs>
<param name="input" type="data" format="smi" label="Molecules in SD-format"/>
<param name="iso_chi" type="boolean" label="Do not include isotopic or chiral markings (-xi)" truevalue="i" falsevalue="" checked="false" />
<param name="can" type="boolean" label="Output in canonical form (-xc)" truevalue="c" falsevalue="" checked="false" />
<param name="exp_h" type="boolean" label="Output explicit hydrogens as such (-xh)" truevalue="h" falsevalue="" checked="false" />
<param name="remove_h" type="boolean" label="Delete hydrogen atoms (-d)" truevalue="-d" falsevalue="" />
<param name="ph" type="float" value="-1" label="Add hydrogens appropriate for pH (-p)" help="-1 means deactivated"/>
<param name="dative_bonds" type="boolean" label="Convert dative bonds (e.g. [N+]([O-])=O to N(=O)=O) (-b)" truevalue="-b" falsevalue="" />
</inputs>
<outputs>
<data name="output" format="smi"/>
</outputs>
<help>
<![CDATA[
]]>
</help>
</tool>
@@ -142,7 +142,7 @@ class DynamicDisplayApplicationBuilder( object ):
max_col = max( id_col, name_col )
dynamic_params = {}
if data_table is not None:
max_col = max( [ max_col ] + data_table.columns.values() )
max_col = max( [ max_col ] + data_table.columns.values() )
for key, value in data_table.columns.items():
dynamic_params[key] = { 'column': value, 'split': False, 'separator': ',' }
for dynamic_param in elem.findall( 'dynamic_param' ):
+769
View File
@@ -0,0 +1,769 @@
# -*- coding: utf-8 -*-
from galaxy.datatypes import data
import logging
from galaxy.datatypes.sniff import get_headers
from galaxy.datatypes.data import get_file_peek
from galaxy.datatypes.tabular import Tabular
from galaxy.datatypes.binary import Binary
from galaxy.datatypes.xml import GenericXml
import subprocess
import os
from galaxy.datatypes.metadata import MetadataElement
from galaxy.datatypes import metadata
log = logging.getLogger(__name__)
def count_special_lines(word, filename, invert=False):
"""
searching for special 'words' using the grep tool
grep is used to speed up the searching and counting
The number of hits is returned.
"""
try:
cmd = ["grep", "-c"]
if invert:
cmd.append('-v')
cmd.extend([word, filename])
out = subprocess.Popen(cmd, stdout=subprocess.PIPE)
return int(out.communicate()[0].split()[0])
except:
pass
return 0
def count_lines(filename, non_empty=False):
"""
counting the number of lines from the 'filename' file
"""
try:
if non_empty:
out = subprocess.Popen(['grep', '-cve', '^\s*$', filename], stdout=subprocess.PIPE)
else:
out = subprocess.Popen(['wc', '-l', filename], stdout=subprocess.PIPE)
return int(out.communicate()[0].split()[0])
except:
pass
return 0
class GenericMolFile(data.Text):
"""
abstract class for most of the molecule files
"""
MetadataElement(name="number_of_molecules", default=0, desc="Number of molecules", readonly=True, visible=True, optional=True, no_value=0)
def set_peek(self, dataset, is_multi_byte=False):
if not dataset.dataset.purged:
dataset.peek = get_file_peek(dataset.file_name, is_multi_byte=is_multi_byte)
if (dataset.metadata.number_of_molecules == 1):
dataset.blurb = "1 molecule"
else:
dataset.blurb = "%s molecules" % dataset.metadata.number_of_molecules
dataset.peek = data.get_file_peek(dataset.file_name, is_multi_byte=is_multi_byte)
else:
dataset.peek = 'file does not exist'
dataset.blurb = 'file purged from disk'
def get_mime(self):
return 'text/plain'
class MOL(GenericMolFile):
file_ext = "mol"
def set_meta(self, dataset, **kwd):
"""
Set the number molecules, in the case of MOL its always one.
"""
dataset.metadata.number_of_molecules = 1
class SDF(GenericMolFile):
file_ext = "sdf"
def sniff(self, filename):
"""
Try to guess if the file is a SDF2 file.
>>> from galaxy.datatypes.sniff import get_test_fname
>>> fname = get_test_fname('drugbank_drugs.sdf')
>>> SDF().sniff(fname)
True
>>> fname = get_test_fname('drugbank_drugs.cml')
>>> SDF().sniff(fname)
False
"""
counter = count_special_lines("^M\s*END", filename) + count_special_lines("^\$\$\$\$", filename)
if counter > 0 and counter % 2 == 0:
return True
else:
return False
def set_meta(self, dataset, **kwd):
"""
Set the number of molecules in dataset.
"""
dataset.metadata.number_of_molecules = count_special_lines("^\$\$\$\$", dataset.file_name)
def split(cls, input_datasets, subdir_generator_function, split_params):
"""
Split the input files by molecule records.
"""
if split_params is None:
return None
if len(input_datasets) > 1:
raise Exception("SD-file splitting does not support multiple files")
input_files = [ds.file_name for ds in input_datasets]
chunk_size = None
if split_params['split_mode'] == 'number_of_parts':
raise Exception('Split mode "%s" is currently not implemented for SD-files.' % split_params['split_mode'])
elif split_params['split_mode'] == 'to_size':
chunk_size = int(split_params['split_size'])
else:
raise Exception('Unsupported split mode %s' % split_params['split_mode'])
def _read_sdf_records(filename):
lines = []
with open(filename) as handle:
for line in handle:
lines.append(line)
if line.startswith("$$$$"):
yield lines
lines = []
def _write_part_sdf_file(accumulated_lines):
part_dir = subdir_generator_function()
part_path = os.path.join(part_dir, os.path.basename(input_files[0]))
part_file = open(part_path, 'w')
part_file.writelines(accumulated_lines)
part_file.close()
try:
sdf_records = _read_sdf_records(input_files[0])
sdf_lines_accumulated = []
for counter, sdf_record in enumerate(sdf_records, start=1):
sdf_lines_accumulated.extend(sdf_record)
if counter % chunk_size == 0:
_write_part_sdf_file(sdf_lines_accumulated)
sdf_lines_accumulated = []
if sdf_lines_accumulated:
_write_part_sdf_file(sdf_lines_accumulated)
except Exception, e:
log.error('Unable to split files: %s' % str(e))
raise
split = classmethod(split)
class MOL2(GenericMolFile):
file_ext = "mol2"
def sniff(self, filename):
"""
Try to guess if the file is a MOL2 file.
>>> from galaxy.datatypes.sniff import get_test_fname
>>> fname = get_test_fname('drugbank_drugs.mol2')
>>> MOL2().sniff(fname)
True
>>> fname = get_test_fname('drugbank_drugs.cml')
>>> MOL2().sniff(fname)
False
"""
if count_special_lines("@<TRIPOS>MOLECULE", filename) > 0:
return True
else:
return False
def set_meta(self, dataset, **kwd):
"""
Set the number of lines of data in dataset.
"""
dataset.metadata.number_of_molecules = count_special_lines("@<TRIPOS>MOLECULE", dataset.file_name)
def split(cls, input_datasets, subdir_generator_function, split_params):
"""
Split the input files by molecule records.
"""
if split_params is None:
return None
if len(input_datasets) > 1:
raise Exception("MOL2-file splitting does not support multiple files")
input_files = [ds.file_name for ds in input_datasets]
chunk_size = None
if split_params['split_mode'] == 'number_of_parts':
raise Exception('Split mode "%s" is currently not implemented for MOL2-files.' % split_params['split_mode'])
elif split_params['split_mode'] == 'to_size':
chunk_size = int(split_params['split_size'])
else:
raise Exception('Unsupported split mode %s' % split_params['split_mode'])
def _read_mol2_records(filename):
lines = []
start = True
with open(filename) as handle:
for line in handle:
if line.startswith("@<TRIPOS>MOLECULE"):
if start:
start = False
else:
yield lines
lines = []
lines.append(line)
def _write_part_mol2_file(accumulated_lines):
part_dir = subdir_generator_function()
part_path = os.path.join(part_dir, os.path.basename(input_files[0]))
part_file = open(part_path, 'w')
part_file.writelines(accumulated_lines)
part_file.close()
try:
mol2_records = _read_mol2_records(input_files[0])
mol2_lines_accumulated = []
for counter, mol2_record in enumerate(mol2_records, start=1):
mol2_lines_accumulated.extend(mol2_record)
if counter % chunk_size == 0:
_write_part_mol2_file(mol2_lines_accumulated)
mol2_lines_accumulated = []
if mol2_lines_accumulated:
_write_part_mol2_file(mol2_lines_accumulated)
except Exception, e:
log.error('Unable to split files: %s' % str(e))
raise
split = classmethod(split)
class FPS(GenericMolFile):
"""
chemfp fingerprint file: http://code.google.com/p/chem-fingerprints/wiki/FPS
"""
file_ext = "fps"
def sniff(self, filename):
"""
Try to guess if the file is a FPS file.
>>> from galaxy.datatypes.sniff import get_test_fname
>>> fname = get_test_fname('q.fps')
>>> FPS().sniff(fname)
True
>>> fname = get_test_fname('drugbank_drugs.cml')
>>> FPS().sniff(fname)
False
"""
header = get_headers(filename, sep='\t', count=1)
if header[0][0].strip() == '#FPS1':
return True
else:
return False
def set_meta(self, dataset, **kwd):
"""
Set the number of lines of data in dataset.
"""
dataset.metadata.number_of_molecules = count_special_lines('^#', dataset.file_name, invert=True)
def split(cls, input_datasets, subdir_generator_function, split_params):
"""
Split the input files by fingerprint records.
"""
if split_params is None:
return None
if len(input_datasets) > 1:
raise Exception("FPS-file splitting does not support multiple files")
input_files = [ds.file_name for ds in input_datasets]
chunk_size = None
if split_params['split_mode'] == 'number_of_parts':
raise Exception('Split mode "%s" is currently not implemented for MOL2-files.' % split_params['split_mode'])
elif split_params['split_mode'] == 'to_size':
chunk_size = int(split_params['split_size'])
else:
raise Exception('Unsupported split mode %s' % split_params['split_mode'])
def _write_part_fingerprint_file(accumulated_lines):
part_dir = subdir_generator_function()
part_path = os.path.join(part_dir, os.path.basename(input_files[0]))
part_file = open(part_path, 'w')
part_file.writelines(accumulated_lines)
part_file.close()
try:
header_lines = []
lines_accumulated = []
fingerprint_counter = 0
for line in open(input_files[0]):
if not line.strip():
continue
if line.startswith('#'):
header_lines.append(line)
else:
fingerprint_counter += 1
lines_accumulated.append(line)
if fingerprint_counter != 0 and fingerprint_counter % chunk_size == 0:
_write_part_fingerprint_file(header_lines + lines_accumulated)
lines_accumulated = []
if lines_accumulated:
_write_part_fingerprint_file(header_lines + lines_accumulated)
except Exception, e:
log.error('Unable to split files: %s' % str(e))
raise
split = classmethod(split)
def merge(split_files, output_file):
"""
Merging fps files requires merging the header manually.
We take the header from the first file.
"""
if len(split_files) == 1:
# For one file only, use base class method (move/copy)
return data.Text.merge(split_files, output_file)
if not split_files:
raise ValueError("No fps files given, %r, to merge into %s"
% (split_files, output_file))
out = open(output_file, "w")
first = True
for filename in split_files:
with open(filename) as handle:
for line in handle:
if line.startswith('#'):
if first:
out.write(line)
else:
# line is no header and not a comment, we assume the first header is written to out and we set 'first' to False
first = False
out.write(line)
out.close()
merge = staticmethod(merge)
class OBFS(Binary):
"""OpenBabel Fastsearch format (fs)."""
file_ext = 'fs'
composite_type = 'basic'
allow_datatype_change = False
MetadataElement(name="base_name", default='OpenBabel Fastsearch Index',
readonly=True, visible=True, optional=True,)
def __init__(self, **kwd):
"""
A Fastsearch Index consists of a binary file with the fingerprints
and a pointer the actual molecule file.
"""
Binary.__init__(self, **kwd)
self.add_composite_file('molecule.fs', is_binary=True,
description='OpenBabel Fastsearch Index')
self.add_composite_file('molecule.sdf', optional=True,
is_binary=False, description='Molecule File')
self.add_composite_file('molecule.smi', optional=True,
is_binary=False, description='Molecule File')
self.add_composite_file('molecule.inchi', optional=True,
is_binary=False, description='Molecule File')
self.add_composite_file('molecule.mol2', optional=True,
is_binary=False, description='Molecule File')
self.add_composite_file('molecule.cml', optional=True,
is_binary=False, description='Molecule File')
def set_peek(self, dataset, is_multi_byte=False):
"""Set the peek and blurb text."""
if not dataset.dataset.purged:
dataset.peek = "OpenBabel Fastsearch Index"
dataset.blurb = "OpenBabel Fastsearch Index"
else:
dataset.peek = "file does not exist"
dataset.blurb = "file purged from disk"
def display_peek(self, dataset):
"""Create HTML content, used for displaying peek."""
try:
return dataset.peek
except:
return "OpenBabel Fastsearch Index"
def display_data(self, trans, data, preview=False, filename=None,
to_ext=None, size=None, offset=None, **kwd):
"""Apparently an old display method, but still gets called.
This allows us to format the data shown in the central pane via the "eye" icon.
"""
return "This is a OpenBabel Fastsearch format. You can speed up your similarity and substructure search with it."
def get_mime(self):
"""Returns the mime type of the datatype (pretend it is text for peek)"""
return 'text/plain'
def merge(split_files, output_file, extra_merge_args):
"""Merging Fastsearch indices is not supported."""
raise NotImplementedError("Merging Fastsearch indices is not supported.")
def split(cls, input_datasets, subdir_generator_function, split_params):
"""Splitting Fastsearch indices is not supported."""
if split_params is None:
return None
raise NotImplementedError("Splitting Fastsearch indices is not possible.")
class DRF(GenericMolFile):
file_ext = "drf"
def set_meta(self, dataset, **kwd):
"""
Set the number of lines of data in dataset.
"""
dataset.metadata.number_of_molecules = count_special_lines('\"ligand id\"', dataset.file_name, invert=True)
class PHAR(GenericMolFile):
"""
Pharmacophore database format from silicos-it.
"""
file_ext = "phar"
def set_peek(self, dataset, is_multi_byte=False):
if not dataset.dataset.purged:
dataset.peek = get_file_peek(dataset.file_name, is_multi_byte=is_multi_byte)
dataset.blurb = "pharmacophore"
else:
dataset.peek = 'file does not exist'
dataset.blurb = 'file purged from disk'
class PDB(GenericMolFile):
"""
Protein Databank format.
http://www.wwpdb.org/documentation/format33/v3.3.html
"""
file_ext = "pdb"
def sniff(self, filename):
"""
Try to guess if the file is a PDB file.
>>> from galaxy.datatypes.sniff import get_test_fname
>>> fname = get_test_fname('5e5z.pdb')
>>> PDB().sniff(fname)
True
>>> fname = get_test_fname('drugbank_drugs.cml')
>>> PDB().sniff(fname)
False
"""
headers = get_headers(filename, sep=' ', count=300)
h = t = c = s = k = e = False
for line in headers:
section_name = line[0].strip()
if section_name == 'HEADER':
h = True
elif section_name == 'TITLE':
t = True
elif section_name == 'COMPND':
c = True
elif section_name == 'SOURCE':
s = True
elif section_name == 'KEYWDS':
k = True
elif section_name == 'EXPDTA':
e = True
if h * t * c * s * k * e:
return True
else:
return False
def set_peek(self, dataset, is_multi_byte=False):
if not dataset.dataset.purged:
atom_numbers = count_special_lines("^ATOM", dataset.file_name)
hetatm_numbers = count_special_lines("^HETATM", dataset.file_name)
dataset.peek = get_file_peek(dataset.file_name, is_multi_byte=is_multi_byte)
dataset.blurb = "%s atoms and %s HET-atoms" % (atom_numbers, hetatm_numbers)
else:
dataset.peek = 'file does not exist'
dataset.blurb = 'file purged from disk'
class grd(data.Text):
file_ext = "grd"
def set_peek(self, dataset, is_multi_byte=False):
if not dataset.dataset.purged:
dataset.peek = get_file_peek(dataset.file_name, is_multi_byte=is_multi_byte)
dataset.blurb = "grids for docking"
else:
dataset.peek = 'file does not exist'
dataset.blurb = 'file purged from disk'
class grdtgz(Binary):
file_ext = "grd.tgz"
def set_peek(self, dataset, is_multi_byte=False):
if not dataset.dataset.purged:
dataset.peek = 'binary data'
dataset.blurb = "compressed grids for docking"
else:
dataset.peek = 'file does not exist'
dataset.blurb = 'file purged from disk'
class InChI(Tabular):
file_ext = "inchi"
column_names = ['InChI']
MetadataElement(name="columns", default=2, desc="Number of columns", readonly=True, visible=False)
MetadataElement(name="column_types", default=['str'], param=metadata.ColumnTypesParameter, desc="Column types", readonly=True, visible=False)
MetadataElement(name="number_of_molecules", default=0, desc="Number of molecules", readonly=True, visible=True, optional=True, no_value=0)
def set_meta(self, dataset, **kwd):
"""
Set the number of lines of data in dataset.
"""
dataset.metadata.number_of_molecules = self.count_data_lines(dataset)
def set_peek(self, dataset, is_multi_byte=False):
if not dataset.dataset.purged:
dataset.peek = get_file_peek(dataset.file_name, is_multi_byte=is_multi_byte)
if (dataset.metadata.number_of_molecules == 1):
dataset.blurb = "1 molecule"
else:
dataset.blurb = "%s molecules" % dataset.metadata.number_of_molecules
dataset.peek = data.get_file_peek(dataset.file_name, is_multi_byte=is_multi_byte)
else:
dataset.peek = 'file does not exist'
dataset.blurb = 'file purged from disk'
def sniff(self, filename):
"""
Try to guess if the file is a InChI file.
>>> from galaxy.datatypes.sniff import get_test_fname
>>> fname = get_test_fname('drugbank_drugs.inchi')
>>> InChI().sniff(fname)
True
>>> fname = get_test_fname('drugbank_drugs.cml')
>>> InChI().sniff(fname)
False
"""
inchi_lines = get_headers(filename, sep=' ', count=10)
for inchi in inchi_lines:
if not inchi[0].startswith('InChI='):
return False
return True
class SMILES(Tabular):
file_ext = "smi"
column_names = ['SMILES', 'TITLE']
MetadataElement(name="columns", default=2, desc="Number of columns", readonly=True, visible=False)
MetadataElement(name="column_types", default=['str', 'str'], param=metadata.ColumnTypesParameter, desc="Column types", readonly=True, visible=False)
MetadataElement(name="number_of_molecules", default=0, desc="Number of molecules", readonly=True, visible=True, optional=True, no_value=0)
def set_meta(self, dataset, **kwd):
"""
Set the number of lines of data in dataset.
"""
dataset.metadata.number_of_molecules = self.count_data_lines(dataset)
def set_peek(self, dataset, is_multi_byte=False):
if not dataset.dataset.purged:
dataset.peek = get_file_peek(dataset.file_name, is_multi_byte=is_multi_byte)
if dataset.metadata.number_of_molecules == 1:
dataset.blurb = "1 molecule"
else:
dataset.blurb = "%s molecules" % dataset.metadata.number_of_molecules
dataset.peek = data.get_file_peek(dataset.file_name, is_multi_byte=is_multi_byte)
else:
dataset.peek = 'file does not exist'
dataset.blurb = 'file purged from disk'
'''
def sniff(self, filename):
"""
Its hard or impossible to sniff a SMILES File. We can
try to import the first SMILES and check if it is a molecule, but
currently its not possible to use external libraries in datatype definition files.
Moreover it seems mpossible to inlcude OpenBabel as python library because OpenBabel
is GPL licensed.
"""
self.molecule_number = count_lines(filename, non_empty = True)
word_count = count_lines(filename)
if self.molecule_number != word_count:
return False
if self.molecule_number > 0:
# test first 3 SMILES
smiles_lines = get_headers(filename, sep='\t', count=3)
for smiles_line in smiles_lines:
if len(smiles_line) > 2:
return False
smiles = smiles_line[0]
try:
# if we have atoms, we have a molecule
if not len(pybel.readstring('smi', smiles).atoms) > 0:
return False
except:
# if convert fails its not a smiles string
return False
return True
else:
return False
'''
class CML(GenericXml):
"""
Chemical Markup Language
http://cml.sourceforge.net/
"""
file_ext = "cml"
MetadataElement(name="number_of_molecules", default=0, desc="Number of molecules", readonly=True, visible=True, optional=True, no_value=0)
def set_meta(self, dataset, **kwd):
"""
Set the number of lines of data in dataset.
"""
dataset.metadata.number_of_molecules = count_special_lines('^\s*<molecule', dataset.file_name)
def set_peek(self, dataset, is_multi_byte=False):
if not dataset.dataset.purged:
dataset.peek = get_file_peek(dataset.file_name, is_multi_byte=is_multi_byte)
if (dataset.metadata.number_of_molecules == 1):
dataset.blurb = "1 molecule"
else:
dataset.blurb = "%s molecules" % dataset.metadata.number_of_molecules
dataset.peek = data.get_file_peek(dataset.file_name, is_multi_byte=is_multi_byte)
else:
dataset.peek = 'file does not exist'
dataset.blurb = 'file purged from disk'
def sniff(self, filename):
"""
Try to guess if the file is a CML file.
>>> from galaxy.datatypes.sniff import get_test_fname
>>> fname = get_test_fname('interval.interval')
>>> CML().sniff(fname)
False
>>> fname = get_test_fname('drugbank_drugs.cml')
>>> CML().sniff(fname)
True
"""
handle = open(filename)
line = handle.readline()
if line.strip() != '<?xml version="1.0"?>':
handle.close()
return False
line = handle.readline()
if line.strip().find('http://www.xml-cml.org/schema') == -1:
handle.close()
return False
handle.close()
return True
def split(cls, input_datasets, subdir_generator_function, split_params):
"""
Split the input files by molecule records.
"""
if split_params is None:
return None
if len(input_datasets) > 1:
raise Exception("CML-file splitting does not support multiple files")
input_files = [ds.file_name for ds in input_datasets]
chunk_size = None
if split_params['split_mode'] == 'number_of_parts':
raise Exception('Split mode "%s" is currently not implemented for CML-files.' % split_params['split_mode'])
elif split_params['split_mode'] == 'to_size':
chunk_size = int(split_params['split_size'])
else:
raise Exception('Unsupported split mode %s' % split_params['split_mode'])
def _read_cml_records(filename):
lines = []
with open(filename) as handle:
for line in handle:
if line.lstrip().startswith('<?xml version="1.0"?>') or \
line.lstrip().startswith('<cml xmlns="http://www.xml-cml.org/schema') or \
line.lstrip().startswith('</cml>'):
continue
lines.append(line)
if line.lstrip().startswith('</molecule>'):
yield lines
lines = []
header_lines = ['<?xml version="1.0"?>\n', '<cml xmlns="http://www.xml-cml.org/schema">\n']
footer_line = ['</cml>\n']
def _write_part_cml_file(accumulated_lines):
part_dir = subdir_generator_function()
part_path = os.path.join(part_dir, os.path.basename(input_files[0]))
part_file = open(part_path, 'w')
part_file.writelines(header_lines)
part_file.writelines(accumulated_lines)
part_file.writelines(footer_line)
part_file.close()
try:
cml_records = _read_cml_records(input_files[0])
cml_lines_accumulated = []
for counter, cml_record in enumerate(cml_records, start=1):
cml_lines_accumulated.extend(cml_record)
if counter % chunk_size == 0:
_write_part_cml_file(cml_lines_accumulated)
cml_lines_accumulated = []
if cml_lines_accumulated:
_write_part_cml_file(cml_lines_accumulated)
except Exception, e:
log.error('Unable to split files: %s' % str(e))
raise
split = classmethod(split)
def merge(split_files, output_file):
"""
Merging CML files.
"""
if len(split_files) == 1:
# For one file only, use base class method (move/copy)
return data.Text.merge(split_files, output_file)
if not split_files:
raise ValueError("Given no CML files, %r, to merge into %s"
% (split_files, output_file))
with open(output_file, "w") as out:
for filename in split_files:
with open(filename) as handle:
header = handle.readline()
if not header:
raise ValueError("CML file %s was empty" % filename)
if not header.lstrip().startswith('<?xml version="1.0"?>'):
out.write(header)
raise ValueError("%s is not a valid XML file!" % filename)
line = handle.readline()
header += line
if not line.lstrip().startswith('<cml xmlns="http://www.xml-cml.org/schema'):
out.write(header)
raise ValueError("%s is not a CML file!" % filename)
molecule_found = False
for line in handle.readlines():
# We found two required header lines, the next line should start with <molecule >
if line.lstrip().startswith('</cml>'):
continue
if line.lstrip().startswith('<molecule'):
molecule_found = True
if molecule_found:
out.write(line)
out.write("</cml>\n")
merge = staticmethod(merge)
+20 -1
View File
@@ -263,8 +263,9 @@ def guess_ext( fname, sniff_order, is_multi_byte=False ):
>>> fname = get_test_fname('megablast_xml_parser_test1.blastxml')
>>> from galaxy.datatypes import registry
>>> sample_conf = os.path.join(util.galaxy_directory(), "config", "datatypes_conf.xml.sample")
>>> datatypes_registry = registry.Registry()
>>> datatypes_registry.load_datatypes()
>>> datatypes_registry.load_datatypes(root_dir=util.galaxy_directory(), config=sample_conf)
>>> sniff_order = datatypes_registry.sniff_order
>>> guess_ext(fname, sniff_order)
'xml'
@@ -324,6 +325,24 @@ def guess_ext( fname, sniff_order, is_multi_byte=False ):
>>> fname = get_test_fname('test.mz5')
>>> guess_ext(fname, sniff_order)
'h5'
>>> fname = get_test_fname('drugbank_drugs.cml')
>>> guess_ext(fname, sniff_order)
'cml'
>>> fname = get_test_fname('q.fps')
>>> guess_ext(fname, sniff_order)
'fps'
>>> fname = get_test_fname('drugbank_drugs.inchi')
>>> guess_ext(fname, sniff_order)
'inchi'
>>> fname = get_test_fname('drugbank_drugs.mol2')
>>> guess_ext(fname, sniff_order)
'mol2'
>>> fname = get_test_fname('drugbank_drugs.sdf')
>>> guess_ext(fname, sniff_order)
'sdf'
>>> fname = get_test_fname('5e5z.pdb')
>>> guess_ext(fname, sniff_order)
'pdb'
"""
for datatype in sniff_order:
"""
+357
View File
@@ -0,0 +1,357 @@
HEADER DE NOVO PROTEIN, MEMBRANE PROTEIN 09-OCT-15 5E5Z
TITLE STRUCTURE OF THE AMYLOID FORMING PEPTIDE LVHSSN (RESIDUES
COMPND MOL_ID: 1;
COMPND 2 MOLECULE: LVHSSN (RESIDUES 16-21) FROM ISLET AMYLOID POLYPEPTIDE;
COMPND 3 CHAIN: A;
COMPND 4 ENGINEERED: YES
SOURCE MOL_ID: 1;
SOURCE 2 SYNTHETIC: YES;
SOURCE 3 ORGANISM_SCIENTIFIC: HOMO SAPIENS;
SOURCE 4 ORGANISM_TAXID: 9606
KEYWDS AMYLOID-LIKE PROTOFIBRIL, DE NOVO PROTEIN, MEMBRANE PROTEIN, PROTEIN
KEYWDS 2 FIBRIL
EXPDTA X-RAY DIFFRACTION
AUTHOR A.B.SORIAGA,D.EISENBERG
REVDAT 2 20-JAN-16 5E5Z 1 JRNL
REVDAT 1 16-DEC-15 5E5Z 0
JRNL AUTH A.B.SORIAGA,S.SANGWAN,R.MACDONALD,M.R.SAWAYA,D.EISENBERG
JRNL TITL CRYSTAL STRUCTURES OF IAPP AMYLOIDOGENIC SEGMENTS REVEAL A
JRNL TITL 2 NOVEL PACKING MOTIF OF OUT-OF-REGISTER BETA SHEETS.
JRNL REF J.PHYS.CHEM.B 2016
JRNL REFN ISSN 1089-5647
JRNL PMID 26629790
JRNL DOI 10.1021/ACS.JPCB.5B09981
REMARK 2
REMARK 2 RESOLUTION. 1.66 ANGSTROMS.
REMARK 3
REMARK 3 REFINEMENT.
REMARK 3 PROGRAM : PHENIX 1.6.4_486
REMARK 3 AUTHORS : PAUL ADAMS,PAVEL AFONINE,VINCENT CHEN,IAN
REMARK 3 : DAVIS,KRESHNA GOPAL,RALF GROSSE-KUNSTLEVE,
REMARK 3 : LI-WEI HUNG,ROBERT IMMORMINO,TOM IOERGER,
REMARK 3 : AIRLIE MCCOY,ERIK MCKEE,NIGEL MORIARTY,
REMARK 3 : REETAL PAI,RANDY READ,JANE RICHARDSON,
REMARK 3 : DAVID RICHARDSON,TOD ROMO,JIM SACCHETTINI,
REMARK 3 : NICHOLAS SAUTER,JACOB SMITH,LAURENT
REMARK 3 : STORONI,TOM TERWILLIGER,PETER ZWART
REMARK 3
REMARK 3 REFINEMENT TARGET : LS_WUNIT_K1
REMARK 3
REMARK 3 DATA USED IN REFINEMENT.
REMARK 3 RESOLUTION RANGE HIGH (ANGSTROMS) : 1.66
REMARK 3 RESOLUTION RANGE LOW (ANGSTROMS) : 9.46
REMARK 3 MIN(FOBS/SIGMA_FOBS) : 0.000
REMARK 3 COMPLETENESS FOR RANGE (%) : 89.1
REMARK 3 NUMBER OF REFLECTIONS : 391
REMARK 3
REMARK 3 FIT TO DATA USED IN REFINEMENT.
REMARK 3 R VALUE (WORKING + TEST SET) : 0.170
REMARK 3 R VALUE (WORKING SET) : 0.167
REMARK 3 FREE R VALUE : 0.198
REMARK 3 FREE R VALUE TEST SET SIZE (%) : 4.600
REMARK 3 FREE R VALUE TEST SET COUNT : 18
REMARK 3
REMARK 3 FIT TO DATA USED IN REFINEMENT (IN BINS).
REMARK 3 BIN RESOLUTION RANGE COMPL. NWORK NFREE RWORK RFREE
REMARK 3 1 9.4587 - 1.6644 0.89 373 18 0.1673 0.1983
REMARK 3
REMARK 3 BULK SOLVENT MODELLING.
REMARK 3 METHOD USED : FLAT BULK SOLVENT MODEL
REMARK 3 SOLVENT RADIUS : 0.00
REMARK 3 SHRINKAGE RADIUS : 0.00
REMARK 3 K_SOL : 0.60
REMARK 3 B_SOL : 251.4
REMARK 3
REMARK 3 ERROR ESTIMATES.
REMARK 3 COORDINATE ERROR (MAXIMUM-LIKELIHOOD BASED) : 0.310
REMARK 3 PHASE ERROR (DEGREES, MAXIMUM-LIKELIHOOD BASED) : 18.270
REMARK 3
REMARK 3 B VALUES.
REMARK 3 FROM WILSON PLOT (A**2) : NULL
REMARK 3 MEAN B VALUE (OVERALL, A**2) : NULL
REMARK 3 OVERALL ANISOTROPIC B VALUE.
REMARK 3 B11 (A**2) : 0.51090
REMARK 3 B22 (A**2) : -3.44720
REMARK 3 B33 (A**2) : -8.26450
REMARK 3 B12 (A**2) : 0.00000
REMARK 3 B13 (A**2) : 0.77970
REMARK 3 B23 (A**2) : 0.00000
REMARK 3
REMARK 3 TWINNING INFORMATION.
REMARK 3 FRACTION: NULL
REMARK 3 OPERATOR: NULL
REMARK 3
REMARK 3 DEVIATIONS FROM IDEAL VALUES.
REMARK 3 RMSD COUNT
REMARK 3 BOND : 0.004 46
REMARK 3 ANGLE : 0.975 62
REMARK 3 CHIRALITY : 0.056 8
REMARK 3 PLANARITY : 0.004 8
REMARK 3 DIHEDRAL : 10.740 15
REMARK 3
REMARK 3 TLS DETAILS
REMARK 3 NUMBER OF TLS GROUPS : 1
REMARK 3 TLS GROUP : 1
REMARK 3 SELECTION: ALL
REMARK 3 ORIGIN FOR THE GROUP (A): 4.5323 0.1096 3.9760
REMARK 3 T TENSOR
REMARK 3 T11: -0.1260 T22: -0.0788
REMARK 3 T33: -0.0487 T12: 0.0821
REMARK 3 T13: -0.0518 T23: 0.0723
REMARK 3 L TENSOR
REMARK 3 L11: 0.1003 L22: 0.0184
REMARK 3 L33: 0.0647 L12: -0.0319
REMARK 3 L13: 0.0506 L23: -0.0233
REMARK 3 S TENSOR
REMARK 3 S11: 0.0084 S12: -0.0300 S13: -0.0565
REMARK 3 S21: 0.0231 S22: 0.0090 S23: 0.0127
REMARK 3 S31: -0.0046 S32: -0.0049 S33: -0.0009
REMARK 3
REMARK 3 NCS DETAILS
REMARK 3 NUMBER OF NCS GROUPS : NULL
REMARK 3
REMARK 3 OTHER REFINEMENT REMARKS: NULL
REMARK 4
REMARK 4 5E5Z COMPLIES WITH FORMAT V. 3.30, 13-JUL-11
REMARK 100
REMARK 100 THIS ENTRY HAS BEEN PROCESSED BY RCSB ON 09-OCT-15.
REMARK 100 THE DEPOSITION ID IS D_1000214421.
REMARK 200
REMARK 200 EXPERIMENTAL DETAILS
REMARK 200 EXPERIMENT TYPE : X-RAY DIFFRACTION
REMARK 200 DATE OF DATA COLLECTION : 10-MAR-10
REMARK 200 TEMPERATURE (KELVIN) : 291
REMARK 200 PH : NULL
REMARK 200 NUMBER OF CRYSTALS USED : NULL
REMARK 200
REMARK 200 SYNCHROTRON (Y/N) : Y
REMARK 200 RADIATION SOURCE : APS
REMARK 200 BEAMLINE : 24-ID-E
REMARK 200 X-RAY GENERATOR MODEL : NULL
REMARK 200 MONOCHROMATIC OR LAUE (M/L) : M
REMARK 200 WAVELENGTH OR RANGE (A) : 0.979
REMARK 200 MONOCHROMATOR : NULL
REMARK 200 OPTICS : NULL
REMARK 200
REMARK 200 DETECTOR TYPE : CCD
REMARK 200 DETECTOR MANUFACTURER : ADSC QUANTUM 315
REMARK 200 INTENSITY-INTEGRATION SOFTWARE : DENZO
REMARK 200 DATA SCALING SOFTWARE : NULL
REMARK 200
REMARK 200 NUMBER OF UNIQUE REFLECTIONS : 1136
REMARK 200 RESOLUTION RANGE HIGH (A) : 1.600
REMARK 200 RESOLUTION RANGE LOW (A) : 100.000
REMARK 200 REJECTION CRITERIA (SIGMA(I)) : NULL
REMARK 200
REMARK 200 OVERALL.
REMARK 200 COMPLETENESS FOR RANGE (%) : 92.9
REMARK 200 DATA REDUNDANCY : 2.900
REMARK 200 R MERGE (I) : 0.07600
REMARK 200 R SYM (I) : NULL
REMARK 200 <I/SIGMA(I)> FOR THE DATA SET : 17.8600
REMARK 200
REMARK 200 IN THE HIGHEST RESOLUTION SHELL.
REMARK 200 HIGHEST RESOLUTION SHELL, RANGE HIGH (A) : NULL
REMARK 200 HIGHEST RESOLUTION SHELL, RANGE LOW (A) : NULL
REMARK 200 COMPLETENESS FOR SHELL (%) : NULL
REMARK 200 DATA REDUNDANCY IN SHELL : NULL
REMARK 200 R MERGE FOR SHELL (I) : NULL
REMARK 200 R SYM FOR SHELL (I) : NULL
REMARK 200 <I/SIGMA(I)> FOR SHELL : NULL
REMARK 200
REMARK 200 DIFFRACTION PROTOCOL: SINGLE WAVELENGTH
REMARK 200 METHOD USED TO DETERMINE THE STRUCTURE: MOLECULAR REPLACEMENT
REMARK 200 SOFTWARE USED: PHASER
REMARK 200 STARTING MODEL: NULL
REMARK 200
REMARK 200 REMARK: NULL
REMARK 280
REMARK 280 CRYSTAL
REMARK 280 SOLVENT CONTENT, VS (%): 6.59
REMARK 280 MATTHEWS COEFFICIENT, VM (ANGSTROMS**3/DA): 1.32
REMARK 280
REMARK 280 CRYSTALLIZATION CONDITIONS: 20 MG/ML IN WATER AND MIXED WITH 0.09
REMARK 280 M HEPES PH 7.5, 1.26M TRI-SODIUM CITRATE, AND 10% GLYCEROL,
REMARK 280 VAPOR DIFFUSION, HANGING DROP, TEMPERATURE 291K
REMARK 290
REMARK 290 CRYSTALLOGRAPHIC SYMMETRY
REMARK 290 SYMMETRY OPERATORS FOR SPACE GROUP: P 1 21 1
REMARK 290
REMARK 290 SYMOP SYMMETRY
REMARK 290 NNNMMM OPERATOR
REMARK 290 1555 X,Y,Z
REMARK 290 2555 -X,Y+1/2,-Z
REMARK 290
REMARK 290 WHERE NNN -> OPERATOR NUMBER
REMARK 290 MMM -> TRANSLATION VECTOR
REMARK 290
REMARK 290 CRYSTALLOGRAPHIC SYMMETRY TRANSFORMATIONS
REMARK 290 THE FOLLOWING TRANSFORMATIONS OPERATE ON THE ATOM/HETATM
REMARK 290 RECORDS IN THIS ENTRY TO PRODUCE CRYSTALLOGRAPHICALLY
REMARK 290 RELATED MOLECULES.
REMARK 290 SMTRY1 1 1.000000 0.000000 0.000000 0.00000
REMARK 290 SMTRY2 1 0.000000 1.000000 0.000000 0.00000
REMARK 290 SMTRY3 1 0.000000 0.000000 1.000000 0.00000
REMARK 290 SMTRY1 2 -1.000000 0.000000 0.000000 0.00000
REMARK 290 SMTRY2 2 0.000000 1.000000 0.000000 4.80450
REMARK 290 SMTRY3 2 0.000000 0.000000 -1.000000 0.00000
REMARK 290
REMARK 290 REMARK: NULL
REMARK 300
REMARK 300 BIOMOLECULE: 1
REMARK 300 SEE REMARK 350 FOR THE AUTHOR PROVIDED AND/OR PROGRAM
REMARK 300 GENERATED ASSEMBLY INFORMATION FOR THE STRUCTURE IN
REMARK 300 THIS ENTRY. THE REMARK MAY ALSO PROVIDE INFORMATION ON
REMARK 300 BURIED SURFACE AREA.
REMARK 350
REMARK 350 COORDINATES FOR A COMPLETE MULTIMER REPRESENTING THE KNOWN
REMARK 350 BIOLOGICALLY SIGNIFICANT OLIGOMERIZATION STATE OF THE
REMARK 350 MOLECULE CAN BE GENERATED BY APPLYING BIOMT TRANSFORMATIONS
REMARK 350 GIVEN BELOW. BOTH NON-CRYSTALLOGRAPHIC AND
REMARK 350 CRYSTALLOGRAPHIC OPERATIONS ARE GIVEN.
REMARK 350
REMARK 350 BIOMOLECULE: 1
REMARK 350 AUTHOR DETERMINED BIOLOGICAL UNIT: DECAMERIC
REMARK 350 APPLY THE FOLLOWING TO CHAINS: A
REMARK 350 BIOMT1 1 1.000000 0.000000 0.000000 0.00000
REMARK 350 BIOMT2 1 0.000000 1.000000 0.000000 0.00000
REMARK 350 BIOMT3 1 0.000000 0.000000 1.000000 0.00000
REMARK 350 BIOMT1 2 1.000000 0.000000 0.000000 0.00000
REMARK 350 BIOMT2 2 0.000000 1.000000 0.000000 -9.60900
REMARK 350 BIOMT3 2 0.000000 0.000000 1.000000 0.00000
REMARK 350 BIOMT1 3 1.000000 0.000000 0.000000 0.00000
REMARK 350 BIOMT2 3 0.000000 1.000000 0.000000 9.60900
REMARK 350 BIOMT3 3 0.000000 0.000000 1.000000 0.00000
REMARK 350 BIOMT1 4 1.000000 0.000000 0.000000 9.64300
REMARK 350 BIOMT2 4 0.000000 1.000000 0.000000 0.00000
REMARK 350 BIOMT3 4 0.000000 0.000000 1.000000 0.00000
REMARK 350 BIOMT1 5 1.000000 0.000000 0.000000 9.64300
REMARK 350 BIOMT2 5 0.000000 1.000000 0.000000 -9.60900
REMARK 350 BIOMT3 5 0.000000 0.000000 1.000000 0.00000
REMARK 350 BIOMT1 6 1.000000 0.000000 0.000000 9.64300
REMARK 350 BIOMT2 6 0.000000 1.000000 0.000000 9.60900
REMARK 350 BIOMT3 6 0.000000 0.000000 1.000000 0.00000
REMARK 350 BIOMT1 7 -1.000000 0.000000 0.000000 9.64300
REMARK 350 BIOMT2 7 0.000000 1.000000 0.000000 -4.80450
REMARK 350 BIOMT3 7 0.000000 0.000000 -1.000000 0.00000
REMARK 350 BIOMT1 8 -1.000000 0.000000 0.000000 9.64300
REMARK 350 BIOMT2 8 0.000000 1.000000 0.000000 4.80450
REMARK 350 BIOMT3 8 0.000000 0.000000 -1.000000 0.00000
REMARK 350 BIOMT1 9 -1.000000 0.000000 0.000000 19.28600
REMARK 350 BIOMT2 9 0.000000 1.000000 0.000000 -4.80450
REMARK 350 BIOMT3 9 0.000000 0.000000 -1.000000 0.00000
REMARK 350 BIOMT1 10 -1.000000 0.000000 0.000000 19.28600
REMARK 350 BIOMT2 10 0.000000 1.000000 0.000000 4.80450
REMARK 350 BIOMT3 10 0.000000 0.000000 -1.000000 0.00000
REMARK 900
REMARK 900 RELATED ENTRIES
REMARK 900 RELATED ID: 5E5V RELATED DB: PDB
REMARK 900 RELATED ID: 5E5X RELATED DB: PDB
REMARK 900 RELATED ID: 5E61 RELATED DB: PDB
DBREF 5E5Z A 1 6 PDB 5E5Z 5E5Z 1 6
SEQRES 1 A 6 LEU VAL HIS SER SER ASN
FORMUL 2 HOH *(H2 O)
CRYST1 9.643 9.609 19.029 90.00 101.22 90.00 P 1 21 1 2
ORIGX1 1.000000 0.000000 0.000000 0.00000
ORIGX2 0.000000 1.000000 0.000000 0.00000
ORIGX3 0.000000 0.000000 1.000000 0.00000
SCALE1 0.103702 0.000000 0.020579 0.00000
SCALE2 0.000000 0.104069 0.000000 0.00000
SCALE3 0.000000 0.000000 0.053576 0.00000
ATOM 1 N LEU A 1 6.078 -0.306 -5.753 1.00 0.00 N
ANISOU 1 N LEU A 1 0 0 0 0 0 0 N
ATOM 2 CA LEU A 1 5.166 -0.026 -4.647 1.00 2.42 C
ANISOU 2 CA LEU A 1 307 307 307 0 0 0 C
ATOM 3 C LEU A 1 5.682 -0.642 -3.356 1.00 3.48 C
ANISOU 3 C LEU A 1 435 443 445 1 1 9 C
ATOM 4 O LEU A 1 6.056 -1.814 -3.322 1.00 3.52 O
ANISOU 4 O LEU A 1 436 449 454 2 2 16 O
ATOM 5 CB LEU A 1 3.755 -0.555 -4.967 1.00 1.86 C
ANISOU 5 CB LEU A 1 232 237 238 1 1 5 C
ATOM 6 CG LEU A 1 2.596 -0.354 -3.975 1.00 6.87 C
ANISOU 6 CG LEU A 1 861 873 877 2 2 14 C
ATOM 7 CD1 LEU A 1 2.753 -1.182 -2.704 1.00 11.83 C
ANISOU 7 CD1 LEU A 1 1481 1504 1512 4 4 27 C
ATOM 8 CD2 LEU A 1 2.404 1.122 -3.638 1.00 4.27 C
ANISOU 8 CD2 LEU A 1 537 543 544 1 2 7 C
ATOM 9 N VAL A 2 5.715 0.161 -2.297 1.00 0.61 N
ANISOU 9 N VAL A 2 71 80 82 2 2 11 N
ATOM 10 CA VAL A 2 5.968 -0.352 -0.960 1.00 0.12 C
ANISOU 10 CA VAL A 2 1 20 24 4 4 22 C
ATOM 11 C VAL A 2 4.976 0.281 0.000 1.00 3.40 C
ANISOU 11 C VAL A 2 413 437 440 5 5 27 C
ATOM 12 O VAL A 2 4.746 1.489 -0.046 1.00 3.22 O
ANISOU 12 O VAL A 2 395 414 414 4 5 20 O
ATOM 13 CB VAL A 2 7.400 -0.027 -0.475 1.00 3.56 C
ANISOU 13 CB VAL A 2 440 456 458 3 3 18 C
ATOM 14 CG1 VAL A 2 7.566 -0.421 0.993 1.00 7.93 C
ANISOU 14 CG1 VAL A 2 986 1012 1016 5 5 30 C
ATOM 15 CG2 VAL A 2 8.429 -0.722 -1.342 1.00 6.71 C
ANISOU 15 CG2 VAL A 2 841 853 856 2 2 14 C
ATOM 16 N HIS A 3 4.367 -0.537 0.850 1.00 0.22 N
ANISOU 16 N HIS A 3 1 38 44 7 8 41 N
ATOM 17 CA HIS A 3 3.603 -0.011 1.971 1.00 1.73 C
ANISOU 17 CA HIS A 3 189 233 237 10 10 48 C
ATOM 18 C HIS A 3 4.003 -0.675 3.280 1.00 1.84 C
ANISOU 18 C HIS A 3 194 250 255 12 12 61 C
ATOM 19 O HIS A 3 4.208 -1.889 3.338 1.00 0.73 O
ANISOU 19 O HIS A 3 47 109 120 11 12 69 O
ATOM 20 CB HIS A 3 2.095 -0.177 1.781 1.00 2.62 C
ANISOU 20 CB HIS A 3 296 346 351 11 11 54 C
ATOM 21 CG HIS A 3 1.324 0.074 3.040 1.00 2.97 C
ANISOU 21 CG HIS A 3 335 396 399 14 14 66 C
ATOM 22 ND1 HIS A 3 0.950 -0.937 3.900 1.00 4.29 N
ANISOU 22 ND1 HIS A 3 491 566 573 16 17 82 N
ATOM 23 CD2 HIS A 3 0.921 1.230 3.620 1.00 4.90 C
ANISOU 23 CD2 HIS A 3 581 642 639 16 16 64 C
ATOM 24 CE1 HIS A 3 0.321 -0.417 4.940 1.00 5.53 C
ANISOU 24 CE1 HIS A 3 644 727 729 20 20 89 C
ATOM 25 NE2 HIS A 3 0.290 0.896 4.794 1.00 6.02 N
ANISOU 25 NE2 HIS A 3 714 790 785 20 19 78 N
ATOM 26 N SER A 4 4.099 0.141 4.326 1.00 0.34 N
ANISOU 26 N SER A 4 3 63 63 14 14 62 N
ATOM 27 CA SER A 4 4.357 -0.330 5.683 1.00 1.49 C
ANISOU 27 CA SER A 4 141 213 213 16 16 75 C
ATOM 28 C SER A 4 3.814 0.686 6.681 1.00 2.14 C
ANISOU 28 C SER A 4 222 299 292 20 19 78 C
ATOM 29 O SER A 4 4.008 1.889 6.507 1.00 3.47 O
ANISOU 29 O SER A 4 397 465 454 19 18 68 O
ATOM 30 CB SER A 4 5.858 -0.513 5.905 1.00 5.61 C
ANISOU 30 CB SER A 4 665 734 734 15 15 72 C
ATOM 31 OG SER A 4 6.132 -0.771 7.272 1.00 9.89 O
ANISOU 31 OG SER A 4 1200 1280 1278 18 18 83 O
ATOM 32 N SER A 5 3.138 0.213 7.725 1.00 2.34 N
ANISOU 32 N SER A 5 239 330 322 24 23 93 N
ATOM 33 CA SER A 5 2.651 1.119 8.765 1.00 0.66 C
ANISOU 33 CA SER A 5 24 123 106 28 26 97 C
ATOM 34 C SER A 5 3.677 1.311 9.885 1.00 2.66 C
ANISOU 34 C SER A 5 275 378 356 30 27 100 C
ATOM 35 O SER A 5 3.411 2.024 10.851 1.00 2.02 O
ANISOU 35 O SER A 5 193 303 273 35 30 104 O
ATOM 36 CB SER A 5 1.318 0.639 9.350 1.00 2.68 C
ANISOU 36 CB SER A 5 269 383 365 32 29 113 C
ATOM 37 OG SER A 5 1.478 -0.544 10.117 1.00 2.49 O
ANISOU 37 OG SER A 5 236 363 349 33 31 128 O
ATOM 38 N ASN A 6 4.838 0.672 9.758 1.00 2.94 N
ANISOU 38 N ASN A 6 311 412 394 28 25 98 N
ATOM 39 CA ASN A 6 5.912 0.838 10.741 1.00 4.68 C
ANISOU 39 CA ASN A 6 530 634 613 29 26 100 C
ATOM 40 C ASN A 6 6.574 2.203 10.638 1.00 10.84 C
ANISOU 40 C ASN A 6 1320 1413 1387 28 24 87 C
ATOM 41 O ASN A 6 7.335 2.594 11.519 1.00 13.68 O
ANISOU 41 O ASN A 6 1680 1775 1745 30 26 88 O
ATOM 42 CB ASN A 6 6.986 -0.243 10.589 1.00 5.08 C
ANISOU 42 CB ASN A 6 579 682 668 27 25 102 C
ATOM 43 CG ASN A 6 6.592 -1.558 11.236 1.00 8.08 C
ANISOU 43 CG ASN A 6 948 1067 1057 28 27 120 C
ATOM 44 OD1 ASN A 6 5.576 -1.644 11.923 1.00 8.72 O
ANISOU 44 OD1 ASN A 6 1022 1152 1139 32 30 131 O
ATOM 45 ND2 ASN A 6 7.409 -2.588 11.030 1.00 9.89 N
ANISOU 45 ND2 ASN A 6 1174 1293 1290 25 25 122 N
ATOM 46 OXT ASN A 6 6.383 2.933 9.667 1.00 14.02 O
ANISOU 46 OXT ASN A 6 1730 1811 1787 25 22 75 O
TER 47 ASN A 6
HETATM 48 O HOH A 101 8.203 1.052 -4.564 1.00 12.67 O
ANISOU 48 O HOH A 101 1605 1605 1605 0 0 0 O
MASTER 227 0 0 0 0 0 0 6 47 1 0 1
END
@@ -0,0 +1,385 @@
<?xml version="1.0"?>
<cml xmlns="http://www.xml-cml.org/schema">
<molecule id="Goserelin">
<atomArray>
<atom id="a1" elementType="O" x2="12.854800" y2="-2.638200"/>
<atom id="a2" elementType="O" x2="13.972600" y2="-2.522600"/>
<atom id="a3" elementType="O" x2="10.176600" y2="-3.932700"/>
<atom id="a4" elementType="O" x2="11.201900" y2="-0.796100"/>
<atom id="a5" elementType="O" x2="8.780000" y2="-1.306400"/>
<atom id="a6" elementType="O" x2="16.858900" y2="-3.242100"/>
<atom id="a7" elementType="O" x2="10.356200" y2="1.216300"/>
<atom id="a8" elementType="O" x2="3.270200" y2="4.834100"/>
<atom id="a9" elementType="O" x2="2.350000" y2="8.273400"/>
<atom id="a10" elementType="O" x2="3.821300" y2="4.220100"/>
<atom id="a11" elementType="O" x2="5.217800" y2="1.593800"/>
<atom id="a12" elementType="O" x2="7.896000" y2="2.888300"/>
<atom id="a13" elementType="O" x2="7.127100" y2="0.535800"/>
<atom id="a14" elementType="O" x2="12.483400" y2="3.124900"/>
<atom id="a15" elementType="N" x2="13.149500" y2="-4.036400"/>
<atom id="a16" elementType="N" x2="11.240200" y2="-2.978400"/>
<atom id="a17" elementType="N" x2="15.208900" y2="-3.239300"/>
<atom id="a18" elementType="N" x2="10.138300" y2="-1.750300"/>
<atom id="a19" elementType="N" x2="15.622600" y2="-2.525500"/>
<atom id="a20" elementType="N" x2="12.380600" y2="-6.389000"/>
<atom id="a21" elementType="N" x2="9.292600" y2="0.261900"/>
<atom id="a22" elementType="N" x2="3.148500" y2="7.039100"/>
<atom id="a23" elementType="N" x2="4.333800" y2="5.788400"/>
<atom id="a24" elementType="N" x2="16.861300" y2="-1.813200"/>
<atom id="a25" elementType="N" x2="8.190700" y2="1.490000"/>
<atom id="a26" elementType="N" x2="5.179500" y2="3.776100"/>
<atom id="a27" elementType="N" x2="6.281400" y2="2.548000"/>
<atom id="a28" elementType="N" x2="11.317000" y2="-7.343300"/>
<atom id="a29" elementType="N" x2="12.675300" y2="-7.787300"/>
<atom id="a30" elementType="N" x2="3.859600" y2="0.709800"/>
<atom id="a31" elementType="N" x2="6.733500" y2="6.382300"/>
<atom id="a32" elementType="N" x2="5.950700" y2="7.463600"/>
<atom id="a33" elementType="C" x2="13.970100" y2="-3.951600">
<atomParity atomRefs4="a33 a39 a34 a15">1</atomParity>
</atom>
<atom id="a34" elementType="C" x2="14.304300" y2="-4.705800"/>
<atom id="a35" elementType="C" x2="13.690300" y2="-5.256900"/>
<atom id="a36" elementType="C" x2="12.976600" y2="-4.843100"/>
<atom id="a37" elementType="C" x2="12.598400" y2="-3.422400"/>
<atom id="a38" elementType="C" x2="11.791200" y2="-3.592500">
<atomParity atomRefs4="a38 a16 a37 a40">1</atomParity>
</atom>
<atom id="a39" elementType="C" x2="14.383800" y2="-3.237800"/>
<atom id="a40" elementType="C" x2="11.534900" y2="-4.376700"/>
<atom id="a41" elementType="C" x2="12.085900" y2="-4.990700"/>
<atom id="a42" elementType="C" x2="9.881900" y2="-2.534500">
<atomParity atomRefs4="a42 a18 a43 a44">1</atomParity>
</atom>
<atom id="a43" elementType="C" x2="10.433000" y2="-3.148600"/>
<atom id="a44" elementType="C" x2="9.074700" y2="-2.704600"/>
<atom id="a45" elementType="C" x2="8.818400" y2="-3.488900"/>
<atom id="a46" elementType="C" x2="11.829500" y2="-5.775000"/>
<atom id="a47" elementType="C" x2="8.011200" y2="-3.659000"/>
<atom id="a48" elementType="C" x2="9.369400" y2="-4.102900"/>
<atom id="a49" elementType="C" x2="9.587300" y2="-1.136300"/>
<atom id="a50" elementType="C" x2="9.843600" y2="-0.352100">
<atomParity atomRefs4="a50 a21 a51 a49">1</atomParity>
</atom>
<atom id="a51" elementType="C" x2="10.650900" y2="-0.182000"/>
<atom id="a52" elementType="C" x2="16.447600" y2="-2.526900"/>
<atom id="a53" elementType="C" x2="2.975600" y2="6.232400">
<atomParity atomRefs4="a53 a64 a58 a22">1</atomParity>
</atom>
<atom id="a54" elementType="C" x2="12.009100" y2="-0.625900"/>
<atom id="a55" elementType="C" x2="8.997900" y2="1.660200">
<atomParity atomRefs4="a55 a25 a56 a62">1</atomParity>
</atom>
<atom id="a56" elementType="C" x2="9.548900" y2="1.046100"/>
<atom id="a57" elementType="C" x2="12.124200" y2="-7.173200"/>
<atom id="a58" elementType="C" x2="2.154900" y2="6.147500"/>
<atom id="a59" elementType="C" x2="4.884800" y2="5.174400">
<atomParity atomRefs4="a59 a23 a68 a66">1</atomParity>
</atom>
<atom id="a60" elementType="C" x2="4.923200" y2="2.992000">
<atomParity atomRefs4="a60 a26 a73 a63">1</atomParity>
</atom>
<atom id="a61" elementType="C" x2="1.820700" y2="6.901900"/>
<atom id="a62" elementType="C" x2="9.254200" y2="2.444400"/>
<atom id="a63" elementType="C" x2="4.115900" y2="2.821900"/>
<atom id="a64" elementType="C" x2="3.526600" y2="5.618300"/>
<atom id="a65" elementType="C" x2="2.434800" y2="7.452800"/>
<atom id="a66" elementType="C" x2="5.692100" y2="5.344500"/>
<atom id="a67" elementType="C" x2="6.832400" y2="1.934000">
<atomParity atomRefs4="a67 a27 a74 a80">1</atomParity>
</atom>
<atom id="a68" elementType="C" x2="4.628500" y2="4.390200"/>
<atom id="a69" elementType="C" x2="12.179300" y2="-1.433200"/>
<atom id="a70" elementType="C" x2="12.816400" y2="-0.455700"/>
<atom id="a71" elementType="C" x2="11.838900" y2="0.181400"/>
<atom id="a72" elementType="C" x2="3.859600" y2="2.037600"/>
<atom id="a73" elementType="C" x2="5.474200" y2="2.377900"/>
<atom id="a74" elementType="C" x2="7.639700" y2="2.104100"/>
<atom id="a75" elementType="C" x2="10.061500" y2="2.614500"/>
<atom id="a76" elementType="C" x2="3.079000" y2="1.786200"/>
<atom id="a77" elementType="C" x2="5.948400" y2="6.128700"/>
<atom id="a78" elementType="C" x2="4.341100" y2="1.373700"/>
<atom id="a79" elementType="C" x2="3.079000" y2="0.961200"/>
<atom id="a80" elementType="C" x2="6.576100" y2="1.149800"/>
<atom id="a81" elementType="C" x2="2.364500" y2="2.198700"/>
<atom id="a82" elementType="C" x2="10.317800" y2="3.398700"/>
<atom id="a83" elementType="C" x2="10.612500" y2="2.000500"/>
<atom id="a84" elementType="C" x2="2.364500" y2="0.548700"/>
<atom id="a85" elementType="C" x2="5.464600" y2="6.797000"/>
<atom id="a86" elementType="C" x2="1.650000" y2="1.786200"/>
<atom id="a87" elementType="C" x2="1.650000" y2="0.961200"/>
<atom id="a88" elementType="C" x2="11.125100" y2="3.568800"/>
<atom id="a89" elementType="C" x2="11.419800" y2="2.170600"/>
<atom id="a90" elementType="C" x2="6.734900" y2="7.207300"/>
<atom id="a91" elementType="C" x2="11.676100" y2="2.954800"/>
</atomArray>
<bondArray>
<bond atomRefs2="a1 a37" order="2"/>
<bond atomRefs2="a2 a39" order="2"/>
<bond atomRefs2="a3 a43" order="2"/>
<bond atomRefs2="a4 a51" order="1"/>
<bond atomRefs2="a4 a54" order="1"/>
<bond atomRefs2="a5 a49" order="2"/>
<bond atomRefs2="a6 a52" order="2"/>
<bond atomRefs2="a7 a56" order="2"/>
<bond atomRefs2="a8 a64" order="2"/>
<bond atomRefs2="a9 a65" order="2"/>
<bond atomRefs2="a10 a68" order="2"/>
<bond atomRefs2="a11 a73" order="2"/>
<bond atomRefs2="a12 a74" order="2"/>
<bond atomRefs2="a13 a80" order="1"/>
<bond atomRefs2="a14 a91" order="1"/>
<bond atomRefs2="a15 a33" order="1"/>
<bond atomRefs2="a15 a36" order="1"/>
<bond atomRefs2="a15 a37" order="1"/>
<bond atomRefs2="a38 a16" order="1"/>
<bond atomRefs2="a16 a43" order="1"/>
<bond atomRefs2="a17 a19" order="1"/>
<bond atomRefs2="a17 a39" order="1"/>
<bond atomRefs2="a42 a18" order="1"/>
<bond atomRefs2="a18 a49" order="1"/>
<bond atomRefs2="a19 a52" order="1"/>
<bond atomRefs2="a20 a46" order="1"/>
<bond atomRefs2="a20 a57" order="2"/>
<bond atomRefs2="a50 a21" order="1"/>
<bond atomRefs2="a21 a56" order="1"/>
<bond atomRefs2="a22 a53" order="1"/>
<bond atomRefs2="a22 a65" order="1"/>
<bond atomRefs2="a59 a23" order="1"/>
<bond atomRefs2="a23 a64" order="1"/>
<bond atomRefs2="a24 a52" order="1"/>
<bond atomRefs2="a55 a25" order="1"/>
<bond atomRefs2="a25 a74" order="1"/>
<bond atomRefs2="a60 a26" order="1"/>
<bond atomRefs2="a26 a68" order="1"/>
<bond atomRefs2="a67 a27" order="1"/>
<bond atomRefs2="a27 a73" order="1"/>
<bond atomRefs2="a28 a57" order="1"/>
<bond atomRefs2="a29 a57" order="1"/>
<bond atomRefs2="a30 a78" order="1"/>
<bond atomRefs2="a30 a79" order="1"/>
<bond atomRefs2="a31 a77" order="1"/>
<bond atomRefs2="a31 a90" order="1"/>
<bond atomRefs2="a32 a85" order="1"/>
<bond atomRefs2="a32 a90" order="2"/>
<bond atomRefs2="a33 a34" order="1"/>
<bond atomRefs2="a33 a39" order="1"/>
<bond atomRefs2="a34 a35" order="1"/>
<bond atomRefs2="a35 a36" order="1"/>
<bond atomRefs2="a37 a38" order="1"/>
<bond atomRefs2="a38 a40" order="1"/>
<bond atomRefs2="a40 a41" order="1"/>
<bond atomRefs2="a41 a46" order="1"/>
<bond atomRefs2="a42 a43" order="1"/>
<bond atomRefs2="a42 a44" order="1"/>
<bond atomRefs2="a44 a45" order="1"/>
<bond atomRefs2="a45 a47" order="1"/>
<bond atomRefs2="a45 a48" order="1"/>
<bond atomRefs2="a49 a50" order="1"/>
<bond atomRefs2="a50 a51" order="1"/>
<bond atomRefs2="a53 a58" order="1"/>
<bond atomRefs2="a53 a64" order="1"/>
<bond atomRefs2="a54 a69" order="1"/>
<bond atomRefs2="a54 a70" order="1"/>
<bond atomRefs2="a54 a71" order="1"/>
<bond atomRefs2="a55 a56" order="1"/>
<bond atomRefs2="a55 a62" order="1"/>
<bond atomRefs2="a58 a61" order="1"/>
<bond atomRefs2="a59 a66" order="1"/>
<bond atomRefs2="a59 a68" order="1"/>
<bond atomRefs2="a60 a63" order="1"/>
<bond atomRefs2="a60 a73" order="1"/>
<bond atomRefs2="a61 a65" order="1"/>
<bond atomRefs2="a62 a75" order="1"/>
<bond atomRefs2="a63 a72" order="1"/>
<bond atomRefs2="a66 a77" order="1"/>
<bond atomRefs2="a67 a74" order="1"/>
<bond atomRefs2="a67 a80" order="1"/>
<bond atomRefs2="a72 a76" order="1"/>
<bond atomRefs2="a72 a78" order="2"/>
<bond atomRefs2="a75 a82" order="2"/>
<bond atomRefs2="a75 a83" order="1"/>
<bond atomRefs2="a76 a79" order="1"/>
<bond atomRefs2="a76 a81" order="2"/>
<bond atomRefs2="a77 a85" order="2"/>
<bond atomRefs2="a79 a84" order="2"/>
<bond atomRefs2="a81 a86" order="1"/>
<bond atomRefs2="a82 a88" order="1"/>
<bond atomRefs2="a83 a89" order="2"/>
<bond atomRefs2="a84 a87" order="1"/>
<bond atomRefs2="a86 a87" order="2"/>
<bond atomRefs2="a88 a91" order="2"/>
<bond atomRefs2="a89 a91" order="1"/>
</bondArray>
</molecule>
<molecule id="Desmopressin">
<atomArray>
<atom id="a1" elementType="N" x2="0.000000" y2="-7.864600"/>
<atom id="a2" elementType="C" x2="0.674100" y2="-7.460100"/>
<atom id="a3" elementType="C" x2="1.393200" y2="-7.864600"/>
<atom id="a4" elementType="N" x2="2.112200" y2="-7.460100"/>
<atom id="a5" elementType="C" x2="2.831300" y2="-7.864600"/>
<atom id="a6" elementType="C" x2="3.550300" y2="-7.460100">
<atomParity atomRefs4="a6 a12 a7 a5">1</atomParity>
</atom>
<atom id="a7" elementType="N" x2="4.269300" y2="-7.864600"/>
<atom id="a8" elementType="C" x2="4.943500" y2="-7.460100"/>
<atom id="a9" elementType="O" x2="5.662500" y2="-7.864600"/>
<atom id="a10" elementType="O" x2="0.674100" y2="-6.651200"/>
<atom id="a11" elementType="O" x2="2.831300" y2="-8.718400"/>
<atom id="a12" elementType="C" x2="3.550300" y2="-6.651200"/>
<atom id="a13" elementType="C" x2="2.831300" y2="-6.246700"/>
<atom id="a14" elementType="C" x2="2.831300" y2="-5.437800"/>
<atom id="a15" elementType="N" x2="2.112200" y2="-5.033300"/>
<atom id="a16" elementType="C" x2="4.943500" y2="-6.651200">
<atomParity atomRefs4="a16 a8 a17 a18">1</atomParity>
</atom>
<atom id="a17" elementType="C" x2="4.314300" y2="-6.156800"/>
<atom id="a18" elementType="N" x2="5.617600" y2="-6.156800"/>
<atom id="a19" elementType="C" x2="4.539000" y2="-5.392900"/>
<atom id="a20" elementType="C" x2="5.347900" y2="-5.392900"/>
<atom id="a21" elementType="C" x2="6.336600" y2="-6.561300"/>
<atom id="a22" elementType="C" x2="7.055700" y2="-6.156800">
<atomParity atomRefs4="a22 a21 a28 a23">1</atomParity>
</atom>
<atom id="a23" elementType="N" x2="7.774700" y2="-6.561300"/>
<atom id="a24" elementType="C" x2="8.448800" y2="-6.156800"/>
<atom id="a25" elementType="C" x2="9.167800" y2="-6.561300">
<atomParity atomRefs4="a25 a32 a26 a24">1</atomParity>
</atom>
<atom id="a26" elementType="N" x2="9.886900" y2="-6.156800"/>
<atom id="a27" elementType="O" x2="6.336600" y2="-7.415200"/>
<atom id="a28" elementType="C" x2="7.055700" y2="-5.347900"/>
<atom id="a29" elementType="S" x2="6.336600" y2="-4.943500"/>
<atom id="a30" elementType="S" x2="6.336600" y2="-4.134500"/>
<atom id="a31" elementType="O" x2="8.448800" y2="-5.347900"/>
<atom id="a32" elementType="C" x2="9.167800" y2="-7.415200"/>
<atom id="a33" elementType="C" x2="9.886900" y2="-7.819700"/>
<atom id="a34" elementType="O" x2="9.886900" y2="-8.628600"/>
<atom id="a35" elementType="N" x2="10.606000" y2="-7.415200"/>
<atom id="a36" elementType="C" x2="9.886900" y2="-5.347900"/>
<atom id="a37" elementType="C" x2="10.606000" y2="-4.943500">
<atomParity atomRefs4="a37 a39 a44 a36">1</atomParity>
</atom>
<atom id="a38" elementType="O" x2="9.167800" y2="-4.943500"/>
<atom id="a39" elementType="C" x2="11.325000" y2="-5.347900"/>
<atom id="a40" elementType="C" x2="12.044100" y2="-4.943500"/>
<atom id="a41" elementType="C" x2="12.763100" y2="-5.347900"/>
<atom id="a42" elementType="N" x2="13.482200" y2="-4.943500"/>
<atom id="a43" elementType="O" x2="12.763100" y2="-6.201800"/>
<atom id="a44" elementType="N" x2="10.606000" y2="-4.134500"/>
<atom id="a45" elementType="C" x2="11.325000" y2="-2.876200"/>
<atom id="a46" elementType="C" x2="11.325000" y2="-3.730000"/>
<atom id="a47" elementType="C" x2="10.606000" y2="-2.471700"/>
<atom id="a48" elementType="C" x2="9.886900" y2="-2.876200">
<atomParity atomRefs4="a48 a47 a61 a49">1</atomParity>
</atom>
<atom id="a49" elementType="C" x2="9.886900" y2="-3.730000"/>
<atom id="a50" elementType="C" x2="12.763100" y2="-2.876200"/>
<atom id="a51" elementType="C" x2="12.763100" y2="-3.730000"/>
<atom id="a52" elementType="C" x2="12.044100" y2="-2.471700"/>
<atom id="a53" elementType="C" x2="12.044100" y2="-4.134500"/>
<atom id="a54" elementType="N" x2="7.055700" y2="-2.876200"/>
<atom id="a55" elementType="C" x2="6.336600" y2="-2.471700"/>
<atom id="a56" elementType="C" x2="5.617600" y2="-2.876200"/>
<atom id="a57" elementType="C" x2="5.617600" y2="-3.730000"/>
<atom id="a58" elementType="C" x2="8.448800" y2="-2.876200"/>
<atom id="a59" elementType="O" x2="8.448800" y2="-3.730000"/>
<atom id="a60" elementType="C" x2="7.774700" y2="-2.471700">
<atomParity atomRefs4="a60 a63 a54 a58">1</atomParity>
</atom>
<atom id="a61" elementType="N" x2="9.167800" y2="-2.471700"/>
<atom id="a62" elementType="O" x2="9.167800" y2="-4.134500"/>
<atom id="a63" elementType="C" x2="7.774700" y2="-1.662800"/>
<atom id="a64" elementType="C" x2="9.167800" y2="-1.662800"/>
<atom id="a65" elementType="C" x2="8.448800" y2="-1.258300"/>
<atom id="a66" elementType="C" x2="9.886900" y2="-1.258300"/>
<atom id="a67" elementType="C" x2="9.886900" y2="-0.404500"/>
<atom id="a68" elementType="C" x2="8.448800" y2="-0.404500"/>
<atom id="a69" elementType="C" x2="9.167800" y2="0.000000"/>
<atom id="a70" elementType="O" x2="6.336600" y2="-1.662800"/>
<atom id="a71" elementType="O" x2="10.606000" y2="0.000000"/>
<atom id="a72" elementType="C" x2="1.393200" y2="-5.437800"/>
<atom id="a73" elementType="N" x2="1.393200" y2="-6.246700"/>
<atom id="a74" elementType="N" x2="0.674100" y2="-5.033300"/>
</atomArray>
<bondArray>
<bond atomRefs2="a1 a2" order="1"/>
<bond atomRefs2="a2 a3" order="1"/>
<bond atomRefs2="a2 a10" order="2"/>
<bond atomRefs2="a3 a4" order="1"/>
<bond atomRefs2="a4 a5" order="1"/>
<bond atomRefs2="a5 a6" order="1"/>
<bond atomRefs2="a5 a11" order="2"/>
<bond atomRefs2="a6 a7" order="1"/>
<bond atomRefs2="a6 a12" order="1"/>
<bond atomRefs2="a7 a8" order="1"/>
<bond atomRefs2="a8 a9" order="2"/>
<bond atomRefs2="a16 a8" order="1"/>
<bond atomRefs2="a12 a13" order="1"/>
<bond atomRefs2="a13 a14" order="1"/>
<bond atomRefs2="a14 a15" order="1"/>
<bond atomRefs2="a15 a72" order="1"/>
<bond atomRefs2="a16 a17" order="1"/>
<bond atomRefs2="a16 a18" order="1"/>
<bond atomRefs2="a17 a19" order="1"/>
<bond atomRefs2="a18 a20" order="1"/>
<bond atomRefs2="a18 a21" order="1"/>
<bond atomRefs2="a19 a20" order="1"/>
<bond atomRefs2="a22 a21" order="1"/>
<bond atomRefs2="a21 a27" order="2"/>
<bond atomRefs2="a22 a23" order="1"/>
<bond atomRefs2="a22 a28" order="1"/>
<bond atomRefs2="a23 a24" order="1"/>
<bond atomRefs2="a24 a25" order="1"/>
<bond atomRefs2="a24 a31" order="2"/>
<bond atomRefs2="a25 a26" order="1"/>
<bond atomRefs2="a25 a32" order="1"/>
<bond atomRefs2="a26 a36" order="1"/>
<bond atomRefs2="a28 a29" order="1"/>
<bond atomRefs2="a29 a30" order="1"/>
<bond atomRefs2="a30 a57" order="1"/>
<bond atomRefs2="a32 a33" order="1"/>
<bond atomRefs2="a33 a34" order="2"/>
<bond atomRefs2="a33 a35" order="1"/>
<bond atomRefs2="a36 a37" order="1"/>
<bond atomRefs2="a36 a38" order="2"/>
<bond atomRefs2="a37 a39" order="1"/>
<bond atomRefs2="a37 a44" order="1"/>
<bond atomRefs2="a39 a40" order="1"/>
<bond atomRefs2="a40 a41" order="1"/>
<bond atomRefs2="a41 a42" order="1"/>
<bond atomRefs2="a41 a43" order="2"/>
<bond atomRefs2="a44 a49" order="1"/>
<bond atomRefs2="a45 a47" order="1"/>
<bond atomRefs2="a45 a52" order="1"/>
<bond atomRefs2="a45 a46" order="2"/>
<bond atomRefs2="a46 a53" order="1"/>
<bond atomRefs2="a48 a47" order="1"/>
<bond atomRefs2="a48 a61" order="1"/>
<bond atomRefs2="a48 a49" order="1"/>
<bond atomRefs2="a49 a62" order="2"/>
<bond atomRefs2="a50 a51" order="1"/>
<bond atomRefs2="a50 a52" order="2"/>
<bond atomRefs2="a51 a53" order="2"/>
<bond atomRefs2="a54 a55" order="1"/>
<bond atomRefs2="a54 a60" order="1"/>
<bond atomRefs2="a55 a56" order="1"/>
<bond atomRefs2="a55 a70" order="2"/>
<bond atomRefs2="a56 a57" order="1"/>
<bond atomRefs2="a58 a59" order="2"/>
<bond atomRefs2="a58 a60" order="1"/>
<bond atomRefs2="a58 a61" order="1"/>
<bond atomRefs2="a60 a63" order="1"/>
<bond atomRefs2="a63 a65" order="1"/>
<bond atomRefs2="a64 a66" order="2"/>
<bond atomRefs2="a64 a65" order="1"/>
<bond atomRefs2="a65 a68" order="2"/>
<bond atomRefs2="a66 a67" order="1"/>
<bond atomRefs2="a67 a69" order="2"/>
<bond atomRefs2="a67 a71" order="1"/>
<bond atomRefs2="a68 a69" order="1"/>
<bond atomRefs2="a72 a73" order="2"/>
<bond atomRefs2="a72 a74" order="1"/>
</bondArray>
</molecule>
</cml>
@@ -0,0 +1,2 @@
InChI=1S/C59H84N18O14/c1-31(2)22-40(49(82)68-39(12-8-20-64-57(60)61)56(89)77-21-9-13-46(77)55(88)75-76-58(62)90)69-54(87)45(29-91-59(3,4)5)74-50(83)41(23-32-14-16-35(79)17-15-32)70-53(86)44(28-78)73-51(84)42(24-33-26-65-37-11-7-6-10-36(33)37)71-52(85)43(25-34-27-63-30-66-34)72-48(81)38-18-19-47(80)67-38/h6-7,10-11,14-17,26-27,30-31,38-46,65,78-79H,8-9,12-13,18-25,28-29H2,1-5H3,(H,63,66)(H,67,80)(H,68,82)(H,69,87)(H,70,86)(H,71,85)(H,72,81)(H,73,84)(H,74,83)(H,75,88)(H4,60,61,64)(H3,62,76,90)/t38-,39-,40-,41-,42-,43-,44-,45+,46-/m0/s1
InChI=1S/C46H64N14O12S2/c47-35(62)15-14-29-40(67)58-32(22-36(48)63)43(70)59-33(45(72)60-18-5-9-34(60)44(71)56-28(8-4-17-52-46(50)51)39(66)53-23-37(49)64)24-74-73-19-16-38(65)54-30(21-26-10-12-27(61)13-11-26)41(68)57-31(42(69)55-29)20-25-6-2-1-3-7-25/h1-3,6-7,10-13,28-34,61H,4-5,8-9,14-24H2,(H2,47,62)(H2,48,63)(H2,49,64)(H,53,66)(H,54,65)(H,55,69)(H,56,71)(H,57,68)(H,58,67)(H,59,70)(H4,50,51,52)/t28-,29-,30-,31-,32-,33-,34-/m0/s1
@@ -0,0 +1,354 @@
@<TRIPOS>MOLECULE
Goserelin
91 96 0 0 0
SMALL
GASTEIGER
@<TRIPOS>ATOM
1 O 12.8548 -2.6382 0.0000 O.2 4 UNK4 -0.2730
2 O 13.9726 -2.5226 0.0000 O.2 4 UNK4 -0.2699
3 O 10.1766 -3.9327 0.0000 O.2 4 UNK4 -0.2715
4 O 11.2019 -0.7961 0.0000 O.3 4 UNK4 -0.3562
5 O 8.7800 -1.3064 0.0000 O.2 4 UNK4 -0.2714
6 O 16.8589 -3.2421 0.0000 O.2 4 UNK4 -0.2457
7 O 10.3562 1.2163 0.0000 O.2 4 UNK4 -0.2715
8 O 3.2702 4.8341 0.0000 O.2 1 UNK1 -0.2715
9 O 2.3500 8.2734 0.0000 O.2 1 UNK1 -0.2733
10 O 3.8213 4.2201 0.0000 O.2 2 HIS2 -0.2715
11 O 5.2178 1.5938 0.0000 O.2 3 TRP3 -0.2715
12 O 7.8960 2.8883 0.0000 O.2 4 UNK4 -0.2714
13 O 7.1271 0.5358 0.0000 O.3 4 UNK4 -0.2179
14 O 12.4834 3.1249 0.0000 O.3 4 UNK4 -0.2866
15 N 13.1495 -4.0364 0.0000 N.am 4 UNK4 -0.2715
16 N 11.2402 -2.9784 0.0000 N.am 4 UNK4 -0.1964
17 N 15.2089 -3.2393 0.0000 N.am 4 UNK4 -0.0850
18 N 10.1383 -1.7503 0.0000 N.am 4 UNK4 -0.1963
19 N 15.6226 -2.5255 0.0000 N.am 4 UNK4 -0.0678
20 N 12.3806 -6.3890 0.0000 N.pl3 4 UNK4 -0.0865
21 N 9.2926 0.2619 0.0000 N.am 4 UNK4 -0.1937
22 N 3.1485 7.0391 0.0000 N.am 1 UNK1 -0.1978
23 N 4.3338 5.7884 0.0000 N.am 2 HIS2 -0.1959
24 N 16.8613 -1.8132 0.0000 N.am 4 UNK4 -0.0665
25 N 8.1907 1.4900 0.0000 N.am 4 UNK4 -0.1959
26 N 5.1795 3.7761 0.0000 N.am 3 TRP3 -0.1960
27 N 6.2814 2.5480 0.0000 N.am 4 UNK4 -0.1936
28 N 11.3170 -7.3433 0.0000 N.pl3 4 UNK4 0.1354
29 N 12.6753 -7.7873 0.0000 N.pl3 4 UNK4 0.1354
30 NE1 3.8596 0.7098 0.0000 N.ar 3 TRP3 -0.2442
31 ND1 6.7335 6.3823 0.0000 N.ar 2 HIS2 -0.2267
32 NE2 5.9507 7.4636 0.0000 N.ar 2 HIS2 -0.2212
33 C 13.9701 -3.9516 0.0000 C.3 4 UNK4 0.1552
34 C 14.3043 -4.7058 0.0000 C.3 4 UNK4 0.0311
35 C 13.6903 -5.2569 0.0000 C.3 4 UNK4 0.0237
36 C 12.9766 -4.8431 0.0000 C.3 4 UNK4 0.0939
37 C 12.5984 -3.4224 0.0000 C.2 4 UNK4 0.2458
38 C 11.7912 -3.5925 0.0000 C.3 4 UNK4 0.1714
39 C 14.3838 -3.2378 0.0000 C.2 4 UNK4 0.2788
40 C 11.5349 -4.3767 0.0000 C.3 4 UNK4 0.0347
41 C 12.0859 -4.9907 0.0000 C.3 4 UNK4 0.0492
42 C 9.8819 -2.5345 0.0000 C.3 4 UNK4 0.1728
43 C 10.4330 -3.1486 0.0000 C.2 4 UNK4 0.2616
44 C 9.0747 -2.7046 0.0000 C.3 4 UNK4 0.0311
45 C 8.8184 -3.4889 0.0000 C.3 4 UNK4 0.0022
46 C 11.8295 -5.7750 0.0000 C.3 4 UNK4 0.2205
47 C 8.0112 -3.6590 0.0000 C.3 4 UNK4 0.0001
48 C 9.3694 -4.1029 0.0000 C.3 4 UNK4 0.0001
49 C 9.5873 -1.1363 0.0000 C.2 4 UNK4 0.2642
50 C 9.8436 -0.3521 0.0000 C.3 4 UNK4 0.2021
51 C 10.6509 -0.1820 0.0000 C.3 4 UNK4 0.1729
52 C 16.4476 -2.5269 0.0000 C.2 4 UNK4 0.3786
53 C 2.9756 6.2324 0.0000 C.3 1 UNK1 0.1732
54 C 12.0091 -0.6259 0.0000 C.3 4 UNK4 0.0931
55 C 8.9979 1.6602 0.0000 C.3 4 UNK4 0.1771
56 C 9.5489 1.0461 0.0000 C.2 4 UNK4 0.2620
57 C 12.1242 -7.1732 0.0000 C.cat 4 UNK4 0.5346
58 C 2.1549 6.1475 0.0000 C.3 1 UNK1 0.0407
59 CA 4.8848 5.1744 0.0000 C.3 2 HIS2 0.1787
60 CA 4.9232 2.9920 0.0000 C.3 3 TRP3 0.1771
61 C 1.8207 6.9019 0.0000 C.3 1 UNK1 0.0891
62 C 9.2542 2.4444 0.0000 C.3 4 UNK4 0.0574
63 CB 4.1159 2.8219 0.0000 C.3 3 TRP3 0.0590
64 C 3.5266 5.6183 0.0000 C.2 1 UNK1 0.2616
65 C 2.4348 7.4528 0.0000 C.2 1 UNK1 0.2418
66 CB 5.6921 5.3445 0.0000 C.3 2 HIS2 0.0785
67 C 6.8324 1.9340 0.0000 C.3 4 UNK4 0.2055
68 C 4.6285 4.3902 0.0000 C.2 2 HIS2 0.2620
69 C 12.1793 -1.4332 0.0000 C.3 4 UNK4 0.0296
70 C 12.8164 -0.4557 0.0000 C.3 4 UNK4 0.0296
71 C 11.8389 0.1814 0.0000 C.3 4 UNK4 0.0296
72 CG 3.8596 2.0376 0.0000 C.ar 3 TRP3 0.0006
73 C 5.4742 2.3779 0.0000 C.2 3 TRP3 0.2620
74 C 7.6397 2.1041 0.0000 C.2 4 UNK4 0.2643
75 C 10.0615 2.6145 0.0000 C.ar 4 UNK4 -0.0198
76 CD2 3.0790 1.7862 0.0000 C.ar 3 TRP3 0.0152
77 CG 5.9484 6.1287 0.0000 C.ar 2 HIS2 0.0821
78 CD1 4.3411 1.3737 0.0000 C.ar 3 TRP3 0.0946
79 CE2 3.0790 0.9612 0.0000 C.ar 3 TRP3 0.0810
80 C 6.5761 1.1498 0.0000 C.3 4 UNK4 0.2130
81 CE3 2.3645 2.1987 0.0000 C.ar 3 TRP3 0.0012
82 C 10.3178 3.3987 0.0000 C.ar 4 UNK4 -0.0009
83 C 10.6125 2.0005 0.0000 C.ar 4 UNK4 -0.0009
84 CZ2 2.3645 0.5487 0.0000 C.ar 3 TRP3 0.0191
85 CD2 5.4646 6.7970 0.0000 C.ar 2 HIS2 0.1154
86 CZ3 1.6500 1.7862 0.0000 C.ar 3 TRP3 0.0001
87 CH2 1.6500 0.9612 0.0000 C.ar 3 TRP3 0.0015
88 C 11.1251 3.5688 0.0000 C.ar 4 UNK4 0.0417
89 C 11.4198 2.1706 0.0000 C.ar 4 UNK4 0.0417
90 CE1 6.7349 7.2073 0.0000 C.ar 2 HIS2 0.1986
91 C 11.6761 2.9548 0.0000 C.ar 4 UNK4 0.1957
@<TRIPOS>BOND
1 1 37 2
2 2 39 2
3 3 43 2
4 4 51 1
5 4 54 1
6 5 49 2
7 6 52 2
8 7 56 2
9 8 64 2
10 9 65 2
11 10 68 2
12 11 73 2
13 12 74 2
14 13 80 1
15 14 91 1
16 15 33 1
17 15 36 1
18 15 37 am
19 38 16 1
20 16 43 am
21 17 19 1
22 17 39 am
23 42 18 1
24 18 49 am
25 19 52 am
26 20 46 1
27 20 57 2
28 50 21 1
29 21 56 am
30 22 53 1
31 22 65 am
32 59 23 1
33 23 64 am
34 24 52 am
35 55 25 1
36 25 74 am
37 60 26 1
38 26 68 am
39 67 27 1
40 27 73 am
41 28 57 1
42 29 57 1
43 30 78 ar
44 30 79 ar
45 31 77 ar
46 31 90 ar
47 32 85 ar
48 32 90 ar
49 33 34 1
50 33 39 1
51 34 35 1
52 35 36 1
53 37 38 1
54 38 40 1
55 40 41 1
56 41 46 1
57 42 43 1
58 42 44 1
59 44 45 1
60 45 47 1
61 45 48 1
62 49 50 1
63 50 51 1
64 53 58 1
65 53 64 1
66 54 69 1
67 54 70 1
68 54 71 1
69 55 56 1
70 55 62 1
71 58 61 1
72 59 66 1
73 59 68 1
74 60 63 1
75 60 73 1
76 61 65 1
77 62 75 1
78 63 72 1
79 66 77 1
80 67 74 1
81 67 80 1
82 72 76 ar
83 72 78 ar
84 75 82 ar
85 75 83 ar
86 76 79 ar
87 76 81 ar
88 77 85 ar
89 79 84 ar
90 81 86 ar
91 82 88 ar
92 83 89 ar
93 84 87 ar
94 86 87 ar
95 88 91 ar
96 89 91 ar
@<TRIPOS>MOLECULE
Desmopressin
74 77 0 0 0
SMALL
GASTEIGER
@<TRIPOS>ATOM
1 N 0.0000 -7.8646 0.0000 N.am 1 LIG1 -0.0862
2 C 0.6741 -7.4601 0.0000 C.2 1 LIG1 0.2828
3 C 1.3932 -7.8646 0.0000 C.3 1 LIG1 0.2031
4 N 2.1122 -7.4601 0.0000 N.am 1 LIG1 -0.1939
5 C 2.8313 -7.8646 0.0000 C.2 1 LIG1 0.2617
6 C 3.5503 -7.4601 0.0000 C.3 1 LIG1 0.1729
7 N 4.2693 -7.8646 0.0000 N.am 1 LIG1 -0.1964
8 C 4.9435 -7.4601 0.0000 C.2 1 LIG1 0.2598
9 O 5.6625 -7.8646 0.0000 O.2 1 LIG1 -0.2715
10 O 0.6741 -6.6512 0.0000 O.2 1 LIG1 -0.2697
11 O 2.8313 -8.7184 0.0000 O.2 1 LIG1 -0.2715
12 C 3.5503 -6.6512 0.0000 C.3 1 LIG1 0.0348
13 C 2.8313 -6.2467 0.0000 C.3 1 LIG1 0.0492
14 C 2.8313 -5.4378 0.0000 C.3 1 LIG1 0.2205
15 N 2.1122 -5.0333 0.0000 N.pl3 1 LIG1 -0.0865
16 C 4.9435 -6.6512 0.0000 C.3 1 LIG1 0.1536
17 C 4.3143 -6.1568 0.0000 C.3 1 LIG1 0.0310
18 N 5.6176 -6.1568 0.0000 N.am 1 LIG1 -0.2715
19 C 4.5390 -5.3929 0.0000 C.3 1 LIG1 0.0237
20 C 5.3479 -5.3929 0.0000 C.3 1 LIG1 0.0939
21 C 6.3366 -6.5613 0.0000 C.2 1 LIG1 0.2467
22 C 7.0557 -6.1568 0.0000 C.3 1 LIG1 0.1828
23 N 7.7747 -6.5613 0.0000 N.am 1 LIG1 -0.1954
24 C 8.4488 -6.1568 0.0000 C.2 1 LIG1 0.2621
25 C 9.1678 -6.5613 0.0000 C.3 1 LIG1 0.1819
26 N 9.8869 -6.1568 0.0000 N.am 1 LIG1 -0.1958
27 O 6.3366 -7.4152 0.0000 O.2 1 LIG1 -0.2730
28 C 7.0557 -5.3479 0.0000 C.3 1 LIG1 0.0996
29 S 6.3366 -4.9435 0.0000 S.3 1 LIG1 -0.0798
30 S 6.3366 -4.1345 0.0000 S.3 1 LIG1 -0.0816
31 O 8.4488 -5.3479 0.0000 O.2 1 LIG1 -0.2715
32 C 9.1678 -7.4152 0.0000 C.3 1 LIG1 0.1195
33 C 9.8869 -7.8197 0.0000 C.2 1 LIG1 0.2630
34 O 9.8869 -8.6286 0.0000 O.2 1 LIG1 -0.2716
35 N 10.6060 -7.4152 0.0000 N.am 1 LIG1 -0.0877
36 C 9.8869 -5.3479 0.0000 C.2 1 LIG1 0.2616
37 C 10.6060 -4.9435 0.0000 C.3 1 LIG1 0.1733
38 O 9.1678 -4.9435 0.0000 O.2 1 LIG1 -0.2715
39 C 11.3250 -5.3479 0.0000 C.3 1 LIG1 0.0408
40 C 12.0441 -4.9435 0.0000 C.3 1 LIG1 0.0908
41 C 12.7631 -5.3479 0.0000 C.2 1 LIG1 0.2608
42 N 13.4822 -4.9435 0.0000 N.am 1 LIG1 -0.0878
43 O 12.7631 -6.2018 0.0000 O.2 1 LIG1 -0.2717
44 N 10.6060 -4.1345 0.0000 N.am 1 LIG1 -0.1963
45 C 11.3250 -2.8762 0.0000 C.ar 1 LIG1 -0.0200
46 C 11.3250 -3.7300 0.0000 C.ar 1 LIG1 -0.0042
47 C 10.6060 -2.4717 0.0000 C.3 1 LIG1 0.0574
48 C 9.8869 -2.8762 0.0000 C.3 1 LIG1 0.1771
49 C 9.8869 -3.7300 0.0000 C.2 1 LIG1 0.2619
50 C 12.7631 -2.8762 0.0000 C.ar 1 LIG1 -0.0003
51 C 12.7631 -3.7300 0.0000 C.ar 1 LIG1 -0.0000
52 C 12.0441 -2.4717 0.0000 C.ar 1 LIG1 -0.0042
53 C 12.0441 -4.1345 0.0000 C.ar 1 LIG1 -0.0003
54 N 7.0557 -2.8762 0.0000 N.am 1 LIG1 -0.1974
55 C 6.3366 -2.4717 0.0000 C.2 1 LIG1 0.2427
56 C 5.6176 -2.8762 0.0000 C.3 1 LIG1 0.0993
57 C 5.6176 -3.7300 0.0000 C.3 1 LIG1 0.0783
58 C 8.4488 -2.8762 0.0000 C.2 1 LIG1 0.2620
59 O 8.4488 -3.7300 0.0000 O.2 1 LIG1 -0.2715
60 C 7.7747 -2.4717 0.0000 C.3 1 LIG1 0.1770
61 N 9.1678 -2.4717 0.0000 N.am 1 LIG1 -0.1960
62 O 9.1678 -4.1345 0.0000 O.2 1 LIG1 -0.2715
63 C 7.7747 -1.6628 0.0000 C.3 1 LIG1 0.0574
64 C 9.1678 -1.6628 0.0000 C.ar 1 LIG1 -0.0009
65 C 8.4488 -1.2583 0.0000 C.ar 1 LIG1 -0.0198
66 C 9.8869 -1.2583 0.0000 C.ar 1 LIG1 0.0417
67 C 9.8869 -0.4045 0.0000 C.ar 1 LIG1 0.1957
68 C 8.4488 -0.4045 0.0000 C.ar 1 LIG1 -0.0009
69 C 9.1678 0.0000 0.0000 C.ar 1 LIG1 0.0417
70 O 6.3366 -1.6628 0.0000 O.2 1 LIG1 -0.2733
71 O 10.6060 0.0000 0.0000 O.3 1 LIG1 -0.2866
72 C 1.3932 -5.4378 0.0000 C.cat 1 LIG1 0.5346
73 N 1.3932 -6.2467 0.0000 N.pl3 1 LIG1 0.1354
74 N 0.6741 -5.0333 0.0000 N.pl3 1 LIG1 0.1354
@<TRIPOS>BOND
1 1 2 am
2 2 3 1
3 2 10 2
4 3 4 1
5 4 5 am
6 5 6 1
7 5 11 2
8 6 7 1
9 6 12 1
10 7 8 am
11 8 9 2
12 16 8 1
13 12 13 1
14 13 14 1
15 14 15 1
16 15 72 1
17 16 17 1
18 16 18 1
19 17 19 1
20 18 20 1
21 18 21 am
22 19 20 1
23 22 21 1
24 21 27 2
25 22 23 1
26 22 28 1
27 23 24 am
28 24 25 1
29 24 31 2
30 25 26 1
31 25 32 1
32 26 36 am
33 28 29 1
34 29 30 1
35 30 57 1
36 32 33 1
37 33 34 2
38 33 35 am
39 36 37 1
40 36 38 2
41 37 39 1
42 37 44 1
43 39 40 1
44 40 41 1
45 41 42 am
46 41 43 2
47 44 49 am
48 45 47 1
49 45 52 ar
50 45 46 ar
51 46 53 ar
52 48 47 1
53 48 61 1
54 48 49 1
55 49 62 2
56 50 51 ar
57 50 52 ar
58 51 53 ar
59 54 55 am
60 54 60 1
61 55 56 1
62 55 70 2
63 56 57 1
64 58 59 2
65 58 60 1
66 58 61 am
67 60 63 1
68 63 65 1
69 64 66 ar
70 64 65 ar
71 65 68 ar
72 66 67 ar
73 67 69 ar
74 67 71 1
75 68 69 ar
76 72 73 2
77 72 74 1
@@ -0,0 +1,491 @@
Goserelin
Mrv0541 04221219462D
91 96 0 0 1 0 999 V2000
12.8548 -2.6382 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0
13.9726 -2.5226 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0
10.1766 -3.9327 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0
11.2019 -0.7961 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0
8.7800 -1.3064 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0
16.8589 -3.2421 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0
10.3562 1.2163 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0
3.2702 4.8341 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0
2.3500 8.2734 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0
3.8213 4.2201 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0
5.2178 1.5938 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0
7.8960 2.8883 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0
7.1271 0.5358 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0
12.4834 3.1249 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0
13.1495 -4.0364 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0
11.2402 -2.9784 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0
15.2089 -3.2393 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0
10.1383 -1.7503 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0
15.6226 -2.5255 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0
12.3806 -6.3890 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0
9.2926 0.2619 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0
3.1485 7.0391 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0
4.3338 5.7884 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0
16.8613 -1.8132 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0
8.1907 1.4900 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0
5.1795 3.7761 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0
6.2814 2.5480 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0
11.3170 -7.3433 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0
12.6753 -7.7873 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0
3.8596 0.7098 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0
6.7335 6.3823 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0
5.9507 7.4636 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0
13.9701 -3.9516 0.0000 C 0 0 1 0 0 0 0 0 0 0 0 0
14.3043 -4.7058 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
13.6903 -5.2569 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
12.9766 -4.8431 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
12.5984 -3.4224 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
11.7912 -3.5925 0.0000 C 0 0 2 0 0 0 0 0 0 0 0 0
14.3838 -3.2378 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
11.5349 -4.3767 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
12.0859 -4.9907 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
9.8819 -2.5345 0.0000 C 0 0 2 0 0 0 0 0 0 0 0 0
10.4330 -3.1486 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
9.0747 -2.7046 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
8.8184 -3.4889 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
11.8295 -5.7750 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
8.0112 -3.6590 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
9.3694 -4.1029 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
9.5873 -1.1363 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
9.8436 -0.3521 0.0000 C 0 0 1 0 0 0 0 0 0 0 0 0
10.6509 -0.1820 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
16.4476 -2.5269 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
2.9756 6.2324 0.0000 C 0 0 1 0 0 0 0 0 0 0 0 0
12.0091 -0.6259 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
8.9979 1.6602 0.0000 C 0 0 2 0 0 0 0 0 0 0 0 0
9.5489 1.0461 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
12.1242 -7.1732 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
2.1549 6.1475 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
4.8848 5.1744 0.0000 C 0 0 1 0 0 0 0 0 0 0 0 0
4.9232 2.9920 0.0000 C 0 0 1 0 0 0 0 0 0 0 0 0
1.8207 6.9019 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
9.2542 2.4444 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
4.1159 2.8219 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
3.5266 5.6183 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
2.4348 7.4528 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
5.6921 5.3445 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
6.8324 1.9340 0.0000 C 0 0 2 0 0 0 0 0 0 0 0 0
4.6285 4.3902 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
12.1793 -1.4332 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
12.8164 -0.4557 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
11.8389 0.1814 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
3.8596 2.0376 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
5.4742 2.3779 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
7.6397 2.1041 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
10.0615 2.6145 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
3.0790 1.7862 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
5.9484 6.1287 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
4.3411 1.3737 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
3.0790 0.9612 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
6.5761 1.1498 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
2.3645 2.1987 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
10.3178 3.3987 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
10.6125 2.0005 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
2.3645 0.5487 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
5.4646 6.7970 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
1.6500 1.7862 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
1.6500 0.9612 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
11.1251 3.5688 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
11.4198 2.1706 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
6.7349 7.2073 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
11.6761 2.9548 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
1 37 2 0 0 0 0
2 39 2 0 0 0 0
3 43 2 0 0 0 0
4 51 1 0 0 0 0
4 54 1 0 0 0 0
5 49 2 0 0 0 0
6 52 2 0 0 0 0
7 56 2 0 0 0 0
8 64 2 0 0 0 0
9 65 2 0 0 0 0
10 68 2 0 0 0 0
11 73 2 0 0 0 0
12 74 2 0 0 0 0
13 80 1 0 0 0 0
14 91 1 0 0 0 0
15 33 1 0 0 0 0
15 36 1 0 0 0 0
15 37 1 0 0 0 0
38 16 1 6 0 0 0
16 43 1 0 0 0 0
17 19 1 0 0 0 0
17 39 1 0 0 0 0
42 18 1 6 0 0 0
18 49 1 0 0 0 0
19 52 1 0 0 0 0
20 46 1 0 0 0 0
20 57 2 0 0 0 0
50 21 1 6 0 0 0
21 56 1 0 0 0 0
22 53 1 0 0 0 0
22 65 1 0 0 0 0
59 23 1 1 0 0 0
23 64 1 0 0 0 0
24 52 1 0 0 0 0
55 25 1 1 0 0 0
25 74 1 0 0 0 0
60 26 1 6 0 0 0
26 68 1 0 0 0 0
67 27 1 6 0 0 0
27 73 1 0 0 0 0
28 57 1 0 0 0 0
29 57 1 0 0 0 0
30 78 1 0 0 0 0
30 79 1 0 0 0 0
31 77 1 0 0 0 0
31 90 1 0 0 0 0
32 85 1 0 0 0 0
32 90 2 0 0 0 0
33 34 1 0 0 0 0
33 39 1 6 0 0 0
34 35 1 0 0 0 0
35 36 1 0 0 0 0
37 38 1 0 0 0 0
38 40 1 0 0 0 0
40 41 1 0 0 0 0
41 46 1 0 0 0 0
42 43 1 0 0 0 0
42 44 1 0 0 0 0
44 45 1 0 0 0 0
45 47 1 0 0 0 0
45 48 1 0 0 0 0
49 50 1 0 0 0 0
50 51 1 0 0 0 0
53 58 1 0 0 0 0
53 64 1 6 0 0 0
54 69 1 0 0 0 0
54 70 1 0 0 0 0
54 71 1 0 0 0 0
55 56 1 0 0 0 0
55 62 1 0 0 0 0
58 61 1 0 0 0 0
59 66 1 0 0 0 0
59 68 1 0 0 0 0
60 63 1 0 0 0 0
60 73 1 0 0 0 0
61 65 1 0 0 0 0
62 75 1 0 0 0 0
63 72 1 0 0 0 0
66 77 1 0 0 0 0
67 74 1 0 0 0 0
67 80 1 0 0 0 0
72 76 1 0 0 0 0
72 78 2 0 0 0 0
75 82 2 0 0 0 0
75 83 1 0 0 0 0
76 79 1 0 0 0 0
76 81 2 0 0 0 0
77 85 2 0 0 0 0
79 84 2 0 0 0 0
81 86 1 0 0 0 0
82 88 1 0 0 0 0
83 89 2 0 0 0 0
84 87 1 0 0 0 0
86 87 2 0 0 0 0
88 91 2 0 0 0 0
89 91 1 0 0 0 0
M END
> <DRUGBANK_ID>
DB00014
> <DRUG_GROUPS>
approved
> <GENERIC_NAME>
Goserelin
> <SALTS>
Goserelin acetate
> <BRANDS>
Zoladex
> <CHEMICAL_FORMULA>
C59H84N18O14
> <MOLECULAR_WEIGHT>
1269.4105
> <EXACT_MASS>
1268.641439486
> <IUPAC_NAME>
(2S)-1-[(2S)-2-[(2S)-2-[(2R)-3-(tert-butoxy)-2-[(2S)-2-[(2S)-3-hydroxy-2-[(2S)-2-[(2S)-3-(1H-imidazol-5-yl)-2-{[(2S)-5-oxopyrrolidin-2-yl]formamido}propanamido]-3-(1H-indol-3-yl)propanamido]propanamido]-3-(4-hydroxyphenyl)propanamido]propanamido]-4-methylpentanamido]-5-[(diaminomethylidene)amino]pentanoyl]-N-(carbamoylamino)pyrrolidine-2-carboxamide
> <INCHI_IDENTIFIER>
InChI=1S/C59H84N18O14/c1-31(2)22-40(49(82)68-39(12-8-20-64-57(60)61)56(89)77-21-9-13-46(77)55(88)75-76-58(62)90)69-54(87)45(29-91-59(3,4)5)74-50(83)41(23-32-14-16-35(79)17-15-32)70-53(86)44(28-78)73-51(84)42(24-33-26-65-37-11-7-6-10-36(33)37)71-52(85)43(25-34-27-63-30-66-34)72-48(81)38-18-19-47(80)67-38/h6-7,10-11,14-17,26-27,30-31,38-46,65,78-79H,8-9,12-13,18-25,28-29H2,1-5H3,(H,63,66)(H,67,80)(H,68,82)(H,69,87)(H,70,86)(H,71,85)(H,72,81)(H,73,84)(H,74,83)(H,75,88)(H4,60,61,64)(H3,62,76,90)/t38-,39-,40-,41-,42-,43-,44-,45+,46-/m0/s1
> <INCHI_KEY>
InChIKey=BLCLNMBMMGCOAS-URPVMXJPSA-N
> <SMILES>
CC(C)C[C@H](NC(=O)[C@@H](COC(C)(C)C)NC(=O)[C@H](CC1=CC=C(O)C=C1)NC(=O)[C@H](CO)NC(=O)[C@H](CC1=CNC2=CC=CC=C12)NC(=O)[C@H](CC1=CN=CN1)NC(=O)[C@@H]1CCC(=O)N1)C(=O)N[C@@H](CCCN=C(N)N)C(=O)N1CCC[C@H]1C(=O)NNC(N)=O
> <JCHEM_ACCEPTOR_COUNT>
18
> <JCHEM_DONOR_COUNT>
17
> <JCHEM_ACIDIC_PKA>
9.82
> <ALOGPS_LOGP>
0.3
> <JCHEM_LOGP>
-5.2
> <ALOGPS_LOGS>
-4.7
> <JCHEM_POLARIZABILITY>
131.22
> <JCHEM_POLAR_SURFACE_AREA>
495.89
> <JCHEM_REFRACTIVITY>
325.84
> <JCHEM_ROTATABLE_BOND_COUNT>
33
> <ALOGPS_SOLUBILITY>
2.83e-02 g/l
$$$$
Desmopressin
Mrv0541 04221221522D
74 77 0 0 1 0 999 V2000
0.0000 -7.8646 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0
0.6741 -7.4601 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
1.3932 -7.8646 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
2.1122 -7.4601 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0
2.8313 -7.8646 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
3.5503 -7.4601 0.0000 C 0 0 1 0 0 0 0 0 0 0 0 0
4.2693 -7.8646 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0
4.9435 -7.4601 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
5.6625 -7.8646 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0
0.6741 -6.6512 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0
2.8313 -8.7184 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0
3.5503 -6.6512 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
2.8313 -6.2467 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
2.8313 -5.4378 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
2.1122 -5.0333 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0
4.9435 -6.6512 0.0000 C 0 0 2 0 0 0 0 0 0 0 0 0
4.3143 -6.1568 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
5.6176 -6.1568 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0
4.5390 -5.3929 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
5.3479 -5.3929 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
6.3366 -6.5613 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
7.0557 -6.1568 0.0000 C 0 0 1 0 0 0 0 0 0 0 0 0
7.7747 -6.5613 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0
8.4488 -6.1568 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
9.1678 -6.5613 0.0000 C 0 0 1 0 0 0 0 0 0 0 0 0
9.8869 -6.1568 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0
6.3366 -7.4152 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0
7.0557 -5.3479 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
6.3366 -4.9435 0.0000 S 0 0 0 0 0 0 0 0 0 0 0 0
6.3366 -4.1345 0.0000 S 0 0 0 0 0 0 0 0 0 0 0 0
8.4488 -5.3479 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0
9.1678 -7.4152 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
9.8869 -7.8197 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
9.8869 -8.6286 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0
10.6060 -7.4152 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0
9.8869 -5.3479 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
10.6060 -4.9435 0.0000 C 0 0 2 0 0 0 0 0 0 0 0 0
9.1678 -4.9435 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0
11.3250 -5.3479 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
12.0441 -4.9435 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
12.7631 -5.3479 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
13.4822 -4.9435 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0
12.7631 -6.2018 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0
10.6060 -4.1345 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0
11.3250 -2.8762 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
11.3250 -3.7300 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
10.6060 -2.4717 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
9.8869 -2.8762 0.0000 C 0 0 1 0 0 0 0 0 0 0 0 0
9.8869 -3.7300 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
12.7631 -2.8762 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
12.7631 -3.7300 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
12.0441 -2.4717 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
12.0441 -4.1345 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
7.0557 -2.8762 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0
6.3366 -2.4717 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
5.6176 -2.8762 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
5.6176 -3.7300 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
8.4488 -2.8762 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
8.4488 -3.7300 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0
7.7747 -2.4717 0.0000 C 0 0 2 0 0 0 0 0 0 0 0 0
9.1678 -2.4717 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0
9.1678 -4.1345 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0
7.7747 -1.6628 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
9.1678 -1.6628 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
8.4488 -1.2583 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
9.8869 -1.2583 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
9.8869 -0.4045 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
8.4488 -0.4045 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
9.1678 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
6.3366 -1.6628 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0
10.6060 0.0000 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0
1.3932 -5.4378 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
1.3932 -6.2467 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0
0.6741 -5.0333 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0
1 2 1 0 0 0 0
2 3 1 0 0 0 0
2 10 2 0 0 0 0
3 4 1 0 0 0 0
4 5 1 0 0 0 0
5 6 1 0 0 0 0
5 11 2 0 0 0 0
6 7 1 0 0 0 0
6 12 1 6 0 0 0
7 8 1 0 0 0 0
8 9 2 0 0 0 0
16 8 1 6 0 0 0
12 13 1 0 0 0 0
13 14 1 0 0 0 0
14 15 1 0 0 0 0
15 72 1 0 0 0 0
16 17 1 0 0 0 0
16 18 1 0 0 0 0
17 19 1 0 0 0 0
18 20 1 0 0 0 0
18 21 1 0 0 0 0
19 20 1 0 0 0 0
22 21 1 6 0 0 0
21 27 2 0 0 0 0
22 23 1 0 0 0 0
22 28 1 0 0 0 0
23 24 1 0 0 0 0
24 25 1 0 0 0 0
24 31 2 0 0 0 0
25 26 1 0 0 0 0
25 32 1 1 0 0 0
26 36 1 0 0 0 0
28 29 1 0 0 0 0
29 30 1 0 0 0 0
30 57 1 0 0 0 0
32 33 1 0 0 0 0
33 34 2 0 0 0 0
33 35 1 0 0 0 0
36 37 1 0 0 0 0
36 38 2 0 0 0 0
37 39 1 1 0 0 0
37 44 1 0 0 0 0
39 40 1 0 0 0 0
40 41 1 0 0 0 0
41 42 1 0 0 0 0
41 43 2 0 0 0 0
44 49 1 0 0 0 0
45 47 1 0 0 0 0
45 52 1 0 0 0 0
45 46 2 0 0 0 0
46 53 1 0 0 0 0
48 47 1 1 0 0 0
48 61 1 0 0 0 0
48 49 1 0 0 0 0
49 62 2 0 0 0 0
50 51 1 0 0 0 0
50 52 2 0 0 0 0
51 53 2 0 0 0 0
54 55 1 0 0 0 0
54 60 1 0 0 0 0
55 56 1 0 0 0 0
55 70 2 0 0 0 0
56 57 1 0 0 0 0
58 59 2 0 0 0 0
58 60 1 0 0 0 0
58 61 1 0 0 0 0
60 63 1 1 0 0 0
63 65 1 0 0 0 0
64 66 2 0 0 0 0
64 65 1 0 0 0 0
65 68 2 0 0 0 0
66 67 1 0 0 0 0
67 69 2 0 0 0 0
67 71 1 0 0 0 0
68 69 1 0 0 0 0
72 73 2 3 0 0 0
72 74 1 0 0 0 0
M END
> <DRUGBANK_ID>
DB00035
> <DRUG_GROUPS>
approved
> <GENERIC_NAME>
Desmopressin
> <SYNONYMS>
1-Desamino-8-D-arginine vasopressin; Desmopresina [INN-Spanish]; Desmopressine [INN-French]; Desmopressinum [INN-Latin]
> <SALTS>
Desmopressin acetate
> <BRANDS>
Adiuretin; Concentraid; DDAVP; Minirin; Stimate
> <CHEMICAL_FORMULA>
C46H64N14O12S2
> <MOLECULAR_WEIGHT>
1069.217
> <EXACT_MASS>
1068.426954962
> <IUPAC_NAME>
(2S)-2-{[(2S)-1-{[(4R,7S,10S,13S,16S)-13-benzyl-10-(2-carbamoylethyl)-7-(carbamoylmethyl)-16-[(4-hydroxyphenyl)methyl]-6,9,12,15,18-pentaoxo-1,2-dithia-5,8,11,14,17-pentaazacycloicosan-4-yl]carbonyl}pyrrolidin-2-yl]formamido}-5-carbamimidamido-N-(carbamoylmethyl)pentanamide
> <INCHI_IDENTIFIER>
InChI=1S/C46H64N14O12S2/c47-35(62)15-14-29-40(67)58-32(22-36(48)63)43(70)59-33(45(72)60-18-5-9-34(60)44(71)56-28(8-4-17-52-46(50)51)39(66)53-23-37(49)64)24-74-73-19-16-38(65)54-30(21-26-10-12-27(61)13-11-26)41(68)57-31(42(69)55-29)20-25-6-2-1-3-7-25/h1-3,6-7,10-13,28-34,61H,4-5,8-9,14-24H2,(H2,47,62)(H2,48,63)(H2,49,64)(H,53,66)(H,54,65)(H,55,69)(H,56,71)(H,57,68)(H,58,67)(H,59,70)(H4,50,51,52)/t28-,29-,30-,31-,32-,33-,34-/m0/s1
> <INCHI_KEY>
InChIKey=NFLWUMRGJYTJIN-NXBWRCJVSA-N
> <SMILES>
NC(=O)CC[C@@H]1NC(=O)[C@H](CC2=CC=CC=C2)NC(=O)[C@H](CC2=CC=C(O)C=C2)NC(=O)CCSSC[C@H](NC(=O)[C@H](CC(N)=O)NC1=O)C(=O)N1CCC[C@H]1C(=O)N[C@@H](CCCNC(N)=N)C(=O)NCC(N)=O
> <JCHEM_ACCEPTOR_COUNT>
15
> <JCHEM_DONOR_COUNT>
14
> <JCHEM_ACIDIC_PKA>
11.34
> <ALOGPS_LOGP>
-1
> <JCHEM_LOGP>
-6.1
> <ALOGPS_LOGS>
-4
> <JCHEM_POLARIZABILITY>
106.19
> <JCHEM_POLAR_SURFACE_AREA>
435.41
> <JCHEM_REFRACTIVITY>
279.78
> <JCHEM_ROTATABLE_BOND_COUNT>
19
> <ALOGPS_SOLUBILITY>
1.10e-01 g/l
$$$$
@@ -0,0 +1,2 @@
O=C(N1[C@@H](CCC1)C(=O)NNC(=O)N)[C@@H](NC(=O)[C@@H](NC(=O)[C@H](NC(=O)[C@@H](NC(=O)[C@@H](NC(=O)[C@@H](NC(=O)[C@@H](NC(=O)[C@H]1NC(=O)CC1)Cc1[nH]cnc1)Cc1c2c([nH]c1)cccc2)CO)Cc1ccc(O)cc1)COC(C)(C)C)CC(C)C)CCCN=C(N)N Goserelin
NC(=O)CNC(=O)[C@@H](NC(=O)[C@@H]1CCCN1C(=O)[C@H]1NC(=O)[C@@H](NC(=O)[C@H](CCC(=O)N)NC(=O)[C@H](Cc2ccccc2)NC(=O)[C@@H](NC(=O)CCSSC1)Cc1ccc(cc1)O)CC(=O)N)CCCNC(=N)N Desmopressin
+7
View File
@@ -0,0 +1,7 @@
#FPS1
#num_bits=881
#type=CACTVS-E_SCREEN/1.0 extended=2
#software=CACTVS/unknown
#source=CID_28434379.sdf
#date=2012-02-03T13:08:39
07ce04000000000000000000000000000080060000000c060000000000001a800f0000780008100000101487e9608c0bed3248000580644626204101b4844805901b041c2e19511e45039b8b2924101609401b13e40800000000000100200000040080000010000002000000000000 28434379
+1 -1
View File
@@ -186,7 +186,7 @@ class JobHandlerQueue( object ):
jobs (either from the database or from its own queue), then iterates
over all new and waiting jobs to check the state of the jobs each
depends on. If the job has dependencies that have not finished, it
it goes to the waiting queue. If the job has dependencies with errors,
goes to the waiting queue. If the job has dependencies with errors,
it is marked as having errors and removed from the queue. If the job
belongs to an inactive user it is ignored.
Otherwise, the job is dispatched.
+1 -1
View File
@@ -322,7 +322,7 @@ class BaseJobRunner( object ):
compute_job_directory=None
):
if not compute_working_directory:
compute_working_directory = job_wrapper.working_directory
compute_working_directory = job_wrapper.tool_working_directory
if not compute_tool_directory:
compute_tool_directory = job_wrapper.tool.tool_dir
+3 -2
View File
@@ -1173,7 +1173,7 @@ class History( object, Dictifiable, UsesAnnotations, HasName ):
dataset.history = self
if genome_build not in [None, '?']:
self.genome_build = genome_build
self.datasets.append( dataset )
dataset.history_id = self.id
return dataset
def add_datasets( self, sa_session, datasets, parent_id=None, genome_build=None, set_hid=True, quota=True, flush=False ):
@@ -1208,7 +1208,8 @@ class History( object, Dictifiable, UsesAnnotations, HasName ):
dataset.history = self
if set_genome:
self.genome_build = genome_build
self.datasets.extend( datasets )
for dataset in datasets:
dataset.history_id = self.id
return datasets
def add_dataset_collection( self, history_dataset_collection, set_hid=True ):
+1 -1
View File
@@ -272,7 +272,7 @@ class MetadataType( JSONType ):
sz = total_size(v)
if sz > app.app.config.max_metadata_value_size:
del value[k]
log.error('Refusing to bind metadata key %s due to size (%s)' % (k, sz))
log.warning('Refusing to bind metadata key %s due to size (%s)' % (k, sz))
value = json_encoder.encode(value)
return value
@@ -4,7 +4,7 @@ Migration script to support subworkflows and workflow request input parameters
import datetime
import logging
from sqlalchemy import Column, Integer, ForeignKey, MetaData, Table
from sqlalchemy import Column, Integer, ForeignKey, MetaData, Table, Index, ForeignKeyConstraint
from galaxy.model.custom_types import TrimmedString, UUIDType, JSONType
@@ -15,22 +15,33 @@ metadata = MetaData()
WorkflowInvocationToSubworkflowInvocationAssociation_table = Table(
"workflow_invocation_to_subworkflow_invocation_association", metadata,
Column( "id", Integer, primary_key=True ),
Column( "workflow_invocation_id", Integer, ForeignKey( "workflow_invocation.id" ), index=True ),
Column( "subworkflow_invocation_id", Integer, ForeignKey( "workflow_invocation.id" ), index=True ),
Column( "workflow_step_id", Integer, ForeignKey("workflow_step.id") ),
Column( "workflow_invocation_id", Integer ),
Column( "subworkflow_invocation_id", Integer ),
Column( "workflow_step_id", Integer ),
ForeignKeyConstraint(['workflow_invocation_id'], ['workflow_invocation.id'], name='fk_wfi_swi_wfi'),
ForeignKeyConstraint(['subworkflow_invocation_id'], ['workflow_invocation.id'], name='fk_wfi_swi_swi'),
ForeignKeyConstraint(['workflow_step_id'], ['workflow_step.id'], name='fk_wfi_swi_ws')
)
WorkflowRequestInputStepParmeter_table = Table(
WorkflowRequestInputStepParameter_table = Table(
"workflow_request_input_step_parameter", metadata,
Column( "id", Integer, primary_key=True ),
Column( "workflow_invocation_id", Integer, ForeignKey( "workflow_invocation.id" ), index=True ),
Column( "workflow_step_id", Integer, ForeignKey("workflow_step.id") ),
Column( "workflow_invocation_id", Integer ),
Column( "workflow_step_id", Integer ),
Column( "parameter_value", JSONType ),
ForeignKeyConstraint(['workflow_invocation_id'], ['workflow_invocation.id'], name='fk_wfreq_isp_wfi'),
ForeignKeyConstraint(['workflow_step_id'], ['workflow_step.id'], name='fk_wfreq_isp_ws')
)
TABLES = [
WorkflowInvocationToSubworkflowInvocationAssociation_table,
WorkflowRequestInputStepParmeter_table,
WorkflowRequestInputStepParameter_table,
]
INDEXES = [
Index( "ix_wfinv_swfinv_wfi", WorkflowInvocationToSubworkflowInvocationAssociation_table.c.workflow_invocation_id),
Index( "ix_wfinv_swfinv_swfi", WorkflowInvocationToSubworkflowInvocationAssociation_table.c.subworkflow_invocation_id),
Index( "ix_wfreq_inputstep_wfi", WorkflowRequestInputStepParameter_table.c.workflow_invocation_id)
]
@@ -38,16 +49,17 @@ def upgrade(migrate_engine):
metadata.bind = migrate_engine
print __doc__
metadata.reflect()
subworkflow_id_column = Column( "subworkflow_id", Integer, ForeignKey("workflow.id"), nullable=True )
if migrate_engine.name in ['postgres', 'postgresql']:
subworkflow_id_column = Column( "subworkflow_id", Integer, ForeignKey("workflow.id"), nullable=True )
input_subworkflow_step_id_column = Column( "input_subworkflow_step_id", Integer, ForeignKey("workflow_step.id"), nullable=True )
parent_workflow_id_column = Column( "parent_workflow_id", Integer, ForeignKey("workflow.id"), nullable=True )
else:
subworkflow_id_column = Column( "subworkflow_id", Integer, nullable=True )
input_subworkflow_step_id_column = Column( "input_subworkflow_step_id", Integer, nullable=True )
parent_workflow_id_column = Column( "parent_workflow_id", Integer, nullable=True )
__add_column( subworkflow_id_column, "workflow_step", metadata )
input_subworkflow_step_id_column = Column( "input_subworkflow_step_id", Integer, ForeignKey("workflow_step.id"), nullable=True )
__add_column( input_subworkflow_step_id_column, "workflow_step_connection", metadata )
parent_workflow_id_column = Column( "parent_workflow_id", Integer, ForeignKey("workflow.id"), nullable=True )
__add_column( parent_workflow_id_column, "workflow", metadata )
workflow_output_label_column = Column( "label", TrimmedString(255) )
workflow_output_uuid_column = Column( "uuid", UUIDType, nullable=True )
__add_column( workflow_output_label_column, "workflow_output", metadata )
@@ -58,6 +70,7 @@ def upgrade(migrate_engine):
__alter_column("workflow", "stored_workflow_id", metadata, nullable=True)
for table in TABLES:
# Indexes are automatically created when the tables are.
__create(table)
@@ -66,15 +79,13 @@ def downgrade(migrate_engine):
metadata.reflect()
__drop_column( "subworkflow_id", "workflow_step", metadata )
__drop_column( "parent_workflow_id", "workflow_step", metadata )
__drop_column( "parent_workflow_id", "workflow", metadata )
__drop_column( "input_subworkflow_step_id", "workflow_step_connection", metadata )
__drop_column( "label", "workflow_output", metadata )
__drop_column( "uuid", "workflow_output", metadata )
__alter_column("workflow", "stored_workflow_id", metadata, nullable=False)
for table in TABLES:
__drop(table)
+20 -3
View File
@@ -407,6 +407,8 @@ class Tool( object, Dictifiable ):
"""
:returns: bool -- Whether the user is allowed to access the tool.
"""
if self.require_login and user is None:
return False
return True
def parse( self, tool_source, guid=None ):
@@ -1426,7 +1428,7 @@ class Tool( object, Dictifiable ):
return output_collect.collect_dynamic_collections( self, output, **kwds )
def to_archive(self):
tool = self.tool
tool = self
tarball_files = []
temp_files = []
tool_xml = open( os.path.abspath( tool.config_file ), 'r' ).read()
@@ -1693,7 +1695,8 @@ class Tool( object, Dictifiable ):
'state_inputs' : state_inputs,
'job_id' : trans.security.encode_id( job.id ) if job else None,
'job_remap' : self._get_job_remap( job ),
'history_id' : trans.security.encode_id( history.id )
'history_id' : trans.security.encode_id( history.id ),
'display' : self.display_interface
})
return tool_model
@@ -1753,12 +1756,26 @@ class Tool( object, Dictifiable ):
rep_prefix = '%s_%d|' % ( key, rep_index )
self.populate_state( request_context, input.inputs, incoming, rep_state, errors, prefix=rep_prefix, context=context )
else:
param_value = incoming.get( key, state.get( input.name ) )
param_value = self._get_incoming_value( incoming, key, state.get( input.name ) )
value, error = check_param( request_context, input, param_value, context )
if error:
errors[ key ] = error
state[ input.name ] = value
def _get_incoming_value( self, incoming, key, default ):
"""
Fetch value from incoming dict directly or check special nginx upload
created variants of this key.
"""
if '__' + key + '__is_composite' in incoming:
composite_keys = incoming[ '__' + key + '__keys' ].split()
value = dict()
for composite_key in composite_keys:
value[ composite_key ] = incoming[ key + '_' + composite_key ]
return value
else:
return incoming.get( key, default )
def _get_job_remap( self, job):
if job:
if job.state == job.states.ERROR:
+8
View File
@@ -439,6 +439,7 @@ class DefaultToolAction( object ):
handle_output( name, output )
log.info("Handled output named %s for tool %s %s" % (name, tool.id, handle_output_timer))
add_datasets_timer = ExecutionTimer()
# Add all the top-level (non-child) datasets to the history unless otherwise specified
datasets_to_persist = []
for name in out_data.keys():
@@ -461,6 +462,8 @@ class DefaultToolAction( object ):
child_dataset = out_data[ child_name ]
parent_dataset.children.append( child_dataset )
log.info("Added output datasets to history %s" % add_datasets_timer)
job_setup_timer = ExecutionTimer()
# Create the job object
job, galaxy_session = self._new_job_for_session( trans, tool, history )
self._record_inputs( trans, tool, job, incoming, inp_data, inp_dataset_collections, current_user_roles )
@@ -509,7 +512,12 @@ class DefaultToolAction( object ):
trans.sa_session.add(jtod)
except Exception:
log.exception('Cannot remap rerun dependencies.')
log.info("Setup for job %s complete, ready to flush %s" % (job.log_str(), job_setup_timer))
job_flush_timer = ExecutionTimer()
trans.sa_session.flush()
log.info("Flushed transaction for job %s %s" % (job.log_str(), job_flush_timer))
# Some tools are not really executable, but jobs are still created for them ( for record keeping ).
# Examples include tools that redirect to other applications ( epigraph ). These special tools must
# include something that can be retrieved from the params ( e.g., REDIRECT_URL ) to keep the job
+1 -1
View File
@@ -298,7 +298,7 @@ class DockerContainer(Container):
defaults = "$job_directory:ro,$tool_directory:ro,$job_directory/outputs:rw,$working_directory:rw"
elif self.app_info.outputs_to_working_directory:
# Should need default_file_path (which is a course estimate given
# object stores anyway.
# object stores anyway).
defaults = "$galaxy_root:ro,$tool_directory:ro,$working_directory:rw,$default_file_path:ro"
else:
defaults = "$galaxy_root:ro,$tool_directory:ro,$working_directory:rw,$default_file_path:rw"
+4 -3
View File
@@ -187,9 +187,10 @@ class ToolParameter( object, Dictifiable ):
return value
def validate( self, value, trans=None ):
if value is not '' or not self.optional:
for validator in self.validators:
validator.validate( value, trans )
if value in ["", None] and self.optional:
return
for validator in self.validators:
validator.validate( value, trans )
def to_dict( self, trans, view='collection', value_mapper=None, other_values={} ):
""" to_dict tool parameter. This can be overridden by subclasses. """
+2 -1
View File
@@ -347,10 +347,11 @@ class TestCollectionDef( object ):
class TestCollectionOutputDef( object ):
# TODO: do not require XML directly here.
def __init__( self, name, attrib, element_tests ):
self.name = name
self.collection_type = attrib.get( "type", None )
count = attrib.get("count", None)
self.count = int(count) if count is not None else None
self.attrib = attrib
self.element_tests = element_tests
+4 -4
View File
@@ -3,6 +3,7 @@ Provides a `TraceLogger` implementation that logs to a fluentd collector
"""
import threading
import time
try:
from fluent.sender import FluentSender
@@ -34,11 +35,10 @@ class FluentTraceLogger( object ):
del self.thread_local.context[key]
self.lock.release()
def log( self, label, time=None, **kwargs ):
def log( self, label, event_time=None, **kwargs ):
self.lock.acquire()
if hasattr( self.thread_local, 'context' ):
kwargs.update( self.thread_local.context )
self.lock.release()
if time is None:
time = int( time.time() )
self.sender.emit_with_time( label, time, kwargs )
event_time = event_time or time.time()
self.sender.emit_with_time( label, int(event_time), kwargs )
@@ -889,6 +889,9 @@ class BamDataProvider( GenomeDataProvider, FilterableMixin ):
"""
# Fetch and return data.
chrom = str(chrom)
start = int(start)
end = int(end)
try:
data = data_file.fetch( start=start, end=end, reference=chrom )
except ValueError:
@@ -404,8 +404,8 @@ class LibraryDatasetsController( BaseAPIController, UsesVisualizationMixin ):
"""
if payload:
kwd.update(payload)
kwd[ 'space_to_tab' ] = 'False'
kwd[ 'to_posix_lines' ] = 'True'
kwd['space_to_tab'] = False
kwd['to_posix_lines'] = True
kwd[ 'dbkey' ] = kwd.get( 'dbkey', '?' )
kwd[ 'file_type' ] = kwd.get( 'file_type', 'auto' )
kwd['link_data_only'] = 'link_to_files' if util.string_as_bool( kwd.get( 'link_data', False ) ) else 'copy_files'
+1 -1
View File
@@ -87,7 +87,7 @@ class MetricsController( BaseAPIController ):
"""
if trans.app.trace_logger:
for label, time, kwargs in metrics:
trans.app.trace_logger.log( label, time=int( time ), **kwargs )
trans.app.trace_logger.log( label, event_time=int( time ), **kwargs )
elif self.debugging:
for label, time, kwargs in metrics:
log.debug( '%s %s %s', label, time, kwargs )
@@ -96,10 +96,11 @@ class RemoteFilesAPIController( BaseAPIController ):
if user_ftp_dir is not None:
response = self.__load_all_filenames( user_ftp_dir )
else:
raise exceptions.ConfigDoesNotAllowException( 'You do not have an FTP directory named as your login at this Galaxy instance.' )
log.warning( 'You do not have an FTP directory named as your login at this Galaxy instance.' )
return None
except Exception, exception:
log.error( 'Could not get ftp files: %s', str( exception ), exc_info=True )
raise exceptions.InternalServerError( 'Could not get the files from your FTP folder.' )
log.warning( 'Could not get ftp files: %s', str( exception ), exc_info=True )
return None
return response
def __load_all_filenames( self, directory ):
@@ -117,7 +118,8 @@ class RemoteFilesAPIController( BaseAPIController ):
size=statinfo.st_size,
ctime=time.strftime( "%m/%d/%Y %I:%M:%S %p", time.localtime( statinfo.st_ctime ) ) ) )
else:
raise exceptions.ConfigDoesNotAllowException( 'The given directory does not exist.' )
log.warning( "The directory \"%s\" does not exist." % directory )
return response
# sort by path
response = sorted(response, key=itemgetter("path"))
return response
+15 -5
View File
@@ -53,9 +53,12 @@ class ToolsController( BaseAPIController, UsesVisualizationMixin ):
results = []
if hits:
for hit in hits:
tool = self._get_tool( hit )
if tool:
results.append( tool.id )
try:
tool = self._get_tool( hit, user=trans.user )
if tool:
results.append( tool.id )
except exceptions.AuthenticationFailed:
pass
return results
# Find whether to detect.
@@ -218,6 +221,11 @@ class ToolsController( BaseAPIController, UsesVisualizationMixin ):
tool = trans.app.toolbox.get_tool( payload[ 'tool_id' ] , tool_version ) if 'tool_id' in payload else None
if not tool or not tool.allow_user_access( trans.user ):
raise exceptions.MessageException( 'Tool not found or not accessible.' )
if trans.app.config.user_activation_on:
if not trans.user:
log.warning( "Anonymous user attempts to execute tool, but account activation is turned on." )
elif not trans.user.active:
log.warning( "User \"%s\" attempts to execute tool, but account activation is turned on and user account is not active." % trans.user.email )
# Set running history from payload parameters.
# History not set correctly as part of this API call for
@@ -295,8 +303,10 @@ class ToolsController( BaseAPIController, UsesVisualizationMixin ):
def _get_tool( self, id, tool_version=None, user=None ):
id = urllib.unquote_plus( id )
tool = self.app.toolbox.get_tool( id, tool_version )
if not tool or not tool.allow_user_access( user ):
raise exceptions.ObjectNotFound("Could not find tool with id '%s'" % id)
if not tool:
raise exceptions.ObjectNotFound( "Could not find tool with id '%s'." % id )
if not tool.allow_user_access( user ):
raise exceptions.AuthenticationFailed( "Access denied, please login for tool with id '%s'." % id )
return tool
def _rerun_tool( self, trans, payload, **kwargs ):
@@ -38,18 +38,23 @@ class HistoryListGrid( grids.Grid ):
# Custom column types
class DatasetsByStateColumn( grids.GridColumn ):
def get_value( self, trans, grid, history ):
state_counts = {
'ok' : 0,
'running' : 0,
'queued' : 0,
'error' : 0,
}
for hda in history.datasets:
if hda.visible and not hda.deleted and hda.state in state_counts.keys():
state_counts[ hda.state ] += 1
# States to show in column.
states_to_show = ( 'ok', 'running', 'queued', 'new', 'error' )
# Get dataset counts for each state in a state-count dictionary.
state_counts = dict( ( state, count ) for state, count in
trans.sa_session.query( model.Dataset.state, func.count(model.Dataset.state) )
.join( model.HistoryDatasetAssociation )
.group_by( model.Dataset.state )
.filter( model.HistoryDatasetAssociation.history_id == history.id,
model.HistoryDatasetAssociation.visible == true(),
model.HistoryDatasetAssociation.deleted == false(),
model.Dataset.state.in_(states_to_show) )
)
# Create HTML.
rval = ''
for state in state_counts.keys():
for state in states_to_show:
count = state_counts.get( state )
if count:
rval += '<div class="count-box state-color-%s">%s</div> ' % (state, count)
@@ -88,7 +88,7 @@ class RepositoriesController( BaseAPIController ):
return response_dict
@web.expose_api_anonymous
def get_ordered_installable_revisions( self, trans, **kwd ):
def get_ordered_installable_revisions( self, trans, name=None, owner=None, **kwd ):
"""
GET /api/repositories/get_ordered_installable_revisions
@@ -99,17 +99,22 @@ class RepositoriesController( BaseAPIController ):
As in the changelog, the list is ordered oldest to newest.
"""
# Example URL: http://localhost:9009/api/repositories/get_ordered_installable_revisions?name=add_column&owner=test
name = kwd.get( 'name', None )
owner = kwd.get( 'owner', None )
if name is None:
name = kwd.get( 'name', None )
if owner is None:
owner = kwd.get( 'owner', None )
tsr_id = kwd.get( 'tsr_id', None )
if None not in [ name, owner ]:
# Get the repository information.
repository = suc.get_repository_by_name_and_owner( self.app, name, owner )
if repository is None:
trans.response.status = 404
return { 'status': 'error', 'message': 'No repository named %s found with owner %s' % ( name, owner ) }
elif tsr_id is not None:
repository = suc.get_repository_in_tool_shed( self.app, tsr_id )
else:
error_message = "Error in the Tool Shed repositories API in get_ordered_installable_revisions: "
error_message += "invalid parameters received." % ( str( name ), str( owner ) )
error_message += "invalid parameters received."
log.debug( error_message )
return []
return repository.ordered_installable_revisions( self.app )
@@ -259,7 +259,7 @@ class Repository( object, Dictifiable ):
return tip_ctx.rev() < 0
def ordered_installable_revisions( self, app ):
return suc.get_ordered_metadata_changeset_revisions( self, hg.repository( ui.ui(), self.repo_path( app ) ), downloadable=True )
return [ revision[ 1 ] for revision in suc.get_metadata_revisions( self, hg.repository( ui.ui(), self.repo_path( app ) ), downloadable=True ) ]
def repo_path( self, app ):
return app.hgweb_config_manager.get_entry( os.path.join( "repos", self.user.username, self.name ) )
+4 -2
View File
@@ -153,6 +153,7 @@ class WorkflowInvoker( object ):
remaining_steps = self.progress.remaining_steps()
delayed_steps = False
for step in remaining_steps:
step_delayed = False
step_timer = ExecutionTimer()
jobs = None
try:
@@ -167,7 +168,7 @@ class WorkflowInvoker( object ):
workflow_invocation_step.workflow_step = step
workflow_invocation_step.job = job
except modules.DelayedWorkflowEvaluation:
delayed_steps = True
step_delayed = delayed_steps = True
self.progress.mark_step_outputs_delayed( step )
except Exception:
log.exception(
@@ -177,7 +178,8 @@ class WorkflowInvoker( object ):
)
raise
log.debug("Workflow step %s of invocation %s invoked %s" % (step.id, workflow_invocation.id, step_timer))
step_verb = "invoked" if not step_delayed else "delayed"
log.debug("Workflow step %s of invocation %s %s %s" % (step.id, workflow_invocation.id, step_verb, step_timer))
if delayed_steps:
state = model.WorkflowInvocation.states.READY
+1 -1
View File
@@ -49,7 +49,7 @@ class Registry( object ):
url_sans_protocol = common_util.remove_protocol_from_tool_shed_url( url )
for shed_name, shed_url in self.tool_sheds.items():
shed_url_sans_protocol = common_util.remove_protocol_from_tool_shed_url( shed_url )
if shed_url_sans_protocol.find( url_sans_protocol ) >= 0:
if url_sans_protocol.startswith( shed_url_sans_protocol ):
return self.tool_sheds_auth[ shed_name ]
log.debug( "Invalid url '%s' received by tool shed registry's password_manager_for_url method." % str( url ) )
return None
+1 -1
View File
@@ -34,7 +34,7 @@ do
shift
;;
--daemon|--restart|restart)
if [ $1 == "--restart" ]
if [ "$1"=="--restart" ]
then
paster_args="$paster_args restart"
else
+7
View File
@@ -13,6 +13,13 @@ cd `dirname $0`
./scripts/common_startup.sh --skip-samples
: ${GALAXY_VIRTUAL_ENV:=.venv}
if [ -d "$GALAXY_VIRTUAL_ENV" ];
then
. "$GALAXY_VIRTUAL_ENV/bin/activate"
fi
if [ -z "$GALAXY_REPORTS_CONFIG" ]; then
if [ -f reports_wsgi.ini ]; then
GALAXY_REPORTS_CONFIG=reports_wsgi.ini
+8
View File
@@ -4,6 +4,14 @@ cd `dirname $0`
./scripts/common_startup.sh
: ${GALAXY_VIRTUAL_ENV:=.venv}
if [ -d "$GALAXY_VIRTUAL_ENV" ];
then
. "$GALAXY_VIRTUAL_ENV/bin/activate"
fi
tool_shed=`./lib/tool_shed/scripts/bootstrap_tool_shed/parse_run_sh_args.sh $@`
args=$@
+302 -84
View File
@@ -2,6 +2,7 @@
# Little script to make HISTORY.rst more easy to format properly, lots TODO
# pull message down and embed, use arg parse, handle multiple, etc...
import ast
import calendar
import datetime
import os
@@ -22,17 +23,14 @@ except ImportError:
PROJECT_DIRECTORY = os.path.join(os.path.dirname(__file__), os.pardir)
SOURCE_DIR = os.path.join(PROJECT_DIRECTORY, "lib")
GALAXY_SOURCE_DIR = os.path.join(SOURCE_DIR, "galaxy")
GALAXY_VERSION_FILE = os.path.join(GALAXY_SOURCE_DIR, "version.py")
PROJECT_OWNER = "galaxyproject"
PROJECT_NAME = "galaxy"
PROJECT_URL = "https://github.com/%s/%s" % (PROJECT_OWNER, PROJECT_NAME)
PROJECT_API = "https://api.github.com/repos/%s/%s/" % (PROJECT_OWNER, PROJECT_NAME)
RELEASES = [
("15.05", "b16ac25cdc0f2b64d6af34ea1e6ff253d8a71ee4"),
("15.07", "e44c8db9dea56b8d1a2f941ce572b0f14e999d4c"),
("15.10", "ef55279d58eced4b90632a572a8fc5a227ceefb9"),
("16.01", "cc23adb0a962f1c9780b838604718319a0a71888"),
]
RELEASES_PATH = os.path.join(PROJECT_DIRECTORY, "doc", "source", "releases")
# Uncredit pull requestors... kind of arbitrary at this point.
DEVTEAM = [
@@ -151,6 +149,79 @@ Schedule
* Planned Release Date: ${release_date}
""")
RELEASE_ISSUE_TEMPLATE = string.Template("""
- [X] **Prep**
- [X] ~~Create this release issue ``make release-issue RELEASE_CURR=${version}``.~~
- [X] ~~Set freeze date (${freeze_date}).~~
- [ ] **Branch Release (on or around ${freeze_date})**
- [ ] Ensure all [blocking milestone PRs](https://github.com/galaxyproject/galaxy/pulls?q=is%3Aopen+is%3Apr+milestone%3A${version}) have been merged, delayed, or closed.
make release-check-blocking-prs RELEASE_CURR=${version}
- [ ] Merge the latest release into dev.
git fetch upstream && git checkout dev && git merge --ff-only upstream dev && git merge upstream release_${previous_version}
- [ ] Create and push release branch:
make release-create-rc RELEASE_CURR=${version} RELEASE_NEXT=${next_version}
- [ ] **Deploy and Test Release**
- [ ] Deploy to test (${freeze_date} + 1 day).
- [ ] Deploy to usegalaxy.org (${freeze_date} + 1 week).
- [ ] **Create Release Notes**
- [ ] Review merged PRs and ensure they all milestones attached. [Link](https://github.com/galaxyproject/galaxy/pulls?q=is%3Apr+is%3Amerged+no%3Amilestone)
- [ ] Checkout release branch
git checkout $version -b ${version}_release_notes
- [ ] Check for obvious missing metadata in release PRs
make release-check-metadata RELEASE_CURR=${version}
- [ ] Bootstrap the release notes
make release-bootstrap-history RELEASE_CURR=${version}
- [ ] Open newly created files and manually curate major topics and release notes.
- [ ] Commit release notes.
git add docs/; git commit -m "Release notes for $version"; git push upstream ${version}_release_notes
- [ ] Open a pull request for new release note branch.
- [ ] Merge release note pull request.
- [ ] **Do Release**
- [ ] Ensure all [blocking milestone issues](https://github.com/galaxyproject/galaxy/issues?q=is%3Aopen+is%3Aissue+milestone%3A${version}) have been resolved.
make release-check-blocking-issues RELEASE_CURR=${version}
- [ ] Ensure all [blocking milestone PRs](https://github.com/galaxyproject/galaxy/pulls?q=is%3Aopen+is%3Apr+milestone%3A${version}) have been merged or closed.
make release-check-blocking-prs RELEASE_CURR=${version}
- [ ] Do release (TODO: create a check a list for this...)
- [ ] **Announce Release**
- [ ] Stage annoucement content (Wiki, Biostars, Bit.ly link) on annouce date to capture date tags. Note: all final content does not need to be completed to do this.
- [ ] Finalize https://github.com/galaxyproject/galaxy/blob/dev/doc/source/releases/${version}_announce.rst
- [ ] Post release notes to https://docs.galaxyproject.org/en/master/releases/index.html
- [ ] Create wiki *highlights* and post to http://galaxyproject.org News (w/ RSS) and NewsBriefs
- [ ] Tweet wiki news *highlights* (or RTD?) via bit.ly link to https://twitter.com/galaxyproject/
- [ ] Post *highlights* type News to Galaxy Biostars https://biostar.usegalaxy.org
- [ ] Email *highlights* to galaxy-dev and galaxy-announce @lists.galaxyproject.org
- [ ] Adjust http://getgalaxy.org text and links to match current master branch
- [ ] **Prepare for next release**
- [ ] Ensure milestone ``${next_version}`` exists.
- [ ] Create release issue for next version ``make release-issue RELEASE_CURR=${next_version}``.
- [ ] Close this issue.
""")
# https://api.github.com/repos/galaxyproject/galaxy/pulls?base=dev&state=closed
# https://api.github.com/repos/galaxyproject/galaxy/pulls?base=release_15.07&state=closed
# https://api.github.com/repos/galaxyproject/galaxy/compare/release_15.05...dev
@@ -162,6 +233,31 @@ def commit_time(commit_hash):
return datetime.datetime.strptime(req["commit"]["committer"]["date"], "%Y-%m-%dT%H:%M:%SZ")
def release_issue(argv):
release_name = argv[2]
previous_release = _previous_release(release_name)
new_version_params = _next_version_params(release_name)
next_version = new_version_params["version"]
freeze_date, release_date = _release_dates(release_name)
release_issue_template_params = dict(
version=release_name,
next_version=next_version,
previous_version=previous_release,
freeze_date=freeze_date,
)
release_issue_contents = RELEASE_ISSUE_TEMPLATE.safe_substitute(**release_issue_template_params)
github = _github_client()
github.issues.create(
data=dict(
title="Publication of Galaxy Release v %s" % release_name,
body=release_issue_contents,
),
user=PROJECT_OWNER,
repo=PROJECT_NAME,
)
return release_issue
def do_release(argv):
release_name = argv[2]
release_file = _release_file(release_name + ".rst")
@@ -179,6 +275,72 @@ def do_release(argv):
announce_file = _release_file(release_name + "_announce.rst")
open(announce_file, "w").write(announce_info.encode("utf-8"))
next_version_params = _next_version_params(release_name)
next_version = next_version_params["version"]
next_release_file = _release_file(next_version + "_announce.rst")
next_announce = NEXT_TEMPLATE.substitute(**next_version_params)
open(next_release_file, "w").write(next_announce.encode("utf-8"))
releases_index = _release_file("index.rst")
releases_index_contents = open(releases_index, "r").read()
releases_index_contents = releases_index_contents.replace(".. annoucements\n", ".. annoucements\n" + next_version + "_announce\n" )
with open(releases_index, "w") as f:
f.write(releases_index_contents)
for pr in _get_prs(release_name):
# 2015-06-29 18:32:13 2015-04-22 19:11:53 2015-08-12 21:15:45
as_dict = {
"title": pr.title,
"number": pr.number,
"head": pr.head,
}
main([argv[0], "--release_file", "%s.rst" % release_name, "--request", as_dict, "pr" + str(pr.number)])
def check_release(argv):
github = _github_client()
release_name = argv[2]
for pr in _get_prs(release_name):
_text_target(github, pr)
def check_blocking_prs(argv):
release_name = argv[2]
block = 0
for pr in _get_prs(release_name, state="open"):
print "WARN: Blocking PR| %s" % _pr_to_str(pr)
block = 1
sys.exit(block)
def check_blocking_issues(argv):
release_name = argv[2]
block = 0
github = _github_client()
issues = github.issues.list(
state="open",
)
for page in issues:
for issue in page:
if issue.milestone and issue.milestone.title == release_name and "Publication of Galaxy Release" not in issue.title:
print "WARN: Blocking issue| %s" % _issue_to_str(issue)
block = 1
sys.exit(block)
def _pr_to_str(pr):
return "PR #%s (%s) %s" % (pr.number, pr.title, pr.html_url)
def _issue_to_str(pr):
return "Issue #%s (%s) %s" % (pr.number, pr.title, pr.html_url)
def _next_version_params(release_name):
month = int(release_name.split(".")[1])
year = release_name.split(".")[0]
next_month = (((month - 1) + 3) % 12) + 1
next_month_name = calendar.month_name[next_month]
if next_month < 3:
@@ -186,43 +348,39 @@ def do_release(argv):
else:
next_year = year
next_version = "%s.%02d" % (next_year, next_month)
first_of_next_month = datetime.date(int(next_year) + 2000, next_month, 1)
freeze_date = next_weekday(first_of_next_month, 0)
release_date = next_weekday(first_of_next_month, 0) + datetime.timedelta(21)
next_release_file = _release_file(next_version + "_announce.rst")
next_announce = NEXT_TEMPLATE.substitute(
freeze_date, release_date = _release_dates(next_version)
return dict(
version=next_version,
year=next_year,
month_name=next_month_name,
freeze_date=freeze_date,
release_date=release_date,
)
open(next_release_file, "w").write(next_announce.encode("utf-8"))
for page in _get_prs():
for pr in page:
merged_at = pr.merged_at
milestone = pr.milestone
if not merged_at or not milestone or milestone['title'] != release_name:
continue
# 2015-06-29 18:32:13 2015-04-22 19:11:53 2015-08-12 21:15:45
as_dict = {
"title": pr.title,
"number": pr.number,
"head": pr.head,
}
main([argv[0], "--release_file", "%s.rst" % release_name, "--request", as_dict, "pr" + str(pr.number)])
def _get_prs():
def _release_dates(version):
year, month = version.split(".")
first_of_month = datetime.date(int(year) + 2000, int(month), 1)
freeze_date = next_weekday(first_of_month, 0)
release_date = next_weekday(first_of_month, 0) + datetime.timedelta(21)
return freeze_date, release_date
def _get_prs(release_name, state="closed"):
github = _github_client()
pull_requests = github.pull_requests.list(
state='closed',
state=state,
user=PROJECT_OWNER,
repo=PROJECT_NAME,
)
return pull_requests
for page in pull_requests:
for pr in page:
merged_at = pr.merged_at
milestone = pr.milestone
proper_state = state != "closed" or merged_at
if not proper_state or not milestone or milestone['title'] != release_name:
continue
yield pr
def main(argv):
@@ -231,10 +389,26 @@ def main(argv):
github = _github_client()
newest_release = None
if argv[1] == "--check-blocking-prs":
check_blocking_prs(argv)
return
if argv[1] == "--check-blocking-issues":
check_blocking_issues(argv)
return
if argv[1] == "--create-release-issue":
release_issue(argv)
return
if argv[1] == "--release":
do_release(argv)
return
if argv[1] == "--check-release":
check_release(argv)
return
if argv[1] == "--release_file":
newest_release = argv[2]
argv = [argv[0]] + argv[3:]
@@ -245,15 +419,14 @@ def main(argv):
else:
req = None
releases_path = os.path.join(PROJECT_DIRECTORY, "doc", "source", "releases")
if newest_release is None:
newest_release = sorted(os.listdir(releases_path))[-1]
history_path = os.path.join(releases_path, newest_release)
newest_release = sorted(os.listdir(RELEASES_PATH))[-1]
history_path = os.path.join(RELEASES_PATH, newest_release)
history = open(history_path, "r").read().decode("utf-8")
def extend(from_str, line):
def extend(from_str, line, source=history):
from_str += "\n"
return history.replace(from_str, from_str + line + "\n" )
return source.replace(from_str, from_str + line + "\n" )
ident = argv[1]
@@ -295,58 +468,12 @@ def main(argv):
text = ".. _Pull Request {0}: {1}/pull/{0}".format(pull_request, PROJECT_URL)
history = extend(".. github_links", text)
if owner:
to_doc += "\n(Thanks to `@%s <https://github.com/%s>`__.)" % (
to_doc += "\n(thanks to `@%s <https://github.com/%s>`__.)" % (
owner, owner,
)
to_doc += "\n`Pull Request {0}`_".format(pull_request)
if github:
labels = []
try:
labels = github.issues.labels.list_by_issue(int(pull_request), user=PROJECT_OWNER, repo=PROJECT_NAME)
except Exception:
pass
is_bug = is_enhancement = is_feature = is_minor = is_major = is_merge = is_small_enhancement = False
for label in labels:
label_name = label.name.lower()
if label_name == "minor":
is_minor = True
elif label_name == "major":
is_major = True
elif label_name == "merge":
is_merge = True
elif label_name == "kind/bug":
is_bug = True
elif label_name == "kind/feature":
is_feature = True
elif label_name == "kind/enhancement":
is_enhancement = True
elif label_name in ["kind/testing", "kind/refactoring"]:
is_small_enhancement = True
is_some_kind_of_enhancement = is_enhancement or is_feature or is_small_enhancement
if not( is_bug or is_some_kind_of_enhancement or is_minor or is_merge ):
print "No kind/ or minor or merge label found for %s" % pull_request
text_target = None
if is_minor or is_merge:
return
if is_some_kind_of_enhancement and is_major:
text_target = "major_feature"
elif is_feature:
text_target = "feature"
elif is_enhancement:
text_target = "enhancement"
elif is_some_kind_of_enhancement:
text_target = "small_enhancement"
elif is_major:
text_target = "major_bug"
elif is_bug:
text_target = "bug"
else:
print "Logic problem, cannot determine section for %s" % pull_request
text_target = None
_text_target(github, pull_request)
elif ident.startswith("issue"):
issue = ident[len("issue"):]
text = ".. _Issue {0}: {1}/issues/{0}".format(issue, PROJECT_URL)
@@ -363,6 +490,97 @@ def main(argv):
open(history_path, "w").write(history.encode("utf-8"))
def _text_target(github, pull_request):
labels = []
try:
labels = github.issues.labels.list_by_issue(int(pull_request.number), user=PROJECT_OWNER, repo=PROJECT_NAME)
except Exception as e:
print e
is_bug = is_enhancement = is_feature = is_minor = is_major = is_merge = is_small_enhancement = False
for label in labels:
label_name = label.name.lower()
if label_name == "minor":
is_minor = True
elif label_name == "major":
is_major = True
elif label_name == "merge":
is_merge = True
elif label_name == "kind/bug":
is_bug = True
elif label_name == "kind/feature":
is_feature = True
elif label_name == "kind/enhancement":
is_enhancement = True
elif label_name in ["kind/testing", "kind/refactoring"]:
is_small_enhancement = True
is_some_kind_of_enhancement = is_enhancement or is_feature or is_small_enhancement
if not( is_bug or is_some_kind_of_enhancement or is_minor or is_merge ):
print "No kind/ or minor or merge label found for %s" % _pr_to_str(pull_request)
text_target = None
if is_minor or is_merge:
return
if is_some_kind_of_enhancement and is_major:
text_target = "major_feature"
elif is_feature:
text_target = "feature"
elif is_enhancement:
text_target = "enhancement"
elif is_some_kind_of_enhancement:
text_target = "small_enhancement"
elif is_major:
text_target = "major_bug"
elif is_bug:
text_target = "bug"
else:
print "Logic problem, cannot determine section for %s" % pull_request
text_target = None
return text_target
def _previous_release(to):
previous_release = None
for release in _releases():
if release == to:
break
previous_release = release
return previous_release
def _latest_release():
return _releases()[-1]
def _releases():
all_files = sorted(os.listdir(RELEASES_PATH))
release_note_file_pattern = re.compile(r"\d+\.\d+.rst")
release_note_files = filter(lambda f: release_note_file_pattern.match(f), all_files)
return sorted(map(lambda f: f.rstrip('.rst'), release_note_files))
def _get_major_version():
with open(GALAXY_VERSION_FILE, 'rb') as f:
init_contents = f.read().decode('utf-8')
def get_var(var_name):
pattern = re.compile(r'%s\s+=\s+(.*)' % var_name)
match = pattern.search(init_contents).group(1)
return str(ast.literal_eval(match))
return get_var("VERSION_MAJOR")
def _get_release_name(argv):
if len(argv) > 2:
return argv[2]
else:
return _get_major_version()
def _github_client():
if Github:
github_json = os.path.expanduser("~/.github.json")
File diff suppressed because one or more lines are too long
+1 -1
View File
@@ -1 +1 @@
{"version":3,"file":"page.js","sources":["../../src/layout/page.js"],"names":["define","Masthead","Panel","Modal","BaseMVC","PageLayoutView","Backbone","View","extend","LoggableMixin","_logNamespace","el","className","_panelIds","defaultOptions","message_box_visible","message_box_content","message_box_class","show_inactivity_warning","inactivity_box_content","initialize","options","this","log","_","pick","defaults","omit","Galaxy","modal","masthead","config","$el","attr","append","_template","$messagebox","$","$inactivebox","render","remove","renderMessageBox","renderInactivityBox","renderPanels","content","level","addClass","html","toggle","show","removeClass","hide","verificationLink","root","page","forEach","panelId","has","setElement","center","css","join","toString"],"mappings":"AAAAA,QACI,kBACA,eACA,kBACA,gBACD,SAAUC,EAAUC,EAAOC,EAAOC,GAGrC,GAAIC,GAAiBC,SAASC,KAAKC,OAAQJ,EAAQK,eAAgBD,QAC/DE,cAAgB,SAEhBC,GAAK,OACLC,UAAY,eAEZC,WACI,OAAQ,SAAU,SAGtBC,gBACIC,qBAA0B,EAC1BC,oBAA0B,GAC1BC,kBAA0B,OAC1BC,yBAA0B,EAC1BC,uBAA0B,IAG9BC,WAAa,SAAUC,GAEnBC,KAAKC,IAAKD,KAAO,eAAgBD,GACjCG,EAAEhB,OAAQc,KAAME,EAAEC,KAAMJ,EAASC,KAAKT,YACtCS,KAAKD,QAAUG,EAAEE,SAAUF,EAAEG,KAAMN,EAASC,KAAKT,WAAaS,KAAKR,gBACnEc,OAAOC,MAAQP,KAAKO,MAAQ,GAAI1B,GAAMI,KACtCe,KAAKQ,SAAW,GAAI7B,GAASM,KAAMe,KAAKD,QAAQU,QAChDT,KAAKU,IAAIC,KAAM,SAAU,MACzBX,KAAKU,IAAIE,OAAQZ,KAAKa,aACtBb,KAAKU,IAAIE,OAAQZ,KAAKQ,SAASE,KAC/BV,KAAKU,IAAIE,OAAQZ,KAAKO,MAAMG,KAC5BV,KAAKc,YAAcd,KAAKe,EAAG,eAC3Bf,KAAKgB,aAAehB,KAAKe,EAAG,iBAGhCE,OAAS,WAQL,MANAF,GAAG,8BAA+BG,SAClClB,KAAKC,IAAKD,KAAO,YACjBA,KAAKQ,SAASS,SACdjB,KAAKmB,mBACLnB,KAAKoB,sBACLpB,KAAKqB,eACErB,MAIXmB,iBAAmB,WACf,GAAKnB,KAAKD,QAAQN,oBAAqB,CACnC,GAAI6B,GAAUtB,KAAKD,QAAQL,qBAAuB,GAC9C6B,EAAQvB,KAAKD,QAAQJ,mBAAqB,MAC9CK,MAAKU,IAAIc,SAAU,mBACnBxB,KAAKc,YACAH,KAAM,QAAS,SAAWY,EAAQ,YAClCE,KAAMH,GACNI,SAAUJ,GACVK,WAEL3B,MAAKU,IAAIkB,YAAa,mBACtB5B,KAAKc,YAAYe,MAErB,OAAO7B,OAIXoB,oBAAsB,WAClB,GAAIpB,KAAKD,QAAQH,wBAAyB,CACtC,GAAI0B,GAAUtB,KAAKD,QAAQF,wBAA0B,GACjDiC,EAAmBf,EAAG,QAASJ,KAAM,OAAQL,OAAOyB,KAAO,4BAA6BN,KAAM,uBAClGzB,MAAKU,IAAIc,SAAU,sBACnBxB,KAAKgB,aACAS,KAAMH,GACNV,OAAQ,IAAMkB,GACdJ,SAAUJ,GACVK,WAEL3B,MAAKU,IAAIkB,YAAa,sBACtB5B,KAAKgB,aAAaa,MAEtB,OAAO7B,OAIXqB,aAAe,WACX,GAAIW,GAAOhC,IASX,OARAA,MAAKT,UAAU0C,QAAS,SAAUC,GAC1BhC,EAAEiC,IAAKH,EAAME,IACbF,EAAME,GAAUE,WAAY,IAAMF,GAClCF,EAAME,GAAUjB,UACI,WAAZiB,GACRF,EAAKK,OAAO3B,IAAI4B,IAAKJ,EAAS,KAG/BlC,MAIXa,UAAW,WACP,OACI,wBACI,yBACA,yBACA,wDACA,mBACA,qCACA,oBACJ,SACA,wBACA,aACI,4DACI,QACI,wDACA,QACI,gFACA,iDACJ,SACJ,SACJ,SACJ,eACF0B,KAAK,KAGXC,SAAW,WAAa,MAAO,mBAI/B,QACIzD,eAAgBA"}
{"version":3,"file":"page.js","sources":["../../src/layout/page.js"],"names":["define","Masthead","Panel","Modal","BaseMVC","PageLayoutView","Backbone","View","extend","LoggableMixin","_logNamespace","el","className","_panelIds","defaultOptions","message_box_visible","message_box_content","message_box_class","show_inactivity_warning","inactivity_box_content","initialize","options","this","log","_","pick","defaults","omit","Galaxy","modal","masthead","config","$el","attr","html","_template","append","$messagebox","$","$inactivebox","render","remove","renderMessageBox","renderInactivityBox","renderPanels","content","level","addClass","toggle","show","removeClass","hide","verificationLink","root","text","page","forEach","panelId","has","setElement","left","center","css","right","join","hideSidePanels","toString"],"mappings":"AAAAA,QACI,kBACA,eACA,kBACA,gBACD,SAAUC,EAAUC,EAAOC,EAAOC,GAGrC,GAAIC,GAAiBC,SAASC,KAAKC,OAAQJ,EAAQK,eAAgBD,QAC/DE,cAAgB,SAEhBC,GAAK,OACLC,UAAY,eAEZC,WACI,OAAQ,SAAU,SAGtBC,gBACIC,qBAA0B,EAC1BC,oBAA0B,GAC1BC,kBAA0B,OAC1BC,yBAA0B,EAC1BC,uBAA0B,IAG9BC,WAAa,SAAUC,GAEnBC,KAAKC,IAAKD,KAAO,eAAgBD,GACjCG,EAAEhB,OAAQc,KAAME,EAAEC,KAAMJ,EAASC,KAAKT,YACtCS,KAAKD,QAAUG,EAAEE,SAAUF,EAAEG,KAAMN,EAASC,KAAKT,WAAaS,KAAKR,gBACnEc,OAAOC,MAAQP,KAAKO,MAAQ,GAAI1B,GAAMI,KACtCe,KAAKQ,SAAW,GAAI7B,GAASM,KAAMe,KAAKD,QAAQU,QAChDT,KAAKU,IAAIC,KAAM,SAAU,MACzBX,KAAKU,IAAIE,KAAMZ,KAAKa,aACpBb,KAAKU,IAAII,OAAQd,KAAKQ,SAASE,KAC/BV,KAAKU,IAAII,OAAQd,KAAKO,MAAMG,KAC5BV,KAAKe,YAAcf,KAAKgB,EAAG,eAC3BhB,KAAKiB,aAAejB,KAAKgB,EAAG,iBAGhCE,OAAS,WAQL,MANAF,GAAG,8BAA+BG,SAClCnB,KAAKC,IAAKD,KAAO,YACjBA,KAAKQ,SAASU,SACdlB,KAAKoB,mBACLpB,KAAKqB,sBACLrB,KAAKsB,eACEtB,MAIXoB,iBAAmB,WACf,GAAKpB,KAAKD,QAAQN,oBAAqB,CACnC,GAAI8B,GAAUvB,KAAKD,QAAQL,qBAAuB,GAC9C8B,EAAQxB,KAAKD,QAAQJ,mBAAqB,MAC9CK,MAAKU,IAAIe,SAAU,mBACnBzB,KAAKe,YACAJ,KAAM,QAAS,SAAWa,EAAQ,YAClCZ,KAAMW,GACNG,SAAUH,GACVI,WAEL3B,MAAKU,IAAIkB,YAAa,mBACtB5B,KAAKe,YAAYc,MAErB,OAAO7B,OAIXqB,oBAAsB,WAClB,GAAIrB,KAAKD,QAAQH,wBAAyB,CACtC,GAAI2B,GAAUvB,KAAKD,QAAQF,wBAA0B,GACjDiC,EAAmBd,EAAG,QAASL,KAAM,OAAQL,OAAOyB,KAAO,4BAA6BC,KAAM,sBAClGhC,MAAKU,IAAIe,SAAU,sBACnBzB,KAAKiB,aACAL,KAAMW,EAAU,KAChBT,OAAQgB,GACRJ,SAAUH,GACVI,WAEL3B,MAAKU,IAAIkB,YAAa,sBACtB5B,KAAKiB,aAAaY,MAEtB,OAAO7B,OAIXsB,aAAe,WACX,GAAIW,GAAOjC,IAaX,OAZAA,MAAKT,UAAU2C,QAAS,SAAUC,GAC1BjC,EAAEkC,IAAKH,EAAME,KACbF,EAAME,GAAUE,WAAY,IAAMF,GAClCF,EAAME,GAAUjB,YAGnBlB,KAAKsC,MACNtC,KAAKuC,OAAO7B,IAAI8B,IAAK,OAAQ,GAE5BxC,KAAKyC,OACNzC,KAAKuC,OAAO7B,IAAI8B,IAAK,QAAS,GAE3BxC,MAIXa,UAAW,WACP,OACI,wBACI,yBACA,yBACA,yDACAb,KAAKsC,KAAQ,oBAAsB,GACnCtC,KAAKuC,OAAQ,sCAAwC,GACrDvC,KAAKyC,MAAQ,qBAAuB,GACxC,SACA,0BACFC,KAAK,KAIXC,eAAiB,WACT3C,KAAKsC,MACLtC,KAAKsC,KAAKT,OAEV7B,KAAKyC,OACLzC,KAAKyC,MAAMZ,QAInBe,SAAW,WAAa,MAAO,mBAI/B,QACI7D,eAAgBA"}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
{"version":3,"file":"library-librarytoolbar-view.js","sources":["../../../src/mvc/library/library-librarytoolbar-view.js"],"names":["define","mod_toastr","mod_library_model","LibraryToolbarView","Backbone","View","extend","el","defaults","search_term","events","click #create_new_library_btn","click #include_deleted_chk","click #lib_page_size_prompt","keyup .library-search-input","initialize","options","this","_","render","toolbar_template","templateToolBar","is_admin","is_anonym","Galaxy","user","isAdmin","isAnonymous","$el","html","admin_user","anon_user","find","checked","libraries","preferences","get","renderPaginator","paginator_template","templatePaginator","show_page","parseInt","page_count","total_libraries_count","libraries_shown","showLibraryModal","event","preventDefault","stopPropagation","self","modal","show","closing_events","title","body","templateNewLibraryInModal","buttons","Create","createNewLibrary","Close","hide","libraryDetails","serializeNewLibrary","validateNewLibrary","library","Library","save","success","libraryListView","collection","add","clearLibraryModal","error","model","response","responseJSON","err_msg","showPageSizePrompt","library_page_size","prompt","set","$","val","name","description","synopsis","includeDeletedChecked","target","with_deleted","searchLibraries","template","join"],"mappings":"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"}
{"version":3,"file":"library-librarytoolbar-view.js","sources":["../../../src/mvc/library/library-librarytoolbar-view.js"],"names":["define","mod_toastr","mod_library_model","LibraryToolbarView","Backbone","View","extend","el","defaults","search_term","events","click #create_new_library_btn","click #include_deleted_chk","click #lib_page_size_prompt","keyup .library-search-input","initialize","options","this","_","render","toolbar_template","templateToolBar","is_admin","is_anonym","Galaxy","user","isAdmin","isAnonymous","$el","html","admin_user","anon_user","find","checked","libraries","preferences","get","renderPaginator","paginator_template","templatePaginator","show_page","parseInt","page_count","total_libraries_count","libraries_shown","createLibraryFromModal","event","preventDefault","stopPropagation","self","modal","show","closing_events","title","body","templateNewLibraryInModal","buttons","Create","createNewLibrary","Close","hide","libraryDetails","serializeNewLibrary","validateNewLibrary","library","Library","save","success","libraryListView","collection","add","clearLibraryModal","error","model","response","responseJSON","err_msg","showPageSizePrompt","library_page_size","prompt","set","$","val","name","description","synopsis","includeDeletedChecked","target","with_deleted","searchLibraries","template","join"],"mappings":"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"}
File diff suppressed because one or more lines are too long
+1 -1
View File
@@ -1 +1 @@
{"version":3,"file":"tool-form.js","sources":["../../../src/mvc/tool/tool-form.js"],"names":["define","Utils","Ui","ToolFormBase","ToolTemplate","View","extend","initialize","options","self","this","prototype","call","merge","customize","buttons","execute","execute_btn","Button","icon","tooltip","name","version","title","cls","floating","onclick","wait","portlet","disable","submit","unwait","enable","job_id","job_remap","inputs","label","type","display","ignore","value","help","callback","job_def","tool_id","id","tool_version","data","create","trigger","validate","Galaxy","emit","debug","request","url","root","success","response","$el","empty","append","parent","currHistoryPanel","refreshContents","error","err_data","error_messages","matchResponse","input_id","highlight","modal","show","body","err_msg","Close","hide","job_inputs","batch_n","batch_src","job_input_id","input_value","match","input_field","field_list","input_def","input_list","optional","batch","n","values","length","src"],"mappings":"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"}
{"version":3,"file":"tool-form.js","sources":["../../../src/mvc/tool/tool-form.js"],"names":["define","Utils","Ui","ToolFormBase","ToolTemplate","View","extend","initialize","options","self","this","prototype","call","merge","customize","buttons","execute","execute_btn","Button","icon","tooltip","name","version","title","cls","floating","onclick","wait","portlet","disable","submit","unwait","enable","job_id","job_remap","inputs","label","type","display","ignore","value","help","callback","job_def","tool_id","id","tool_version","data","create","trigger","validate","Galaxy","emit","debug","request","url","root","success","response","$el","empty","append","parent","currHistoryPanel","refreshContents","error","err_data","error_messages","matchResponse","input_id","highlight","modal","show","body","err_msg","Close","hide","job_inputs","batch_n","batch_src","job_input_id","input_value","match","input_field","field_list","input_def","input_list","optional","batch","n","values","length","src"],"mappings":"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"}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+1 -1
View File
@@ -1,2 +1,2 @@
define(["layout/masthead","layout/panel","mvc/ui/ui-modal","mvc/base-mvc"],function(a,b,c,d){var e=Backbone.View.extend(d.LoggableMixin).extend({_logNamespace:"layout",el:"body",className:"full-content",_panelIds:["left","center","right"],defaultOptions:{message_box_visible:!1,message_box_content:"",message_box_class:"info",show_inactivity_warning:!1,inactivity_box_content:""},initialize:function(b){this.log(this+".initialize:",b),_.extend(this,_.pick(b,this._panelIds)),this.options=_.defaults(_.omit(b,this._panelIds),this.defaultOptions),Galaxy.modal=this.modal=new c.View,this.masthead=new a.View(this.options.config),this.$el.attr("scroll","no"),this.$el.append(this._template()),this.$el.append(this.masthead.$el),this.$el.append(this.modal.$el),this.$messagebox=this.$("#messagebox"),this.$inactivebox=this.$("#inactivebox")},render:function(){return $(".select2-hidden-accessible").remove(),this.log(this+".render:"),this.masthead.render(),this.renderMessageBox(),this.renderInactivityBox(),this.renderPanels(),this},renderMessageBox:function(){if(this.options.message_box_visible){var a=this.options.message_box_content||"",b=this.options.message_box_class||"info";this.$el.addClass("has-message-box"),this.$messagebox.attr("class","panel-"+b+"-message").html(a).toggle(!!a).show()}else this.$el.removeClass("has-message-box"),this.$messagebox.hide();return this},renderInactivityBox:function(){if(this.options.show_inactivity_warning){var a=this.options.inactivity_box_content||"",b=$("<a/>").attr("href",Galaxy.root+"user/resend_verification").html("Resend verification.");this.$el.addClass("has-inactivity-box"),this.$inactivebox.html(a).append(" "+b).toggle(!!a).show()}else this.$el.removeClass("has-inactivity-box"),this.$inactivebox.hide();return this},renderPanels:function(){var a=this;return this._panelIds.forEach(function(b){_.has(a,b)?(a[b].setElement("#"+b),a[b].render()):"center"!==b&&a.center.$el.css(b,0)}),this},_template:function(){return['<div id="everything">','<div id="background"/>','<div id="messagebox"/>','<div id="inactivebox" class="panel-warning-message"/>','<div id="left"/>','<div id="center" class="inbound"/>','<div id="right"/>',"</div>",'<div id="dd-helper"/>',"<noscript>",'<div class="overlay overlay-background noscript-overlay">',"<div>",'<h3 class="title">Javascript Required for Galaxy</h3>',"<div>","The Galaxy analysis interface requires a browser with Javascript enabled.<br>","Please enable Javascript and refresh this page","</div>","</div>","</div>","</noscript>"].join("")},toString:function(){return"PageLayoutView"}});return{PageLayoutView:e}});
define(["layout/masthead","layout/panel","mvc/ui/ui-modal","mvc/base-mvc"],function(a,b,c,d){var e=Backbone.View.extend(d.LoggableMixin).extend({_logNamespace:"layout",el:"body",className:"full-content",_panelIds:["left","center","right"],defaultOptions:{message_box_visible:!1,message_box_content:"",message_box_class:"info",show_inactivity_warning:!1,inactivity_box_content:""},initialize:function(b){this.log(this+".initialize:",b),_.extend(this,_.pick(b,this._panelIds)),this.options=_.defaults(_.omit(b,this._panelIds),this.defaultOptions),Galaxy.modal=this.modal=new c.View,this.masthead=new a.View(this.options.config),this.$el.attr("scroll","no"),this.$el.html(this._template()),this.$el.append(this.masthead.$el),this.$el.append(this.modal.$el),this.$messagebox=this.$("#messagebox"),this.$inactivebox=this.$("#inactivebox")},render:function(){return $(".select2-hidden-accessible").remove(),this.log(this+".render:"),this.masthead.render(),this.renderMessageBox(),this.renderInactivityBox(),this.renderPanels(),this},renderMessageBox:function(){if(this.options.message_box_visible){var a=this.options.message_box_content||"",b=this.options.message_box_class||"info";this.$el.addClass("has-message-box"),this.$messagebox.attr("class","panel-"+b+"-message").html(a).toggle(!!a).show()}else this.$el.removeClass("has-message-box"),this.$messagebox.hide();return this},renderInactivityBox:function(){if(this.options.show_inactivity_warning){var a=this.options.inactivity_box_content||"",b=$("<a/>").attr("href",Galaxy.root+"user/resend_verification").text("Resend verification");this.$el.addClass("has-inactivity-box"),this.$inactivebox.html(a+" ").append(b).toggle(!!a).show()}else this.$el.removeClass("has-inactivity-box"),this.$inactivebox.hide();return this},renderPanels:function(){var a=this;return this._panelIds.forEach(function(b){_.has(a,b)&&(a[b].setElement("#"+b),a[b].render())}),this.left||this.center.$el.css("left",0),this.right||this.center.$el.css("right",0),this},_template:function(){return['<div id="everything">','<div id="background"/>','<div id="messagebox"/>','<div id="inactivebox" class="panel-warning-message" />',this.left?'<div id="left" />':"",this.center?'<div id="center" class="inbound" />':"",this.right?'<div id="right" />':"","</div>",'<div id="dd-helper" />'].join("")},hideSidePanels:function(){this.left&&this.left.hide(),this.right&&this.right.hide()},toString:function(){return"PageLayoutView"}});return{PageLayoutView:e}});
//# sourceMappingURL=../../maps/layout/page.js.map
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long

Some files were not shown because too many files have changed in this diff Show More