veg / hyphy

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

Error:Matrix/List LHS expected but not supplied #1563

Closed biozhajie closed 1 year ago

biozhajie commented 1 year ago

Dear Dr. Pond

I wanted to conduct an analysis under RELAX model, allowing synonymous substitution rates to vary using general branch site models. But an error occurred, with the prompt: Error:Matrix/List LHS expected but not supplied. What's it mean, how to fix it?

Thanks,

Jie

spond commented 1 year ago

Dear @biozhajie,

Probably an internal bug. To help me figure out what this could be due to, can you please

1). Tell me which version of HyPhy you are using? 2). Provide all arguments that you are passing to RELAX?

Best, Sergei

biozhajie commented 1 year ago

Dear @biozhajie,

Probably an internal bug. To help me figure out what this could be due to, can you please

1). Tell me which version of HyPhy you are using? 2). Provide all arguments that you are passing to RELAX?

Best, Sergei

Dear @spond ,

  1. The version of the HyPhy is 2.5.39(MP) for linux on x86_64.

  2. I used the interactive mode (hyphy -i), and set step by step following promtions at each step: 1) I chose "selection analyses", 2) I chose "Relax" , 3) I chose Universal genetic code, 4) I imported the sequences file and tree file, 5) I chose test set branches, 6)I chose "permit only single nucleotide changes to occur instantly", 7)I set 3 omega rate classes, 8) Chose "Fit descriptive models and run relax test", 9)chose allowing synonymous rate to vary using branch-site models. If I chose other options (eg. HMM), the run will be ok.

  3. Besides, I have another two questions: whether different branches of test set will lead to a different Fit descriptive results or not? If I choose allowing synonymous rate to vary using branch-site models, will the synonymous rate be allowed to be different among each branch, or just allowed to be different between test set branches and reference set branches?

Thanks,

Jie

spond commented 1 year ago

Dear @biozhajie,

This issue does not seem to be present in the current release (2.5.46) in my limited testing

hyphy relax --alignment /Users/sergei/Development/hyphy/tests/hbltests/libv3/data/CD2.nex --syn-rates 3 --test GROUP1 --reference GROUP2 --srv Branch-site

....

### Fitting the general descriptive (separate k per branch) model

### * Log(L) = -3420.48, AIC-c =  6945.87 (51 estimated parameters)
* The following baseline rate distribution for branch-site combinations was inferred

|          Selection mode           |     dN/dS     |Proportion, %|               Notes               |
|-----------------------------------|---------------|-------------|-----------------------------------|
|        Negative selection         |     0.000     |   25.802    |                                   |
|        Negative selection         |     0.000     |   28.794    |       Collapsed rate class        |
|      Diversifying selection       |     2.202     |   45.404    |                                   |

* Branch-level relaxation or intensification parameter distribution has mean  1.75, median  1.50, and 95% of the weight in  0.07 -  5.39

### Fitting the alternative model to test K != 1
* Log(L) = -3424.68, AIC-c =  6954.27 (51 estimated parameters)
* Relaxation/intensification parameter (K) =     0.25
* The following rate distribution was inferred for **test** branches

|          Selection mode           |     dN/dS     |Proportion, %|               Notes               |
|-----------------------------------|---------------|-------------|-----------------------------------|
|        Negative selection         |     0.000     |   37.420    |                                   |
|        Negative selection         |     0.000     |   15.067    |       Collapsed rate class        |
|      Diversifying selection       |     1.515     |   47.513    |                                   |

* The following rate distribution was inferred for **reference** branches

|          Selection mode           |     dN/dS     |Proportion, %|               Notes               |
|-----------------------------------|---------------|-------------|-----------------------------------|
|        Negative selection         |     0.000     |   37.420    |                                   |
|        Negative selection         |     0.000     |   15.067    |       Collapsed rate class        |
|      Diversifying selection       |     5.183     |   47.513    |                                   |

* The following rate distribution for site-to-site **synonymous** rate variation was inferred

|               Rate                | Proportion, % |               Notes               |
|-----------------------------------|---------------|-----------------------------------|
|               0.865               |     0.000     |       Not supported by data       |
|               0.987               |     0.000     |       Not supported by data       |
|               1.000               |    100.000    |       Collapsed rate class        |

....

Could you please upgrade HyPhy and let me know if the issue is still present?

Re: your question 3.

1). The general descriptive model should not be affected by which test branches you choose, since it estimates a separate k for each branch.

2). The branch-site SRV option allows every branch to have different synonymous rates (from one of 3 or however many you specified classes), independent of other branches.

Best, Sergei

biozhajie commented 1 year ago

Dear @spond

I have tried update my version to current release (2.5.46), but when I do 'make install', an error occurred, with prompt as follow:

/root/Downloads/hyphy-2.5.46hf1/src/core/matrix_mult.cpp: In function ‘void _hy_matrix_multiply_4x4x2(double, double, double*, int, bool)’: /root/Downloads/hyphy-2.5.46hf1/src/core/matrix_mult.cpp:2624:10: error: ‘_mm256_loadu2_m128d’ was not declared in this scope B1 = _mm256_loadu2_m128d (B,B); // 00,01 x 2 ^~~~~~~ /root/Downloads/hyphy-2.5.46hf1/src/core/matrix_mult.cpp:2624:10: note: suggested alternative: ‘_mm256_loadu_si256’ B1 = _mm256_loadu2_m128d (B,B); // 00,01 x 2 ^~~~~~~ _mm256_loadu_si256 make[2]: [CMakeFiles/hyphy.dir/build.make:524: CMakeFiles/hyphy.dir/src/core/matrix_mult.cpp.o] Error 1 make[1]: [CMakeFiles/Makefile2:275: CMakeFiles/hyphy.dir/all] Error 2 make: *** [Makefile:146: all] Error 2

How to fix this error?

Best, Jie

spond commented 1 year ago

Dear @biozhajie,

This paricular issue is caused by having older GCC compilers (see https://github.com/veg/hyphy/issues/1564). You can resolve it by upgrading the compiler on your system (clang or GCC version 10 or higher). I also implemented a workaround for this issue in HyPhy version 2.5.47 (released last week).

Best, Sergei

biozhajie commented 1 year ago

Dear @biozhajie,

This paricular issue is caused by having older GCC compilers (see #1564). You can resolve it by upgrading the compiler on your system (clang or GCC version 10 or higher). I also implemented a workaround for this issue in HyPhy version 2.5.47 (released last week).

Best, Sergei

Dear @spond

The error still occurred, although I have tried for HyPhy version 2.5.47 and also have updated clang to version of 15.0.0 and gcc to version of 10.3.1. The error prompt is the same as before.

My linux release version is Centos stream release 8.

Best,

Jie

spond commented 1 year ago

Dear @biozhajie,

cmake may be using your default GCC compiler. Do the following

  1. Run gcc --version. This will likely show a version less than 10.3.1
  2. Find the command that calls a recent gcc (or clang). For example, I have something like gcc-12 to call GCC v 12. It could also be a full path to something like /opt/bin/gcc
  3. Go to your hyphy directory and do the following
rm -rf CMakeFiles CMakeCache.txt 
CC=/path/to/gcc CXX=/path/to/g++ cmake ./
make 

When cmake runs the configuration phase, it will output something like

-- The C compiler identification is GNU 12.2.0
-- The CXX compiler identification is GNU 12.2.0

Make sure that cmake "sees" the correct version of gcc or clang.

Best, Sergei

biozhajie commented 1 year ago

Dear @biozhajie,

cmake may be using your default GCC compiler. Do the following

  1. Run gcc --version. This will likely show a version less than 10.3.1
  2. Find the command that calls a recent gcc (or clang). For example, I have something like gcc-12 to call GCC v 12. It could also be a full path to something like /opt/bin/gcc
  3. Go to your hyphy directory and do the following
rm -rf CMakeFiles CMakeCache.txt 
CC=/path/to/gcc CXX=/path/to/g++ cmake ./
make 

When cmake runs the configuration phase, it will output something like

-- The C compiler identification is GNU 12.2.0
-- The CXX compiler identification is GNU 12.2.0

Make sure that cmake "sees" the correct version of gcc or clang.

Best, Sergei

Thanks Dr. @spond , I have resolved the problem according to your suggestions>

Best,

Jie