Giter Club home page Giter Club logo

dxda's Introduction

DNAnexus

Dnanexus Apps and Scripts

applets

  • binning_step0: BioBin Pipeline
  • biobin_pipeline
  • binning_step1: BioBin Pipeline
  • biobin_pipeline
  • binning_step2: BioBin Pipeline
  • biobin_pipeline
  • binning_step3: BioBin Pipeline
  • biobin_pipeline
  • impute2_group_join: Impute2_group_join
  • This app can be used to merge multiple imputed impute2 files
  • plato_biobin: PLATO BioBin Regression Analysis
  • PLATO_BioBin
  • vcf_batch: VCF Batch effect tester
  • vcf_batch

apps

  • association_result_annotation: Annotate GWAS, PheWAS Assocaitions
  • association_result_annotation
  • biobin:
  • This app runs the latest development build of the rare variant binning tool BioBin.
  • generate_phenotype_matrix: Generate Phenotype Matrix
  • generate_phenotype_matrix
  • genotype_case_control: Generate Case/Control by Genotype
  • App provides case and control number by each genotype
  • impute2: imputation
  • This will perfrom imputation using Impute2
  • impute2_to_plink: Impute2 To PLINK
  • Convert Impute2 file to PLINK files
  • plato_single_variant: PLATO - Single Variant Analysis
  • Apps allows you to run single variant association testing against single phenotype (GWAS) or multiple phenotype (PheWAS) test
  • rl_sleeper_app: sleeper
  • This App provides some useful tools when working with data in DNANexus. This App is designed to be run on the command line with "dx run --ssh RL_Sleeper_App" in the project that you have data that you want to explore (use "dx select" to switch projects as needed).
  • shapeit2: SHAPEIT2
  • This app do phasing using SHAPEIT2
  • strand_align: Strand Align
  • Strand Align prior to phasing
  • vcf_annotation_formatter:
  • Extracts and reformats VCF annotations (CLINVAR, dbNSFP, SIFT, SNPEff)
  • QC_apps subfolder:
    • drop_marker_sample: Drop Markers and/or Samples (PLINK)
      • drop_marker_sample
  • drop_relateds: Relatedness Filter (IBD)
    • drop_relateds
  • extract_marker_sample: Drop Markers and/or Samples (PLINK)"
    • extract_marker_sample
  • maf_filter: Marker MAF Rate Filter (PLINK)
    • maf_filter
  • marker_call_filter: Marker Call Rate Filter (PLINK)
    • marker_call_filter
  • missing_summary: Missingness Summary (PLINK)
    • Returns missingness rate by sample
  • pca: Principal Component Analysis using SMARTPCA
    • pca
  • sample_call_filter: Sample Call Rate Filter (PLINK)
    • sample_call_filter

scripts

  • cat_vcf.py *
  • download_intervals.py *
  • download_part.py *
  • estimate_size.py *
  • interval_pad.py
    • This reads a bed file from standard input, pads the intervals, sorts and then outputs the intervals guranteed to be non-overlapping
  • update_applet.sh *

sequencing

  • bcftools_view:
    • Calls "bcftools view". Still in experimental stages.
  • calc_ibd:
    • Calculates a pairwise IBD estimate from either VCF or PLINK files using PLINK 1.9.
  • call_bqsr: Base Quality Score Recalibration
  • call_genotypes:
    • Obsolete, do not use; use geno_p instead. Calls GATK GenotypeGVCFs.
  • call_hc:
  • call_vqsr:
  • cat_variants: combine_variants
    • Combines non-overlapping VCF files with the same subjects. A reimplementation of GATK CatVariants (GATK CatVariants available upon request)
  • combine_variants: combine_variants
  • gen_ancestry:
    • Determine Ancestry from PCA. Uses an eigenvector file and training dataset listing known ancestries. Runs QDA to determine posterior ancestries for all samples, even those in the training set.
  • gen_related_todrop:
    • Uses a PLINK IBD file to determine the minimal set of samples to drop in order to generate an unrelated sample set. Uses a minimum vertex cut algorithm of the related samples to get
  • geno_p:
  • merge_gvcfs:
  • plink_merge:
    • Merge PLINK bed/bim/fam files using PLINK 1.9
  • select_variants: VCF QC
  • variant_annotator: VCF QC
  • vcf_annotate: Annotate VCF File
    • Use a variety of tools to annotate a sites-only VCF.
  • vcf_concordance: VCF Concordance
  • vcf_gen_lof:
    • Subset a VCF from vcf_annotate based on the given annotations to get a sites-only VCF of loss-of-function variants.
  • vcf_pca:
    • Uses PLINK 1.9 and eigenstrat 6.0 to calculate principal components from VCF or PLINK bed/bim/fam files.
  • vcf_qc:
  • vcf_query:
    • Calls "bcftools query" to extract annotations from the VCF file. Used in the stripping of files for MEGAbase
  • vcf_sitesonly: VCF QC
    • Generates a sites-only file from full VCF files.
  • vcf_slice: Slice VCF File(s)
    • Return a small section of a VCF file (similar to tabix). For large output, many small regions, or subsetting samples, use subset_vcf instead.
  • vcf_summary: VCF Summary Statistics
    • Generate summary statistics for a VCF file (by sample and by variant)
  • vcf_to_plink:
    • Uses PLINK 1.9 to convert VCF files to PLINK bed/bim/fam files

dxda's People

Stargazers

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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

dxda's Issues

inconsistencies between argument name and outputs

I'm using create_manifest.py and filter_manifest.py .one has the output file as --output_file and the other --outfile.
Also, there doesn't seem to be and stdout for filter_manifest.py (not the end of the world, but would be good to have a success/summary statement)

split_manifest.py not working under Python3

Hey,

I tried to use split_manifest.py under python3, but it failed with UnicodeDecodeError: 'utf-8' codec can't decode byte 0x80 in position 18: invalid start byte

Solution for me:

  1. change open(manifest_file) to open(manifest_file, "rb") in line 12
  2. change with open(outfile) as f: to with open(outfile, "wb") as f:

The changes were adapted from the python script filter_manifest.py, which worked fine under python3

split_manifest.py can't parse mainfest created by create_manifest.py

I have cloned the latest git repository to obtain both of these scripts and while create and filter manifest scripts work great split_manifest.py gives me the following error on both the raw and filtered manifest files I have generated. dx-download-agent-linux inspect and download works with the mainfests I have generated so it seem to be unique to split.

Traceback (most recent call last):
File "/home/ljmills/shared/bin/dxda/scripts/split_manifest_ljm.py", line 32, in
main()
File "/home/ljmills/shared/bin/dxda/scripts/split_manifest_ljm.py", line 29, in main
split_manifest(args.manifest_file, args.num_files)
File "/home/ljmills/shared/bin/dxda/scripts/split_manifest_ljm.py", line 13, in split_manifest
manifest = json.loads(bz2.decompress(mf.read()))
File "/home/ljmills/shared/bin/miniconda3/lib/python3.7/codecs.py", line 322, in decode
(result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x84 in position 11: invalid start byte

authentication - order of preference

I think even if I supply the --auth-token argument to the download command it will still take the credentials from ~/.dnanexus_config/environment.json

Using client via linux cluster

Hi, I am trying to use your client to download data.

Here is what I have done.

  1. I downloaded the latest "dx-download-agent-linux.tar" from the release section and unzipped it.
  2. I have a Manifest file generated through your automated generation tool.
  3. Included the API key into ~/.dnanexus_config/environment.json as
"DX_API_TOKEN": "xxxx"
  1. cd'd into the directory which contains both the files.
  2. Used the following command to download data.
dx-download-agent download manifest_001.json.bz2

I get the following error

bash: dx-download-agent: command not found

Any idea why? Do I need to be logged into dx?

Thank you.

split_manifest.py files can't download

The first split_manifest file downloads properly, but all subsequent files return the following error:

Obtained token using ~/.dnanexus_config/environment.json
number of machine cores: 56
memory size: 125 GiB
Downloading files using 32 threads
maximal memory chunk size: 16 MiB
All files have parts, assuming they are not archived or open
Ensuring files are created for existing manifest
panic: no such table: manifest_regular_stats

goroutine 1 [running]:
github.com/dnanexus/dxda.check(...)
/home/runner/work/dxda/dxda/util.go:148
github.com/dnanexus/dxda.(*State).queryDBIntegerResult(0xc00017e180, 0x856cd6, 0x48, 0x0)
/home/runner/work/dxda/dxda/dxda.go:220 +0x1f7
github.com/dnanexus/dxda.(*State).CheckDiskSpace(0xc00017e180, 0xc00019ee00, 0x12)
/home/runner/work/dxda/dxda/dxda.go:262 +0x55
main.(*downloadCmd).Execute(0xc0001222c0, 0x8b3730, 0xc000122000, 0xc0001342a0, 0x0, 0x0, 0x0, 0x0)
/home/runner/work/dxda/dxda/cmd/dx-download-agent/dx-download-agent.go:91 +0x6b6
github.com/google/subcommands.(*Commander).Execute(0xc00017e000, 0x8b3730, 0xc000122000, 0x0, 0x0, 0x0, 0xc000141f78)
/home/runner/go/pkg/mod/github.com/google/[email protected]/subcommands.go:209 +0x347
github.com/google/subcommands.Execute(...)
/home/runner/go/pkg/mod/github.com/google/[email protected]/subcommands.go:492
main.main()
/home/runner/work/dxda/dxda/cmd/dx-download-agent/dx-download-agent.go:214 +0x21f

panic: database is locked error when running the tool

I've been attempting to use the docker image to downlad files using a manifest... however, I keep getting a panic: database is locked error:

docker-compose run --rm dxda download manifest.json.bz2
Creating dxda_dxda_run ... done
Obtained token using environment
Creating manifest database manifest.json.bz2.stats.db
panic: database is locked

goroutine 1 [running]:
github.com/dnanexus/dxda.check(...)
        /go/src/github.com/dnanexus/dxda/dxda.go:42
github.com/dnanexus/dxda.CreateManifestDB(0x7ffe2b5abf08, 0x1c)
        /go/src/github.com/dnanexus/dxda/dxda.go:389 +0x822
main.(*downloadCmd).Execute(0xc0000d0428, 0x878000, 0xc0000d0010, 0xc0000c63c0, 0x0, 0x0, 0x0, 0x6c3a84)
        /go/src/github.com/dnanexus/dxda/cmd/dx-download-agent/dx-download-agent.go:42 +0x32c
github.com/google/subcommands.(*Commander).Execute(0xc00014c000, 0x878000, 0xc0000d0010, 0x0, 0x0, 0x0, 0x0)
        /go/src/github.com/google/subcommands/subcommands.go:142 +0x2fa
github.com/google/subcommands.Execute(0x878000, 0xc0000d0010, 0x0, 0x0, 0x0, 0x0)
        /go/src/github.com/google/subcommands/subcommands.go:420 +0x5f
main.main()
        /go/src/github.com/dnanexus/dxda/cmd/dx-download-agent/dx-download-agent.go:127 +0x141

Here's my docker-compose.yml file:

version: '3'

services:
  dxda:
    image: dnanexus/dxda:v0.1.4
    working_dir: /workdir

    environment:
      DX_API_TOKEN: ${DX_API_TOKEN}
    volumes:
      - .:/workdir

DXDA binary for arm64

Is this possible You provide DXDA for ARM64 architecture? Would be also nice to have instructions on how to compile agent from sources

Starting Download with New Manifest

Is there a way to restart a download with a new manifest (ie force reset)?
I interrupted the previous download to update the manifest, but now am unable to start a new download as the tool is looking for the prior .download.log file

inspect

What does the inspect command do? I download the files, but before running the inspect command moved a file out and then renamed files so the contents wouldn't match.
The missing file was reported in stderr as:
panic: truncate /filepath/Undetermined_S0_R1_001.fastq.gz: no such file or directory

The file swap didn't report any error. Just want to understand what this command is doing.
Thanks

non-deterministic sql panic

Hi folks,

I've noticed that with some low frequency at random, I get jobs failing with the following immediately after localizing files with dxda:

panic: sql: database is closed
goroutine 62 [running]:
github.com/dnanexus/dxda.check(...)
	/go/src/github.com/dnanexus/dxda/util.go:147
github.com/dnanexus/dxda.(*State).queryDBIntegerResult(0xc0000fa120, 0x8e0f36, 0x50, 0x0)
	/go/src/github.com/dnanexus/dxda/dxda.go:216 +0x221
github.com/dnanexus/dxda.(*State).DownloadProgressOneTime(0xc0000fa120, 0x1bf08eb000, 0xdf72e0, 0x3)
	/go/src/github.com/dnanexus/dxda/dxda.go:511 +0x85
github.com/dnanexus/dxda.(*State).downloadProgressContinuous(0xc0000fa120)
	/go/src/github.com/dnanexus/dxda/dxda.go:546 +0x125
created by github.com/dnanexus/dxda.(*State).DownloadManifestDB
	/go/src/github.com/dnanexus/dxda/dxda.go:794 +0x7e3
download agent failed rc=2

These often succeed upon relaunch. Here is one example job that came from this larger analysis.

Do you know what causes that behavior?

If it matters, these workflows are all generated via dxWDL 1.46.4. Since this often succeeds after relaunch, would it make sense for dxWDLrt to capture exit code 2 from dxda and just retry up to some reasonable retry limit?

Rewrite create_manifest.py in go or bundle it into go package

The tool would be way easier to use if you could just create a manifest without needing to copy over a scripts folder:

./dxda create-manifest -project myproject -folder myfolder > output.manifest.json.bz

Except for resolve_existing_path (which you could fix by requiring project ID and a folder path for create-manifest), everything else is trivially rewritable using go and the dnanexus api.

create_manifest_bulk.py not working with py3

Issue1:
The dxda was cloned just now.

$ python -V
Python 3.7.3
$ python create_manifest_bulk.py -r --outfile "myfiles.manifest.json.bz2" project-FXB0v500ypGV9FGK2Fyk208b:/
Traceback (most recent call last):
  File "create_manifest_bulk.py", line 59, in <module>
    main()
  File "create_manifest_bulk.py", line 53, in main
    f.write(bz2.compress(json.dumps(manifest, indent=2, sort_keys=True)))
  File "/home/slan/anaconda3/lib/python3.7/bz2.py", line 334, in compress
    return comp.compress(data) + comp.flush()
TypeError: a bytes-like object is required, not 'str'

Issue2:
The example in the Readme.md for newly added manifest creation instructions:
https://github.com/dnanexus/dxda/blob/master/README.md

python create_manifest_bulk.py --folder "Project:/Folder" --recursive --outfile "myfiles.manifest.json.bz2"

When run $ python create_manifest_bulk.py -h, the syntax for the command is
usage: create_manifest_bulk.py [-h] [--outfile OUTFILE] [-r] folder

There is no "--folder" argument. Looks like the following command is supposed to work:
python create_manifest_bulk.py --recursive --outfile "myfiles.manifest.json.bz2" Project:/Folder

Currently the following command works as expected (manifest file generated) in py2.7 environment:
$GOROOT/bin/go run $GOROOT/src/github.com/dnanexus/dxda/cmd/dx-download-agent download ./myfiles.manifest.json.bz2 :/

Inline compat.py into all scripts

Because of compat.py, you can't just copy/paste the script file you want and run it. compat.py is really really short, so you could get nearly the same bang for the buck by copying it into each file. (which allows people to more easily pull in the create_manifest.py file directly)

Failed to build docker image

I used ttyd of DNANexus and failed to run docker build.

It was at this line:

go get github.com/dnanexus/dxda

This is the error:

# github.com/mattn/go-sqlite3
go/src/github.com/mattn/go-sqlite3/sqlite3_opt_serialize.go:41:26: undefined: math.MaxInt

problem with splitting a manifest file

Could someone helps with the below error?

~ % python3 split_manifest.py "200k_allfiles.manifest.json.bz2" -n 100
Traceback (most recent call last):
File "/Users/D1/split_manifest.py", line 30, in
main()
File "/Users/D1/split_manifest.py", line 27, in main
split_manifest(args.manifest_file, args.num_files)
File "/Users/D1/split_manifest.py", line 13, in split_manifest
manifest = json.loads(bz2.decompress(mf.read()))
^^^^^^^^^
File "", line 322, in decode
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xfc in position 11: invalid start byte

Give more descriptive error message when invalid token used

When using the dxda with a token that does not exist or has expired, the following error shows (replaced part of addresses with ...):

panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x48 pc=0x...]
goroutine 53 [running]:
github.com/dnanexus/dxda.DxAPI(0x9..., 0xc000..., 0xc00..., 0xa, 0xc00..., 0xc00..., 0x26, 0xc00..., 0x45, 0x0, ...)
  	/go/src/github.com/dnanexus/dxda/dx_http.go:383 +0x57c
github.com/dnanexus/dxda.(*State).createURL(0xc0..., 0xc0..., 0x1d, 0xc0..., 0x20, 0xc0..., 0xc, 0xc0..., 0x32, 0x1, ...)
 	/go/src/github.com/dnanexus/dxda/dxda.go:693 +0x286
github.com/dnanexus/dxda.(*State).preauthUrlsWorker(0xc0..., 0xc0..., 0xc00...)
 	/go/src/github.com/dnanexus/dxda/dxda.go:722 +0x2a1
created by github.com/dnanexus/dxda.(*State).DownloadManifestDB
	/go/src/github.com/dnanexus/dxda/dxda.go:853 +0x6f3
 

Took some investigation to realize this was from an invalid token. A more descriptive error message in this case would be helpful.

fatal error: concurrent map read and map writerts

Greetings,

I experienced this error today, and have included a portion of the total error output.

Please let me know if I can provide anything else. Thanks!

$ ../bin/dx-download-agent-linux/dx-download-agent download -max_threads=24 manifests/manifest.json.bz2
Logging detailed output to: manifests/manifest.json.bz2.download.log

Obtained token using environment
Required disk space = 6.5TB, available = 1798.7TB
Preparing files for download
Downloading files using 24 threads
fatal error: concurrent map read and map writerts (~187.1 MB/s written to disk estimated over the last 60s)

goroutine 86 [running]:
runtime.throw(0x826afe, 0x21)
        /usr/local/go/src/runtime/panic.go:608 +0x72 fp=0xc0010cdce0 sp=0xc0010cdcb0 pc=0x435982
runtime.mapaccess2_faststr(0x7bcf80, 0xc00c310f60, 0xc0127388a0, 0x1d, 0xc012733d00, 0x1d)
        /usr/local/go/src/runtime/map_faststr.go:110 +0x458 fp=0xc0010cdd50 sp=0xc0010cdce0 pc=0x41cf98
github.com/dnanexus/dxda.worker(0xc, 0xc0000b8540, 0xc00001806d, 0x20, 0xcef8e8, 0xc0037666d0)
        /go/src/github.com/dnanexus/dxda/dxda.go:543 +0x1af fp=0xc0010cdfb0 sp=0xc0010cdd50 pc=0x6bf97f
runtime.goexit()
        /usr/local/go/src/runtime/asm_amd64.s:1333 +0x1 fp=0xc0010cdfb8 sp=0xc0010cdfb0 pc=0x461df1
created by github.com/dnanexus/dxda.DownloadManifestDB
        /go/src/github.com/dnanexus/dxda/dxda.go:653 +0x605

goroutine 1 [semacquire, 18 minutes]:
sync.runtime_Semacquire(0xc0037666d8)
        /usr/local/go/src/runtime/sema.go:56 +0x39
sync.(*WaitGroup).Wait(0xc0037666d0)
        /usr/local/go/src/sync/waitgroup.go:130 +0x64
github.com/dnanexus/dxda.DownloadManifestDB(0x7ffddde38b09, 0x28, 0xc00001806d, 0x20, 0x18)
        /go/src/github.com/dnanexus/dxda/dxda.go:658 +0x68a
main.(*downloadCmd).Execute(0xc00001a4e8, 0x878180, 0xc00001a0c0, 0xc0000b83c0, 0x0, 0x0, 0x0, 0x0)
        /go/src/github.com/dnanexus/dxda/cmd/dx-download-agent/dx-download-agent.go:64 +0x3a4
github.com/google/subcommands.(*Commander).Execute(0xc00014c000, 0x878180, 0xc00001a0c0, 0x0, 0x0, 0x0, 0x0)
        /go/src/github.com/google/subcommands/subcommands.go:142 +0x2fa
github.com/google/subcommands.Execute(0x878180, 0xc00001a0c0, 0x0, 0x0, 0x0, 0x0)
        /go/src/github.com/google/subcommands/subcommands.go:420 +0x5f
main.main()
        /go/src/github.com/dnanexus/dxda/cmd/dx-download-agent/dx-download-agent.go:143 +0x141

goroutine 90 [runnable]:
net/http.Header.clone(0xc0065605d0, 0x0)
        /usr/local/go/src/net/http/header.go:69 +0xcd
net/http.(*Client).makeHeadersCopier(0xc0065603c0, 0xc0134de000, 0x0)
        /usr/local/go/src/net/http/client.go:671 +0x44
net/http.(*Client).do(0xc0065603c0, 0xc0134de000, 0x0, 0x0, 0x0)
        /usr/local/go/src/net/http/client.go:530 +0x12d
net/http.(*Client).Do(0xc0065603c0, 0xc0134de000, 0x877940, 0xc0128bc020, 0x0)
        /usr/local/go/src/net/http/client.go:509 +0x35
github.com/hashicorp/go-retryablehttp.(*Client).Do(0xc000471840, 0xc013100040, 0xf, 0xc0128b1d80, 0x20)
        /go/src/github.com/hashicorp/go-retryablehttp/client.go:377 +0xad
github.com/dnanexus/dxda.makeRequestWithHeadersFail(0x81d056, 0x3, 0xc013642000, 0x7c, 0xc000471ad0, 0xc005cbe030, 0x2, 0x8, 0x7c, 0xc01332b2c0, ...)
        /go/src/github.com/dnanexus/dxda/dxda.go:186 +0x258
github.com/dnanexus/dxda.DownloadDBPart(0x7ffddde38b09, 0x28, 0xc012737640, 0x1d, 0xc012737660, 0x20, 0xc003c257d0, 0x21, 0xc012737680, 0x11, ...)
        /go/src/github.com/dnanexus/dxda/dxda.go:775 +0x564
github.com/dnanexus/dxda.recoverer(0xffffffffffffffff, 0x833f60, 0x7ffddde38b09, 0x28, 0xc012737640, 0x1d, 0xc012737660, 0x20, 0xc003c257d0, 0x21, ...)
        /go/src/github.com/dnanexus/dxda/dxda.go:586 +0x163
github.com/dnanexus/dxda.worker(0x10, 0xc0000b8540, 0xc00001806d, 0x20, 0xcef8e8, 0xc0037666d0)
        /go/src/github.com/dnanexus/dxda/dxda.go:555 +0x107
created by github.com/dnanexus/dxda.DownloadManifestDB
        /go/src/github.com/dnanexus/dxda/dxda.go:653 +0x605

goroutine 89 [semacquire]:   
sync.runtime_SemacquireMutex(0xcef8ec, 0x3cad4cfac5fd2b00)
        /usr/local/go/src/runtime/sema.go:71 +0x3d
sync.(*Mutex).Lock(0xcef8e8) 
        /usr/local/go/src/sync/mutex.go:134 +0xff
github.com/dnanexus/dxda.DownloadDBPart(0x7ffddde38b09, 0x28, 0xc0127383c0, 0x1d, 0xc0127383e0, 0x20, 0xc003c25a10, 0x21, 0xc012738400, 0x11, ...)
        /go/src/github.com/dnanexus/dxda/dxda.go:768 +0x2fb
github.com/dnanexus/dxda.recoverer(0xffffffffffffffff, 0x833f60, 0x7ffddde38b09, 0x28, 0xc0127383c0, 0x1d, 0xc0127383e0, 0x20, 0xc003c25a10, 0x21, ...)
        /go/src/github.com/dnanexus/dxda/dxda.go:586 +0x163
github.com/dnanexus/dxda.worker(0xf, 0xc0000b8540, 0xc00001806d, 0x20, 0xcef8e8, 0xc0037666d0)
        /go/src/github.com/dnanexus/dxda/dxda.go:555 +0x107
created by github.com/dnanexus/dxda.DownloadManifestDB
        /go/src/github.com/dnanexus/dxda/dxda.go:653 +0x605

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.