sequence_logo 1.2.3 → 1.3.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 6b16062d216ed9322e8089cb66d3bb43beb58258
4
- data.tar.gz: d7df2af54cb912d5c80c97cc335f1fdde087b9b9
2
+ SHA256:
3
+ metadata.gz: 32b477a05d970c0504ddd097aba85fae5f2f99da68fcd391fcfae2292742eb6c
4
+ data.tar.gz: c35413b1a0b77c12ea272a99edfc98a17bae66a3b9b9cee4c5db51995016e070
5
5
  SHA512:
6
- metadata.gz: 8ce84eb319b246156e83a8134087bb485b0ca01371a690c5793442a57cd9f3d778864e33351cb491b3ed526b07ba9a905a380ba7b79db6d016f43d0b2466b1e2
7
- data.tar.gz: e1b0db2b5d9b7e3b4b0373dedc405a024c99474989a42f7e60cf5ab04f2350dbe44091d4d8a9994393fc7b6f0296d502a62b569e103fad8596dea9b531b2958f
6
+ metadata.gz: 7ca7a02cbecc38cd15b7c622786e0eb0eeb06840133a941ac340cc07f2bc7da0981ea1da4e082e675a7541da2eea2e6cd7d303ca10b8d16327d85884c5a675e4
7
+ data.tar.gz: 5835d5a6e720753e2555cf0a8dc13a9752f610506bae4c41e1bf582cd75602b8f7940963ffc29b10f1b152e4b5097953c334e8289f5892a3723ddc518d48afb8
data/.gitignore CHANGED
@@ -3,7 +3,6 @@
3
3
  .bundle
4
4
  .config
5
5
  .yardoc
6
- Gemfile.lock
7
6
  InstalledFiles
8
7
  _yardoc
9
8
  coverage
data/Gemfile.lock ADDED
@@ -0,0 +1,21 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ sequence_logo (1.3.0)
5
+ bioinform (~> 0.3.1)
6
+ rmagick (~> 2.13)
7
+
8
+ GEM
9
+ remote: https://rubygems.org/
10
+ specs:
11
+ bioinform (0.3.1)
12
+ rmagick (2.16.0)
13
+
14
+ PLATFORMS
15
+ ruby
16
+
17
+ DEPENDENCIES
18
+ sequence_logo!
19
+
20
+ BUNDLED WITH
21
+ 1.16.1
@@ -30,20 +30,19 @@ def make_logo_alignment(aligned_motifs, options)
30
30
  alignment
31
31
  end
32
32
 
33
- def readlines_from_file_or_stdin(argv, options = {})
33
+ def readlines_from_file_or_stdin(argv, from_stdin: , **options)
34
34
  default_options = { source_not_given_msg: 'Specify input data',
35
35
  both_sources_given_msg: 'Specify either file with data or data itself in stdin, not both'}
36
36
  options = default_options.merge(options)
37
- ## This check fails when glue_logos is run via unicorn. It looks that unicorn daemon redefines isatty of child process
38
- # raise options[:both_sources_given_msg] if !argv.empty? && !$stdin.tty?
39
- if !argv.empty?
40
- lines = File.readlines(argv.first)
41
- elsif !$stdin.tty?
42
- lines = $stdin.readlines
37
+ raise ArgumentError, options[:both_sources_given_msg] if from_stdin && !argv.empty?
38
+ raise ArgumentError, options[:source_not_given_msg] if !from_stdin && argv.empty?
39
+ if from_stdin || argv == ['-']
40
+ $stdin.readlines
41
+ elsif argv.length == 1
42
+ File.readlines(argv.first)
43
43
  else
44
- raise ArgumentError, options[:source_not_given_msg]
44
+ raise ArgumentError, 'alignment should either be in stdin or in file, specified by arglist'
45
45
  end
46
- lines
47
46
  end
48
47
 
49
48
  def direct_output_filename(output_file)
@@ -65,7 +64,7 @@ begin
65
64
  Usage:
66
65
  glue_logos <output file> <alignment infos file>
67
66
  or
68
- <alignment infos file> | glue_logos <output file>
67
+ <alignment infos file> | glue_logos <output file> --from-stdin
69
68
 
70
69
  Alignment infos has the following format (tab separated)
71
70
  if motif names not specified - filenames are used as labels:
@@ -79,7 +78,7 @@ begin
79
78
  total_orientation = :direct
80
79
  default_options = { x_unit: 30, y_unit: 60, logo_shift: 300, scheme: 'nucl_simpa',
81
80
  icd_mode: :discrete, threshold_lines: false,
82
- text_size: 24, background_color: 'white' }
81
+ text_size: 24, background_color: 'white', from_stdin: false }
83
82
  cli = SequenceLogo::CLI.new(default_options)
84
83
  cli.instance_eval do
85
84
  parser.banner = doc
@@ -102,13 +101,18 @@ begin
102
101
  options[:background_fill] = Magick::SolidFill.new(v)
103
102
  end
104
103
  end
104
+
105
+ parser.on('--from-stdin') do
106
+ options[:from_stdin] = true
107
+ end
105
108
  end
106
109
  options = cli.parse_options!(argv)
107
110
 
108
111
  output_file = argv.shift
109
112
  raise ArgumentError, 'Specify output file' unless output_file
110
113
 
111
- alignment_lines = readlines_from_file_or_stdin(argv, source_not_given_msg: 'Specify alignment infos',
114
+ alignment_lines = readlines_from_file_or_stdin(argv, from_stdin: options[:from_stdin],
115
+ source_not_given_msg: 'Specify alignment infos',
112
116
  both_sources_given_msg: 'You can specify alignment infos either from file or from stdin. Don\'t use both sources simultaneously')
113
117
  alignment = make_logo_alignment(load_alignment_infos(alignment_lines), options)
114
118
 
@@ -16,9 +16,9 @@ def in_necessary_orientations(objects_to_render, orientation, logo_folder)
16
16
  end.flatten
17
17
  end
18
18
 
19
- def arglist_augmented_with_stdin(argv)
19
+ def arglist_augmented_with_stdin(argv, from_stdin:)
20
20
  result = argv
21
- result += $stdin.read.shellsplit unless $stdin.tty?
21
+ result += $stdin.read.shellsplit if from_stdin
22
22
  result
23
23
  end
24
24
 
@@ -35,7 +35,7 @@ begin
35
35
  Usage:
36
36
  sequence_logo [options] <motif file>...
37
37
  or
38
- ls pcm_folder/*.pcm | sequence_logo [options]
38
+ ls pcm_folder/*.pcm | sequence_logo --from-stdin [options]
39
39
  or
40
40
  sequence_logo --sequence <sequence>...
41
41
  or
@@ -47,7 +47,7 @@ begin
47
47
  default_options = { x_unit: 30, y_unit: 60, scheme: 'nucl_simpa',
48
48
  orientation: :direct, icd_mode: :discrete, threshold_lines: true,
49
49
  logo_folder: '.', background_color: 'white',
50
- from_dinucleotide: false }
50
+ from_dinucleotide: false, from_stdin: false }
51
51
  cli = SequenceLogo::CLI.new(default_options)
52
52
  cli.instance_eval do
53
53
  parser.banner = doc
@@ -73,6 +73,9 @@ begin
73
73
  options[:background_fill] = Magick::SolidFill.new(v)
74
74
  end
75
75
  end
76
+ parser.on('--from-stdin') {
77
+ options[:from_stdin] = true
78
+ }
76
79
 
77
80
  parser.on('--dinucleotide'){ options[:from_dinucleotide] = true }
78
81
  end
@@ -90,7 +93,7 @@ begin
90
93
 
91
94
  objects_to_render = []
92
95
  if options[:sequence]
93
- sequences = arglist_augmented_with_stdin(argv)
96
+ sequences = arglist_augmented_with_stdin(argv, from_stdin: options[:from_stdin])
94
97
  raise ArgumentError, 'Specify at least one sequence' if sequences.empty?
95
98
 
96
99
  sequences.each do |sequence|
@@ -98,7 +101,7 @@ begin
98
101
  name: File.join(logo_folder, sequence)}
99
102
  end
100
103
  elsif options[:sequence_w_snp]
101
- sequences = arglist_augmented_with_stdin(argv)
104
+ sequences = arglist_augmented_with_stdin(argv, from_stdin: options[:from_stdin])
102
105
  raise ArgumentError, 'Specify at least one sequence' if sequences.empty?
103
106
 
104
107
  sequences.each do |sequence_w_snp|
@@ -106,7 +109,7 @@ begin
106
109
  name: File.join(logo_folder, sequence_w_snp.gsub(/[\[\]\/]/, '_'))}
107
110
  end
108
111
  else
109
- filenames = arglist_augmented_with_stdin(argv)
112
+ filenames = arglist_augmented_with_stdin(argv, from_stdin: options[:from_stdin])
110
113
  raise ArgumentError, 'Specify at least one motif file' if filenames.empty?
111
114
 
112
115
  filenames.each do |filename|
@@ -1,3 +1,3 @@
1
1
  module SequenceLogo
2
- VERSION = "1.2.3"
2
+ VERSION = "1.3.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sequence_logo
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.3
4
+ version: 1.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ilya Vorontsov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-05-14 00:00:00.000000000 Z
11
+ date: 2018-04-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rmagick
@@ -51,6 +51,7 @@ extra_rdoc_files: []
51
51
  files:
52
52
  - ".gitignore"
53
53
  - Gemfile
54
+ - Gemfile.lock
54
55
  - LICENSE
55
56
  - README.md
56
57
  - Rakefile
@@ -118,7 +119,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
118
119
  version: '0'
119
120
  requirements: []
120
121
  rubyforge_project:
121
- rubygems_version: 2.5.1
122
+ rubygems_version: 2.7.3
122
123
  signing_key:
123
124
  specification_version: 4
124
125
  summary: Tool for drawing sequence logos of motifs