Coder Social home page Coder Social logo

kennthshang / phabox Goto Github PK

View Code? Open in Web Editor NEW
29.0 3.0 2.0 13.33 MB

Local version of the phage identification and analysis web server (tool set)

Home Page: https://phage.ee.cityu.edu.hk/

License: Academic Free License v3.0

Python 100.00%
bacteriophage bioinformatics host-prediction lifestyle metagenomic-analysis taxonomy dna-virus

phabox's Introduction

Local version of PhaBOX web server

This is the source code of our website Phage BOX. Please note that this stand-alone version is only available on Linux systems.

Phage BOX is a Python library for phage-related tasks:

  1. phage identification
  2. taxonomy classification
  3. host prediction
  4. lifestyle prediction.

We integrate our previously published tools: PhaMer, PhaGCN, CHERRY, and PhaTYP, into one program. In addition, we optimized the functions in these programs to save computation resources and time and provided a one-shot mode to run all the pipelines using one command. Hope you will enjoy it.

Table of Contents

⌛️  News

We are preparing to upgrade PhaBOX 1.1 to PhaBOX 2.0 in the coming months. There are some major components, including:

  1. Provide a contamination and prophage detection module
  2. Provide a more comprehensive taxonomy classification (latest ICTV 2024), faster speed, and complete taxonomy lineage (down to genus level)
  3. Provide a genus-level clustering for potential new genus
  4. Provide a protein annotation function and marker searching module for the phylogenetic tree
  5. Allowing the use of the host prediction function in a more flexible way (only use CRISPRs for prediction, MAGs' CRISPR detection, etc.)

If you have further suggestions, feel free to let me know! You can post an issue or directly email me ([email protected]). We welcome any suggestions.

  1. If you want to predict the phage-bacteria interaction via CRISPR using your own bacterial assemblies, please try: https://github.com/KennthShang/CHERRY_crispr_MAG
  2. If you want to predict the phage-bacteria interaction via CRISPR using GenBank database, please try: https://github.com/KennthShang/CHERRY_crispr_DATABASE

🚀  Installation

Detailed package information can be found in webserver.yaml

🚀  Quick Start

Note: we suggest you install all the packages using conda (both miniconda and Anaconda are ok).

After cloning this repository, you can use conda to install the webserver.yml. This will install all the packages you need with CPU mode. The command is: conda env create -f webserver.yml -n phabox

Prepare the database and environment

  1. When you use PhaBOX for the first time, please git clone https://github.com/KennthShang/PhaBOX.git and follow the command below:
cd PhaBOX/

# install environment
## option1 (more reliable):
conda create -n PhaBOX phabox=1.1 -c bioconda -c conda-forge -c pytorch -c jyshang2

## option2 (some time will change the version of packages):
conda env create -f webserver.yml -n phabox

conda activate phabox

# download database
pip install gdown
gdown  --id 1hjACPsIOqqcS5emGaduYvYrCzrIpt2_9
gdown  --id 1E94ii3Q0O8ZBm7UsyDT_n06YekNtfV20

unzip phagesuite_database.zip  > /dev/null
unzip phagesuite_parameters.zip  > /dev/null

  1. Then, you only need to activate your 'phabox' environment before using phabox next time.
conda activate phabox

Notice: If you are in Mainland China, please use a VPN to download the file, or you can try Baidu Cloud via the link below:

Link: https://pan.baidu.com/s/18gx_p-Y4g22W5LcXvIyO_A pwd: uran
Link: https://pan.baidu.com/s/1QJQAIr89xbt4e3pJr_QhaQ pwd: 2gjb

⌛️  Usage

📊  Run all pipelines in one command:

python main.py [--contigs INPUT_FA] [--threads NUM_THREAD][--len MINIMUM_LEN] [--rootpth ROOT_PTH] [--out OUTPUT_PTH]  [--midfolder MID_PTH] [--parampth PARAM_PTH] [--dbdir DR]

Options

  --contigs INPUT_FA
                        input fasta file
  --threads NUM_THREAD
                        Number of threads to run PhaMer (default 8)
  --len MINIMUM_LEN
                        predict only for sequence >= len bp (default 3000)                                                                                                
  --rootpth ROOT_PTH
                        The folder you want to store the outputs of PhaBOX (default user_0/)
  --out OUTPUT_PTH
                        The output folder under rootpth. All the prediction will be stored in this folder. (default out/)
  --midfolder MID_PTH
                        The midfolder under rootpth. All the intermediate files will be stored in this folder. (default midfolder/)
  --parampth PARAM_PTH 
                        The pth you store your parameters (default parameters/)
  --scriptpth PARAM_PTH 
                        The pth you store your scripts (default scripts/)
  --dbdir DR
                        An optional path to store the database directory (default database/)

Example

Prediction on the example file:

python main.py --contigs test_contigs.fa --threads 8 --len 3000 --rootpth simple_test --out out/ --dbdir database/ --parampth parameters/ --scriptpth scripts/

Then, Phage BOX will run all the sub-functions to generate predictions under the simple_test/out/ foder: phamer_prediction.csv (phage identification), phagcn_prediction.csv (taxonomy classification), cherry_prediction.csv (host prediction), and phatyp_prediction.csv (lifestyle prediction).

📊  pipeline separately

The only difference between running all pipelines and running single pipelines is the name of the file. Below are the examples:

# run PhaMer
python PhaMer_single.py --contigs test_contigs.fa --threads 8 --len 3000 --rootpth simple_test --out out/ --dbdir database/ --parampth parameters/ --scriptpth scripts/

# run PhaTYP
python PhaTYP_single.py --contigs test_contigs.fa --threads 8 --len 3000 --rootpth simple_test --out out/ --dbdir database/ --parampth parameters/ --scriptpth scripts/

# run PhaGCN
python PhaGCN_single.py --contigs test_contigs.fa --threads 8 --len 3000 --rootpth simple_test --out out/ --dbdir database/ --parampth parameters/ --scriptpth scripts/

# run CHERRY
python Cherry_single.py --contigs test_contigs.fa --threads 8 --len 3000 --rootpth simple_test --out out/ --dbdir database/ --parampth parameters/ --scriptpth scripts/

📊  Running Phage BOX as a binary file

We are sorry that Phage BOX currently do not support to run as an env in conda. However, you can still add the path of the *.py files to your system path and run them as binary files:

export PATH="{path of the *py files}:$PATH"

However, if you do not want to revise the system path, you can run Phage BOX by passing absolute path. For example, if you placed PhaBOX/ folder under your home path (home/PhaBOX/) and your database and parameters are store under PhaBOX/ (home/PhaBOX/database/ and home/PhaBOX/parameters/), then you can run the command line as below:

python ~/PhaBOX/main.py --contigs {where your fasta file located} --threads 8 --len 3000 --rootpth {where you want to store the result} --out out/ --dbdir ~/PhaBOX/database/ --parampth ~/PhaBOX/parameters/ --scriptpth ~/PhaBOX/scripts/

#example
python home/PhaBOX/main.py --contigs /computenodes/node35/team3/my_contigs.fasta --threads 8 --len 3000 --rootpth home/my_contigs_result/ --out out/ --dbdir home/PhaBOX/database/ --parampth home/PhaBOX/parameters/ --scriptpth home/PhaBOX/scripts/

If you did not move blastxml_to_tabular.py to your conda env as introduced in the Prepare the database and environment section, you can use the parameter --script to pass a path of the folder.


python ~/PhaBOX/main.py --contigs {where your fasta file located} --threads 8 --len 3000 --rootpth {where you want to store the result} --out out/ --dbdir ~/PhaBOX/database/ --parampth ~/PhaBOX/parameters/ --scripts ~/PhaBOX/scripts

#example
python home/PhaBOX/main.py --contigs /computenodes/node35/team3/my_contigs.fasta --threads 8 --len 3000 --rootpth home/my_contigs_result/ --out out/ --dbdir home/PhaBOX/database/ --parampth home/PhaBOX/parameters/ --scripts home/PhaBOX/scripts

📈  Output format

The explanation of the output format can be found via: PhaBOX Example Result

Note for the prediction of CHERRY (host prediction part) -- released on July 17th, 2023

The current taxonomy is based on the NCBI RefSeq; if you want to use the GTDB version, we provide a script (in the GTDB folder) to convert.

python convert_refseq_gtdb.py --infile [PATH_TO_'cherry_prediction.csv']

📘  Possible Issues (updated by July 17th 2023)

  1. Inputs should be in FASTA format.
  2. The contigs' accession should begin with a letter. Only number (such as >1, >2, >3) is not allowed.
  3. Special characters such as '|', '~', '&', '$', ':', and '/' are not allowed in the contigs' accession/ID/name.
  4. The sequences should be made up of CAPITAL LETTERS.
  5. It is recommended to only input phage contigs when using PhaGCN, PhaTYP and CHERRY.

📘  Update log

  • Oct. 23th 2023: Currently, if CHERRY finds the CRISPRs match of the input phages, CHERRY will no longer call the model-predict function for host prediction.
  • Oct. 25th 2023: According to our experimental results, to maintain the best precision, we revised the threshold for CRISPRs alignment to be: coverage > 0.95 and identity > 95

📫  Have a question?

We are happy to hear your question on our issues page PhaBOX! Obviously, if you have a private question or want to cooperate with us, you can always reach out to us directly via our email: [email protected]

✏️  Citation

If you use PhaBOX for your research, please use the citations listed below.

  • PhaBOX (Whole pipeline)
Jiayu Shang, Cheng Peng, Herui Liao, Xubo Tang, Yanni Sun, PhaBOX: a web server for identifying and characterizing phage contigs in metagenomic data, Bioinformatics Advances, Volume 3, Issue 1, 2023, vbad101, https://doi.org/10.1093/bioadv/vbad101
  • PhaMer (phage identification)
Jiayu Shang, Xubo Tang, Ruocheng Guo, Yanni Sun, Accurate identification of bacteriophages from metagenomic data using Transformer, Briefings in Bioinformatics, 2022;, bbac258, https://doi.org/10.1093/bib/bbac258
  • PhaGCN (taxonomy classification)
Jiayu Shang, Jingzhe Jiang, Yanni Sun, Bacteriophage classification for assembled contigs using graph convolutional network, Bioinformatics, Volume 37, Issue Supplement_1, July 2021, Pages i25–i33, https://doi.org/10.1093/bioinformatics/btab293
  • Cherry (host prediction)
Jiayu Shang, Yanni Sun, CHERRY: a Computational metHod for accuratE pRediction of virus–pRokarYotic interactions using a graph encoder–decoder model, Briefings in Bioinformatics, 2022;, bbac182, https://doi.org/10.1093/bib/bbac182
  • PhaTYP (Lifestyle prediction)
Jiayu Shang, Xubo Tang, Yanni Sun, PhaTYP: predicting the lifestyle for bacteriophages using BERT, Briefings in Bioinformatics, 2022;, bbac487, https://doi.org/10.1093/bib/bbac487

📘  License

The PhaBOX pipelines are released under the terms of the Academic Free License v3.0 License.

🤵  Team

  • Head of PhaBOX program
Jiayu SHANG Cheng PENG
  • Supervisor
Yanni SUN

Our groupmates also provide many useful tools for bioinformatics analysis. Please check Yanni's Group for further information. Hope you will like them!

phabox's People

Contributors

kennthshang avatar eltociear avatar

Stargazers

Dmitry Bespiatykh avatar Scott Handley avatar Livio Antonielli avatar Yanhu Ren avatar Md Karim Uddin avatar  avatar  avatar  avatar Jintao He avatar Vilmar Benetti Filho avatar  avatar  avatar TON NGOC MINH QUAN avatar  avatar Surya avatar  avatar Aqiang avatar zhengxiangkuan avatar  avatar  avatar Xichuan Zhai avatar  avatar Liu zifeng avatar  avatar  avatar Jocker avatar  avatar  avatar jiaojiao avatar

Watchers

James Cloos avatar  avatar  avatar

Forkers

eltociear xc-zhai

phabox's Issues

Taxonomy classification: PhaGCN 2.0 vs PhaBOX

Hi,
Thank you so much for creating such a great tool!
When I was doing phage taxonomy classification, I got different results with PhaGCN2.0 vs. PhaBOX's PhaGCN. Your article suggests that PhaGCN 2.0 has higher accuracy than the previous version.
So would you recommended to use PhaGCN2.0 for classification and other tools in PhaBOX for host prediction etc?
Thank you!

why only have phagcn_prediction.csv phamer_prediction.csv phatyp_prediction.csv,but not cherry_prediction.csv

Could you please help me with this issue here?
here is my result and log:
########################### result ############################################
this is only have three result of the contigs:
phagcn_prediction.csv phamer_prediction.csv phatyp_prediction.csv

wc -l *.csv
39215 phagcn_prediction.csv
114305 phamer_prediction.csv
39215 phatyp_prediction.csv
192735 total
########################### log #############################################
Traceback (most recent call last):
File "/xx/05.phabox/PhaBOX-main/main.py", line 1170, in
node2label[node] = prokaryote_df[prokaryote_df['Accession'] == crispr_pred[node]]['Species'].values[0]
IndexError: index 0 is out of bounds for axis 0 with size 0
100%|██████████| 1226/1226 [40:09:16<00:00, 117.91s/it]
#############################################################################
By the way, my other files can generate normal result files, so what could be the reason for this

ls -lhtr
total 39M
633K 3月 31 13:03 phamer_prediction.csv
248K 3月 31 13:03 phatyp_prediction.csv
239K 3月 31 13:03 phagcn_prediction.csv
326K 3月 31 13:03 cherry_prediction.csv
1.8M 3月 31 13:03 phagcn_edge.csv
91K 3月 31 13:03 phagcn_node.csv
2.8M 3月 31 13:03 cherry_edge.csv
295K 3月 31 13:03 cherry_node.csv
20M 3月 31 13:03 significant_proteins.fa
14M 3月 31 13:03 blast_results.tab

Error in build_pc_matrices Function: ValueError Due to Mismatched Index Arrays

hi,
I am encountering an issue with the PhaBOX software while running the analysis. Specifically, I receive a ValueError when the software attempts to build the sparse matrix in the build_pc_matrices function. The error message is:
ValueError: mismatching number of index arrays for shape; got 0, expected 2

Building the cluster and profiles (this may take some time...)
Using MCL to generate PCs.
Saving files
Traceback (most recent call last):
File "/data/ckzhu/ckzhu1/PhaBOX/main.py", line 460, in
matrix, singletons = build_pc_matrices(profiles, contigs_csv_df, pcs_csv_df)
File "/data/ckzhu/ckzhu1/PhaBOX/scripts/ulity.py", line 309, in build_pc_matrices
matrix = sparse.coo_matrix(([1]*len(profiles), (zip(*profiles.values))), shape=(len(contigs), len(pcs)),
File "/data/ckzhu/ckzhu1/miniconda3/envs/phabox/lib/python3.9/site-packages/scipy/sparse/_coo.py", line 99, in init
self._check()
File "/data/ckzhu/ckzhu1/miniconda3/envs/phabox/lib/python3.9/site-packages/scipy/sparse/_coo.py", line 188, in _check
raise ValueError('mismatching number of index arrays for shape; '
ValueError: mismatching number of index arrays for shape; got 0, expected 2

Could you please assist in resolving this issue?
Thank you for your support!
Fang

RuntimeError: CUDA out of memory issue

Could you please help me with this issue here?

Here is my code:

python /home/disk1/PhaBOX/main.py --contigs test_contigs.fa --threads 20 --rootpth ./tst.PhaBOX --dbdir /home/disk1/PhaBOX/database --parampth /home/disk1/PhaBOX/parameters/ --scriptpth /home/disk1/PhaBOX/scripts

Here is the nohup.output:

Using parallelized prodigal...
Running prodigal...
Running Diamond...

0%| | 0/1 [00:00<?, ?ba/s]
100%|鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅| 1/1 [00:00<00:00, 103.75ba/s]
The following columns in the test set don't have a corresponding argument in BertForSequenceClassification.forward and have been ignored: text.
***** Running Prediction *****
Num examples = 2
Batch size = 32

0%| | 0/1 [00:00<?, ?it/s]Traceback (most recent call last):
File "/home/disk1/PhaBOX/main.py", line 382, in
out = cnn(val_feature)
File "/home/disk1/Anaconda3/envs/phabox/lib/python3.9/site-packages/torch/nn/modules/module.py", line 1102, in _call_impl
return forward_call(*input, **kwargs)
File "/home/disk1/PhaBOX/models/CAPCNN.py", line 30, in forward
x = [F.relu(conv(x)).squeeze(3) for conv in self.convs1]
File "/home/disk1/PhaBOX/models/CAPCNN.py", line 30, in
x = [F.relu(conv(x)).squeeze(3) for conv in self.convs1]
File "/home/disk1/Anaconda3/envs/phabox/lib/python3.9/site-packages/torch/nn/functional.py", line 1299, in relu
result = torch.relu(input)
RuntimeError: CUDA out of memory. Tried to allocate 166.00 MiB (GPU 0; 1.95 GiB total capacity; 732.96 MiB already allocated; 148.94 MiB free; 758.00 MiB reserved in total by PyTorch) If reserved memory is >> allocated memory try setting max_split_size_mb to avoid fragmentation. See documentation for Memory Management and PYTORCH_CUDA_ALLOC_CONF

100%|鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅| 1/1 [00:00<00:00, 1.35it/s]

phagcn_prediction.csv not created in midfolder

Hello,

I have a confusing error where the program seems to run fine but it produces an error that says "FileNotFoundError: [Errno 2] No such file or directory: '/midfolder//phagcn_prediction.csv'. All of the CSV files seem to be generated okay in the out folder, even tho phatyp_prediction.csv produces a file that lists a phage in a contig that has a score of 0 in the phagcn_prediction.csv file

print(f'Database directory {db_dir} missing or unreadable')

firstly, i run: git clone https://github.com/KennthShang/PhaBOX.git
and then,
cd PhaBOX/
conda env create -f webserver.yml -n phabox
conda activate phabox

download the database.zip and parameters.zip to the PhaBOX folder with baidu cloud.

and run:
unzip phagesuite_database.zip > /dev/null
unzip phagesuite_parameters.zip > /dev/null

after that i make a test;
python PhaMer_single.py --contigs test_contigs.fa --threads 8 --len 3000 --rootpth simple_test --out out/ --dbdir database/ --parampth parameters/ --scriptpth scripts/
File "PhaMer_single.py", line 65
print(f'Database directory {db_dir} missing or unreadable')
^
SyntaxError: invalid syntax

I don't know that it was caused by my operation error in that step. I am looking forward to your reply very much

device.type == "cpu"

image
It seems like that device == "cpu" doesn't work. I build the phabox environment with the command conda env create -f webserver.yml -n phabox, and pytorch version is 1.10.1.

Typo in installation guide

Hi Jiayu,

There's a typo in the "Quick Start - Prepare the database and environment" section, "conda create -n PhaBOX phabox=1.1 -c bioconda -c conda-forage -c pytorch -c jyshang2", conda-forage should be conda-forge, or installation would fail.

Bests,

Rao Yangzhi
Postdoc, USTC

Illegal instruction

hello,
I had met a problem, when I run this command,

python main.py --contigs /beegfs/home/syl/task_meta/BW_riceclarkia_free/MGB_assembly_5_quality_control/MGB_assembly_2_drep_res/newid_genomes/CMIBWM2_mixbin.190.fa \
--threads 8 --len 3000 --rootpth temp_rootpth --out temp_out \
--dbdir /beegfs/home/syl/software/phabox/PhaBOX-main/database \
--parampth /beegfs/home/syl/software/phabox/PhaBOX-main/parameters

I met this problem,
/bin/bash: line 4: 158069 Illegal instruction (core dumped) python main.py --contigs /bee gfs/home/syl/task_meta/BW_riceclarkia_free/MGB_assembly_5_quality_control/MGB_assembly_2_drep _res/newid_genomes/CMIBWM2_mixbin.190.fa --threads 8 --len 3000 --rootpth temp_rootpth --out temp_out --dbdir /beegfs/home/syl/software/phabox/PhaBOX-main/database --parampth /beegfs/hom e/syl/software/phabox/PhaBOX-main/parameters
So how can I do to solve this?
yours tk

Can this tool be directly installed through conda?

Hello,

I am interested in using this tool, and integrating it in a snakemake pipeline. However, the steps detailed in the README complicate the integration of the tool, since the paths have to be known before hand, and the name of the environment will be unpredictable (since it is a conda environment created by snakemake).

I want to know if it is possible to install this tool through something like conda install phabox. If not, can it be installed through pip?

Typo?

I ran PhaGCN_single.py on my contigs and received the prediction "Peduoviridae". I do not know of such a phage, is this supposed to be podoviridae?

Dependency issue with mamba/conda installation

Thank you for this great tool. I have used it a few times over the past year, but encountered an issue with installation. After following the instructions, testing the program leads to the following error

Traceback (most recent call last):
File "/home/biolinux/phage_programs/PhaBOX/main.py", line 33, in
from scripts.data import load_data, preprocess_features, preprocess_adj, sample_mask
File "/home/biolinux/phage_programs/PhaBOX/scripts/data.py", line 5, in
from scipy.sparse.linalg.eigen.arpack import eigsh
ModuleNotFoundError: No module named 'scipy.sparse.linalg.eigen.arpack'; 'scipy.sparse.linalg.eigen' is not a package

Help would be appreciated. I could not resolve this by installing different versions of scipy, as there were dependency conflicts.

[improvement] adding blastxml_to_tabular.py as an input parameter to the main.py function.

Hello!

In the installation instructions, you've mentioned moving blastxml_to_tabular.py to the conda environment.

For streamlining the portability of phabox offline is it possible to be given as an input to the main.p/PhaMer_single.py files?

This would be super useful for people wanting to make their own custom pipelines from the PhaMer_single.py module!

Best,

Erfan

convert xml failed

Hello, teacher, when I run the GitHub command, the following error occurs and I can't find the relevant solution on the Internet, so please help to check it, thank you
nohup python /data/software/PhaBOX-main/main.py --contigs final-viral-combined-for-dramv.fa --threads 8 --len 1000 --rootpth simple_test --out out/ --dbdir database/ --parampth parameters/ &

blastxml_to_tabular.py -o simple_test/midfolder//phamer_results.tab -c qseqid,sseqid,pident,length,mismatch,gapopen,qstart,qend,sstart,send,evalue simple_test/midfolder//phamer_results.xml
convert xml failed

How to get the full taxa of predicted hosts

Hey developer,

I noted that the Cherry gives hosts of phage sequences. However, it only lists the species names. How can I get the full taxa? Is there any taxa list?

Thanks.

PS: there are two files (virus.csv & prokaryote.csv) in the './database/cherry' file. Which one should I use?

convert xml failed

I successfully installed Phabox and download the data,also chmod 777 /path/envs/phabox/bini/.py,but when I typed the example ,I got convert xml failed.
By the way ,I installed torch==2.1.1(cuda 12.3)and typed follow command
pip install typing-extensions --upgrade
Could you help me please?

Conda [/Mamba] Installation Channel Priority Strict Error

Hello and hope all is well.

I wanted to report that the conda installation only works when setting channel priorities as flexible conda config --set channel_priority flexible, but does not work when set to strict.

This can be a huge future problem with reproducibility since the flexible mode can arbitrarily take any version of any software from the channels you've set (and you have around 6 set which is also lots to handle).

I found out about this problem when failing to install PhaBox on a second server without noticing that my original server was accidentally set to flexible mode while the new server was correctly set to strict.

I would highly recommend seeing if a conda recipe with strict channel priorities can be set as with flexible mode there is no guarantee of reproducibility [even for yourself] on different systems, which doesn't go well with the fact that conda recipes are usually made for reproducibility.

For anyone struggling with installations, I recommend running conda config --set channel_priority flexible and then back to conda config --set channel_priority strict upon installation.

I've attached a sample error file to see the conflicts it causes.
error.txt

Hope this helps.

Best,

Erfan

Cannot find pre-trained model

Thanks for this tool.
But there is a error when I try the test fasta file on Linux system with conda.
(phabox) ~/PhaBOX$ python main.py --contigs test_contigs.fa --threads 8 --len 3000 --rootpth simple_test --out out/ --dbdir database/ --parampth parameters/
Using parallelized prodigal...
Running prodigal...
Running Diamond...
cannot find pre-trained model

Thanks for your help.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.