Skip to content

Commit

Permalink
Merge branch 'develop' - version 0.4.0
Browse files Browse the repository at this point in the history
  • Loading branch information
iimog committed Nov 22, 2016
2 parents ff0a844 + a53c2e5 commit 4a1e725
Show file tree
Hide file tree
Showing 49 changed files with 508 additions and 577 deletions.
5 changes: 5 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,11 @@ gulp sassLint
gulp sass
```
## Changes
### 0.4.0 <2016-11-22>
- Rename organism_id to fennec_id
- Update webservices for db schema 0.4.0
- Fix frontend for new data schema
- Fix bugs (related to biom json export)
### 0.3.2 <2016-11-04>
- Add organism_id mapping to project details page
- Export project as biom (v1)
Expand Down
22 changes: 16 additions & 6 deletions app/Resources/client/jsx/project/details/details.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,11 @@ $('document').ready(function () {
});

$('#project-export-as-biom-v1').click(() => {
exportProjectAsBiom();
exportProjectAsBiom(false);
});

$('#project-export-as-biom-v2').click(() => {
exportProjectAsBiom(true);
});

});
Expand All @@ -55,11 +59,17 @@ function saveBiomToDB() {
});
}

function exportProjectAsBiom() {
biom.write().then(function (biomJson) {
var blob = new Blob([biomJson], {type: "text/plain"});
saveAs(blob, biom.id+".json");
/**
* Opens a file download dialog of the current project in biom format
* @param {boolean} asHdf5
*/
function exportProjectAsBiom(asHdf5) {
let conversionServerURL = Routing.generate('biomcs_convert');
let contentType = asHdf5 ? "application/octet-stream" : "text/plain";
biom.write({conversionServer: conversionServerURL, asHdf5: asHdf5}).then(function (biomContent) {
var blob = new Blob([biomContent], {type: contentType});
saveAs(blob, biom.id+".biom");
}, function (failure) {
console.log(failure);
showMessageDialog(failure+"", 'danger');
});
}
26 changes: 13 additions & 13 deletions app/Resources/client/jsx/project/details/mapping.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@
/* global _ */
$('document').ready(() => {
// Calculate values for mapping overview table
let sampleOrganismIDs = biom.getMetadata({dimension: 'columns', attribute: ['fennec', dbversion, 'organism_id']}).filter(element => element !== null);
let otuOrganismIDs = biom.getMetadata({dimension: 'rows', attribute: ['fennec', dbversion, 'organism_id']}).filter(element => element !== null);
let sampleOrganismIDs = biom.getMetadata({dimension: 'columns', attribute: ['fennec', dbversion, 'fennec_id']}).filter(element => element !== null);
let otuOrganismIDs = biom.getMetadata({dimension: 'rows', attribute: ['fennec', dbversion, 'fennec_id']}).filter(element => element !== null);
var mappedSamples = sampleOrganismIDs.length;
var percentageMappedSamples = 100 * mappedSamples / biom.shape[1];
var mappedOTUs = otuOrganismIDs.length;
Expand Down Expand Up @@ -97,28 +97,28 @@ $('document').ready(() => {
* Create the results component from the returned mapping and store result in global biom object
* @param {string} dimension
* @param {Array} idsFromBiom those are the ids used for mapping in the order they appear in the biom file
* @param {Array} mapping from ids to organism_ids as returned by webservice
* @param {Array} mapping from ids to fennec_ids as returned by webservice
* @param {string} method of mapping
*/
function handleMappingResult(dimension, idsFromBiom, mapping, method) {
let organism_ids = new Array(idsFromBiom.length).fill(null);
let fennec_ids = new Array(idsFromBiom.length).fill(null);
var idsFromBiomNotNullCount = 0;
var idsFromBiomMappedCount = 0;
for (let i = 0; i < idsFromBiom.length; i++) {
if (idsFromBiom[i] !== null) {
idsFromBiomNotNullCount++;
if (idsFromBiom[i] in mapping && mapping[idsFromBiom[i]] !== null) {
idsFromBiomMappedCount++;
organism_ids[i] = mapping[idsFromBiom[i]];
fennec_ids[i] = mapping[idsFromBiom[i]];
}
}
}
biom.addMetadata({dimension: dimension, attribute: ['fennec', dbversion, 'organism_id'], values: organism_ids});
biom.addMetadata({dimension: dimension, attribute: ['fennec', dbversion, 'fennec_id'], values: fennec_ids});
biom.addMetadata({dimension: dimension, attribute: ['fennec', dbversion, 'assignment_method'], defaultValue: method});
var idString = getIdStringForMethod(method);
$('#mapping-action-busy-indicator').hide();
$('#mapping-results-section').show();
$('#mapping-results').text(`From a total of ${idsFromBiom.length} organisms: ${idsFromBiomNotNullCount} have a ${idString}, of which ${idsFromBiomMappedCount} could be mapped to organism_ids.`);
$('#mapping-results').text(`From a total of ${idsFromBiom.length} organisms: ${idsFromBiomNotNullCount} have a ${idString}, of which ${idsFromBiomMappedCount} could be mapped to fennec_ids.`);
}

// Set action for click on mapping "Save to database" button
Expand All @@ -128,16 +128,16 @@ $('document').ready(() => {

// Set action for click on mapping "Download as csv" button
$('#mapping-download-csv-button').on('click', function () {
var ids = biom[dimension].map(function (element) {
let ids = biom[dimension].map(function (element) {
return element.id;
});
var ids = getIdsForMethod(method, dimension);
var fennec_id = biom.getMetadata({dimension: dimension, attribute: ['fennec', dbversion, 'organism_id']});
var id_header = dimension === 'rows' ? 'OTU_ID' : 'Sample_ID';
let mappingIds = getIdsForMethod(method, dimension);
let fennecIds = biom.getMetadata({dimension: dimension, attribute: ['fennec', dbversion, 'fennec_id']});
let idHeader = dimension === 'rows' ? 'OTU_ID' : 'Sample_ID';
let idString = getIdStringForMethod(method);
var csv = `${id_header}\t${idString}\tFennec_ID\n`;
var csv = `${idHeader}\t${idString}\tFennec_ID\n`;
for(var i=0; i<ids.length; i++){
csv += ids[i]+"\t"+ids[i]+"\t"+fennec_id[i]+"\n";
csv += ids[i]+"\t"+mappingIds[i]+"\t"+fennecIds[i]+"\n";
}
var blob = new Blob([csv], {type: "text/plain;charset=utf-8"});
saveAs(blob, "mapping.csv");
Expand Down
8 changes: 4 additions & 4 deletions app/Resources/client/jsx/project/details/trait.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,15 @@ $('document').ready(() => {
var traits = [];
var webserviceUrl = Routing.generate('api', {'namespace': 'details', 'classname': 'traitsOfOrganisms'});

// Extract row organism_ids from biom
var organism_ids = biom.getMetadata({dimension: 'rows', attribute: ['fennec', dbversion, 'organism_id']})
// Extract row fennec_ids from biom
var fennec_ids = biom.getMetadata({dimension: 'rows', attribute: ['fennec', dbversion, 'fennec_id']})
.filter( element => element !== null );

// Get traits for rows
$.ajax(webserviceUrl, {
data: {
"dbversion": dbversion,
"organism_ids": organism_ids
"fennec_ids": fennec_ids
},
method: "POST",
success: function (data) {
Expand All @@ -22,7 +22,7 @@ $('document').ready(() => {
id: key,
trait: value['trait_type'],
count: value['trait_entry_ids'].length,
range: 100 * value['organism_ids'].length / organism_ids.length
range: 100 * value['fennec_ids'].length / fennec_ids.length
};
traits.push(thisTrait);
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
$("#search_{{ type }}").data("ui-autocomplete")._renderItem = function (ul, item) {
{% if type == 'organism' %}
var details = Routing.generate('{{ type }}_details', {'dbversion': '{{ dbversion }}', 'organism_id': item.organism_id});
var details = Routing.generate('{{ type }}_details', {'dbversion': '{{ dbversion }}', 'fennec_id': item.fennec_id});
var link = "<a href='"+details+"'><span style='display:inline-block; width: 100%; font-style: italic;'>" + item.scientific_name + "</span><span style='color: #338C8C'>" + item.rank + "</span></a>";
{% elseif type == 'trait' %}
var details = Routing.generate('{{ type }}_details', {'dbversion': '{{ dbversion }}', 'trait_type_id': item.trait_type_id});
Expand Down
14 changes: 8 additions & 6 deletions app/Resources/views/organism/details.html.twig
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@

{% block javascripts %}
{{ parent() }}
{% if organism.eol_accession is defined %}
{% if organism.eol_identifier is defined %}
<script type="text/javascript">
$('document').ready(function(){
var eol_id = {{ organism.eol_accession }};
var eol_id = {{ organism.eol_identifier }};
var img_template = '<a class="thumbnail" href="<%= href %>"><img src="<%= src %>"/></a><a href="<%= source %>"><div>(c) <%= rightsHolder %> <%= license %></div></a>';
$.ajax({
method: "GET",
Expand Down Expand Up @@ -104,7 +104,7 @@
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
Content on this page is dynamically included from <a href="http://eol.org">EOL</a> via its <a href="http://eol.org/api">API</a>. <a href="http://eol.org/pages/{{ organism.eol_accession }}">Visit full page at EOL for this organism (id {{ organism.eol_accession }})</a>.
Content on this page is dynamically included from <a href="http://eol.org">EOL</a> via its <a href="http://eol.org/api">API</a>. <a href="http://eol.org/pages/{{ organism.eol_identifier }}">Visit full page at EOL for this organism (id {{ organism.eol_identifier }})</a>.
</div>
<div class='row'>
<div class='col-xs-12'>
Expand Down Expand Up @@ -136,9 +136,11 @@
{% endfor %}
</div>
<div role="tabpanel" class="tab-pane" id="taxonomy">
<h4 class="page-header">Lineage</h4>
{% for taxon in taxonomy.lineage %}
{{ taxon }}</br>
{% for db, lineage in taxonomy %}
<h4 class="page-header">{{ db }}</h4>
{% for taxon in lineage %}
{{ taxon }}</br>
{% endfor %}
{% endfor %}
</div>
</div>
Expand Down
7 changes: 2 additions & 5 deletions app/Resources/views/organism/grid.html.twig
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{% for organism in organisms %}
<div class="col-lg-3">
<div class="panel grid-organism" organism_id='{{ organism.organism_id }}'>
<div class="panel grid-organism" fennec_id='{{ organism.fennec_id }}'>
<div class="panel-heading" style='height: 60px;'>
<div class="row">
<div class="col-xs-3">
Expand All @@ -20,12 +20,9 @@
common name: {{ organism.common_name }}
</div>
{% endif %}
<div class="col-xs-10 text-left">
rank: {{ organism.rank }}
</div>
<a class="grid-details-organism">
<div class="col-xs-2 text-right">
<a href="{{ path('organism_details', {'dbversion': dbversion, 'organism_id': organism.organism_id}) }}"><span class="pull-right"><i class="fa fa-arrow-circle-right fa-2x {{ type }}-link"></i></span></a>
<a href="{{ path('organism_details', {'dbversion': dbversion, 'fennec_id': organism.fennec_id}) }}"><span class="pull-right"><i class="fa fa-arrow-circle-right fa-2x {{ type }}-link"></i></span></a>
</div>
</a>
</div>
Expand Down
4 changes: 2 additions & 2 deletions app/Resources/views/project/details.html.twig
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,11 @@
{{ parent() }}

<script type="text/javascript">
var biomString = '{{ project['projects'][internal_project_id]['biom']|raw }}';
var internalProjectId = '{{ internal_project_id }}';
var phinchPreviewPath = '{{ asset('assets/Blackbird/preview.html') }}';
var biom = function(){
var Biom = require('biojs-io-biom').Biom;
var biomObject = JSON.parse(biomString);
var biomObject = {{ project['projects'][internal_project_id]['biom']|raw }};
return new Biom(biomObject);
}();
</script>
Expand Down Expand Up @@ -45,6 +44,7 @@
<tr><th scope="row">Export</th>
<td id="project-overview-table-export">
<button type="button" class="btn btn-primary" id="project-export-as-biom-v1">BIOM v1</button>
<button type="button" class="btn btn-primary" id="project-export-as-biom-v2">BIOM v2</button>
</td></tr>
</tbody>
</table>
Expand Down
2 changes: 1 addition & 1 deletion app/Resources/views/trait/grid.html.twig
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{% for trait in traits %}
{% set traitWithIcon = ['PlantHabit'] %}
{% set traitWithIcon = ['Plant Habit'] %}
<div class="col-xs-12 col-sm-6 col-md-6 col-lg-4">
<div class="panel panel-trait">
<div class="panel-heading">
Expand Down
2 changes: 1 addition & 1 deletion app/config/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ twig:
debug: "%kernel.debug%"
strict_variables: "%kernel.debug%"
globals:
fennec_version: 0.3.2
fennec_version: 0.4.0
dbversions: "%dbversions%"

# Doctrine Configuration
Expand Down
2 changes: 1 addition & 1 deletion bower.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
"plotlyjs": "plotly#^1.16.2",
"datatables": "^1.10.12",
"bs-confirmation": "^1.0.5",
"biojs-io-biom": "^1.0.3",
"biojs-io-biom": "^1.0.5",
"d3": "^4.2.7",
"react": "^15.3.2",
"file-saver": "filesaver#^1.3.3",
Expand Down
3 changes: 2 additions & 1 deletion composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,8 @@
"sensio/framework-extra-bundle": "^3.0.2",
"incenteev/composer-parameter-handler": "^2.0",
"league/oauth2-github": "^0.2.1",
"friendsofsymfony/jsrouting-bundle": "^1.6"
"friendsofsymfony/jsrouting-bundle": "^1.6",
"iimog/biom-conversion-server": "^1.0"
},
"require-dev": {
"sensio/generator-bundle": "^3.0",
Expand Down
43 changes: 41 additions & 2 deletions composer.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "fennec-web",
"version": "0.3.2",
"version": "0.4.0",
"description": "Fennec",
"directories": {
"test": "test"
Expand Down
Loading

0 comments on commit 4a1e725

Please # to comment.