genevalidator 1.6.2 → 1.6.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +147 -76
- data/Rakefile +1 -1
- data/aux/files/css/genevalidator.compiled.min.css +16 -0
- data/aux/files/css/{bootstrap.min.css → src/bootstrap.min.css} +0 -0
- data/aux/files/css/{font-awesome.min.css → src/font-awesome.min.css} +0 -0
- data/aux/files/css/{style.css → src/style.css} +0 -0
- data/aux/files/js/genevalidator.compiled.min.js +28 -0
- data/aux/files/js/{bootstrap.min.js → src/bootstrap.min.js} +0 -0
- data/aux/files/js/{d3.v3.min.js → src/d3.v3.min.js} +0 -0
- data/aux/files/js/{jquery-2.1.1.min.js → src/jquery-2.1.1.min.js} +0 -0
- data/aux/files/js/{jquery.tablesorter.min.js → src/jquery.tablesorter.min.js} +0 -0
- data/aux/files/js/src/plots.js +814 -0
- data/aux/files/js/src/script.js +43 -0
- data/aux/json_header.erb +6 -6
- data/aux/json_query.erb +2 -1
- data/aux/template_footer.erb +0 -11
- data/aux/template_header.erb +4 -4
- data/aux/template_query.erb +1 -1
- data/bin/genevalidator +8 -6
- data/genevalidator.gemspec +1 -1
- data/lib/genevalidator.rb +7 -5
- data/lib/genevalidator/arg_validation.rb +12 -9
- data/lib/genevalidator/blast.rb +18 -11
- data/lib/genevalidator/clusterization.rb +35 -31
- data/lib/genevalidator/exceptions.rb +0 -1
- data/lib/genevalidator/get_raw_sequences.rb +115 -69
- data/lib/genevalidator/hsp.rb +8 -8
- data/lib/genevalidator/json_to_gv_results.rb +4 -4
- data/lib/genevalidator/output.rb +40 -41
- data/lib/genevalidator/pool.rb +5 -4
- data/lib/genevalidator/query.rb +37 -0
- data/lib/genevalidator/tabular_parser.rb +3 -4
- data/lib/genevalidator/validation.rb +16 -11
- data/lib/genevalidator/validation_alignment.rb +17 -23
- data/lib/genevalidator/validation_blast_reading_frame.rb +3 -3
- data/lib/genevalidator/validation_duplication.rb +8 -18
- data/lib/genevalidator/validation_gene_merge.rb +11 -9
- data/lib/genevalidator/validation_length_cluster.rb +8 -11
- data/lib/genevalidator/validation_length_rank.rb +5 -4
- data/lib/genevalidator/validation_open_reading_frame.rb +5 -5
- data/lib/genevalidator/version.rb +1 -1
- data/test/test_all_validations.rb +2 -1
- data/test/test_blast.rb +4 -3
- data/test/test_extended_array_methods.rb +2 -1
- data/test/{test_sequences.rb → test_query.rb} +5 -23
- data/test/test_validation_open_reading_frame.rb +7 -7
- data/test/test_validations.rb +8 -6
- metadata +16 -16
- data/aux/app_template_footer.erb +0 -1
- data/aux/app_template_header.erb +0 -12
- data/aux/files/js/plots.js +0 -828
- data/aux/files/js/script.js +0 -71
- data/lib/genevalidator/sequences.rb +0 -101
data/aux/files/js/script.js
DELETED
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
//sort table
|
|
2
|
-
$(function(){
|
|
3
|
-
'use strict';
|
|
4
|
-
|
|
5
|
-
// add custom parser to make the stars column to sort according to attr.
|
|
6
|
-
$.tablesorter.addParser({
|
|
7
|
-
id: 'star_scores', // called later when init the tablesorter
|
|
8
|
-
is: function() {
|
|
9
|
-
return false; // return false so this parser is not auto detected
|
|
10
|
-
},
|
|
11
|
-
format: function(s, table, cell, cellIndex) {
|
|
12
|
-
var $cell = $(cell);
|
|
13
|
-
if (cellIndex === 1) {
|
|
14
|
-
return $cell.attr('data-score') || s;
|
|
15
|
-
}
|
|
16
|
-
return s;
|
|
17
|
-
},
|
|
18
|
-
parsed: false,
|
|
19
|
-
type: 'numeric' // Setting type of data...
|
|
20
|
-
});
|
|
21
|
-
|
|
22
|
-
$('table').tablesorter({
|
|
23
|
-
headers: {
|
|
24
|
-
1 : { sorter: 'star_scores' } // Telling it to use custom parser...
|
|
25
|
-
},
|
|
26
|
-
sortList: [[0,0]],
|
|
27
|
-
});
|
|
28
|
-
});
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
//ToolTip
|
|
32
|
-
$(function () {
|
|
33
|
-
'use strict';
|
|
34
|
-
$("[data-toggle='tooltip']").tooltip();
|
|
35
|
-
});
|
|
36
|
-
|
|
37
|
-
//Hide empty columns
|
|
38
|
-
$(document).ready(function() {
|
|
39
|
-
'use strict';
|
|
40
|
-
if (window.chrome && (window.location.protocol === 'file:') ) {
|
|
41
|
-
$('#browseralert').modal();
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
$('#sortable_table tr th').each(function(i) {
|
|
46
|
-
//select all tds in this column
|
|
47
|
-
var tds = $(this).parents('table')
|
|
48
|
-
.find('tr td:nth-child(' + (i + 1) + ')');
|
|
49
|
-
//check if all the cells in this column are empty
|
|
50
|
-
//
|
|
51
|
-
if ($(this).hasClass('chart-column')) {
|
|
52
|
-
} else {
|
|
53
|
-
if ($(this).text().trim() === '') {
|
|
54
|
-
//hide header
|
|
55
|
-
$(this).hide();
|
|
56
|
-
//hide cells
|
|
57
|
-
tds.hide();
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
});
|
|
61
|
-
});
|
|
62
|
-
|
|
63
|
-
$( document ).on( "click", "td, .plot_btn", function( event ) {
|
|
64
|
-
if ($(this).hasClass('success') || $(this).hasClass('danger')){
|
|
65
|
-
var title = $(this).attr('title');
|
|
66
|
-
var val = title.replace(/[ \/]/g, '');
|
|
67
|
-
addData(this, val);
|
|
68
|
-
} else if ($(this).hasClass('plot_btn')){
|
|
69
|
-
addData(this, 'all');
|
|
70
|
-
}
|
|
71
|
-
});
|
|
@@ -1,101 +0,0 @@
|
|
|
1
|
-
require 'net/http'
|
|
2
|
-
require 'io/console'
|
|
3
|
-
require 'yaml'
|
|
4
|
-
|
|
5
|
-
module GeneValidator
|
|
6
|
-
# This is a class for the storing data on each sequence
|
|
7
|
-
class Sequence
|
|
8
|
-
attr_accessor :type # protein | mRNA
|
|
9
|
-
attr_accessor :definition
|
|
10
|
-
attr_accessor :identifier
|
|
11
|
-
attr_accessor :species
|
|
12
|
-
attr_accessor :accession_no
|
|
13
|
-
attr_accessor :length_protein
|
|
14
|
-
attr_accessor :reading_frame
|
|
15
|
-
attr_accessor :hsp_list # array of Hsp objects
|
|
16
|
-
|
|
17
|
-
attr_accessor :raw_sequence
|
|
18
|
-
attr_accessor :protein_translation # used only for nucleotides
|
|
19
|
-
attr_accessor :nucleotide_rf # used only for nucleotides
|
|
20
|
-
|
|
21
|
-
def initialize
|
|
22
|
-
@hsp_list = []
|
|
23
|
-
@raw_sequence = nil
|
|
24
|
-
@protein_translation = nil
|
|
25
|
-
@nucleotide_rf = nil
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
def protein_translation
|
|
29
|
-
(@type == :protein) ? raw_sequence : @protein_translation
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
##
|
|
33
|
-
# Gets raw sequence by fasta identifier from a fasta index file
|
|
34
|
-
# Params:
|
|
35
|
-
# +raw_seq_file+: name of the fasta file with raw sequences
|
|
36
|
-
# +index_file_name+: name of the fasta index file
|
|
37
|
-
# +identifier+: String
|
|
38
|
-
# +hash+: String - loaded content of the index file
|
|
39
|
-
# Output:
|
|
40
|
-
# String with the nucleotide sequence corresponding to the identifier
|
|
41
|
-
def get_sequence_from_index_file(raw_seq_file, index_file_name, identifier,
|
|
42
|
-
hash = nil)
|
|
43
|
-
hash = YAML.load_file(index_file_name) if hash.nil?
|
|
44
|
-
idx = hash[identifier]
|
|
45
|
-
query = IO.binread(raw_seq_file, idx[1] - idx[0], idx[0])
|
|
46
|
-
parse_query = query.scan(/>([^\n]*)\n([A-Za-z\n]*)/)[0]
|
|
47
|
-
@raw_sequence = parse_query[1].gsub("\n", '')
|
|
48
|
-
rescue Exception
|
|
49
|
-
# $stderr.print "Unable to retrieve raw sequence for the following" \
|
|
50
|
-
# "id: #{identifier}\n"
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
##
|
|
54
|
-
# Gets raw sequence by accession number from a givem database
|
|
55
|
-
# Params:
|
|
56
|
-
# +accno+: accession number as String
|
|
57
|
-
# +db+: database as String
|
|
58
|
-
# Output:
|
|
59
|
-
# String with the nucleotide sequence corresponding to the accno
|
|
60
|
-
def get_sequence_by_accession_no(accno, dbtype, db)
|
|
61
|
-
if db !~ /remote/
|
|
62
|
-
blast_cmd = "blastdbcmd -entry '#{accno}' -db '#{db}' -outfmt '%s'"
|
|
63
|
-
seq = `#{blast_cmd} 2>&1`
|
|
64
|
-
if /Error/ =~ seq
|
|
65
|
-
fail IOError, 'GeneValidator was unable to obtain the raw sequences' \
|
|
66
|
-
' for the BLAST hits.'
|
|
67
|
-
end
|
|
68
|
-
@raw_sequence = seq
|
|
69
|
-
else
|
|
70
|
-
$stderr.puts "Getting sequence for '#{accno}' from NCBI - avoid this with '-r'."
|
|
71
|
-
uri = 'http://www.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?'\
|
|
72
|
-
"db=#{dbtype}&retmax=1&usehistory=y&term=#{accno}/"
|
|
73
|
-
result = Net::HTTP.get(URI.parse(uri))
|
|
74
|
-
|
|
75
|
-
query = result.scan(%r{<\bQueryKey\b>([\w\W\d]+)</\bQueryKey\b>})[0][0]
|
|
76
|
-
web_env = result.scan(%r{<\bWebEnv\b>([\w\W\d]+)</\bWebEnv\b>})[0][0]
|
|
77
|
-
|
|
78
|
-
uri = 'http://www.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?'\
|
|
79
|
-
"rettype=fasta&retmode=text&retstart=0&retmax=1&db=#{dbtype}" \
|
|
80
|
-
"&query_key=#{query}&WebEnv=#{web_env}"
|
|
81
|
-
result = Net::HTTP.get(URI.parse(uri))
|
|
82
|
-
|
|
83
|
-
# parse FASTA output
|
|
84
|
-
nl = result.index("\n")
|
|
85
|
-
seq = result[nl + 1..-1]
|
|
86
|
-
@raw_sequence = seq.gsub!(/\n/, '')
|
|
87
|
-
@raw_sequence = '' unless @raw_sequence.index(/ERROR/).nil?
|
|
88
|
-
end
|
|
89
|
-
@raw_sequence
|
|
90
|
-
end
|
|
91
|
-
|
|
92
|
-
##
|
|
93
|
-
# Initializes the corresponding attribute of the sequence
|
|
94
|
-
# with respect to the column name of the tabular blast output
|
|
95
|
-
def init_tabular_attribute(hash)
|
|
96
|
-
@identifier = hash['sseqid'] if hash['sseqid']
|
|
97
|
-
@accession_no = hash['sacc'] if hash['sacc']
|
|
98
|
-
@length_protein = hash['slen'].to_i if hash['slen']
|
|
99
|
-
end
|
|
100
|
-
end
|
|
101
|
-
end
|