Re: [R-sig-phylo] Possible Bug in ape::read.tree

2017-09-05 Thread Mario José Marques-Azevedo
Hi, George,

Ape package do not read tree with singletons, yet. New version will read.
You can use readTree from phytools package for while.

Best regards,

Mario


On 5 Sep 2017 5:53 p.m., "George Vega Yon"  wrote:

Hi,

When trying to read this tree with the ape::read.tree function :

((AN14:0.000,AN15:0.000):0.000[&:Ev=0>1:S=
Homo-Pan:ID=AN13],(AN17:0.000,AN18:0.000):0.000[&:Ev=0>
1:S=Murinae:ID=AN16]):0.000[&:Ev=0>1:S=Euarchontoglires:
ID=AN12],(AN20:0.000,AN21:0.000):0.000[&:Ev=0>1:S=
Laurasiatheria:ID=AN19]):0.000[&:Ev=0>1:S=Eutheria:
ID=AN11],AN22:0.004):0.003[&:Ev=0>1:S=Mammalia:ID=AN10]
,AN23:0.000):0.014[&:Ev=0>1:S=Amniota:ID=AN9],AN24:0.
017):0.021[&:Ev=0>1:S=Tetrapoda:ID=AN8],((AN27:0.
066,AN28:0.052):0.010[&:Ev=1>0:ID=AN26],(AN30:0.031,
AN31:0.014):0.003[&:Ev=1>0:ID=AN29]):0.021[&:Ev=0>
1:S=Teleostei:ID=AN25]):0.147[&:Ev=0>1:S=Osteichthyes:
ID=AN7],AN32:0.194):0.104[&:Ev=0>1:S=Deuterostomia:ID=
AN6],((AN35:0.020,AN36:0.038):0.416[&:Ev=0>1:S=
Caenorhabditis:ID=AN34],((AN39:0.119,AN40:0.131):0.154[&
:Ev=0>1:S=Insecta:ID=AN38],AN41:0.317):0.104[&:Ev=0>
1:S=Arthropoda:ID=AN37]):0.118[&:Ev=0>1:S=Ecdysozoa:
ID=AN33],AN42:0.381):0.594[&:Ev=0>1:S=Bilateria:ID=AN5]
,AN43:2.000):0.414[&:Ev=0>1
 :S=Eumetazoa:ID=AN4],AN52:0.484,AN53:0.427):0.418[&:Ev=0>1:S=
Saccharomycetaceae:ID=AN51],AN54:0.733):0.320[&:Ev=0>
1:S=Saccharomycetaceae-Candida:ID=AN50],AN55:0.808):0.290[&:Ev=0>1:S=
Saccharomycetales:ID=AN49],(AN57:0.793,((AN60:0.206,AN61:
0.186):0.143[&:Ev=0>1:S=Sordariomyceta:ID=AN59],AN62:
0.331):0.332[&:Ev=0>1:S=Sordariomycetes-Leotiomycetes:
ID=AN58]):0.467[&:Ev=0>1:S=Pezizomycotina:ID=AN56]):0.
432[&:Ev=0>1:S=Pezizomycotina-Saccharomycotina:ID=AN48],
AN63:0.864):0.223[&:Ev=0>1:S=Ascomycota:ID=AN47],(AN65:
0.613,AN66:0.930,AN67:0.755):0.332[&:Ev=0>1:S=
Basidiomycota:ID=AN64]):0.618[&:Ev=0>1:S=Dikarya:ID=
AN46],((AN74:0.337,AN75:0.406):0.298[&:Ev=0>1:S=
Saccharomycetaceae:ID=AN73],AN76:0.578):0.338[&:Ev=0>
1:S=Saccharomycetaceae-Candida:ID=AN72],AN77:0.567):0.304[&:Ev=0>1:S=
Saccharomycetales:ID=AN71],(AN79:0.379,((AN82:0.398,AN83:
0.403):0.191[&:Ev=0>1:S=Sordariomyceta:ID=AN81],AN84:
0.366):0.140[&:Ev=0>1:S=Sordariomyc
 etes-Leotiomycetes:ID=AN80]):0.457[&:Ev=0>1:S=
Pezizomycotina:ID=AN78]):0.331[&:Ev=0>1:S=Pezizomycotina-
Saccharomycotina:ID=AN70],AN85:0.737):0.128[&:Ev=0>
1:S=Ascomycota:ID=AN69],(AN87:0.599,AN88:0.698):0.161[&:
Ev=0>1:S=Basidiomycota:ID=AN86]):0.398[&:Ev=0>1:S=
Dikarya:ID=AN68]):0.117[&:Ev=1>0:ID=AN45],(AN90:0.984,
AN91:0.893):0.158[&:Ev=1>0:ID=AN89]):0.262[&:Ev=0>
1:S=Fungi:ID=AN44]):0.394[&:Ev=0>1:S=Opisthokonts:ID=
AN3],(AN93:0.457,AN94:0.462):0.860[&:Ev=0>1:S=
Dictyostelium:ID=AN92]):0.301[&:Ev=0>1:S=Unikonts:ID=
AN2],AN95:1.440,AN96:2.000):2.000[&:Ev=0>1:S=Eukaryota:
ID=AN1])[&:Ev=1>0:ID=AN0];

I get the following error: "The tree has apparently singleton node(s):
cannot read tree file.  Reading Newick file aborted at tree no. 1",
which seems to be wrong since I can actually read this tree without problem
using rncl::read_newick_phylo and this online tool
http://etetoolkit.org/treeview/?treeid=6e192f20a3226cfdde219531cc533e
9f=ce443ed1e53858bf4e11d1e069c7a927

I understand that this particular tree is a modified version of Newick's
format, but this is the first time that I have problems reading this type
of tree.

Here my session info:

> devtools::session_info()
Session info

-
 setting  value
 version  R version 3.4.1 (2017-06-30)
 system   x86_64, linux-gnu
 ui   RStudio (1.0.143)
 language (EN)
 collate  en_US.UTF-8
 tz   America/New_York
 date 2017-09-05

Packages

-
 package * version date   source
 ape   4.1 2017-02-14 CRAN (R 3.4.0)
 assertthat0.2.0   2017-04-11 CRAN (R 3.4.0)
 base* 3.4.1   2017-06-30 local
 compiler  3.4.1   2017-06-30 local
 datasets* 3.4.1   2017-06-30 local
 devtools  1.13.3  2017-08-02 CRAN (R 3.4.0)
 digest0.6.12  2017-01-27 CRAN (R 3.4.0)
 graphics* 3.4.1   2017-06-30 local
 grDevices   * 3.4.1   2017-06-30 local
 grid  3.4.1   2017-06-30 local
 lattice   0.20-35 2017-03-25 CRAN (R 3.4.1)
 magrittr  1.5 2014-11-22 CRAN (R 3.4.0)
 memoise   1.1.0   2017-04-21 CRAN (R 3.4.0)
 methods * 3.4.1   2017-06-30 local
 nlme  3.1-131 2017-02-06 CRAN (R 3.4.1)
 parallel  3.4.1   2017-06-30 local
 prettyunits   1.0.2   2015-07-13 CRAN (R 3.4.1)
 progress  1.1.2   2016-12-14 CRAN (R 3.4.1)
 R62.2.2   2017-06-17 CRAN (R 3.4.0)
 Rcpp  0.12.12 2017-07-15 CRAN (R 3.4.0)
 rncl  0.8.2   2016-12-16 CRAN (R 3.4.1)
 stats   * 3.4.1   2017-06-30 local
 tools 3.4.1   2017-06-30 local
 utils   * 3.4.1   2017-06-30 local
 withr   

[R-sig-phylo] Nnode not equal to length of node.labels

2017-06-22 Thread Mario José Marques-Azevedo
Dears,

I'm studying the structure of phylo object to work it in my functions. I'm
using read.newick to read tree with singletons. I do not know why the
number of node is not equal to length of node.labels. For instance:

I have this tree (the same annexed):

tree<-read.newick(text='((a))A),(((b),(b1)))B)))C;')

tree$Nnode
[1] 10

tree$tip.label
[1] "a"  "b"  "b1"

tree$node.label
[1] "C" ""  ""  ""  "A" ""  "B"

length(tree$node.label)
[1] 7

Why nodes 11, 12 and 13 not have labels, even if it is "", in
tree$node.lable, but node 9 has?

Best regards,

Mario
___
R-sig-phylo mailing list - R-sig-phylo@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-sig-phylo
Searchable archive at http://www.mail-archive.com/r-sig-phylo@r-project.org/

[R-sig-phylo] Function to drop clade

2017-06-06 Thread Mario José Marques-Azevedo
Dears,

I restructured the function drop.clade to work with tree with/without
singletons. It return tree as it is, with/without singletons and is
independent of extract.clade and drop.tip.

Maybe it could be useful.

https://github.com/MarioJose/r-functions/blob/master/drop.clade.label/drop.clade.label.r

I leaned a lot working on it!

p.s.: drop.tip function remove singletons in the last code. Maybe this
behaviour could be optional with a new argument

All the best,

Mario


Mario José Marques-Azevedo
Ph.D. Candidate in Ecology
Department of Plant Biology, Institute of Biology
University of Campinas, Campinas, São Paulo, Brazil
https://github.com/mariojose <http://www.github.com/mariojose>

[[alternative HTML version deleted]]

___
R-sig-phylo mailing list - R-sig-phylo@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-sig-phylo
Searchable archive at http://www.mail-archive.com/r-sig-phylo@r-project.org/

Re: [R-sig-phylo] ape prop.part error malloc(): memory corruption

2017-06-01 Thread Mario José Marques-Azevedo
Dears,

I removed ape 4.1 and install 4.0 version and the problem with my tree is
gone. I can extract clade even my tree having singletons. But the problem
still occur in example tree, with new error message. With this tree:

A_1,A_2,)A,(B1,B2,B3)B)C,D1))),(E1,E2)E)D),(F1)F)R;

or

(A_1,A_2,)A,(B1,B2,B3)B)C,(D1,(E1,E2)E)D),(F1)F)G)R;

I have this new error:

Error in phy$edge[, 2] : incorrect number of dimensions

And with this tree:

((A_1,A_2,)A,(B1,B2,B3)B)C)ABC,((D1,(E1,E2)E)D))DE,(F1)F)G)R;

rsession running infinitely. I need force stop.

Best regards,

Mario



On 1 June 2017 at 16:13, Mario José Marques-Azevedo <mariojm...@gmail.com>
wrote:

> Dear Eliot,
>
> Thank you for your answer! My tree is ok, but to plot is needed to
> collapse singles, as you said.
>
> I use ape/phytools to manipulate my tree for date it after with phylocom.
> Then, all node is important, including single one. For this, collapse
> singletons do not work for me. For instance.
>
> This trees:
>
> A_1,A_2,)A,(B1,B2,B3)B)C,D1))),(E1,E2)E)D),(F1)F)R;
>
> (A_1,A_2,)A,(B1,B2,B3)B)C,(D1,(E1,E2)E)D),(F1)F)G)R;
>
> 'collapsed' is:
>
> A_1,A_2)A,(B1,B2,B3)B)C,(D1,(E1,E2)E)D),F1)R;
>
> I lost 'F' node, as I said early. D1 is now in 'right' way.
>
> This tree:
>
> ((A_1,A_2,)A,(B1,B2,B3)B)C)ABC,((D1,(E1,E2)E)D))DE,(F1)F)G)R;
>
> 'collapsed' is:
>
> A_1,A_2)A,(B1,B2,B3)B)C,(D1,(E1,E2)E)D)DE,F1)G;
>
> I lost 'F', 'R' and 'ABC' node.
>
> I have a big tree and some families has polytomies. Then, I extract each
> family (remove tips of this node), resolve plytomies, and I bind families
> tree again. After that, I date tree with phylocon. Phylocon use ages file
> with node age, then each node in my tree is important and collapse
> singletons would be a lost of information.
>
> I created one function to help me with extract node because I have issues
> using drop.tips (https://github.com/MarioJose/
> r-functions/blob/master/drop.clade.label/example.md).
>
> As I said, extract.node was working months ago. I don't know if this error
> is some updated that I did.
>
> Best regards,
>
> Mario
>
>
>
>
> On 1 June 2017 at 11:41, Eliot Miller <eliot.is...@gmail.com> wrote:
>
>> Your Newick string is badly formatted. See:
>>
>> plot(t1)
>>
>> Error in plot.phylo(t1) :
>>   there are single (non-splitting) nodes in your tree; you may need to
>> use collapse.singles()
>>
>> On Thu, Jun 1, 2017 at 1:31 AM, Mario José Marques-Azevedo <
>> mariojm...@gmail.com> wrote:
>>
>>> Dears,
>>>
>>> I'm using extract.clade from ape package and get some issues. I'm using
>>> phytools package to load tree with single clade like above:
>>>
>>> library(phytools)
>>>
>>> t1 <- read.newick(text='(A_1,A_2,)A,(B1,B2,B3)B)C,(D1,(E1,E2)
>>> E)D),(F1)F)G)R;')
>>>
>>> t2 <- read.newick(text='A_1,A_2,)A,(B1,B2,B3)B)C,D1))),(
>>> E1,E2)E)D),(F1)F)R;
>>>
>>> When I extract 'F' clade, for instance:
>>>
>>> c1 <- extract.clade(t1, 'F')
>>>
>>> or
>>>
>>> c2 <- extract.clade(t2, 'F')
>>>
>>> I have this error:
>>>
>>> Error in prop.part(phy) : attempt to set index 8/8 in SET_VECTOR_ELT
>>>
>>> I have one tree with mode than 300 tips. When I try extract any clade, I
>>> have the same error. If I repeat the command I have this one:
>>>
>>> *** Error in `/usr/lib/rstudio/bin/rsession': malloc(): memory
>>> corruption:
>>> 0x0a3aaa40 ***
>>>
>>> My configurations was:
>>>
>>> platform   x86_64-pc-linux-gnu
>>> arch   x86_64
>>> os linux-gnu
>>> system x86_64, linux-gnu
>>> language   R
>>> version.string R version 3.3.3 (2017-03-06)
>>>
>>> phytools (0.6.0), ape (4.1), maps (3.1.1), Rcpp (0.12.10)
>>>
>>> I try update R to 3.4 and recompile all my packages, but I get the same
>>> error.
>>>
>>> My new configurations:
>>>
>>> platform   x86_64-pc-linux-gnu
>>> arch   x86_64
>>> os linux-gnu
>>> system x86_64, linux-gnu
>>> language   R
>>> version.string R version 3.4.0 (2017-04-21)
>>>
>>> phytools (0.6.0), ape (4.1), maps (3.1.1), Rcpp (0.12.10)
>>>
>>> I don't know why I have this error if I can extract with the same
>>> commands
>>> some time ago.
>>>
>&

Re: [R-sig-phylo] ape prop.part error malloc(): memory corruption

2017-06-01 Thread Mario José Marques-Azevedo
Dear Eliot,

Thank you for your answer! My tree is ok, but to plot is needed to collapse
singles, as you said.

I use ape/phytools to manipulate my tree for date it after with phylocom.
Then, all node is important, including single one. For this, collapse
singletons do not work for me. For instance.

This trees:

A_1,A_2,)A,(B1,B2,B3)B)C,D1))),(E1,E2)E)D),(F1)F)R;

(A_1,A_2,)A,(B1,B2,B3)B)C,(D1,(E1,E2)E)D),(F1)F)G)R;

'collapsed' is:

A_1,A_2)A,(B1,B2,B3)B)C,(D1,(E1,E2)E)D),F1)R;

I lost 'F' node, as I said early. D1 is now in 'right' way.

This tree:

((A_1,A_2,)A,(B1,B2,B3)B)C)ABC,((D1,(E1,E2)E)D))DE,(F1)F)G)R;

'collapsed' is:

A_1,A_2)A,(B1,B2,B3)B)C,(D1,(E1,E2)E)D)DE,F1)G;

I lost 'F', 'R' and 'ABC' node.

I have a big tree and some families has polytomies. Then, I extract each
family (remove tips of this node), resolve plytomies, and I bind families
tree again. After that, I date tree with phylocon. Phylocon use ages file
with node age, then each node in my tree is important and collapse
singletons would be a lost of information.

I created one function to help me with extract node because I have issues
using drop.tips (https://github.com/MarioJose/r-functions/blob/master/drop.
clade.label/example.md).

As I said, extract.node was working months ago. I don't know if this error
is some updated that I did.

Best regards,

Mario




On 1 June 2017 at 11:41, Eliot Miller <eliot.is...@gmail.com> wrote:

> Your Newick string is badly formatted. See:
>
> plot(t1)
>
> Error in plot.phylo(t1) :
>   there are single (non-splitting) nodes in your tree; you may need to use
> collapse.singles()
>
> On Thu, Jun 1, 2017 at 1:31 AM, Mario José Marques-Azevedo <
> mariojm...@gmail.com> wrote:
>
>> Dears,
>>
>> I'm using extract.clade from ape package and get some issues. I'm using
>> phytools package to load tree with single clade like above:
>>
>> library(phytools)
>>
>> t1 <- read.newick(text='(A_1,A_2,)A,(B1,B2,B3)B)C,(D1,(E1,E2)
>> E)D),(F1)F)G)R;')
>>
>> t2 <- read.newick(text='A_1,A_2,)A,(B1,B2,B3)B)C,D1))),(
>> E1,E2)E)D),(F1)F)R;
>>
>> When I extract 'F' clade, for instance:
>>
>> c1 <- extract.clade(t1, 'F')
>>
>> or
>>
>> c2 <- extract.clade(t2, 'F')
>>
>> I have this error:
>>
>> Error in prop.part(phy) : attempt to set index 8/8 in SET_VECTOR_ELT
>>
>> I have one tree with mode than 300 tips. When I try extract any clade, I
>> have the same error. If I repeat the command I have this one:
>>
>> *** Error in `/usr/lib/rstudio/bin/rsession': malloc(): memory
>> corruption:
>> 0x0a3aaa40 ***
>>
>> My configurations was:
>>
>> platform   x86_64-pc-linux-gnu
>> arch   x86_64
>> os linux-gnu
>> system x86_64, linux-gnu
>> language   R
>> version.string R version 3.3.3 (2017-03-06)
>>
>> phytools (0.6.0), ape (4.1), maps (3.1.1), Rcpp (0.12.10)
>>
>> I try update R to 3.4 and recompile all my packages, but I get the same
>> error.
>>
>> My new configurations:
>>
>> platform   x86_64-pc-linux-gnu
>> arch   x86_64
>> os linux-gnu
>> system x86_64, linux-gnu
>> language   R
>> version.string R version 3.4.0 (2017-04-21)
>>
>> phytools (0.6.0), ape (4.1), maps (3.1.1), Rcpp (0.12.10)
>>
>> I don't know why I have this error if I can extract with the same commands
>> some time ago.
>>
>> I have the same error if I run in RStudio or in terminal. When I use
>> RStudio, it abort after the error.
>>
>> I try Google, but I don't found nothing that can help me.
>>
>> Thank you and best regards,
>>
>> Mario
>>
>>
>> 
>> Mario José Marques-Azevedo
>> Ph.D. Candidate in Ecology
>> Department of Plant Biology, Institute of Biology
>> University of Campinas, Campinas, São Paulo, Brazil
>> https://github.com/mariojose <http://www.github.com/mariojose>
>>
>> [[alternative HTML version deleted]]
>>
>> ___
>> R-sig-phylo mailing list - R-sig-phylo@r-project.org
>> https://stat.ethz.ch/mailman/listinfo/r-sig-phylo
>> Searchable archive at http://www.mail-archive.com/r-
>> sig-ph...@r-project.org/
>
>
>

[[alternative HTML version deleted]]

___
R-sig-phylo mailing list - R-sig-phylo@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-sig-phylo
Searchable archive at http://www.mail-archive.com/r-sig-phylo@r-project.org/

Re: [R-sig-phylo] ape prop.part error malloc(): memory corruption

2017-06-01 Thread Mario José Marques-Azevedo
Dear Klaus,

Thank you for your answer and good news that ape/phangorn will load tree
with singletons! Can I send the tree to your email?

My problem with collapse.singles is, for instance, when I have only one
genus/specie. I want the node name with genus and a tip name with species.
When I collapse, genus node name is removed. For instance:

This tree:

A_1,A_2,)A,(B1,B2,B3)B)C,D1))),(E1,E2)E)D),(F1)F)R;

when 'collapsed' will be:

A_1,A_2)A,(B1,B2,B3)B)C,(D1,(E1,E2)E)D),F1)R;

​Note that I lost node name 'F'.

I don't know why, but month ago I ran extract.clade of my tree without
problem. Maybe some update that I did, but I'm not sure.

Thank you again!

Best regards,
Mario

​
Mario José Marques-Azevedo
Ph.D. Candidate in Ecology
Department of Plant Biology, Institute of Biology
University of Campinas, Campinas, São Paulo, Brazil
https://github.com/mariojose​




On 1 June 2017 at 11:43, Mario José Marques-Azevedo <mariojm...@gmail.com>
wrote:

> Dear Klaus,
>
> Thank you for your answer and good news that ape/phangorn will load tree
> with singletons! Can I send the tree to your email?
>
> My problem with collapse.singles is, for instance, when I have only one
> genus/specie. I want the node name with genus and a tip name with species.
> When I collapse, genus node name is removed. For instance:
>
> This tree:
>
> A_1,A_2,)A,(B1,B2,B3)B)C,D1))),(E1,E2)E)D),(F1)F)R;
>
> when 'collapsed' will be:
>
> A_1,A_2)A,(B1,B2,B3)B)C,(D1,(E1,E2)E)D),F1)R;
>
> ​Note that I lost node name 'F'.
>
> I don't know why, but month ago I ran extract.clade of my tree without
> problem. Maybe some update that I did, but I'm not sure.
>
> Thank you again!
>
> Best regards,
>
> Mario
>
>
> ​....
> Mario José Marques-Azevedo
> Ph.D. Candidate in Ecology
> Department of Plant Biology, Institute of Biology
> University of Campinas, Campinas, São Paulo, Brazil
> https://github.com/mariojose​
>
>
>
>
> On 1 June 2017 at 11:17, Klaus Schliep <klaus.schl...@gmail.com> wrote:
>
>> Dear Mario,
>> Emmanuel and I are working to allow singletons in ape / phangorn. In the
>> next version will read the tree in with read.tree().
>> Can you send me your larger tree for testing purposes, as it is one which
>> would fail at the moment?
>> Regards,
>> Klaus
>>
>>
>>
>>
>>
>>
>> On Thu, Jun 1, 2017 at 8:51 AM, Klaus Schliep <klaus.schl...@gmail.com>
>> wrote:
>>
>>> Hi Mario,
>>>
>>> the problem with your tree is that it contains singleton (nodes of
>>> degree 2). Try collapse.singles() before using extract.clade().
>>>
>>> Cheers,
>>> Klaus
>>>
>>>
>>>
>>>
>>> On Thu, Jun 1, 2017 at 1:31 AM, Mario José Marques-Azevedo <
>>> mariojm...@gmail.com> wrote:
>>>
>>>> Dears,
>>>>
>>>> I'm using extract.clade from ape package and get some issues. I'm using
>>>> phytools package to load tree with single clade like above:
>>>>
>>>> library(phytools)
>>>>
>>>> t1 <- read.newick(text='(A_1,A_2,)A,(B1,B2,B3)B)C,(D1,(E1,E2)
>>>> E)D),(F1)F)G)R;')
>>>>
>>>> t2 <- read.newick(text='A_1,A_2,)A,(B1,B2,B3)B)C,D1))),(
>>>> E1,E2)E)D),(F1)F)R;
>>>>
>>>> When I extract 'F' clade, for instance:
>>>>
>>>> c1 <- extract.clade(t1, 'F')
>>>>
>>>> or
>>>>
>>>> c2 <- extract.clade(t2, 'F')
>>>>
>>>> I have this error:
>>>>
>>>> Error in prop.part(phy) : attempt to set index 8/8 in SET_VECTOR_ELT
>>>>
>>>> I have one tree with mode than 300 tips. When I try extract any clade, I
>>>> have the same error. If I repeat the command I have this one:
>>>>
>>>> *** Error in `/usr/lib/rstudio/bin/rsession': malloc(): memory
>>>> corruption:
>>>> 0x0a3aaa40 ***
>>>>
>>>> My configurations was:
>>>>
>>>> platform   x86_64-pc-linux-gnu
>>>> arch   x86_64
>>>> os linux-gnu
>>>> system x86_64, linux-gnu
>>>> language   R
>>>> version.string R version 3.3.3 (2017-03-06)
>>>>
>>>> phytools (0.6.0), ape (4.1), maps (3.1.1), Rcpp (0.12.10)
>>>>
>>>> I try update R to 3.4 and recompile all