Git Product home page Git Product logo

vanheeringen-lab / gimmemotifs Goto Github PK

View Code? Open in Web Editor NEW
107.0 107.0 31.0 391.5 MB

Suite of motif tools, including a motif prediction pipeline for ChIP-seq experiments. See full GimmeMotifs documentation for detailed installation instructions and usage examples.

Home Page: https://gimmemotifs.readthedocs.io/en/master

License: MIT License

Python 77.14% C 20.01% Shell 0.01% HTML 1.34% CSS 0.41% Smarty 1.09%

gimmemotifs's People

Contributors

akmorrow13 avatar astatham avatar jgasmits avatar laserson avatar maarten-vd-sande avatar siebrenf avatar simonvh avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

gimmemotifs's Issues

name of best match

Currently the name of the best matching motif lists the motif ID. It should (also) list the proteins predicted to bind to that motif.

bug gimme background

Traceback (most recent call last):
File "/usr/bin/gimme", line 433, in
args.func(args)
File "/usr/lib64/python2.7/site-packages/gimmemotifs/commands/background.py", line 63, in background
m = bg.MarkovFasta(f, n=number, k=args.markov_order)
TypeError: init() got an unexpected keyword argument 'n'

bug with prediction

File "/usr/lib64/python2.7/site-packages/gimmemotifs/prediction.py", line 54, in add_motifs
f.write("%s\n" % motif.to_pfm())
AttributeError: 'list' object has no attribute 'to_pfm'

Accept narrowPeak files as input

In addition to BED, FASTA and regions files gimme motifs could accept narrowPeak as input. Simplifies analysis downstream of, for instance, MACS2. Summit could be taken into account automatically.

hg38.fa contains multiple sequences

Tried to run following command:
gimme genome /cbscratch/croth1/gimmemotifs/genomes/hg38 hg38

with the latest version from bioconda
gimmemotifs 0.10.0b6 py27pl5.22.0_1 bioconda

This is the result:

Retrieving gene annotation for hg38
Expecting 10 words line 1 of /dev/stdin got 9
cut: write error: Broken pipe
Downloading hg38 genome
Trying to download http://hgdownload.soe.ucsc.edu/goldenPath/hg38/bigZips/chromFa.tar.gz
Trying to download http://hgdownload.soe.ucsc.edu/goldenPath/hg38/bigZips/hg38.fa.gz
´Unpacking
Creating index
Sorry, can only index genomes with one sequence per FASTA file
/cbscratch/croth1/gimmemotifs/genomes/hg38/hg38/hg38.fa contains multiple sequences

Configuration file not found

Hi all,

I installed the version 0.10.0b3 and b6 locally, however when i try to use them i get an error "configuration file not found". I checked my installation directory and there exists the configuration file in share/gimmemotifs/

gimme background matched_genomic with -f BED fails

kprange@mb06 ~/MLL_Fusion/analyses_nov_2014/BRE_motifs $ gimme background -i test.bed -f BED -g hg19 test matched_genomic
Traceback (most recent call last):
File "/usr/bin/gimme", line 417, in
args.func(args)
File "/usr/lib64/python2.7/site-packages/gimmemotifs/commands/background.py", line 71, in background
bg.create_matched_genomic_bedfile(out, inputfile, gene_file, l, args.number, True)
TypeError: create_matched_genomic_bedfile() takes exactly 7 arguments (6 given)

Test.bed:
kprange@mb06 ~/MLL_Fusion/analyses_nov_2014/BRE_motifs $ cat test.bed
chr1 10011 10053 D256N5M1:154:C55L9ACXX:4:2304:2839:53613 0 -
chr1 10048 10090 D256N5M1:154:C55L9ACXX:4:1111:17209:91625 0 +
chr1 10119 10161 D256N5M1:154:C55L9ACXX:4:2208:9041:60563 0 -
chr1 10127 10169 D256N5M1:154:C55L9ACXX:4:2105:15109:63619 0 +
chr1 10174 10216 D256N5M1:154:C55L9ACXX:4:1315:20800:58785 0 +
chr1 10198 10240 D256N5M1:154:C55L9ACXX:4:1105:5332:10721 0 +
chr1 10234 10276 D256N5M1:154:C55L9ACXX:4:2304:10743:58755 25 +
chr1 10262 10304 D256N5M1:154:C55L9ACXX:4:2205:17772:54808 0 +
chr1 10308 10350 D256N5M1:154:C55L9ACXX:4:1105:2621:91731 23 +
chr1 10354 10396 D256N5M1:154:C55L9ACXX:4:2314:11599:48130 0 +

could not run test

File "test/test_motif.py", line 5, in
from gimmemotifs.utils import which
ImportError: cannot import name which

And, python package pyyaml is also required.

user defined background fasta

Quick question: If I give gimmemotif with my own background sequences, how does gimmemotif run MEME, Weeder (the tools that cannot accept user-defined background)?

denovo test fails sometimes

======================================================================

ERROR: test1_denovo (test_denovo.TestDenovo)

de novo motif prediction

----------------------------------------------------------------------

Traceback (most recent call last):

  File "/home/travis/build/simonvh/gimmemotifs/test/test_denovo.py", line 28, in test1_denovo

    cluster=True)

  File "/home/travis/build/simonvh/gimmemotifs/gimmemotifs/denovo.py", line 559, in gimme_motifs

    stats,

  File "/home/travis/build/simonvh/gimmemotifs/gimmemotifs/report.py", line 219, in create_denovo_motif_report

    _create_text_report(inputfile, motifs, closest_match, stats, outdir)

  File "/home/travis/build/simonvh/gimmemotifs/gimmemotifs/report.py", line 87, in _create_text_report

    my_stats[str(motif)][bg] = stats[str(motif)][bg].copy()

KeyError: 'GimmeMotifs_6_ACTyAAACCG'

ValueError: Function <function Styler._bar_left at 0x7f4cdc455ae8> returned the wrong shape.

reading mapping
Traceback (most recent call last):
  File "/home/carlos/anaconda2/envs/gimme/bin/gimme", line 496, in <module>
    args.func(args)
  File "/home/carlos/anaconda2/envs/gimme/lib/python3.6/site-packages/gimmemotifs/commands/roc.py", line 143, in roc
    0.01,
  File "/home/carlos/anaconda2/envs/gimme/lib/python3.6/site-packages/gimmemotifs/commands/roc.py", line 71, in html_report
    f.write(df.sort_values("ROC AUC", ascending=False).style.bar(bar_cols).set_precision(3).set_table_attributes("data-sortable").render().replace("data-sortable", 'class="sortable-theme-slick" data-sortable'))
  File "/home/carlos/anaconda2/envs/gimme/lib/python3.6/site-packages/pandas/io/formats/style.py", line 434, in render
    self._compute()
  File "/home/carlos/anaconda2/envs/gimme/lib/python3.6/site-packages/pandas/io/formats/style.py", line 502, in _compute
    r = func(self)(*args, **kwargs)
  File "/home/carlos/anaconda2/envs/gimme/lib/python3.6/site-packages/pandas/io/formats/style.py", line 531, in _apply
    raise ValueError(msg)
ValueError: Function <function Styler._bar_left at 0x7f4cdc455ae8> returned the wrong shape.
Result has shape: (6,)
Expected shape:   (0, 6)

Used gimme background with gc to create background regions, no errors.

Used gimme roc, received this error. Tried working on a small number of sequences (39).

Improve documentation

Improve documentation of all scripts included with GimmeMotifs.

  • Make sure it is consistent with the new subcommands
  • Provide a working example with example data
  • Include new motif tools in the documentation

MoAn compile

I have problems compiling MoAn: I called it with make in the folder. I don't know how to get the output log from the setup.py tools.
Thank you very much,
ido

galaxy_env)solexa@gecko:/groups/csf-ngs/bin/gimmemotifs/gimmemotifs-0.8.4/src/MoAn$ make
gcc -c -g -W  -O3 anneal.c -o obj/anneal.o
gcc -c -g -W  -O3 sesa.c -o obj/sesa.o
gcc -c -g -W  -O3 score.c -o obj/score.o
gcc -c -g -W  -O3 build.c -o obj/build.o
gcc -c -g -W  -O3 search.c -o obj/search.o
gcc -c -g -W  -O3 hittable.c -o obj/hittable.o
gcc -c -g -W  -O3 pssm.c -o obj/pssm.o
gcc -c -g -W  -O3 timer.c -o obj/timer.o
gcc -c -g -W  -O3 error.c -o obj/error.o
gcc -c -g -W  -O3 stringcon.c -o obj/stringcon.o
gcc -c -g -W  -O3 ds_ssort/globals.c -o obj/globals.o
gcc -c -g -W  -O3 ds_ssort/ds.c -o obj/ds.o
gcc -c -g -W  -O3 ds_ssort/shallow.c -o obj/shallow.o
ds_ssort/shallow.c: In function ‘shallow_mkq’:
ds_ssort/shallow.c:92:19: error: nested function ‘vecswap2’ declared but never defined
ds_ssort/shallow.c: In function ‘shallow_mkq16’:
ds_ssort/shallow.c:186:19: error: nested function ‘vecswap2’ declared but never defined
ds_ssort/shallow.c: In function ‘shallow_mkq32’:
ds_ssort/shallow.c:264:19: error: nested function ‘vecswap2’ declared but never defined
ds_ssort/shallow.c: In function ‘shallow_inssort_lcp’:
ds_ssort/shallow.c:498:20: error: nested function ‘cmp_unrolled_shallow_lcp’ declared but never defined
make: *** [obj/shallow.o] Error 1

(galaxy_env)solexa@gecko:/groups/csf-ngs/bin/gimmemotifs/gimmemotifs-0.8.4/src/MoAn$ gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.7/lto-wrapper
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Debian 4.7.2-5' --with-bugurl=file:///usr/share/doc/gcc-4.7/README.Bugs --enable-languages=c,c++,go,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.7 --enable-shared --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.7 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --enable-plugin --enable-objc-gc --with-arch-32=i586 --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
Thread model: posix
gcc version 4.7.2 (Debian 4.7.2-5)

Error when running Quick GimmeMotifs example [Key Error: 'ncpus'] in mp.py

Hi,
I'm running a debian jessie (8.4) and just installed GimmeMotifs via pip in a virtualenv:

cd /home/george
virtualenv GimmeMotifs_pythonEnv
GimmeMotifs_pythonEnv/bin/pip install numpy # 1.11.0
GimmeMotifs_pythonEnv/bin/pip install scipy # 0.17.1
GimmeMotifs_pythonEnv/bin/pip install matplotlib # 1.5.1
GimmeMotifs_pythonEnv/bin/pip install kid # 0.9.6
GimmeMotifs_pythonEnv/bin/pip install pybedtools # 0.7.7
GimmeMotifs_pythonEnv/bin/pip install pandas # 0.18.1
GimmeMotifs_pythonEnv/bin/pip install gimmemotifs # 0.9.0.3

source /home/george/GimmeMotifs_pythonEnv/bin/activate

gimme motifs /home/george/GimmeMotifs_pythonEnv/share/gimmemotifs/examples/TAp73alpha.fa -n /home/george/gimmemotifs_test/p73

This results in an error:

Traceback (most recent call last):
  File "/home/george/GimmeMotifs_pythonEnv/bin/gimme", line 11, in <module>
    from  gimmemotifs import commands
  File "/home/george/GimmeMotifs_pythonEnv/local/lib/python2.7/site-packages/gimmemotifs/commands/__init__.py", line 8, in <module>
    m =  __import__("{0}.{1}".format(__name__, cmdname), globals(), locals(), [cmdname], -1)
  File "/home/george/GimmeMotifs_pythonEnv/local/lib/python2.7/site-packages/gimmemotifs/commands/cluster.py", line 11, in <module>
    from gimmemotifs.comparison import MotifComparer
  File "/home/george/GimmeMotifs_pythonEnv/local/lib/python2.7/site-packages/gimmemotifs/comparison.py", line 419, in <module>
    from gimmemotifs.mp import pool
  File "/home/george/GimmeMotifs_pythonEnv/local/lib/python2.7/site-packages/gimmemotifs/mp.py", line 5, in <module>
    n_cpus = int(MotifConfig().get_default_params()["ncpus"])
KeyError: 'ncpus'

Inspecting the content of MotifConfig().get_default_params() it seems like the ncpus is indeed not available:

>>> MotifConfig().get_default_params()
{'fraction': '0.2', 'use_strand': 'False', 'available_tools': 'MDmodule,MEME,GADEM,MotifSampler,trawler,Improbizer,BioProspector,Posmo,ChIPMunk,JASPAR,AMD,HMS,Homer', 'abs_max': '1000', 'analysis': 'medium', 'pvalue': '0.001', 'width': '200', 'lwidth': '500', 'scan_cutoff': '0.9', 'background': 'genomic_matched,random', 'cluster_threshold': '0.95', 'max_time': 'None', 'motif_db': 'vertebrate_motifs.pwm', 'tools': 'MDmodule,MEME,MotifSampler,trawler,Improbizer,BioProspector,Posmo,ChIPMunk,JASPAR,AMD,HMS,Homer', 'enrichment': '1.5', 'markov_model': '1', 'genome': 'hg19'}

A which ncpus yields /usr/bin/ncpus and results in 8.

What do you think about this?

Many thanks for your assistance and help.
Regards

Fix ChIPMunk error

Sometimes GimmeMotifs hangs on ChIPMunk, especially with small inputs. Figure out what's happening and Fix It!

failed to download genome

Having trouble downloading hg18 genome using gimme genome . hg18

Retrieving gene annotation for hg18
Using http://hgdownload.cse.ucsc.edu/goldenPath/hg18/database/knownGene.txt.gz
zcat /tmp/tmpKPJNfT.gz | cut -f1-11 | /home/carlos/anaconda2/bin/genePredToBed /dev/stdin /home/carlos/anaconda2/share/gimmemotifs/genes/hg18.bed
Downloading hg18 genome
Trying to download http://hgdownload.soe.ucsc.edu/goldenPath/hg18/bigZips/chromFa.tar.gz
Trying to download http://hgdownload.soe.ucsc.edu/goldenPath/hg18/bigZips/hg18.fa.gz
Failed to download genome

The version is 0.10.0.

Using version 0.11.0

/home/carlos/anaconda2/envs/gimme/lib/python3.6/site-packages/matplotlib/font_manager.py:280: UserWarning: Matplotlib is building the font cache using fc-list. This may take a moment.
  'Matplotlib is building the font cache using fc-list. '
Retrieving gene annotation for hg18
Using http://hgdownload.cse.ucsc.edu/goldenPath/hg18/database/knownGene.txt.gz
zcat /tmp/tmpn1pj049r.gz | cut -f1-11 | /home/carlos/anaconda2/envs/gimme/bin/genePredToBed /dev/stdin /home/carlos/anaconda2/envs/gimme/share/gimmemotifs/genes/hg18.bed
Downloading hg18 genome
Trying to download http://hgdownload.soe.ucsc.edu/goldenPath/hg18/bigZips/chromFa.tar.gz
Traceback (most recent call last):
  File "/home/carlos/anaconda2/envs/gimme/bin/gimme", line 496, in <module>
    args.func(args)
  File "/home/carlos/anaconda2/envs/gimme/lib/python3.6/site-packages/gimmemotifs/commands/genome.py", line 23, in genome
    get_genome(args.genomebuild, args.fastadir, args.indexdir)
  File "/home/carlos/anaconda2/envs/gimme/lib/python3.6/site-packages/gimmemotifs/genome_index.py", line 222, in get_genome
    download_genome(genomebuild, genome_dir)
  File "/home/carlos/anaconda2/envs/gimme/lib/python3.6/site-packages/gimmemotifs/genome_index.py", line 168, in download_genome
    genome_fa
  File "/home/carlos/anaconda2/envs/gimme/lib/python3.6/urllib/request.py", line 248, in urlretrieve
    with contextlib.closing(urlopen(url, data)) as fp:
  File "/home/carlos/anaconda2/envs/gimme/lib/python3.6/urllib/request.py", line 223, in urlopen
    return opener.open(url, data, timeout)
  File "/home/carlos/anaconda2/envs/gimme/lib/python3.6/urllib/request.py", line 532, in open
    response = meth(req, response)
  File "/home/carlos/anaconda2/envs/gimme/lib/python3.6/urllib/request.py", line 642, in http_response
    'http', request, response, code, msg, hdrs)
  File "/home/carlos/anaconda2/envs/gimme/lib/python3.6/urllib/request.py", line 570, in error
    return self._call_chain(*args)
  File "/home/carlos/anaconda2/envs/gimme/lib/python3.6/urllib/request.py", line 504, in _call_chain
    result = func(*args)
  File "/home/carlos/anaconda2/envs/gimme/lib/python3.6/urllib/request.py", line 650, in http_error_default
    raise HTTPError(req.full_url, code, msg, hdrs, fp)
urllib.error.HTTPError: HTTP Error 404: Not Found

Background creation: use input instead of validation files

I think there might be a bug in the core.py file under the function "create_background", since for the prediction background file we should input the prediction fasta file not the validation fasta file as input, unless I am mistaken.

Here is the function under core.py:

def create_background(self, background=["random"], organism="hg18", width=200):
    nr_sequences = {}

# Create background for motif prediction
if "gc" in background:
     #this is the line I am talking about; self.validation_fa should be self.prediction_fa
    self._create_background("gc", self.validation_bed, self.validation_fa, self.prediction_bg,  organism=organism, width=width)

else:
    #this is the line I am talking about; self.validation_fa should be self.prediction_fa
    self._create_background(background[0], self.validation_bed, self.validation_fa, self.prediction_bg, organism=organism, width=width)

# Get background fasta files
for bg in background:
    nr_sequences[bg] = self._create_background(bg, self.validation_bed, self.validation_fa, self.bg_file["fa"][bg], organism=organism, width=width)

Thank you,

Rami Alouran
Ohio University Bioinformatics lab

background generates regions outside chrom size?

simon@mb06 ~/tmp $ gimme motifs -n test -a small -t MDmodule /home/matteo/STEM/p300/fluff/ext_250/gimme/p300_refpeaks_sort_merged_ext_250_no_overscaffold_no_TSS_1kb_50p_130u_norm_prof_corr0.8_reformatted_prof_0.bed -g xenTro3beta
Output directory test already exists!
Resuming a previous run is not yet implemented. Please specify a different name,
or delete this directory if you really want to overwrite it
2014-07-09 15:23:39,127 - INFO - Logging started
2014-07-09 15:23:39,128 - INFO - Created logfile test/gimme_motifs.log
2014-07-09 15:23:39,129 - INFO - gimme_motifs version 0.8.3
2014-07-09 15:23:39,130 - INFO - Created output directory test (all output files will be stored here)
2014-07-09 15:23:39,133 - INFO - Starting full motif analysis
2014-07-09 15:23:39,147 - INFO - Using temporary directory /tmp/gimmemotifs.12161.unHncT
2014-07-09 15:23:39,154 - INFO - Using pp
2014-07-09 15:23:39,155 - INFO - Parameters:
2014-07-09 15:23:39,156 - INFO - ncpus: 12
2014-07-09 15:23:39,157 - INFO - torque: False
2014-07-09 15:23:39,157 - INFO - lwidth: 500
2014-07-09 15:23:39,158 - INFO - tools: MDmodule
2014-07-09 15:23:39,159 - INFO - user_background: None
2014-07-09 15:23:39,159 - INFO - use_strand: False
2014-07-09 15:23:39,160 - INFO - scan_cutoff: 0.9
2014-07-09 15:23:39,161 - INFO - width: 200
2014-07-09 15:23:39,162 - INFO - genome: xenTro3beta
2014-07-09 15:23:39,162 - INFO - fraction: 0.2
2014-07-09 15:23:39,163 - INFO - background: genomic_matched,random
2014-07-09 15:23:39,164 - INFO - abs_max: 1000
2014-07-09 15:23:39,164 - INFO - available_tools: MDmodule,MEME,MEMEW,GADEM,MotifSampler,trawler,Improbizer,BioProspector,Posmo,ChIPMunk,JASPAR,AMD,HMS
2014-07-09 15:23:39,165 - INFO - analysis: small
2014-07-09 15:23:39,166 - INFO - enrichment: 1.5
2014-07-09 15:23:39,167 - INFO - keep_intermediate: False
2014-07-09 15:23:39,167 - INFO - max_time: None
2014-07-09 15:23:39,168 - INFO - cluster_threshold: 0.95
2014-07-09 15:23:39,169 - INFO - motif_db: vertebrate_motifs.pwm
2014-07-09 15:23:39,169 - INFO - pvalue: 0.001
2014-07-09 15:23:39,170 - INFO - markov_model: 1
2014-07-09 15:23:39,259 - INFO - Could not parse max_time value, setting to no limit
2014-07-09 15:23:39,260 - INFO - Invalid time limit for motif prediction, setting to no limit
2014-07-09 15:23:39,261 - INFO - Preparing input (BED)
2014-07-09 15:24:03,577 - INFO - Creating matched genomic background (xenTro3beta, using genes in /usr/share/gimmemotifs/genes/xenTro3beta.bed)
Traceback (most recent call last):
File "/usr/bin/gimme", line 400, in
args.func(args)
File "/usr/lib64/python2.7/site-packages/gimmemotifs/commands/motifs.py", line 69, in motifs
gm.run_full_analysis(args.inputfile, params)
File "/usr/lib64/python2.7/site-packages/gimmemotifs/core.py", line 785, in run_full_analysis
self.create_background(background, params["genome"], params["width"])
File "/usr/lib64/python2.7/site-packages/gimmemotifs/core.py", line 399, in create_background
self._create_background("genomic_matched", self.validation_bed, None, self.prediction_bg, organism=organism, width=width)
File "/usr/lib64/python2.7/site-packages/gimmemotifs/core.py", line 324, in _create_background
f = MatchedGenomicFasta(bedfile, gene_file, index_dir, width, nr_times)
File "/usr/lib64/python2.7/site-packages/gimmemotifs/background.py", line 367, in init
track2fasta(index, tmpbed, tmpfasta)
File "/usr/lib64/python2.7/site-packages/gimmemotifs/genome_index.py", line 399, in track2fasta
all_seqs = g.get_sequences(chrom, coords)
File "/usr/lib64/python2.7/site-packages/gimmemotifs/genome_index.py", line 262, in get_sequences
raise ValueError, "%s: %s, invalid start, greater than sequence length!" % (chr,start)
ValueError: scaffold_84: 31303539, invalid start, greater than sequence length!

duplicate lines in maelstrom

Maelstrom fails if duplicate lines are present in the input. Either deal with it, or give an informative error message.

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.