Sha256: 3d5d3d56962479aeb05caf6efebfd8bf3b860e95c06abe0c0e35b55d7168744f

Contents?: true

Size: 1.88 KB

Versions: 7

Compression:

Stored size: 1.88 KB

Contents

import * as Exporter from './exporter';
import _ from 'underscore';
export default class AlignmentExporter {
    constructor() {
        this.prepare_alignments_for_export = this.prepare_alignments_for_export.bind(this);
        this.export_alignments = this.export_alignments.bind(this);
    }

    wrap_string(str, width) {
        var idx = 0;
        var wrapped = '';
        while(true) {
            wrapped += str.substring(idx, idx + width);
            idx += width;
            if(idx < str.length) {
                wrapped += '\n';
            } else {
                break;
            }
        }
        return wrapped;
    }

    generate_fasta(hsps) {

        var fasta = '';

        _.each(hsps, _.bind(function (hsp) {
            fasta += '>'+hsp.query_id+':'+hsp.qstart+'-'+hsp.qend+'\n';
            fasta += hsp.qseq+'\n';
            fasta += '>'+hsp.query_id+':'+hsp.qstart+'-'+hsp.qend+'_alignment_'+hsp.hit_id+':'+hsp.sstart+'-'+hsp.send+'\n';
            fasta += hsp.midline+'\n';
            fasta += '>'+hsp.hit_id+':'+hsp.sstart+'-'+hsp.send+'\n';
            fasta += hsp.sseq+'\n';
        }, this));
        return fasta;
    }

    get_alignments_download_metadata(hsps, filename_prefix){
        var fasta = this.generate_fasta(hsps);
        var blob = new Blob([fasta], { type: 'text/fasta' });
        var filename = Exporter.sanitize_filename(filename_prefix) + '.txt';
        return {filename, blob};
    }

    
    prepare_alignments_for_export(hsps, filename_prefix) {
        const { filename, blob } = this.get_alignments_download_metadata(hsps, filename_prefix);
        const blob_url = Exporter.generate_blob_url(blob, filename);
        return blob_url;
    }
    
    export_alignments(hsps, filename_prefix) {
        const { filename, blob } = this.get_alignments_download_metadata(hsps, filename_prefix);
        Exporter.download_blob(blob, filename);
    }
}

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
sequenceserver-3.1.2 public/js/alignment_exporter.js
sequenceserver-3.1.1 public/js/alignment_exporter.js
sequenceserver-3.1.0 public/js/alignment_exporter.js
sequenceserver-3.0.1 public/js/alignment_exporter.js
sequenceserver-3.0 public/js/alignment_exporter.js
sequenceserver-2.2.0 public/js/alignment_exporter.js
sequenceserver-2.1.0 public/js/alignment_exporter.js