mesa_cli 0.1.3 → 0.1.4
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 +11 -0
 - data/bin/mesa +107 -1
 - metadata +3 -4
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA1:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 24acf53efdea5f730721936a3e65e7fb29eb7418
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 2d2ae1dcd9246f44e7023aa7289d4fa94370f2ec
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 2e9afe5c45473b6d4d57ecf0f24ebf32462919093b7f1c2fb8f723b709facaef4816533e29e7eb19ef6b5dc62a852e333c61cb81b762bdf693e77a61afb8490c
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 6f0c15eb122a8508109f344af0fe7b48eaf55ad772517658de2ffb69ea4f90a35e3b5a5680bd6e760a1d6e659f2236d016cbf7be67e598036bbeb96226be508f
         
     | 
    
        data/README.md
    CHANGED
    
    | 
         @@ -144,6 +144,17 @@ where `INLIST_TO_POINT_TO` is the name of an inlist that you would like your loc 
     | 
|
| 
       144 
144 
     | 
    
         
             
            The `-p` or `--pgstar` option will also point the main `inlist` file to the
         
     | 
| 
       145 
145 
     | 
    
         
             
            `INLIST_TO_POINT_TO` file for the `pgstar` namelist.
         
     | 
| 
       146 
146 
     | 
    
         | 
| 
      
 147 
     | 
    
         
            +
             
     | 
| 
      
 148 
     | 
    
         
            +
            ### rates
         
     | 
| 
      
 149 
     | 
    
         
            +
             
     | 
| 
      
 150 
     | 
    
         
            +
            To use, just type
         
     | 
| 
      
 151 
     | 
    
         
            +
             
     | 
| 
      
 152 
     | 
    
         
            +
                mesa rates REACTION_NAME OUTFILE
         
     | 
| 
      
 153 
     | 
    
         
            +
             
     | 
| 
      
 154 
     | 
    
         
            +
            where `REACTION_NAME` is the name of a reaction found in `$MESA_DIR/data/rates_data/cache`, without the preceding `r_` and optionally specifying `_1`, `_2`, or whatever other option is available. For instance, `c12_pg_n13` is a valid `REACTION_NAME`, as is `c12_pg_n13_1`. If no ending number is specified, `_1` is assumed.
         
     | 
| 
      
 155 
     | 
    
         
            +
             
     | 
| 
      
 156 
     | 
    
         
            +
            `OUTFILE` is an optional argument that specifies a file name where the rate data will be written to. If it is omitted, the data is simply written to the standard output.
         
     | 
| 
      
 157 
     | 
    
         
            +
             
     | 
| 
       147 
158 
     | 
    
         
             
            ### test
         
     | 
| 
       148 
159 
     | 
    
         | 
| 
       149 
160 
     | 
    
         
             
            To use, just type
         
     | 
    
        data/bin/mesa
    CHANGED
    
    | 
         @@ -270,6 +270,95 @@ class MyCLI < Thor 
     | 
|
| 
       270 
270 
     | 
    
         
             
                end
         
     | 
| 
       271 
271 
     | 
    
         
             
              end
         
     | 
| 
       272 
272 
     | 
    
         | 
| 
      
 273 
     | 
    
         
            +
              desc "rates REACTION [OUTFILE]", "Calculate and output out reaction rates"
         
     | 
| 
      
 274 
     | 
    
         
            +
             
     | 
| 
      
 275 
     | 
    
         
            +
              long_desc <<-LONGDESC
         
     | 
| 
      
 276 
     | 
    
         
            +
              Calls the `show_rates' executable from $MESA_DIR/rates/test for a REACTION
         
     | 
| 
      
 277 
     | 
    
         
            +
              found in $MESA_DIR/data/rates_data/cache. The reaction is whatever comes 
         
     | 
| 
      
 278 
     | 
    
         
            +
              after "r" or "r_" in the .bin file in the cache directory. You may also
         
     | 
| 
      
 279 
     | 
    
         
            +
              include the number at the end if you'd like to specify which rate to use, but 
         
     | 
| 
      
 280 
     | 
    
         
            +
              if none is provided, the "_1" option will be used.
         
     | 
| 
      
 281 
     | 
    
         
            +
             
     | 
| 
      
 282 
     | 
    
         
            +
              If OUTFILE is provided, the output is redirected to a text file with the name
         
     | 
| 
      
 283 
     | 
    
         
            +
              indicated by OUTFILE. Otherwise it is simply written to the screen.
         
     | 
| 
      
 284 
     | 
    
         
            +
             
     | 
| 
      
 285 
     | 
    
         
            +
              For example,\n
         
     | 
| 
      
 286 
     | 
    
         
            +
              
         
     | 
| 
      
 287 
     | 
    
         
            +
              >>> mesa rates c12_pg_n13
         
     | 
| 
      
 288 
     | 
    
         
            +
             
     | 
| 
      
 289 
     | 
    
         
            +
              will spit 10,000 lines of rate data to the terminal, while
         
     | 
| 
      
 290 
     | 
    
         
            +
             
     | 
| 
      
 291 
     | 
    
         
            +
              >>> mesa rates c12_pg_n13 c12_pg_n13.data
         
     | 
| 
      
 292 
     | 
    
         
            +
             
     | 
| 
      
 293 
     | 
    
         
            +
              will save the same data to a file, c12_pg_n13.data.
         
     | 
| 
      
 294 
     | 
    
         
            +
              LONGDESC
         
     | 
| 
      
 295 
     | 
    
         
            +
             
     | 
| 
      
 296 
     | 
    
         
            +
              def rates(reaction, outfile = '')
         
     | 
| 
      
 297 
     | 
    
         
            +
                return unless check_for_mesa_dir
         
     | 
| 
      
 298 
     | 
    
         
            +
                cache_dir = File.join(ENV['MESA_DIR'], 'data', 'rates_data', 'cache')
         
     | 
| 
      
 299 
     | 
    
         
            +
             
     | 
| 
      
 300 
     | 
    
         
            +
                # set up regular expressions; allow for specific ending number (first case)
         
     | 
| 
      
 301 
     | 
    
         
            +
                # or leave it ambiguous (second case)
         
     | 
| 
      
 302 
     | 
    
         
            +
                if reaction =~ /_\d$/
         
     | 
| 
      
 303 
     | 
    
         
            +
                  matcher = /r_?#{reaction}\.bin/
         
     | 
| 
      
 304 
     | 
    
         
            +
                else
         
     | 
| 
      
 305 
     | 
    
         
            +
                  matcher = /r_?#{reaction}_(\d)\.bin/
         
     | 
| 
      
 306 
     | 
    
         
            +
                end
         
     | 
| 
      
 307 
     | 
    
         
            +
             
     | 
| 
      
 308 
     | 
    
         
            +
                # search for matching cache files. Return if none are found and find lowest
         
     | 
| 
      
 309 
     | 
    
         
            +
                # "number" cache file if multiple matches are found
         
     | 
| 
      
 310 
     | 
    
         
            +
                rate_files = Dir.entries(cache_dir).select { |f| f =~ matcher }
         
     | 
| 
      
 311 
     | 
    
         
            +
                case rate_files.length
         
     | 
| 
      
 312 
     | 
    
         
            +
                when 0
         
     | 
| 
      
 313 
     | 
    
         
            +
                  puts "No reactions matching #{reaction} found in #{cache_dir}. Exiting."
         
     | 
| 
      
 314 
     | 
    
         
            +
                  return
         
     | 
| 
      
 315 
     | 
    
         
            +
                when 1
         
     | 
| 
      
 316 
     | 
    
         
            +
                  rate_file = File.join(cache_dir, reactions[0])
         
     | 
| 
      
 317 
     | 
    
         
            +
                else
         
     | 
| 
      
 318 
     | 
    
         
            +
                  min_num = nil
         
     | 
| 
      
 319 
     | 
    
         
            +
                  rate_file = nil
         
     | 
| 
      
 320 
     | 
    
         
            +
                  rate_files.each do |f|
         
     | 
| 
      
 321 
     | 
    
         
            +
                    if min_num.nil? or matcher.match(f).captures.first.to_i < min_num
         
     | 
| 
      
 322 
     | 
    
         
            +
                      min_num = matcher.match(f).captures.first.to_i
         
     | 
| 
      
 323 
     | 
    
         
            +
                      rate_file = File.join(cache_dir, f)
         
     | 
| 
      
 324 
     | 
    
         
            +
                    end
         
     | 
| 
      
 325 
     | 
    
         
            +
                  end
         
     | 
| 
      
 326 
     | 
    
         
            +
                end
         
     | 
| 
      
 327 
     | 
    
         
            +
             
     | 
| 
      
 328 
     | 
    
         
            +
                data = ''
         
     | 
| 
      
 329 
     | 
    
         
            +
                # Execute the `show_rates` function and capture the output
         
     | 
| 
      
 330 
     | 
    
         
            +
                visit File.join(ENV['MESA_DIR'], 'rates', 'test') do
         
     | 
| 
      
 331 
     | 
    
         
            +
                  data = `./show_rates #{rate_file}`
         
     | 
| 
      
 332 
     | 
    
         
            +
                end
         
     | 
| 
      
 333 
     | 
    
         
            +
             
     | 
| 
      
 334 
     | 
    
         
            +
                # scrub the output for poorly formatted floats
         
     | 
| 
      
 335 
     | 
    
         
            +
             
     | 
| 
      
 336 
     | 
    
         
            +
                lines = data.split("\n")[4..-1]
         
     | 
| 
      
 337 
     | 
    
         
            +
                t8 = []
         
     | 
| 
      
 338 
     | 
    
         
            +
                sigv = []
         
     | 
| 
      
 339 
     | 
    
         
            +
                float_matcher = /(\d\.\d+)D?(\-|\+)(\d+)/i
         
     | 
| 
      
 340 
     | 
    
         
            +
                lines.each do |line|
         
     | 
| 
      
 341 
     | 
    
         
            +
                  new_t8, new_sigv = line.split
         
     | 
| 
      
 342 
     | 
    
         
            +
                  new_t8 =~ float_matcher
         
     | 
| 
      
 343 
     | 
    
         
            +
                  t8 << $1.to_f * (10**(exp_sign($2) * $3.to_i))
         
     | 
| 
      
 344 
     | 
    
         
            +
                  new_sigv =~ float_matcher
         
     | 
| 
      
 345 
     | 
    
         
            +
                  sigv << $1.to_f * (10**(exp_sign($2) * $3.to_i))
         
     | 
| 
      
 346 
     | 
    
         
            +
                end
         
     | 
| 
      
 347 
     | 
    
         
            +
                lines = t8.zip(sigv).map do |pair|
         
     | 
| 
      
 348 
     | 
    
         
            +
                  sprintf("%-26.16e", pair[0]) + sprintf("%-26.16e", pair[1])
         
     | 
| 
      
 349 
     | 
    
         
            +
                end
         
     | 
| 
      
 350 
     | 
    
         
            +
                data = lines.join("\n")
         
     | 
| 
      
 351 
     | 
    
         
            +
             
     | 
| 
      
 352 
     | 
    
         
            +
                # save output to screen or to file
         
     | 
| 
      
 353 
     | 
    
         
            +
                if outfile.empty?
         
     | 
| 
      
 354 
     | 
    
         
            +
                  puts data
         
     | 
| 
      
 355 
     | 
    
         
            +
                else
         
     | 
| 
      
 356 
     | 
    
         
            +
                  File.open(outfile, 'w') do |f|
         
     | 
| 
      
 357 
     | 
    
         
            +
                    f.puts data
         
     | 
| 
      
 358 
     | 
    
         
            +
                  end
         
     | 
| 
      
 359 
     | 
    
         
            +
                end
         
     | 
| 
      
 360 
     | 
    
         
            +
              end
         
     | 
| 
      
 361 
     | 
    
         
            +
             
     | 
| 
       273 
362 
     | 
    
         
             
              private
         
     | 
| 
       274 
363 
     | 
    
         
             
              def create_ms_file(inlist_name, ms_name)
         
     | 
| 
       275 
364 
     | 
    
         
             
                ms_name += '.rb' unless ms_name[-3..-1] == '.rb'
         
     | 
| 
         @@ -326,7 +415,6 @@ class MyCLI < Thor 
     | 
|
| 
       326 
415 
     | 
    
         | 
| 
       327 
416 
     | 
    
         
             
                  # adjust MESA_DIR location and document changes
         
     | 
| 
       328 
417 
     | 
    
         
             
                  lines_to_fix.reverse.each do |i|
         
     | 
| 
       329 
     | 
    
         
            -
                    have_fixed = true
         
     | 
| 
       330 
418 
     | 
    
         
             
                    line = contents[i]
         
     | 
| 
       331 
419 
     | 
    
         
             
                    contents[i].sub!(/=.*/, "=#{dir_name}")
         
     | 
| 
       332 
420 
     | 
    
         
             
                    contents.insert(i, '# ' + "Changed MESA_DIR to #{dir_name} on " +
         
     | 
| 
         @@ -363,6 +451,24 @@ class MyCLI < Thor 
     | 
|
| 
       363 
451 
     | 
    
         
             
                  "not a supported shell."
         
     | 
| 
       364 
452 
     | 
    
         
             
                end
         
     | 
| 
       365 
453 
     | 
    
         
             
              end
         
     | 
| 
      
 454 
     | 
    
         
            +
             
     | 
| 
      
 455 
     | 
    
         
            +
              def visit(new_dir)
         
     | 
| 
      
 456 
     | 
    
         
            +
                old_dir = Dir.pwd
         
     | 
| 
      
 457 
     | 
    
         
            +
                Dir.chdir(new_dir)
         
     | 
| 
      
 458 
     | 
    
         
            +
                yield
         
     | 
| 
      
 459 
     | 
    
         
            +
                Dir.chdir(old_dir)
         
     | 
| 
      
 460 
     | 
    
         
            +
              end
         
     | 
| 
      
 461 
     | 
    
         
            +
             
     | 
| 
      
 462 
     | 
    
         
            +
              def exp_sign(str)
         
     | 
| 
      
 463 
     | 
    
         
            +
                case str
         
     | 
| 
      
 464 
     | 
    
         
            +
                when '-'
         
     | 
| 
      
 465 
     | 
    
         
            +
                  return -1
         
     | 
| 
      
 466 
     | 
    
         
            +
                when '+'
         
     | 
| 
      
 467 
     | 
    
         
            +
                  return 1
         
     | 
| 
      
 468 
     | 
    
         
            +
                else
         
     | 
| 
      
 469 
     | 
    
         
            +
                  raise "invalid sign: #{exp_sign}"
         
     | 
| 
      
 470 
     | 
    
         
            +
                end
         
     | 
| 
      
 471 
     | 
    
         
            +
              end
         
     | 
| 
       366 
472 
     | 
    
         
             
            end
         
     | 
| 
       367 
473 
     | 
    
         | 
| 
       368 
474 
     | 
    
         
             
            MyCLI.start(ARGV)
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,14 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: mesa_cli
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0.1. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.1.4
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - William Wolf
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date:  
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2017-01-31 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              name: thor
         
     | 
| 
         @@ -91,9 +91,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement 
     | 
|
| 
       91 
91 
     | 
    
         
             
                  version: '0'
         
     | 
| 
       92 
92 
     | 
    
         
             
            requirements: []
         
     | 
| 
       93 
93 
     | 
    
         
             
            rubyforge_project: 
         
     | 
| 
       94 
     | 
    
         
            -
            rubygems_version: 2. 
     | 
| 
      
 94 
     | 
    
         
            +
            rubygems_version: 2.6.8
         
     | 
| 
       95 
95 
     | 
    
         
             
            signing_key: 
         
     | 
| 
       96 
96 
     | 
    
         
             
            specification_version: 4
         
     | 
| 
       97 
97 
     | 
    
         
             
            summary: Mesa CLI - a command line interface for simple MESA tasks.
         
     | 
| 
       98 
98 
     | 
    
         
             
            test_files: []
         
     | 
| 
       99 
     | 
    
         
            -
            has_rdoc: false
         
     |