veg / hyphy

HyPhy: Hypothesis testing using Phylogenies
http://www.hyphy.org
Other
211 stars 69 forks source link

Skipped user prompt in SM-2019.bf #1700

Closed ArtPoon closed 5 months ago

ArtPoon commented 6 months ago

Version info:

HYPHY 2.5.60(MP) for Linux on x86_64 x86 AVX SIMD with FMA3 zlib (v1.2.11) commit 6282dbbe0b1cfc6be110ca2d2ba858ab86e4df93 OS: Ubuntu 22.04.4

Steps to reproduce:

  1. Launch hyphy from source directory
  2. Select (7) Compartmentalization
  3. Select (5) Perform a classic and structured Slatkin-Maddison test for the number migrations.
  4. Enter tests/hbltests/UnitTests/HBLCommands/res/EU3031.nwk when prompted for tree file.

Outcome:

Analysis:

line 43 in SM-2019.bf

sm.group_count = io.PromptUser(">How many branch classes are there", 2, 2, sm.leaf_count, TRUE);

According to libv3/IOFunctions.bf:

/**
 * @name io.PromptUser
 * @param prompt
 * @param default
 * @param lower_bound
 * @param upper_bound
 * @param is_integer
 */
lfunction io.PromptUser(prompt,
    default, lower_bound, upper_bound, is_integer) {

Note sm.leaf_count (upper bound)) is reported as 3031. Nothing seems unusual here.

spond commented 5 months ago

Dear @ArtPoon,

Thanks for this highly detailed issue report. The strange behavior arises because the Slatkin-Maddison analysis has been ported to use CLI keyword arguments:

hyphy % hyphy sm --help

Available analysis command line options
---------------------------------------
Use --option VALUE syntax to invoke
If a [reqired] option is not provided on the command line, the analysis will prompt for its value
[conditionally required] options may or not be required based on the values of other options

tree [required]
    The Newick tree string defining the topology to use for testing

groups
    The number of compartments to test
    default value: 2

"description-"+(sm.i+1) [computed at run time] [required]
    "Description for sequences in compartment "+(sm.i+1) [computed at run time]

"regexp-"+(sm.i+1) [computed at run time] [required]
    "Regular expression to select the branches in compartment _"+sm.tag+"_" [computed at run time]

replicates
    The number of bootstrap replicates
    default value: 1000

weight
    Probability of branch selection for structured permutation [0-1]; 0 = classical Slatkin-Maddison, 1 = fully structured
    default value: 0.2

use-bootstrap
    Use bootstrap weights to respect well supported clades
    default value: Yes

output
    Write the JSON file here (default is to save to the same path as the tree file + '_SM.json')
    default value: sm.json_file [computed at run time]

In particular, the number of groups is given a default value of 2 which will be consumed in the interactive mode, unless you specify the -I (capital eye) flag, when you call HyPhy. So, if you do hyphy -I and then follow your workflow, then all prompts will be made.

Best, Sergei

PS You can also specify some (or all) of the analysis arguments via CLI flags, e.g.

$hyphy sm --groups 3 

(the rest of the no-default-value prompts will be via `stdin`)
ArtPoon commented 5 months ago

Wow I'm so old that I was trying to run the CLI the ancient way. Thanks for the correction :-)