Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

phytop #51926

Open
wants to merge 4 commits into
base: master
Choose a base branch
from
Open

phytop #51926

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
674 changes: 674 additions & 0 deletions recipes/phytop/LICENSE

Large diffs are not rendered by default.

9 changes: 9 additions & 0 deletions recipes/phytop/PhyTop.egg-info/PKG-INFO
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
Metadata-Version: 2.1
Name: PhyTop
Version: 0.3
Summary: PhyTop: visualing species tree from ASTRAL
Home-page: https://github.com/zhangrengang/phytop/
Author: Zhang, Ren-Gang and Wang, Zhao-Xuan
License: GPL-3.0
Requires-Python: >=3.6
License-File: LICENSE
14 changes: 14 additions & 0 deletions recipes/phytop/PhyTop.egg-info/SOURCES.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
LICENSE
README.md
setup.py
PhyTop.egg-info/PKG-INFO
PhyTop.egg-info/SOURCES.txt
PhyTop.egg-info/dependency_links.txt
PhyTop.egg-info/entry_points.txt
PhyTop.egg-info/top_level.txt
src/Astral.py
src/RunCmdsMP.py
src/__init__.py
src/__version__.py
src/plot.py
src/small_tools.py
1 change: 1 addition & 0 deletions recipes/phytop/PhyTop.egg-info/dependency_links.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@

2 changes: 2 additions & 0 deletions recipes/phytop/PhyTop.egg-info/entry_points.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
[console_scripts]
phytop = src.plot:main
Comment on lines +1 to +2
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codebase verification

⚠️ Potential issue

Remove the PhyTop.egg-info directory and add entry_points to meta.yaml

The .egg-info directory is confirmed to be a build artifact that should not be committed. The meta.yaml file needs to be updated to include the entry point configuration.

Please make these changes:

  1. Remove the recipes/phytop/PhyTop.egg-info directory
  2. Add the following under the build section in meta.yaml:
build:
  noarch: python
  number: 1
  entry_points:
    - phytop = src.plot:main
🔗 Analysis chain

Remove this generated file and define entry points in meta.yaml instead.

The .egg-info directory contains build artifacts that should not be committed to the repository. Instead, the console script entry point should be defined in the meta.yaml file under the build section.

Here's how to properly define the entry point in meta.yaml:

build:
  entry_points:
    - phytop = src.plot:main

Please:

  1. Remove the entire PhyTop.egg-info directory
  2. Add the entry point definition to meta.yaml

Let me check the meta.yaml file content to provide accurate guidance.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Verify if meta.yaml already has entry points defined
rg -A 5 "entry_points:" recipes/phytop/meta.yaml

# Check for other egg-info files that should be removed
fd -g "*.egg-info" recipes/phytop

Length of output: 116


Script:

#!/bin/bash
# Check meta.yaml content
cat recipes/phytop/meta.yaml

Length of output: 5099

1 change: 1 addition & 0 deletions recipes/phytop/PhyTop.egg-info/top_level.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
src
190 changes: 190 additions & 0 deletions recipes/phytop/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,190 @@

### Introduction ###
We defined the ILS/IH index to represent the degree of Incomplete lineage sorting (ILS) and introgression (IH) among lineages. This tool can quickly detect and visualize ILS/IH index between lineages of tree results run by ASTRAL option -u 2 or -t -2, with short running time, helping users to preliminatively determine ILS and IH and screen lineages for further analysis.For more details of ILS/IH index, please see https://www.biorxiv.org/content/10.1101/2024.09.02.610893v1.
Any nodes of phylogenetic tree can be regarded as consisting of two sister groups and one outgroup, and these three lineages can form three topologies q1, q2, q3 (as shown in the figure below),The topology with the highest proportion is denoted as q1. ILS/IH index is calculated based on the number and proportion of these topologies.
![q123](example_data/legend_forintroduce/q123.png)
**Figure. The three topological structures of gene trees** Any combination of three lineages produces three topologies, When the ILS index is at its maximum of 100% and there is no IH, we expect q1 = q2 = q3 = 100%/3. When the IH index reaches 50% and there is no ILS, q1 = q2 = 50% is expected.

### Quick install and start ###
Download and install Phytop:
```
git clone https://github.com/zhangrengang/phytop
cd phytop

# install
conda env create -f phytop.yaml
conda activate phytop
python setup.py install
```

Start for example data:
```
cd example_data
```
Get barcharts:
```
phytop astral.tree
```

### INPUT ###
When runing ASTRAL, please use `-u 2` (for [C++ version](https://github.com/chaoszhang/ASTER), including `astral`, `astral-pro` and `astral-hybrid` etc.) or
`-t 2` (for [JAVA version](https://github.com/smirarab/ASTRAL/), including ASTRAL-III and ASTRAL-MP) option. Then, the output species tree from ASTRAL can be used as input to `phytop`.
### Outputs ###
```
├── /tmp # Transition File (unused)
├── *.pdf # Visualization of the tree file generated by astral
├── *.info.tsv # The specific value of each node
```

The block diagram in PDF shows the ratio of q1, q2 and q3 of nodes. q2 and q3 are topologies that conflict with q1. Higher ILS-i or IH-i represent stronger ILS or IH respectively. In this example, there are strong ILS and IH among Juglans nigra, Juglans mandshurica, and (Juglans regia, Juglans sigillata). Since q2 is much larger than q3, we can roughly infer that there is strong IH from Juglans nigra and Juglans mandshurica to (Juglans regia, Juglans sigillata). There are almost no ILS and IH among Juglans regia, Juglans sigillata and outgroup, and this node can be considered as a well-resolved node. The below is an output figures of Phytop with default parameters:
![bar](example_data/legend_forintroduce/astral.tree.bar-1.png)
**Figure. Visual result of Phytop on example data with default parameters.** n represents the number of gene trees, P is the p-value of χ2 test to check whether the number of topologies q2 and q3 are equal, ILS-i and IH-i represent the calculated ILS index and IH index respectively, and ILS-e and IH-e represent the proportion of gene tree topological incongruence that can be explained by the ILS and IH, respectively.


### Usage ###
```
usage: phytop [-h] [-alter NEWICK] [-g NEWICK] [-align] [-cp] [-branch_size BRANCH_SIZE] [-leaf_size LEAF_SIZE] [-sort]
[-notext] [-figsize FIGSIZE] [-fontsize FONTSIZE] [-figfmt FIGFMT] [-polytomy_test] [-pie] [-pie_size PIE_SIZE]
[-pie_fold PIE_FOLD] [-bl] [-test [TAXON/FILE [TAXON/FILE ...]]] [-astral_bin STR] [-outgroup STR]
[-clades FILE] [-collapse [TAXON/FILE [TAXON/FILE ...]]] [-onshow TAXON/FILE [TAXON/FILE ...]]
[-noshow TAXON/FILE [TAXON/FILE ...]] [-subset TAXON/FILE [TAXON/FILE ...]] [-pre STR] [-tmp DIR]
NEWICK

Visualizing ILS/IH signals on species tree from ASTRAL.

optional arguments:
-h, --help show this help message and exit

Input:

NEWICK Species tree output by ASTRAL (using option `-u 2` for C++ versions and `-t 2` for JAVA versions)
[required]
-alter NEWICK Show the tree (e.g. a timetree) instead of the ASTRAL tree (their topologies MUST be identical)
[default=None]
-g NEWICK, -genetrees NEWICK
gene trees for branch lengths in TEST mode [default=None]

Tree options:

-align Align tips [default=False]
-cp, -concordance_percent
Show gene-species trees concordance percent at inner nodes instead of PP [default=False]
-branch_size BRANCH_SIZE
Font size of text in branch [default=48]
-leaf_size LEAF_SIZE Font size of leaf name [default=60]

Barcharts options:

-sort Sort q1, q2 and q3, which will miss the directionality [default=False]
-notext Do not draw text on the barcharts [default=False]
-figsize FIGSIZE Figure size of barcharts [default=3]
-fontsize FONTSIZE Font size of text in barcharts [default=13]
-figfmt FIGFMT Figure format of barcharts in tmpdir [default=png]
-polytomy_test Test for polytomies [default=False]

Piecharts options:

-pie, -pie_chart Use piechart instead of barchart [default=False]
-pie_size PIE_SIZE Size of Piecharts [default=30]
-pie_fold PIE_FOLD Fold of font size between Barcharts and Piecharts [default=6]
-bl Branch lengths to check [default=False]

Branch length (BL) options:

Test mode:

-test [TAXON/FILE [TAXON/FILE ...]]
Test four-taxon (the first is outgroup and others are sampled for three ingroups) [default=None]
-astral_bin STR ASTRAL command ('astral-pro', 'astral-hybrid', ...) [default=astral-pro]
-outgroup STR Outgroup [default: the first of `-test`]

Clade operateion:

-clades FILE Difinition of clades [default=None]
-collapse [TAXON/FILE [TAXON/FILE ...]]
Collapse clades [default=None]
-onshow TAXON/FILE [TAXON/FILE ...]
Only show charts on these inner nodes [default=None]
-noshow TAXON/FILE [TAXON/FILE ...]
Don't show charts on these inner nodes [default=None]
-subset TAXON/FILE [TAXON/FILE ...]
Show a subset clade with their MCRA [default=None]

Output:

-pre STR, -prefix STR
Prefix for output [default=None]
-tmp DIR, -tmpdir DIR
Temporary directory [default=tmp]
```

Get barcharts with collapse for clades:
```
phytop astral.tree -clades setcladefile -collapse
```
![pie](example_data/legend_forintroduce/astral.tree.bar.collepse-1.png)
**Figure. Visual result of Phytop on example data with collapse for clades.** Juglans regia and Juglans sigillata were collepse for Juglans1

Get barcharts displays a selection of nodes:
```
phytop astral.tree -clades setcladefile -onshow Juglans1
```
![pie](example_data/legend_forintroduce/astral.tree.bar.onshow-1.png)
**Figure. Visual result of Phytop on example data with a subset of nodes.** Only the information about the specified node is displayed

Get barcharts displays a selection of nodes:
```
phytop astral.tree -clades setcladefile -noshow Juglans1
```
![pie](example_data/legend_forintroduce/astral.tree.bar.noshow-1.png)
**Figure. Visual result of Phytop on example data with specified node information not displayed.** The information about the specified node is not displayed

Get piecharts:
```
phytop astral.tree -pie -cp
```
![pie](example_data/legend_forintroduce/astral.tree.pie-1.png)
**Figure. Visual result of Phytop on example data with "-pie -cp" parameters.** In the pie chart, only the proportions of the q1 topologies are shown

Customizing the visualization output:
```
phytop astral.tree -align
```
![pie](example_data/legend_forintroduce/astral.tree_align-1.png)
**Figure. Visual result of Phytop on example data with "-align" parameter.** This parameter can be used to make leaf names aligned.

```
phytop astral.tree -subset Juglans_nigra Juglans_sigillata Juglans_regia
```
![pie](example_data/legend_forintroduce/astral.tree-subset_Juglans_nigraJuglans_sigillataJuglans_regia-1.png)
**Figure. Visual result of Phytop on example data with "-branchsize" parameter. "-branchsize 20" in this example.** This parameter can be used to select subset of leaves.

```
phytop astral.tree -branch_size 20
```
![pie](example_data/legend_forintroduce/astral.tree_branchsize20-1.png)
**Figure. Visual result of Phytop on example data with "-branch_size" parameter. "-branch_size 20" in this example.** This parameter can be used to adjust font size of text in branch.

```
phytop astral.tree -notext
```
![pie](example_data/legend_forintroduce/astral.tree_notext-1.png)
**Figure. Visual result of Phytop on example data with "-notext" parameter.** Use this parameter to make the text of the barplots not display.

```
phytop astral.tree -figsize 1 -fontsize 4
```
![pie](example_data/legend_forintroduce/astral.tree-figsize1-fontsize4-1.png)
**Figure. Visual result of Phytop on example data with "-figsize" and "-fontsize" parameters. "-figsize 1 -fontsize 4" in this example.** These parameters can be used to adjust the image size and font size of the barplots.

```
phytop astral.tree -leaf_size 20
```
![pie](example_data/legend_forintroduce/astral.tree-leaf_size20-1.png)
**Figure. Visual result of Phytop on example data with "-leaf_size". "-leaf_size 20" in this example.** This parameter can be used to adjust font size of font size of leaf names.

```
phytop astral.tree -pie -pie_size 20
```
![pie](example_data/legend_forintroduce/astral.tree-pie-pie_size20-1.png)
**Figure. Visual result of Phytop on example data with "-pie_size". "-pie -pie_size 20" in this example.** This parameter can be used to adjust font size of of piecharts.
3 changes: 3 additions & 0 deletions recipes/phytop/build.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
#!/bin/bash
#python -m pip install --no-deps --ignore-installed .
python setup.py install
1 change: 1 addition & 0 deletions recipes/phytop/example_data/astral.tree
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
((((Juglans_regia,Juglans_sigillata)'[pp1=1.000000;pp2=0.000000;pp3=0.000000;f1=10683.488204;f2=134.779519;f3=111.226872]':3.384433,Juglans_nigra)'[pp1=1.000000;pp2=0.000000;pp3=0.000000;f1=4200.457879;f2=3923.074552;f3=1740.664944]':0.149287,Juglans_mandshurica),Carya_illinoinensis);
1 change: 1 addition & 0 deletions recipes/phytop/example_data/astral.tree.info.tsv
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
node n p_value q1 q2 q3 ILS_explain IH_explain ILS_index IH_index
Binary file added recipes/phytop/example_data/astral.tree.pdf
Binary file not shown.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file not shown.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 2 additions & 0 deletions recipes/phytop/example_data/setcladefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
Juglans1 Juglans_regia,Juglans_sigillata
outgroup Carya_illinoinensis
159 changes: 159 additions & 0 deletions recipes/phytop/meta.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,159 @@
package:
name: phytop
version: 1.0

source:
#git_url: https://github.com/zhangrengang/phytop.git
path: /media/nfs3/qxc2/biosoftware/phytop_condabuild/phytop
Comment on lines +5 to +7
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Source configuration needs to use git_url instead of local path

The source configuration currently uses a local filesystem path which won't work in Bioconda's build system. For reproducible builds, Bioconda requires packages to be built from version-controlled sources.

Please uncomment the git_url line and remove the path line:

source:
-  #git_url: https://github.com/zhangrengang/phytop.git
-  path: /media/nfs3/qxc2/biosoftware/phytop_condabuild/phytop
+  git_url: https://github.com/zhangrengang/phytop.git
+  git_rev: v1.0  # Add this to pin to specific version
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
source:
#git_url: https://github.com/zhangrengang/phytop.git
path: /media/nfs3/qxc2/biosoftware/phytop_condabuild/phytop
source:
git_url: https://github.com/zhangrengang/phytop.git
git_rev: v1.0 # Add this to pin to specific version

shang-hongyun marked this conversation as resolved.
Show resolved Hide resolved

build:
noarch: python
number: 1
#string: pyhdfd78af_0
Comment on lines +9 to +12
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Remove commented build string and consider adding run_exports

  1. The commented build string can be removed as it's not needed.
  2. As mentioned in the PR description, consider adding a run_exports section to prevent downstream recipe expectation violations.
build:
  noarch: python
  number: 1
-  #string: pyhdfd78af_0
+  run_exports:
+    - {{ pin_subpackage('phytop', max_pin='x.x') }}
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
build:
noarch: python
number: 1
#string: pyhdfd78af_0
build:
noarch: python
number: 1
run_exports:
- {{ pin_subpackage('phytop', max_pin='x.x') }}


requirements:
build:
- python =3.8
- _libgcc_mutex=0.1=conda_forge
- _openmp_mutex=4.5=2_gnu
- alsa-lib=1.2.3.2=h166bdaf_0
- biopython=1.81=py38h1de0b5d_0
- brotli=1.0.9=h166bdaf_8
- brotli-bin=1.0.9=h166bdaf_8
- ca-certificates=2023.5.7=hbcca054_0
- certifi=2023.5.7=pyhd8ed1ab_0
- charset-normalizer=3.1.0=pyhd8ed1ab_0
- contourpy=1.0.7=py38hfbd4bf9_0
- cycler=0.11.0=pyhd8ed1ab_0
- dbus=1.13.6=h48d8840_2
- ete3=3.1.2=pyh9f0ad1d_0
- expat=2.5.0=hcb278e6_1
- fontconfig=2.14.2=h14ed4e7_0
- fonttools=4.39.4=py38h01eb140_0
- freetype=2.12.1=hca18f0e_1
- gettext=0.21.1=h27087fc_0
- glib=2.68.4=h9c3ff4c_0
- glib-tools=2.68.4=h9c3ff4c_0
- gst-plugins-base=1.18.5=hf529b03_0
- gstreamer=1.18.5=h76c114f_0
- icu=68.2=h9c3ff4c_0
- idna=3.4=pyhd8ed1ab_0
- importlib-resources=5.12.0=pyhd8ed1ab_0
- importlib_resources=5.12.0=pyhd8ed1ab_0
- jpeg=9e=h0b41bf4_3
- keyutils=1.6.1=h166bdaf_0
- kiwisolver=1.4.4=py38h43d8883_1
- krb5=1.19.3=h3790be6_0
- lazy-property=0.0.1=pyh9f0ad1d_0
- lcms2=2.12=hddcbb42_0
- ld_impl_linux-64=2.40=h41732ed_0
- lerc=3.0=h9c3ff4c_0
- libblas=3.9.0=17_linux64_openblas
- libbrotlicommon=1.0.9=h166bdaf_8
- libbrotlidec=1.0.9=h166bdaf_8
- libbrotlienc=1.0.9=h166bdaf_8
- libcblas=3.9.0=17_linux64_openblas
- libclang=11.1.0=default_ha53f305_1
- libdeflate=1.10=h7f98852_0
- libedit=3.1.20191231=he28a2e2_2
- libevent=2.1.10=h9b69904_4
- libexpat=2.5.0=hcb278e6_1
- libffi=3.3=h58526e2_2
- libgcc-ng=13.1.0=he5830b7_0
- libgfortran-ng=13.1.0=h69a702a_0
- libgfortran5=13.1.0=h15d22d2_0
- libglib=2.68.4=h3e27bee_0
- libgomp=13.1.0=he5830b7_0
- libiconv=1.17=h166bdaf_0
- liblapack=3.9.0=17_linux64_openblas
- libllvm11=11.1.0=he0ac6c6_5
- libogg=1.3.4=h7f98852_1
- libopenblas=0.3.23=pthreads_h80387f5_0
- libopus=1.3.1=h7f98852_1
- libpng=1.6.39=h753d276_0
- libpq=13.8=hd77ab85_0
- libsqlite=3.42.0=h2797004_0
- libstdcxx-ng=13.1.0=hfd8a6a1_0
- libtiff=4.3.0=h0fcbabc_4
- libuuid=2.38.1=h0b41bf4_0
- libvorbis=1.3.7=h9c3ff4c_0
- libwebp-base=1.3.0=h0b41bf4_0
- libxcb=1.15=h0b41bf4_0
- libxkbcommon=1.0.3=he3ba5ed_0
- libxml2=2.9.10=h72842e0_4
- libxslt=1.1.33=h15afd5d_2
- libzlib=1.2.13=h166bdaf_4
- lxml=4.8.0=py38h0a891b7_3
- matplotlib=3.7.1=py38h578d9bd_0
- matplotlib-base=3.7.1=py38hd6c3c57_0
- munkres=1.1.4=pyh9f0ad1d_0
- mysql-common=8.0.32=h14678bc_0
- mysql-libs=8.0.32=h54cf53e_0
- ncurses=6.4=hcb278e6_0
- networkx=3.1=pyhd8ed1ab_0
- nspr=4.35=h27087fc_0
- nss=3.89=he45b914_0
- numpy=1.24.3=py38h59b608b_0
- olefile=0.46=pyh9f0ad1d_1
- openjpeg=2.5.0=h7d73246_0
- openssl=1.1.1u=hd590300_0
- packaging=23.1=pyhd8ed1ab_0
- pcre=8.45=h9c3ff4c_0
- pillow=8.4.0=py38h8e6f84c_0
- pip=23.1.2=pyhd8ed1ab_0
- platformdirs=3.5.3=pyhd8ed1ab_0
- pooch=1.7.0=pyha770c72_3
- pthread-stubs=0.4=h36c2ea0_1001
- pyparsing=3.0.9=pyhd8ed1ab_0
- pyqt=5.12.3=py38h578d9bd_8
- pyqt-impl=5.12.3=py38h0ffb2e6_8
- pyqt5-sip=4.19.18=py38h709712a_8
- pyqtchart=5.12=py38h7400c14_8
- pyqtwebengine=5.12.1=py38h7400c14_8
- pysocks=1.7.1=py38h578d9bd_5
- python=3.8.8=hffdb5ce_0_cpython
- python-dateutil=2.8.2=pyhd8ed1ab_0
- python_abi=3.8=3_cp38
- qt=5.12.9=hda022c4_4
- readline=8.2=h8228510_1
- requests=2.31.0=pyhd8ed1ab_0
- scipy=1.10.1=py38h59b608b_3
- setuptools=67.7.2=pyhd8ed1ab_0
- six=1.16.0=pyh6c4a22f_0
- sqlite=3.42.0=h2c6b66d_0
- tk=8.6.12=h27826a3_0
- tornado=6.3.2=py38h01eb140_0
- typing-extensions=4.6.3=hd8ed1ab_0
- typing_extensions=4.6.3=pyha770c72_0
- unicodedata2=15.0.0=py38h0a891b7_0
- urllib3=2.0.3=pyhd8ed1ab_0
- wheel=0.40.0=pyhd8ed1ab_0
- xorg-kbproto=1.0.7=h7f98852_1002
- xorg-libice=1.1.1=hd590300_0
- xorg-libsm=1.2.4=h7391055_0
- xorg-libx11=1.8.5=h8ee46fc_0
- xorg-libxau=1.0.11=hd590300_0
- xorg-libxdmcp=1.1.3=h7f98852_0
- xorg-libxext=1.3.4=h0b41bf4_2
- xorg-libxrender=0.9.10=h7f98852_1003
- xorg-renderproto=0.11.1=h7f98852_1002
- xorg-xextproto=7.3.0=h0b41bf4_1003
- xorg-xproto=7.0.31=h7f98852_1007
- xz=5.2.6=h166bdaf_0
- zipp=3.15.0=pyhd8ed1ab_0
- zlib=1.2.13=h166bdaf_4
- zstd=1.5.2=h3eb15da_6
- setuptools
Comment on lines +14 to +146
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Simplify build requirements

The build requirements section is overly specific and includes many unnecessary system dependencies. For Python packages, Bioconda typically needs only minimal build requirements.

Replace the current build requirements with:

requirements:
  build:
-    - python =3.8
-    - _libgcc_mutex=0.1=conda_forge
-    # ... (removing all other specific dependencies)
+    - python >=3.8
+    - pip
+    - setuptools
+    - wheel
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
requirements:
build:
- python =3.8
- _libgcc_mutex=0.1=conda_forge
- _openmp_mutex=4.5=2_gnu
- alsa-lib=1.2.3.2=h166bdaf_0
- biopython=1.81=py38h1de0b5d_0
- brotli=1.0.9=h166bdaf_8
- brotli-bin=1.0.9=h166bdaf_8
- ca-certificates=2023.5.7=hbcca054_0
- certifi=2023.5.7=pyhd8ed1ab_0
- charset-normalizer=3.1.0=pyhd8ed1ab_0
- contourpy=1.0.7=py38hfbd4bf9_0
- cycler=0.11.0=pyhd8ed1ab_0
- dbus=1.13.6=h48d8840_2
- ete3=3.1.2=pyh9f0ad1d_0
- expat=2.5.0=hcb278e6_1
- fontconfig=2.14.2=h14ed4e7_0
- fonttools=4.39.4=py38h01eb140_0
- freetype=2.12.1=hca18f0e_1
- gettext=0.21.1=h27087fc_0
- glib=2.68.4=h9c3ff4c_0
- glib-tools=2.68.4=h9c3ff4c_0
- gst-plugins-base=1.18.5=hf529b03_0
- gstreamer=1.18.5=h76c114f_0
- icu=68.2=h9c3ff4c_0
- idna=3.4=pyhd8ed1ab_0
- importlib-resources=5.12.0=pyhd8ed1ab_0
- importlib_resources=5.12.0=pyhd8ed1ab_0
- jpeg=9e=h0b41bf4_3
- keyutils=1.6.1=h166bdaf_0
- kiwisolver=1.4.4=py38h43d8883_1
- krb5=1.19.3=h3790be6_0
- lazy-property=0.0.1=pyh9f0ad1d_0
- lcms2=2.12=hddcbb42_0
- ld_impl_linux-64=2.40=h41732ed_0
- lerc=3.0=h9c3ff4c_0
- libblas=3.9.0=17_linux64_openblas
- libbrotlicommon=1.0.9=h166bdaf_8
- libbrotlidec=1.0.9=h166bdaf_8
- libbrotlienc=1.0.9=h166bdaf_8
- libcblas=3.9.0=17_linux64_openblas
- libclang=11.1.0=default_ha53f305_1
- libdeflate=1.10=h7f98852_0
- libedit=3.1.20191231=he28a2e2_2
- libevent=2.1.10=h9b69904_4
- libexpat=2.5.0=hcb278e6_1
- libffi=3.3=h58526e2_2
- libgcc-ng=13.1.0=he5830b7_0
- libgfortran-ng=13.1.0=h69a702a_0
- libgfortran5=13.1.0=h15d22d2_0
- libglib=2.68.4=h3e27bee_0
- libgomp=13.1.0=he5830b7_0
- libiconv=1.17=h166bdaf_0
- liblapack=3.9.0=17_linux64_openblas
- libllvm11=11.1.0=he0ac6c6_5
- libogg=1.3.4=h7f98852_1
- libopenblas=0.3.23=pthreads_h80387f5_0
- libopus=1.3.1=h7f98852_1
- libpng=1.6.39=h753d276_0
- libpq=13.8=hd77ab85_0
- libsqlite=3.42.0=h2797004_0
- libstdcxx-ng=13.1.0=hfd8a6a1_0
- libtiff=4.3.0=h0fcbabc_4
- libuuid=2.38.1=h0b41bf4_0
- libvorbis=1.3.7=h9c3ff4c_0
- libwebp-base=1.3.0=h0b41bf4_0
- libxcb=1.15=h0b41bf4_0
- libxkbcommon=1.0.3=he3ba5ed_0
- libxml2=2.9.10=h72842e0_4
- libxslt=1.1.33=h15afd5d_2
- libzlib=1.2.13=h166bdaf_4
- lxml=4.8.0=py38h0a891b7_3
- matplotlib=3.7.1=py38h578d9bd_0
- matplotlib-base=3.7.1=py38hd6c3c57_0
- munkres=1.1.4=pyh9f0ad1d_0
- mysql-common=8.0.32=h14678bc_0
- mysql-libs=8.0.32=h54cf53e_0
- ncurses=6.4=hcb278e6_0
- networkx=3.1=pyhd8ed1ab_0
- nspr=4.35=h27087fc_0
- nss=3.89=he45b914_0
- numpy=1.24.3=py38h59b608b_0
- olefile=0.46=pyh9f0ad1d_1
- openjpeg=2.5.0=h7d73246_0
- openssl=1.1.1u=hd590300_0
- packaging=23.1=pyhd8ed1ab_0
- pcre=8.45=h9c3ff4c_0
- pillow=8.4.0=py38h8e6f84c_0
- pip=23.1.2=pyhd8ed1ab_0
- platformdirs=3.5.3=pyhd8ed1ab_0
- pooch=1.7.0=pyha770c72_3
- pthread-stubs=0.4=h36c2ea0_1001
- pyparsing=3.0.9=pyhd8ed1ab_0
- pyqt=5.12.3=py38h578d9bd_8
- pyqt-impl=5.12.3=py38h0ffb2e6_8
- pyqt5-sip=4.19.18=py38h709712a_8
- pyqtchart=5.12=py38h7400c14_8
- pyqtwebengine=5.12.1=py38h7400c14_8
- pysocks=1.7.1=py38h578d9bd_5
- python=3.8.8=hffdb5ce_0_cpython
- python-dateutil=2.8.2=pyhd8ed1ab_0
- python_abi=3.8=3_cp38
- qt=5.12.9=hda022c4_4
- readline=8.2=h8228510_1
- requests=2.31.0=pyhd8ed1ab_0
- scipy=1.10.1=py38h59b608b_3
- setuptools=67.7.2=pyhd8ed1ab_0
- six=1.16.0=pyh6c4a22f_0
- sqlite=3.42.0=h2c6b66d_0
- tk=8.6.12=h27826a3_0
- tornado=6.3.2=py38h01eb140_0
- typing-extensions=4.6.3=hd8ed1ab_0
- typing_extensions=4.6.3=pyha770c72_0
- unicodedata2=15.0.0=py38h0a891b7_0
- urllib3=2.0.3=pyhd8ed1ab_0
- wheel=0.40.0=pyhd8ed1ab_0
- xorg-kbproto=1.0.7=h7f98852_1002
- xorg-libice=1.1.1=hd590300_0
- xorg-libsm=1.2.4=h7391055_0
- xorg-libx11=1.8.5=h8ee46fc_0
- xorg-libxau=1.0.11=hd590300_0
- xorg-libxdmcp=1.1.3=h7f98852_0
- xorg-libxext=1.3.4=h0b41bf4_2
- xorg-libxrender=0.9.10=h7f98852_1003
- xorg-renderproto=0.11.1=h7f98852_1002
- xorg-xextproto=7.3.0=h0b41bf4_1003
- xorg-xproto=7.0.31=h7f98852_1007
- xz=5.2.6=h166bdaf_0
- zipp=3.15.0=pyhd8ed1ab_0
- zlib=1.2.13=h166bdaf_4
- zstd=1.5.2=h3eb15da_6
- setuptools
requirements:
build:
- python >=3.8
- pip
- setuptools
- wheel

run:
- python >=3.8
- biopython
- matplotlib
- networkx
- lazy-property
- ete3
- numpy
- scipy

about:
home: https://github.com/zhangrengang/phytop/
description: "Phytop: A tool for visualizing and recognizing signals of incomplete lineage sorting and hybridization using species trees output from ASTRAL"
Comment on lines +157 to +159
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Add required metadata fields

The about section is missing several required fields according to Bioconda guidelines.

Add the following fields:

about:
  home: https://github.com/zhangrengang/phytop/
+ summary: Tool for visualizing phylogenetic tree signals
  description: "Phytop: A tool for visualizing and recognizing signals of incomplete lineage sorting and hybridization using species trees output from ASTRAL"
+ license: GPL-3.0
+ license_file: LICENSE
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
about:
home: https://github.com/zhangrengang/phytop/
description: "Phytop: A tool for visualizing and recognizing signals of incomplete lineage sorting and hybridization using species trees output from ASTRAL"
about:
home: https://github.com/zhangrengang/phytop/
summary: Tool for visualizing phylogenetic tree signals
description: "Phytop: A tool for visualizing and recognizing signals of incomplete lineage sorting and hybridization using species trees output from ASTRAL"
license: GPL-3.0
license_file: LICENSE
🧰 Tools
🪛 yamllint

[error] 159-159: no new line character at the end of file

(new-line-at-end-of-file)

Loading