Coder Social home page Coder Social logo

snp2go's Introduction

SNP2GO

Build Status

SNP2GO is an R package that tests Gene Ontology terms for enrichment of candidate SNPs and infers whether enrichment is influenced by local effects.

Requirements

SNP2GO depends on the goProfiles, hash and GenomicRanges packages. You can install them typing the following commands in your R console:

install.packages("hash")

# Install Bioconductor.
if (!requireNamespace("BiocManager"))
    install.packages("BiocManager")
BiocManager::install()

# Install the bioconductor packages:
BiocManager::install(c("GenomicRanges", "goProfiles"))

Installing SNP2GO

You can install SNP2GO by either downloading the package manually or by using the devtools package, which automatically downloads it from github (recommended).

Using the devtools package.

install.packages("devtools")
library("devtools")
install.github("davidszkiba/snp2go")

Manual download

You can download the program here and install it using R's install.packages function:

install.packages(pkgs="/home/me/downloads/SNP2GO_x.y.z.tar.gz", repos=NULL, type="source")
library(SNP2GO) #load the package
?SNP2GO #view the help-page of the package
?snp2go #view the help-page of the snp2go function

Parameters

The snp2go function takes the following arguments:

  • candidateSNPs: A GenomicRanges object containing the coordinates of the candidate SNPs.
  • noncandidateSNPs: A GenomicRanges object containing the coordinates of the non-candidate SNPs.
  • gff: Path to the GFF file. The GFF files must contain the attribute "Ontology_term"
  • gtf: Path to the GTF file
  • goFile: Path to a file containing the gene ID --> GO ID associations. The gene IDs must be the same as the gene IDs used in the GTF file. This parameter is needed only when the "gtf" parameter is used.
  • runs: Number of times the program will repeat the random sampling. Default: 100,000.
  • FDR: Significance of the Fisher's exact test after false discovery rate. SNP2GO will report GO terms with FDR values lower than the value set by the user. Default: 0.05
  • extension: Number of nucleotides up and down the gene that will be included for the extended definition of the genome region. Default: 0 (i.e., gene region = gene)
  • min.regions: Minimum number of regions associated to GO terms. SNP2GO will report GO terms having at least min.regions.
  • verbose: Progress report. Default: TRUE.

Output

SNP2GO returns a named list containing the following elements:

  • candidate.snps: Number of candidate SNPs provided by the user.
  • noncandidate.snps: Number of non-candidate SNPs provided by the user.
  • informative.candidate.snps: Number of candidate SNPs that can be associated with a GO term.
  • informative.noncandidate.snps: Number of non-candidate SNPs that can be associated with an annotated GO term.
  • FDR: FDR value set by the user.
  • runs: Number of times SNP2GO repeated the hypergeometric sampling.
  • extension: Number of nucleotides up and down the gene used to extend the definition of the genome region.
  • goterms: The list of all GO terms analysed by SNP2GO.
  • regions: A GenomicRanges object that contains all regions of the input file that are associated to at least one GO term. These regions are extended by the number of nucleotides specified by the extension parameter.
  • go2ranges: A list that contains three hash tables that store the mappings of GO terms to (1) GO regions (i.e. genes), (2) candidate SNPs and (3) noncandidate SNPs:
  • go2ranges[["regions"]][[g]] contains the indices of all GO regions, go2ranges[["candidates"]][[g]] contains the indices of all candidate SNPs and go2ranges[["noncandidates"]][[g]] contains the indices of all noncandidate SNPs associated with GO term g.
  • The indices of the GO regions refer to the regions element returned by the snp2go function, the indices of the candidate- and noncandidate SNPs refer to the candidate- and noncandidate SNPs passed as GenomicRanges objects to the snp2go function.
  • enriched: A dataframe that reports the significant GO terms.

The enriched dataframe reporting the significant GO terms provides the next information:

  • GO: ID of the significant GO term.
  • p.L: Proportion of iterations in which the hypergeometric sampling found less or equal candidate regions than observed.
  • p.G: Proportion of iterations in which the hypergeometric sampling found more or equal candidate regions than observed.
  • g: Number of genomic regions associated with the significant GO term having at least one candidate SNP.
  • G: Total number of genomic regions associated with the significant GO term.
  • nc: Number of candidate SNPs located in G.
  • mc: Number of non-candidate SNPs located in G.
  • P: P-value of the Fisher's exact test.
  • FDR: Adjusted P-Value after applying the Benjamini-Hochberg method.
  • GO.def: Definition of the significant GO term.
  • Child.GOs: Child terms that are also significantly enriched with candidate SNPs.

Examples

In the next example we use data from Drosophila melanogaster, but the same work-flow can be applied for any other organism. SNP2GO needs a GFF file (or GTF) and a VCF file(s) containing the SNP coordinates.

A GFF file can be found at the Flybase website. This GFF file contains the gene coordinates and the GO terms associated with them. Alternatively, a GTF file can be download from Ensembl. The GTF format is slightly different to GFF's and does not provide GO annotations. Therefore, if you are using a GTF file, you will also need to provide SNP2GO with a gene association file. To get a gene association file, go to Ensembl's MartView website and select the "Ensembl Genes" database and the "Drosophila melanogaster genes" dataset. The only attributes you need are the "Ensembl Gene ID" and "GO Term Accession". Download the data and request Ensembl to save it in a tsv-file. This protocol is very useful since many annotated genomes are provided in GTF format.

Finally, you need to provide SNP2GO with a list of SNPs. In our example we will use a single VCF file containing the SNPs. The file can be downloaded here, and consists of a list of SNPs sorted by a P-value. The top 2,000 SNPs are described in the original study as candidate SNPs and the rest as non-candidate SNPs. You can try yourself to import them into R and run SNP2GO with the D. melanogaster GFF file.

You can copy and paste the next work-flow in your R console:

# R console:
# load the SNP2GO package
library(SNP2GO)

# Read the VCF file and construct a GenomicRanges object:
snps <- read.delim("BF15.vcf",header=FALSE,comment.char="#")
    snps[,2] <- as.numeric(snps[,2])
    snps <- GRanges(seqnames=snps[,1],ranges=IRanges(snps[,2],snps[,2]))

# Use the first 2000 SNPs as candidate SNPs and the rest as non-candidate SNPs:
    cand <- snps[1:2000]
    noncand <- snps[2001:length(snps)]

# Case 1: Using a GFF file
    x <- snp2go(gff="dmel-all-no-analysis-r5.49.gff.gz",
         candidateSNPs=cand,
         noncandidateSNPs=noncand)

# Case 2: Using a GTF file + gene association file
    y <- snp2go(gtf="Drosophila_melanogaster.BDGP5.70.gtf.gz",
         goFile="mart_export_dmel.txt",
         candidateSNPs=cand,
         noncandidateSNPs=noncand,
         FDR=0.05,
         runs=10000,
         extension=50)

# Get all enriched GO terms of GFF analysis:
gff.significant.terms <- x$enriched$GO

    # Get the first of the enriched GO terms:
    first.term <- gff.significant.terms[1] # this is "GO:0051726"

    # Print all regions associated with at least one GO term:
    print(x$regions)

    # Print the regions associated with the first of the enriched GO terms:
    # There are two possibilities to do so:
    # version 1:
    print(x$regions[ x$go2ranges[[ "regions" ]][[ "GO:0051726" ]] ])
    # version 2:
    print(x$regions[unlist(as.list(x$go2ranges[["regions"]][first.term]))])
    # Although version 2 seems more complicated, it allows to get the regions
    # associated with more than one term. In the following example, all regions associated
    # with the first ten enriched GO terms (gff.significant.terms[1:10]) are printed:
    print(x$regions[unlist(as.list(x$go2ranges[["regions"]][gff.significant.terms[1:10]]))])

    # Print the candidate SNPs associated with the first of the enriched GO terms:
    # Like for the GO regions, there are also two possibilities to do that:
    # version 1:
    print(cand[ x$go2ranges[["candidates"]][["GO:0051726"]] ])
    # version 2:
    print(cand[unlist(as.list(x$go2ranges[["candidates"]][first.term]))])


    # Print the noncandidate SNPs associated with the first of the enriched GO terms:
    # version 1:
    print(noncand[ x$go2ranges[["noncandidates"]][["GO:0051726"]] ])
    # version 2:
    print(noncand[unlist(as.list(x$go2ranges[["noncandidates"]][first.term]))])

# Get number of informative candidates of the GTF analysis:
z <- y$informative.candidate.snps

    # Print the list of all GO terms associated to at least one gene in the
    # GFF analysis:
    print(x$goterms)


    # Store the results in tab-seperated files
write.table(file="snp2go_gff.tsv",x$enriched,sep="\t",row.names=F)
write.table(file="snp2go_gtf.tsv",y$enriched,sep="\t",row.names=F)

Note: SNP2GO will by default print the significant GO terms having at least 10 genome regions associated to them.This behaviour can be changed by the min.regions parameter.

Reference

D. Szkiba, M. Kapun, A. von Haeseler, and M. Gallach. SNP2GO: functional analysis of genome-wide association studies. (2014) Genetics. 197: 285-289 (https://dx.doi.org/10.1534/genetics.113.160341)

CIBIV SNP2GO Website

snp2go's People

Contributors

davidszkiba avatar

Watchers

 avatar  avatar

snp2go's Issues

NAs in output of SNP2GO

Hello,

I have been having issues using the snp2go functions for my non-model organism because the output produces enriched results but does not include the number of regions associated with each significant GO term. My organism is annotated using SnpEff and Panther so I have GO term associations, I am just confused why the results are returning these objects with NAs.

Attached is a picture of my GTF:
image

This is a picture of the GO association file:
image

Here is the output of SNP2GO:
image

Any help will be greatly appreciated, I assume it is a formatting issue or something simple like that I just cannot figure it out!

Best,
Connor Murray

Error in .Call2("Rle_constructor", values, lengths, PACKAGE = "S4Vectors") : Rle of type 'list' is not supported

Hello,
I am trying to use SNP2GO with a gff3 annotation file. It starts reading the file (Reading Pacla8A.gff3) and crashes with error:

Error in .Call2("Rle_constructor", values, lengths, PACKAGE = "S4Vectors") : Rle of type 'list' is not supported

I tried to run the same command line with my SNP data but another "gff" and it works nicely. So the problem should come from the annotation file but I have no idea of where/what to look since everything looks fine (9 columns, "Ontology_term" etc).

I am quite lost with this annotation since it was done in another lab and this is a bit far from my skills. Any input would be very welcome.
Thank you

Here is the command line I use:

candidates <- read.delim("signif_snps.vcf",sep = " ", header=FALSE,comment.char="#")
candidates[,2] <- as.numeric(candidates[,2])

noncandidates <- read.delim("all_snps.vcf",sep = " ", header=FALSE,comment.char="#")
noncandidates[,2] <- as.numeric(noncandidates[,2])

snps_cand <- GRanges(seqnames=candidates[,1],ranges=IRanges(candidates[,2],candidates[,2]))
snps_non_cand <- GRanges(seqnames=noncandidates[,1],ranges=IRanges(noncandidates[,2],noncandidates[,2]))


x <- snp2go(gff="Pacla8A.gff3",
            candidateSNPs=snps_cand,
            noncandidateSNPs=snps_non_cand)

Here are the first lines of the gff3:

pcla8_s000007 CNAG gene 34 20855 . + . ID=Pacla8A056872;gene_type=protein_coding pcla8_s000007 CNAG transcript 34 18362 . + . ID=Pacla8A056872T1;Parent=Pacla8A056872;Name=Pacla8A056872T1;product=Pacla8A056872P1;gene_type=protein_coding;transcript_biotype=protein_coding;Description=ABC transporter G family member 21 , partial;Ontology_term=GO:0004871%2C GO:0005516%2C GO:0005524%2C GO:0005737%2C GO:0007165%2C GO:0016020%2C GO:0016887 pcla8_s000007 CNAG exon 34 72 . + . ID=Pacla8A056872T1.exon1;Parent=Pacla8A056872T1;Name=Pacla8A056872T1;gene_type=protein_coding;transcript_biotype=protein_coding pcla8_s000007 CNAG exon 153 259 . + . ID=Pacla8A056872T1.exon2;Parent=Pacla8A056872T1;Name=Pacla8A056872T1;gene_type=protein_coding;transcript_biotype=protein_coding pcla8_s000007 CNAG exon 464 527 . + . ID=Pacla8A056872T1.exon3;Parent=Pacla8A056872T1;Name=Pacla8A056872T1;gene_type=protein_coding;transcript_biotype=protein_coding pcla8_s000007 CNAG exon 599 674 . + . ID=Pacla8A056872T1.exon4;Parent=Pacla8A056872T1;Name=Pacla8A056872T1;gene_type=protein_coding;transcript_biotype=protein_coding pcla8_s000007 CNAG exon 1050 1136 . + . ID=Pacla8A056872T1.exon5;Parent=Pacla8A056872T1;Name=Pacla8A056872T1;gene_type=protein_coding;transcript_biotype=protein_coding pcla8_s000007 CNAG exon 1261 1327 . + . ID=Pacla8A056872T1.exon6;Parent=Pacla8A056872T1;Name=Pacla8A056872T1;gene_type=protein_coding;transcript_biotype=protein_coding pcla8_s000007 CNAG exon 3057 3186 . + . ID=Pacla8A056872T1.exon7;Parent=Pacla8A056872T1;Name=Pacla8A056872T1;gene_type=protein_coding;transcript_biotype=protein_coding pcla8_s000007 CNAG exon 3260 3278 . + . ID=Pacla8A056872T1.exon8;Parent=Pacla8A056872T1;Name=Pacla8A056872T1;gene_type=protein_coding;transcript_biotype=protein_coding pcla8_s000007 CNAG exon 3330 3331 . + . ID=Pacla8A056872T1.exon9;Parent=Pacla8A056872T1;Name=Pacla8A056872T1;gene_type=protein_coding;transcript_biotype=protein_coding pcla8_s000007 CNAG exon 3438 3515 . + . ID=Pacla8A056872T1.exon10;Parent=Pacla8A056872T1;Name=Pacla8A056872T1;gene_type=protein_coding;transcript_biotype=protein_coding pcla8_s000007 CNAG exon 3779 3781 . + . ID=Pacla8A056872T1.exon11;Parent=Pacla8A056872T1;Name=Pacla8A056872T1;gene_type=protein_coding;transcript_biotype=protein_coding pcla8_s000007 CNAG exon 5357 5364 . + . ID=Pacla8A056872T1.exon12;Parent=Pacla8A056872T1;Name=Pacla8A056872T1;gene_type=protein_coding;transcript_biotype=protein_coding pcla8_s000007 CNAG exon 8738 8898 . + . ID=Pacla8A056872T1.exon13;Parent=Pacla8A056872T1;Name=Pacla8A056872T1;gene_type=protein_coding;transcript_biotype=protein_coding pcla8_s000007 CNAG exon 10123 10298 . + . ID=Pacla8A056872T1.exon14;Parent=Pacla8A056872T1;Name=Pacla8A056872T1;gene_type=protein_coding;transcript_biotype=protein_coding pcla8_s000007 CNAG exon 10658 10714 . + . ID=Pacla8A056872T1.exon15;Parent=Pacla8A056872T1;Name=Pacla8A056872T1;gene_type=protein_coding;transcript_biotype=protein_coding pcla8_s000007 CNAG exon 10819 10867 . + . ID=Pacla8A056872T1.exon16;Parent=Pacla8A056872T1;Name=Pacla8A056872T1;gene_type=protein_coding;transcript_biotype=protein_coding pcla8_s000007 CNAG exon 10992 11027 . + . ID=Pacla8A056872T1.exon17;Parent=Pacla8A056872T1;Name=Pacla8A056872T1;gene_type=protein_coding;transcript_biotype=protein_coding pcla8_s000007 CNAG exon 12131 12195 . + . ID=Pacla8A056872T1.exon18;Parent=Pacla8A056872T1;Name=Pacla8A056872T1;gene_type=protein_coding;transcript_biotype=protein_coding pcla8_s000007 CNAG exon 12813 12974 . + . ID=Pacla8A056872T1.exon19;Parent=Pacla8A056872T1;Name=Pacla8A056872T1;gene_type=protein_coding;transcript_biotype=protein_coding pcla8_s000007 CNAG exon 13191 13284 . + . ID=Pacla8A056872T1.exon20;Parent=Pacla8A056872T1;Name=Pacla8A056872T1;gene_type=protein_coding;transcript_biotype=protein_coding pcla8_s000007 CNAG exon 13444 13504 . + . ID=Pacla8A056872T1.exon21;Parent=Pacla8A056872T1;Name=Pacla8A056872T1;gene_type=protein_coding;transcript_biotype=protein_coding pcla8_s000007 CNAG exon 15295 15853 . + . ID=Pacla8A056872T1.exon22;Parent=Pacla8A056872T1;Name=Pacla8A056872T1;gene_type=protein_coding;transcript_biotype=protein_coding pcla8_s000007 CNAG exon 16087 16170 . + . ID=Pacla8A056872T1.exon23;Parent=Pacla8A056872T1;Name=Pacla8A056872T1;gene_type=protein_coding;transcript_biotype=protein_coding pcla8_s000007 CNAG exon 16476 16533 . + . ID=Pacla8A056872T1.exon24;Parent=Pacla8A056872T1;Name=Pacla8A056872T1;gene_type=protein_coding;transcript_biotype=protein_coding pcla8_s000007 CNAG exon 16839 17053 . + . ID=Pacla8A056872T1.exon25;Parent=Pacla8A056872T1;Name=Pacla8A056872T1;gene_type=protein_coding;transcript_biotype=protein_coding pcla8_s000007 CNAG exon 17585 17793 . + . ID=Pacla8A056872T1.exon26;Parent=Pacla8A056872T1;Name=Pacla8A056872T1;gene_type=protein_coding;transcript_biotype=protein_coding pcla8_s000007 CNAG exon 18176 18362 . + . ID=Pacla8A056872T1.exon27;Parent=Pacla8A056872T1;Name=Pacla8A056872T1;gene_type=protein_coding;transcript_biotype=protein_coding pcla8_s000007 CNAG CDS 34 72 . + 0 ID=Pacla8A056872C1;Parent=Pacla8A056872T1;Name=Pacla8A056872C1;gene_type=protein_coding;transcript_biotype=protein_coding pcla8_s000007 CNAG CDS 153 259 . + 0 ID=Pacla8A056872C1;Parent=Pacla8A056872T1;Name=Pacla8A056872C1;gene_type=protein_coding;transcript_biotype=protein_coding pcla8_s000007 CNAG CDS 464 527 . + 1 ID=Pacla8A056872C1;Parent=Pacla8A056872T1;Name=Pacla8A056872C1;gene_type=protein_coding;transcript_biotype=protein_coding pcla8_s000007 CNAG CDS 599 674 . + 0 ID=Pacla8A056872C1;Parent=Pacla8A056872T1;Name=Pacla8A056872C1;gene_type=protein_coding;transcript_biotype=protein_coding pcla8_s000007 CNAG CDS 1050 1136 . + 2 ID=Pacla8A056872C1;Parent=Pacla8A056872T1;Name=Pacla8A056872C1;gene_type=protein_coding;transcript_biotype=protein_coding pcla8_s000007 CNAG CDS 1261 1327 . + 2 ID=Pacla8A056872C1;Parent=Pacla8A056872T1;Name=Pacla8A056872C1;gene_type=protein_coding;transcript_biotype=protein_coding pcla8_s000007 CNAG CDS 3057 3186 . + 1 ID=Pacla8A056872C1;Parent=Pacla8A056872T1;Name=Pacla8A056872C1;gene_type=protein_coding;transcript_biotype=protein_coding pcla8_s000007 CNAG CDS 3260 3278 . + 0 ID=Pacla8A056872C1;Parent=Pacla8A056872T1;Name=Pacla8A056872C1;gene_type=protein_coding;transcript_biotype=protein_coding pcla8_s000007 CNAG CDS 3330 3331 . + 2 ID=Pacla8A056872C1;Parent=Pacla8A056872T1;Name=Pacla8A056872C1;gene_type=protein_coding;transcript_biotype=protein_coding pcla8_s000007 CNAG CDS 3438 3515 . + 0 ID=Pacla8A056872C1;Parent=Pacla8A056872T1;Name=Pacla8A056872C1;gene_type=protein_coding;transcript_biotype=protein_coding pcla8_s000007 CNAG CDS 3779 3781 . + 0 ID=Pacla8A056872C1;Parent=Pacla8A056872T1;Name=Pacla8A056872C1;gene_type=protein_coding;transcript_biotype=protein_coding pcla8_s000007 CNAG CDS 5357 5364 . + 0 ID=Pacla8A056872C1;Parent=Pacla8A056872T1;Name=Pacla8A056872C1;gene_type=protein_coding;transcript_biotype=protein_coding pcla8_s000007 CNAG CDS 8738 8898 . + 1 ID=Pacla8A056872C1;Parent=Pacla8A056872T1;Name=Pacla8A056872C1;gene_type=protein_coding;transcript_biotype=protein_coding pcla8_s000007 CNAG CDS 10123 10298 . + 2 ID=Pacla8A056872C1;Parent=Pacla8A056872T1;Name=Pacla8A056872C1;gene_type=protein_coding;transcript_biotype=protein_coding pcla8_s000007 CNAG CDS 10658 10714 . + 0 ID=Pacla8A056872C1;Parent=Pacla8A056872T1;Name=Pacla8A056872C1;gene_type=protein_coding;transcript_biotype=protein_coding pcla8_s000007 CNAG CDS 10819 10867 . + 0 ID=Pacla8A056872C1;Parent=Pacla8A056872T1;Name=Pacla8A056872C1;gene_type=protein_coding;transcript_biotype=protein_coding pcla8_s000007 CNAG CDS 10992 11027 . + 2 ID=Pacla8A056872C1;Parent=Pacla8A056872T1;Name=Pacla8A056872C1;gene_type=protein_coding;transcript_biotype=protein_coding pcla8_s000007 CNAG CDS 12131 12195 . + 2 ID=Pacla8A056872C1;Parent=Pacla8A056872T1;Name=Pacla8A056872C1;gene_type=protein_coding;transcript_biotype=protein_coding pcla8_s000007 CNAG CDS 12813 12974 . + 0 ID=Pacla8A056872C1;Parent=Pacla8A056872T1;Name=Pacla8A056872C1;gene_type=protein_coding;transcript_biotype=protein_coding pcla8_s000007 CNAG CDS 13191 13284 . + 0 ID=Pacla8A056872C1;Parent=Pacla8A056872T1;Name=Pacla8A056872C1;gene_type=protein_coding;transcript_biotype=protein_coding pcla8_s000007 CNAG CDS 13444 13504 . + 2 ID=Pacla8A056872C1;Parent=Pacla8A056872T1;Name=Pacla8A056872C1;gene_type=protein_coding;transcript_biotype=protein_coding pcla8_s000007 CNAG CDS 15295 15853 . + 1 ID=Pacla8A056872C1;Parent=Pacla8A056872T1;Name=Pacla8A056872C1;gene_type=protein_coding;transcript_biotype=protein_coding pcla8_s000007 CNAG CDS 16087 16170 . + 0 ID=Pacla8A056872C1;Parent=Pacla8A056872T1;Name=Pacla8A056872C1;gene_type=protein_coding;transcript_biotype=protein_coding pcla8_s000007 CNAG CDS 16476 16533 . + 0 ID=Pacla8A056872C1;Parent=Pacla8A056872T1;Name=Pacla8A056872C1;gene_type=protein_coding;transcript_biotype=protein_coding pcla8_s000007 CNAG CDS 16839 17053 . + 2 ID=Pacla8A056872C1;Parent=Pacla8A056872T1;Name=Pacla8A056872C1;gene_type=protein_coding;transcript_biotype=protein_coding pcla8_s000007 CNAG CDS 17585 17793 . + 0 ID=Pacla8A056872C1;Parent=Pacla8A056872T1;Name=Pacla8A056872C1;gene_type=protein_coding;transcript_biotype=protein_coding pcla8_s000007 CNAG CDS 18176 18362 . + 1 ID=Pacla8A056872C1;Parent=Pacla8A056872T1;Name=Pacla8A056872C1;gene_type=protein_coding;transcript_biotype=protein_coding pcla8_s000007 CNAG transcript 8354 20855 . + . ID=Pacla8A056872T2;Parent=Pacla8A056872;Name=Pacla8A056872T2;product=Pacla8A056872P2;gene_type=protein_coding;transcript_biotype=protein_coding;Description=ABC transporter G family member 14 isoform X3;Ontology_term=GO:0005524%2C GO:0016020%2C GO:0016887

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.