Giter VIP home page Giter VIP logo

nanopolish's Introduction

Nanopolish

build and test

Software package for signal-level analysis of Oxford Nanopore sequencing data. Nanopolish can calculate an improved consensus sequence for a draft genome assembly, detect base modifications, call SNPs and indels with respect to a reference genome and more (see Nanopolish modules, below).

A note on R10 support

Presently nanopolish does not support R10.4 flowcells as variant and methylation calling is accurate enough to not require signal-level analysis. We intend to support signal exploration through eventalign but do not currently have a timeline for this as our development time is currently dedicated to other projects.

Release notes

  • 0.14.1: added the compare_methylation.py script from the methylation example data bundle to the nanopolish package

  • 0.14.0: support modification bam files, compile on M1 apple hardware, support SLOW5 files

  • 0.13.3: fix conda build issues, better handling of VBZ-compressed files, integration of module for nano-COP

  • 0.13.2: fix memory leak when loading signal data

  • 0.13.1: fix nanopolish index performance issue for some barcoding runs

  • 0.13.0: modify HMM transitions to allow the balance between insertions and deletions to be changed depending on mode (consensus vs reference variants)

  • 0.12.5: make SupportFractionByStrand calculation consistent with SupportFraction

  • 0.12.4: add SupportFractionByStrand and SOR to VCF

  • 0.12.3: fix hdf5 file handle leak

  • 0.12.2: add RefContext info to VCF output of nanopolish variants

  • 0.12.1: improve how nanopolish index handles summary files, add support for selecting reads by BAM read group tags (for nanopolish variants)

  • 0.12.0: live methylation calling, methylation LLR threshold changes as described here

  • 0.11.1: nanopolish polya now supports SQK-RNA-002 kits with automatic backwards-compatibility with SQK-RNA-001

  • 0.11.0: support for multi-fast5 files. nanopolish methyltrain now subsamples input data, improving speed and memory usage

  • 0.10.2: added new program nanopolish polya to estimate the length of poly-A tails on direct RNA reads (by @paultsw)

  • 0.10.1: nanopolish variants --consensus now only outputs a VCF file instead of a fasta sequence. The VCF file describes the changes that need to be made to turn the draft sequence into the polished assembly. A new program, nanopolish vcf2fasta, is provided to generate the polished genome (this replaces nanopolish_merge.py, see usage instructions below). This change is to avoid issues when merging segments that end on repeat boundaries (reported by Michael Wykes and Chris Wright).

Dependencies

A compiler that supports C++11 is needed to build nanopolish. Development of the code is performed using gcc-4.8.

By default, nanopolish will download and compile all of its required dependencies. Some users however may want to use system-wide versions of the libraries. To turn off the automatic installation of dependencies set HDF5=noinstall, EIGEN=noinstall, HTS=noinstall or MINIMAP2=noinstall parameters when running make as appropriate. The current versions and compile options for the dependencies are:

In order to use the additional python3 scripts within /scripts, install the dependencies via

pip install -r scripts/requirements.txt --user

Installation instructions

Installing the latest code from github (recommended)

You can download and compile the latest code from github as follows:

git clone --recursive https://github.com/jts/nanopolish.git
cd nanopolish
make

Installing a particular release

When major features have been added or bugs fixed, we will tag and release a new version of nanopolish. If you wish to use a particular version, you can checkout the tagged version before compiling:

git clone --recursive https://github.com/jts/nanopolish.git
cd nanopolish
git checkout v0.9.2
make

Nanopolish modules

The main subprograms of nanopolish are:

nanopolish call-methylation: predict genomic bases that may be methylated
nanopolish variants: detect SNPs and indels with respect to a reference genome
nanopolish variants --consensus: calculate an improved consensus sequence for a draft genome assembly
nanopolish eventalign: align signal-level events to k-mers of a reference genome

Analysis workflow examples

Data preprocessing

Nanopolish needs access to the signal-level data measured by the nanopore sequencer. The first step of any nanopolish workflow is to prepare the input data by telling nanopolish where to find the signal files. If you ran Albacore 2.0 on your data you should run nanopolish index on your input reads (-d can be specified more than once if using multiple runs):

# Index the output of the basecaller
nanopolish index -d /path/to/raw_fast5s/ -s sequencing_summary.txt basecalled_output.fastq # for FAST5 inout
nanopolish index basecalled_output.fastq --slow5 signals.blow5 # for SLOW5 input

The -s option tells nanopolish to read the sequencing_summary.txt file from Albacore to speed up indexing. Without this option nanopolish index is extremely slow as it needs to read every fast5 file individually. If you basecalled your run in parallel, so you have multiple sequencing_summary.txt files, you can use the -f option to pass in a file containing the paths to the sequencing summary files (one per line). When using SLOW5 files as the input (FAST5 can be converted to SLOW5 using slow5tools), -s option is not required and does not affect indexing performance.

Computing a new consensus sequence for a draft assembly

The original purpose of nanopolish was to compute an improved consensus sequence for a draft genome assembly produced by a long-read assembly like canu. This section describes how to do this, starting with your draft assembly which should have megabase-sized contigs. We've also posted a tutorial including example data here.

# Index the draft genome
bwa index draft.fa

# Align the basecalled reads to the draft sequence
bwa mem -x ont2d -t 8 draft.fa reads.fa | samtools sort -o reads.sorted.bam -T reads.tmp -
samtools index reads.sorted.bam

Now, we use nanopolish to compute the consensus sequence (the genome is polished in 50kb blocks and there will be one output file per block). We'll run this in parallel:

python3 nanopolish_makerange.py draft.fa | parallel --results nanopolish.results -P 8 \
    nanopolish variants --consensus -o polished.{1}.vcf -w {1} -r reads.fa -b reads.sorted.bam -g draft.fa -t 4 --min-candidate-frequency 0.1

This command will run the consensus algorithm on eight 50kbp segments of the genome at a time, using 4 threads each. Change the -P and --threads options as appropriate for the machines you have available.

After all polishing jobs are complete, you can merge the individual 50kb segments together back into the final assembly:

nanopolish vcf2fasta -g draft.fa polished.*.vcf > polished_genome.fa

Calling Methylation

nanopolish can use the signal-level information measured by the sequencer to detect 5-mC as described here. We've posted a tutorial on how to call methylation here.

To run using docker

First build the image from the dockerfile:

docker build .

Note the uuid given upon successful build. Then you can run nanopolish from the image:

docker run -v /path/to/local/data/data/:/data/ -it :image_id  ./nanopolish eventalign -r /data/reads.fa -b /data/alignments.sorted.bam -g /data/ref.fa

Credits and Thanks

The fast table-driven logsum implementation was provided by Sean Eddy as public domain code. This code was originally part of hmmer3. Nanopolish also includes code from Oxford Nanopore's scrappie basecaller. This code is licensed under the MPL.

The scripts/compare_methylation.py was originally provided in the example methylation data bundle which was obtained using:

curl -O warwick.s3.climb.ac.uk/nanopolish_tutorial/methylation_example.tar.gz
tar xvfz methylation_example.tar.gz
ls methylation_example/compare_methylation.py

nanopolish's People

Contributors

0xaf1f avatar a-slide avatar alanfwilliams avatar chocobo1 avatar colindaven avatar devindrown avatar druvus avatar eernst avatar evanbiederstedt avatar hasindu2008 avatar hiruna72 avatar johnomics avatar jopineda avatar jts avatar kjsanger avatar kpalin avatar larsgtoicr avatar ljdursi avatar mateidavid avatar mike-molnar avatar mmokrejs avatar mr-c avatar nickloman avatar paultsw avatar peterjc avatar phelimb avatar rdeborja avatar sabiqali avatar satta avatar smoe 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  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

nanopolish's Issues

software aborts when lowercase letters are in the reference sequences

Hi (again, sorry!),
I was running eventalign earlier with this command:

nanopolish eventalign -t 8 --sam -r mydata.fasta -b reads.sorted.bam -g myreference.fasta --models nanopolish_models.fofn

and got the following error message:
nanopolish: ./src/common/nanopolish_alphabet.h:173: virtual std::string Alphabet::disambiguate(const string&) const: Assertion 'IUPAC::isValid(out[i]' failed. Aborted

After investigating the code, my reference sequences and my 2D read data I managed to figure out that nanopolish doesn't like lowercase bases in the reference sequence(s). Once I amended those bases to uppercase, eventalign worked as expected.

Figured it was worth mentioning here for future releases?

Suggested Pipeline Help

Greetings. I was hoping someone could help me understand the canu + nanopolishing pipeline for MinION data and address some errors I get.

Here is a rough idea of what I am doing:

  1. Start with passed Metrichor reads
  2. Using extract fasta reads-->results in single file with PATH in header
  3. correction, trimming, unitig construction in canu to build contigs-->results in single *.contigs.fasta file. This fasta file does not have any of the original header data--looks like canu generated details
  4. use nanopolish on canu contig output.

I guess this is where I am a bit confused. First I run the following:

make -f scripts/consensus.make READS=data.fasta ASSEMBLY=data.contigs.fasta
where <lambda_HC.fasta> is the output from poretools and
<lambda.contigs.fasta> is the output from canu.

I get the following message:

[bwa_index] Pack FASTA... 0.00 sec
[bwa_index] Construct BWT for the packed sequence...
[bwa_index] 0.02 seconds elapse.
[bwa_index] Update BWT... 0.00 sec
[bwa_index] Pack forward-only FASTA... 0.00 sec
[bwa_index] Construct SA from BWT and Occ... 0.01 sec
[main] Version: 0.7.5a-r405
[main] CMD: bwa index lambda.contigs.fasta
[main] Real time: 0.362 sec; CPU: 0.027 sec
bwa mem -x ont2d -t 8 lambda.contigs.fasta lambda_HC.pp.fa | samtools view -Sb - > lambda_HC.pp.bam
mem: invalid option -- 'x'
[samopen] no @sq lines in the header.
[sam_read1] missing header? Abort!
make: *** [lambda_HC.pp.bam] Error 1

I would really appreciate any insight. Best,
Jarrod

Unitig split into multiple contigs after nanopolish

Hi,
I've sequenced the Lambda phage genome and I assembled the reads into a single contig of length 48,516 bases using canu. When I use nanopolish I end up with 5 contigs ranging in length from 8054 to 10309 bases (at a length of 49,225 bases). Does anyone know why this happens? Is it an issue with the assembly produced from canu or how nanopolish works?

Many thanks,
Mike

Corrupt read, but which one?

Hi Jared,

I'm running nanopolish 0.5. When I align the sequences with bwa mem all reads align and no errors are reported. When I then use eventalign to align the events one error is reported:

HDF5-DIAG: Error detected in HDF5 (1.8.14) thread 140689784518592:
  #000: H5Dio.c line 173 in H5Dread(): can't read data
    major: Dataset
    minor: Read failed
  #001: H5Dio.c line 550 in H5D__read(): can't read data
    major: Dataset
    minor: Read failed
  #002: H5Dchunk.c line 1872 in H5D__chunk_read(): unable to read raw data chunk
    major: Low-level I/O
    minor: Read failed
  #003: H5Dchunk.c line 2902 in H5D__chunk_lock(): data pipeline read failed
    major: Data filters
    minor: Filter operation failed
  #004: H5Z.c line 1382 in H5Z_pipeline(): filter returned failure during read
    major: Data filters
    minor: Read failed
  #005: H5Zdeflate.c line 125 in H5Z_filter_deflate(): inflate() failed
    major: Data filters
    minor: Unable to initialize object
terminate called after throwing an instance of 'hdf5_tools::Exception'
  what():  /Analyses/Basecall_1D_000/BaseCalled_template/Events: error in H5Dread
Aborted (core dumped)

eventalign will finish and produce an alignment file which is used to polish the contigs. Unfortunately four 10 Kbp chunks of one contig are missing and the merge command will fail when it tries to merge the corrected chunks.
From the error message I suspect one of the reads has a problem in the event part of the hdf5 file.
Is there a way to find out which read is corrupt so I can remove it from the dataset?

Thanks,

Hans Jansen

Assertion `read->read_type != SRT_2D' failed. nanopolish_train_poremodel_from_basecalls

i got an error with nanopolish train-poremodel-from-basecalls --verbose pass.fofn &>log.base

Loading ./pass/DESKTOP_TEOOQR9_20160726_FNFAD22371_MN17911_sequencing_run_07_26_16_Edan_DNA_18470_ch429_read2252_strand.fast5
Loaded 40 reads
nanopolish: src/nanopolish_train_poremodel_from_basecalls.cpp:259: int train_poremodel_from_basecalls_main(int, char**): Assertion `read->read_type != SRT_2D' failed.

Does not list C++11 compiler as a dependency

Many systems used for scientific computing do not have a C++11 compiler installed.

The dependencies documentation should note that such a compiler is required, and ideally provide advice on installing it on a system which does not have it.

missing build.sh

The README refers to ./build.sh but that's not present in the repo. What's its purpose please?

HDF5 issue

I have been trying to run Nanopolish on an assembly done with the new rapid 1d kits and keep getting this error.

registering model t.007-base
registering model t.007-ONT
HDF5-DIAG: Error detected in HDF5 (1.8.14) thread 139897868146432:
#000: H5D.c line 358 in H5Dopen2(): not found
major: Dataset
minor: Object not found
#1: H5Gloc.c line 430 in H5G_loc_find(): can't find object
major: Symbol table
minor: Object not found
#2: H5Gtraverse.c line 861 in H5G_traverse(): internal path traversal failed
major: Symbol table
minor: Object not found
#3: H5Gtraverse.c line 641 in H5G_traverse_real(): traversal operator failed
major: Symbol table
minor: Callback failed
#4: H5Gloc.c line 385 in H5G_loc_find_cb(): object 'Events' doesn't exist
major: Symbol table
minor: Object not found
HDF5-DIAG: Error detected in HDF5 (1.8.14) thread 139897878636288:
#000: H5D.c line 358 in H5Dopen2(): not found
major: Dataset
minor: Object not found
#1: H5Gloc.c line 430 in H5G_loc_find(): can't find object
major: Symbol table
minor: Object not found
#2: H5Gtraverse.c line 861 in H5G_traverse(): internal path traversal failed
major: Symbol table
minor: Object not found
#3: H5Gtraverse.c line 641 in H5G_traverse_real(): traversal operator failed
major: Symbol table
minor: Callback failed
#4: H5Gloc.c line 385 in H5G_loc_find_cb(): object 'Events' doesn't exist
major: Symbol table
minor: Object not found
HDF5-DIAG: Error detected in HDF5 (1.8.14) thread 139897920604096:
#000: H5D.c line 358 in H5Dopen2(): not found
major: Dataset
minor: Object not found
#1: H5Gloc.c line 430 in H5G_loc_find(): can't find object
major: Symbol table
minor: Object not found
#2: H5Gtraverse.c line 861 in H5G_traverse(): internal path traversal failed
major: Symbol table
minor: Object not found
#3: H5Gtraverse.c line 641 in H5G_traverse_real(): traversal operator failed
major: Symbol table
minor: Callback failed
#4: H5Gloc.c line 385 in H5G_loc_find_cb(): object 'Events' doesn't exist
major: Symbol table
minor: Object not found
HDF5-DIAG: Error detected in HDF5 (1.8.14) thread 139897910105856:
#000: H5D.c line 358 in H5Dopen2(): not found
major: Dataset
minor: Object not found
#1: H5Gloc.c line 430 in H5G_loc_find(): can't find object
major: Symbol table
minor: Object not found
#2: H5Gtraverse.c line 861 in H5G_traverse(): internal path traversal failed
major: Symbol table
minor: Object not found
#3: H5Gtraverse.c line 641 in H5G_traverse_real(): traversal operator failed
major: Symbol table
minor: Callback failed
#4: H5Gloc.c line 385 in H5G_loc_find_cb(): object 'Events' doesn't exist
major: Symbol table
minor: Object not found
terminate called recursively
terminate called after throwing an instance of 'hdf5_tools::Exception'
terminate called recursively
what(): /Analyses/Basecall_1D_000/BaseCalled_template/Events: error in H5Dopen[samopen] SAM header is present: 5 sequences.

Using Nanopolish with R9 reads

Hi,
I tried using Nanopolish on my R9 dataset. However, I encountered this error :

HDF5-DIAG: Error detected in HDF5 (1.8.14) thread 140381286520704:
#000: H5D.c line 358 in H5Dopen2(): not found
major: Dataset
minor: Object not found
#1: H5Gloc.c line 430 in H5G_loc_find(): can't find object
major: Symbol table
minor: Object not found
#2: H5Gtraverse.c line 861 in H5G_traverse(): internal path traversal failed
major: Symbol table
minor: Object not found
#3: H5Gtraverse.c line 641 in H5G_traverse_real(): traversal operator failed
major: Symbol table
minor: Callback failed
#4: H5Gloc.c line 385 in H5G_loc_find_cb(): object 'Model' doesn't exist
major: Symbol table
minor: Object not found
terminate called after throwing an instance of 'hdf5_tools::Exception'
what(): /Analyses/Basecall_1D_000/BaseCalled_template/Model: error in H5Dopen

I think that it searches for the field /Analyses/Basecall_1D_000/BaseCalled_template/Model which is not present anymore in R9 fast5 files.

Data availability

Is it possible to provide example data? Or is it inside of the .mat file?

Release

Hi,
do you have any plan to make a new minor release soon? It would be preferable to have a referable release that includes the new ONT models.

Missing omp.h on mac

What's the proper way to fix this error? This is what I ran (OS X Yosemite 10.10.4):

$ git clone --recursive https://github.com/jts/nanopolish.git
$ make

snip a bunch of output

src/nanopolish_consensus.cpp:20:10: fatal error: 'omp.h' file not found
#include <omp.h>
         ^
1 error generated.
src/nanopolish_getmodel.cpp:21:10: fatal error: 'omp.h' file not found
#include <omp.h>
         ^
1 error generated.
src/alignment/nanopolish_eventalign.cpp:20:10: fatal error: 'omp.h' file not found
#include <omp.h>
         ^
1 error generated.
make: *** [.depend] Error 1

A brief google reveals this is a general problem on mac, not specific to nanopolish, but I thought you might point me in the correct direction. Please let me know if you need to see more output to help diagnose the problem.

Many thanks

Create full VCF header with "nanopolish variants" module?

I may be overlooking something, but is there an option for "nanopolish variants" to generate a full header in VCF output? In the VCF files I've produced, a single header line (with CHROM, REF, ALT, etc.) is produced, but it seems that a full header is necessary to parse with programs like bcftools.

problem with bam generated with nanopolish

Dear Jared Thank you so much with your software.
I have to questions for you.

  1. I am having some problems with the bam file generate after the pipe posted for nanopolish in github, I am trying to polish an amplicon experiment using the following code:
    nanopolish eventalign -t 4 --sam -r ZIKV2d2_run.fa -b reads.sorted.bam -g zikagenome2.fa --models nanopolish_models.fofn | samtools view -Sb - | samtools sort -o reads.eventalign.sorted.bam

The bam generated in the first step with bwa give no problems and can be visualized in Table ie. but "reads.eventalign.sorted.bam" can not be visualized in Tablet.

  1. Also I tried to use "reads.eventalign.sorted.bam" to generate the consensus with nanopolish_makerange.py , but I am getting another error "mkdir nanopolish.results/1/259364_V: Permission denied at /usr/bin/parallel line 4990" , I have tried all possible options but now I am stuck.

I am not a tough bioinformatician in fact I am in the beginning of this path, all your help with be useful.

Thank you in advance for your comments.

Nanopolish consensus won't run to completion or on subsequence

Hello,

I am having some difficulties getting nanopolish to run to both completion as well as on a subsequence.

When I try to run nanopolish without specifying a subsequence it will run for some time and then throw the error:

[E::hts_open] fail to open file 'reads.pp.sorted.bam' nanopolish: src/alignment/nanopolish_anchor.cpp:31: HMMRealignmentInput build_input_for_region(const string&, const string&, const Fast5Map&, const string&, int, int, int): Assertionbam_fh != __null' failed.`

However, there is a partially corrected sequence that can be found in the log file at the very bottom. Though the sequence is partially corrected, I noticed that the length varies if run iteratively - the subsequent sequence is generally shorter than the starting assembly. Is this to be expected?

Second, when I do try to subset the sequence it seems that it runs when the starting coordinate is zero.

Below is an example command
nanopolish consensus -o out.fasta -w seq:500-1000 -r reads.pp.fa -b reads.pp. sorted.bam -g assembly.fasta -t 10 &> seq:1785-1985.log

Please let me know if you need any other information or clarification. Thank you!

Previous versions of nanopolish not compiling

We're currently trying to analyze some old R7 runs, and are trying to compile Nanopolish v0.4.0 (tarball downloaded from the releases tab) using the makefile. After it fails and we try to make again, we end up with this issue:

image

Any insight into this would be appreciated (including which version of htslib is compatible (folder is empty) and any other necessary prereqs we may be missing). We are using ubuntu 16.04, g++ version 5.4.0. Thanks!

[fai_fetch_seq] The sequence "tig00000000" not found : Error while polishing

Hi all,
I am trying to do a nanopolish of E.coli assembly by CANU.

I am still thinking which all files from the Assembly we need, to do nanopolish? I took only the assembly contig file and ran these commands.

make -f /home/gba4/Documents/programs/nanopolish/scripts/consensus.make READS=HQ_2D.fasta ASSEMBLY=ecoli.contigs.fasta

/opt/athul/Nanopore/Data_Backup/ecoli/Nanopore_Rawreads$ python /opt/programs/nanopolish/scripts/nanopolish_makerange.py ecoli.contigs.fasta | parallel --results nanopolish.results -P 8 /opt/programs/nanopolish/nanopolish consensus -o nanopolish.{1}.fa -w {1} --r HQ_2D.pp.fa -b HQ_2D.pp.sorted.bam -g ecoli.contigs.fasta -t 4

While running the second command the error pops up!
[fai_fetch_seq] The sequence "tig00000000" not found

Do you have any idea for this?
Thanks in advance.
Athul

Usage instructions clarification

I am attempting to use nanopolish on a draft assembly created by PBcR. In the usage instructions, after running
python nanopolish_makerange.py draft.fa | parallel --results nanopolish.results -P 8 nanopolish consensus -o nanopolish.{1}.fa -w {1} --r reads.pp.fa -b reads.pp.sorted.bam -g draft.fa -t 4
where draft.fa is the fasta produced by PBcR, I get the error:
error: could not open reads.pp.fa for read
Where are the reads.pp.fa supposed to be generated - in the make step, or before using nanopolish? I don't appear to have any .pp.fa files. There did not seem to be an error when running the make step to suggest that it didn't work.

Second round of nanopolishing

I would like to do 'two rounds' of polishing, but seem to get errors when I try. The most recent code I tried was:

cp $DIR/2d.fa $DIR/nanopolish2/reads2.fa
cp $DIR/polished.fa $DIR/nanopolish2/polished.fa
make -f ~/apps/nanopolish/scripts/consensus.make READS=$DIR/nanopolish2/reads2.fa ASSEMBLY=$DIR/nanopolish2/polished.fa
python ~/apps/nanopolish/scripts/nanopolish_makerange.py $DIR/nanopolish2/polished.fa | parallel --plain --results $DIR/nanopolish2/nanopolish_results -P 4 ~/apps/nanopolish/nanopolish consensus -o $DIR/nanopolish2/nanopolish_results/nanopolish.{1}.fa -w {1} --r $DIR/nanopolish2/reads2.pp.fa -b $DIR/nanopolish2/reads2.pp.sorted.bam -g $DIR/nanopolish2/polished.fa -t 4
python ~/apps/nanopolish/scripts/nanopolish_merge.py $DIR/nanopolish2/polished.fa $DIR/nanopolish2/nanopolish_results/nanopolish.*.fa > $DIR/polished2.fa

This runs until the samtools index step, at which point I get:

samtools index blah/nanopolish2/reads2.pp.sorted.bam
[fai_load] build FASTA index.
[fai_build_core] different line length in sequence 'scf7180000000030'.

(and this error repeats for the intervals). What intermediate step have I missed to cause this error?

error: could not find fast5 path

Encountered an error (below) with this command:

python /home/ubuntu/.linuxbrew/Cellar/nanopolish/0.4.0/scripts/nanopolish_makerange.py /mnt/Ectocooler/Ectocooler_for_assembly/ecto.contigs.fasta | parallel --results nanopolish.results -P 8 nanopolish consensus -o nanopolish.{1}.fa -w {1} --r /mnt/Ectocooler/Ectocooler_for_assembly/Ectocooler_all.fasta -b /mnt/Ectocooler/Ectocooler_for_assembly/Ectocooler_all.pp.sorted.bam -g /mnt/Ectocooler/Ectocooler_for_assembly/ecto.contigs.fasta -t 4

This is an assembly from R9 reads. I noticed from #58 that this version is not public yet. But this error does not seem to be associated with that.

Header from the .fasta:

>d2f5ad1d-7c8a-4b43-befb-09a65991ee73_Basecall_2D_2d dib_HP_MinIon_20160730_FN_MN19834_sequencing_run_Ectocooler_61149_ch100_read1704_strand Ectocooler_for_assembly/dib_HP_MinIon_20160730_FN_MN19834_sequencing_run_Ectocooler_61149_ch100_read1704_strand.fast5

Is this error because something is wrong with my command, or where my files are located that I can fix?

ubuntu@ip-172-31-0-100:/mnt/Ectocooler$ python /home/ubuntu/.linuxbrew/Cellar/nanopolish/0.4.0/scripts/nanopolish_makerange.py /mnt/Ectocooler/Ectocooler_for_assembly/ecto.contigs.fasta | parallel --results nanopolish.results -P 8 nanopolish consensus -o nanopolish.{1}.fa -w {1} --r /mnt/Ectocooler/Ectocooler_for_assembly/Ectocooler_all.fasta -b /mnt/Ectocooler/Ectocooler_for_assembly/Ectocooler_all.pp.sorted.bam -g /mnt/Ectocooler/Ectocooler_for_assembly/ecto.contigs.fasta -t 4
error: could not find fast5 path for 9200.ae7129cf-213b-4ef1-a39a-854c271cf1a1_Basecall_2D_complement
error: could not find fast5 path for 2001.07c1cebe-0462-4b1a-92e7-2c403b47c7e5_Basecall_2D_complement
error: could not find fast5 path for 1221.eeb50db5-0c13-4b1b-ba74-a2389ffdcf4f_Basecall_2D_template
error: could not find fast5 path for 5885.1642aedd-df30-4bb9-8db4-1062284048d9_Basecall_2D_template
error: could not find fast5 path for 5770.4c311c8e-c3ed-41a6-bf0e-dcf7c93456eb_Basecall_2D_complement
error: could not find fast5 path for 6281.1af0343f-80e1-4604-8c4d-fba6ce9bc6c1_Basecall_2D_2d
error: could not find fast5 path for 5461.256528a6-c5ec-447f-b968-ecf58dbc0c37_Basecall_2D_complement
error: could not find fast5 path for 9348.1a5895ff-49b2-4289-aa17-3c4f056ac2bd_Basecall_2D_2d
error: could not find fast5 path for 2197.49dbc8c0-3ea1-4d67-92cc-61c200db79fd_Basecall_2D_2d
error: could not find fast5 path for 14648.5aee87d5-3313-46e1-a082-bd3b73221631_Basecall_2D_2d
error: could not find fast5 path for 18139.cf983108-5e19-4802-9416-4d51afc693bf_Basecall_2D_complement
error: could not find fast5 path for 3961.b138039a-81a3-4009-9059-1c2b39eadcd2_Basecall_2D_template
error: could not find fast5 path for 22321.1744efd0-be90-4a5c-94a4-0c5f78d9545d_Basecall_2D_2d
error: could not find fast5 path for 24272.398e7b83-f5ba-491b-95e6-3786722784ed_Basecall_2D_template
error: could not find fast5 path for 23165.34420475-8add-4574-a1ea-56717ad89e8c_Basecall_2D_template
error: could not find fast5 path for 8920.d6994491-6319-4fa9-8f27-3f76997b9037_Basecall_2D_2d
error: could not find fast5 path for 21806.1d69e69e-ed0f-4fd9-b6bb-cde5b29c594d_Basecall_2D_template
error: could not find fast5 path for 7215.091786d0-0e49-455a-908e-a73e135bf7b5_Basecall_2D_template
error: could not find fast5 path for 22455.8acd116a-650f-45a8-9f26-82ca70bfce1d_Basecall_2D_2d
error: could not find fast5 path for 39095.875c610b-f2e4-444e-adcc-ff8cbabae5d2_Basecall_2D_template
error: could not find fast5 path for 18672.14db0a92-1080-457d-919d-85aac6a504b4_Basecall_2D_complement
error: could not find fast5 path for 1709.23fdb436-89ce-46da-a808-7960a9a3bbe3_Basecall_2D_template
error: could not find fast5 path for 7340.7307df94-08a7-4655-a683-adabc34784bd_Basecall_2D_complement
error: could not find fast5 path for 7931.1b4534f6-5e52-4011-8864-ae444ac277b0_Basecall_2D_template
error: could not find fast5 path for 11098.6a7b6e44-70da-4860-bf39-0ec61057c8c5_Basecall_2D_template
error: could not find fast5 path for 13519.a5cc1b44-0d02-41f5-95c9-e068b549c85c_Basecall_2D_template
error: could not find fast5 path for 23633.6d59851e-5bd7-495a-8043-625518256bb8_Basecall_2D_template
error: could not find fast5 path for 7471.39851ee9-b08f-4165-a210-47f723f37ebb_Basecall_2D_2d
error: could not find fast5 path for 35492.18958d2a-3599-4f20-8c89-0432a225fe12_Basecall_2D_template
error: could not find fast5 path for 10502.0c5987cb-a5a1-47df-92df-56770b5fd187_Basecall_2D_template
error: could not find fast5 path for 21747.d37f717b-b0ab-4524-b3c4-7ced4e97fe87_Basecall_2D_2d
error: could not find fast5 path for 2179.1de2cbde-13b2-41a2-af71-d4dc95adadc2_Basecall_2D_2d
error: could not find fast5 path for 22159.4d42103a-6b7e-4054-8d6d-58ecd5332b94_Basecall_2D_2d
error: could not find fast5 path for 15338.0864cdb6-5c71-4061-9bad-10141eacb6ff_Basecall_2D_2d

Errors while running nanopolish. Polished result of 0 bytes!

Hi,

I run the nanopolish to Ecoli assembly I did with miniasm. This is the first time I am using nanopolish. I came to see these errors while running the commands.

make -f /home/gba4/Documents/programs/nanopolish/scripts/consensus.make READS=NormalTwoDirectionReads.fasta ASSEMBLY=Normalminiasm.fa

python /home/gba4/Documents/programs/nanopolish/scripts/nanopolish_makerange.py Normalminiasm.fa | parallel --results nanopolish.results -P 4 /home/gba4/Documents/programs/nanopolish/nanopolish consensus -o nanopolish.{1}.fa -w {1} --r NormalTwoDirectionReads.pp.fa -b NormalTwoDirectionReads.pp.bam -g Normalminiasm.fa -t 4

I got a list of errors like.

nanopolish: src/alignment/nanopolish_anchor.cpp:36: HMMRealignmentInput build_input_for_region(const string&, const string&, const Fast5Map&, const string&, int, int, int): Assertionbam_idx != __null' failed.
`
after that I ran ...

python /home/gba4/Documents/programs/nanopolish/scripts/nanopolish_merge.py Normalminiasm.fa nanopolish.*.fa > Normalminiasmpolished.fa

A long list of errors came like...

ERROR_MISSING utg000001l 0 ERROR_MISSING utg000001l 1

And file is created with 0 bytes.
Can you please tell me the issue? Thanks in advance.
Athul

python3 failed to run the program

Hello,

I tried python but the Bio module is not available. Python3 failed with a syntax error. Do I need to purge python3 and reinstall python? can I used virtualenv to install python and reinstall bioperl and run from there?

python3 ~/programs/nanopolish/scripts/nanopolish_makerange.py draft_genome.fasta | parallel --results nanopolish.results -P 4 \ /programs/nanopolish variants --consensus polished.{1}.fa -w {1} -r raw.reads.np.fasta -b reads_to_draft.sorted.bam -g draft_genome.fasta -e reads.eventalign.sorted.bam -t 10 -min-candidate-frequency 0.1 --models nanopolish_models.fofn
File "
/programs/nanopolish/scripts/nanopolish_makerange.py", line 14
print "%s:%d-%d" % (name, n, length - 1)
^
SyntaxError: invalid syntax

nanopolish consensus asserts on short contigs

When a contig is less than 100bp in length, nanopolish consensus will emit the following assertion:

nanopolish: src/nanopolish_consensus.cpp:662: void train_segment(HMMRealignmentInput&, uint32_t): Assertion `segment_id + 2 < window.anchored_columns.size()' failed.

These contigs should be skipped.

level of parallelism in eventalign

Trying to understand the effects of '-t' options. The only use I can find is:
omp_set_num_threads(opt::num_threads);

but the main loop seems to be single thread if I'm not mistaken.

Should for example '-t 8' be any faster than default?

Consensus/variant caller hang up

Hello,
Thank you so much for this program. I am having a few issues with the commands though. Please forgive me, for I am not a programmer, so when the step by step instructions don't work, I get stuck easily. I cannot get the consensus/variant caller to work. The tells me I need to index FASTA, which I have already done. I think it has something to do with me entering the eventalign command in wrong? I am using the newer version of samtools, and there is no -f for it, so I modified it to be -o reads.eventalign.sorted.bam -

Error running (newest) nanopolish

Using the current commit of nanopolish on a bacterial PBcR assembly, I got this error from the nanopolish consensus step:

nanopolish: src/nanopolish_consensus.cpp:674: void train_segment(HMMRealignmentInput&, uint32_t): Assertion `!input.empty()' failed.

But only for two of the ranges created by nanopolish_makerange.py out of 60. What is missing? Is this a data problem?

[fai_fetch_seq] The sequence "" not found

When running the consensus step, after running the consensus.make, I get an error not finding the sequence, but the sequence ID is not filled out.

The fofn file points to the correct file paths etc., so I'm wondering whether this could be an error in nanopolish itself.

I cloned master two hours so using this commit version:

commit 194cc3f
Author: Jared Simpson [email protected]
Date: Sat Mar 26 12:49:28 2016 -0400

add read index to site output

Option to use locally installed EIGEN package

Currently, to compile with my own libhdf5 I can just use make HDF5= and it works.

However the same functionality is not possible for EIGEN. The EIGEN variable doesn't behave the same way in the Makefile.

Could this be changed to behave like HDF5 does?

This would make the Linuxbrew package for nanopolish much simpler.

Multiple Rounds of polishing

This is not so much an issue but I wasn't sure where to ask this question.

rmnorris posted a question about a "Second round of nanopolishing". My interpretation of the code that rmnorris posted is that this is a single instance of polishing (see below). Indeed, this pipeline looks very similar to that under the nanopolish usage instructions.

Could you please suggest how to perform additional rounds of polishing or point me to a resource that describes the process? Many thanks!

Code from rmnorris
--cp $DIR/2d.fa $DIR/nanopolish2/reads2.fa
--cp $DIR/polished.fa $DIR/nanopolish2/polished.fa
--make -f ~/apps/nanopolish/scripts/consensus.make READS=$DIR/nanopolish2/reads2.fa ASSEMBLY=$DIR/nanopolish2/polished.fa
--python ~/apps/nanopolish/scripts/nanopolish_makerange.py $DIR/nanopolish2/polished.fa | parallel --plain --results $DIR/nanopolish2/nanopolish_results -P 4 ~/apps/nanopolish/nanopolish consensus -o $DIR/nanopolish2/nanopolish_results/nanopolish.{1}.fa -w {1} --r $DIR/nanopolish2/reads2.pp.fa -b $DIR/nanopolish2/reads2.pp.sorted.bam -g $DIR/nanopolish2/polished.fa -t 4
--python ~/apps/nanopolish/scripts/nanopolish_merge.py $DIR/nanopolish2/polished.fa $DIR/nanopolish2/nanopolish_results/nanopolish.*.fa > $DIR/polished2.fa

Error: nanopolish_profile_hmm.cpp

Hi Jared,
I am running Nanopolish using some R7 2D pass reads. I have 608 partitions, all of which worked correctly except for 1, that fails with error:
nanopolish: src/hmm/nanopolish_profile_hmm.cpp:151: std::vector<HMMAlignmentState> profile_hmm_align(const HMMInputSequence&, const HMMInputData&, uint32_t): Assertion 'get(vm, row, col) != -(__builtin_inff())' failed. Aborted

I have checked the contig that is referred in this partition in both the FASTA and the BAM file and I cannot find what is causing the error. Any hints on where to look?
Thanks a lot,
Jose

problem opening h5Fopen

Dear All,

I get this error when i try to run nanopolish correct.
Any idea?
thanks Luigi

Computing consensus for Contig33:0-10200
HDF5-DIAG: Error detected in HDF5 (1.8.15-patch1) thread 0:
#000: H5F.c line 604 in H5Fopen(): unable to open file
major: File accessibilty
minor: Unable to open file
#1: H5Fint.c line 990 in H5F_open(): unable to open file: time = Wed Jun 17 10:04:33 2015
, name = 'D0134423_FlowFAA44478Ac35_3506_1_ch335_file15_strand_twodirections', tent_flags = 0
major: File accessibilty
minor: Unable to open file
#2: H5FD.c line 993 in H5FD_open(): open failed
major: Virtual File Layer
minor: Unable to initialize object
#3: H5FDsec2.c line 343 in H5FD_sec2_open(): unable to open file: name = 'D0134423_FlowFAA44478Ac35_3506_1_ch335_file15_strand_twodirections', errno = 2, error message = 'No such file or directory', flags = 0, o_flags = 0
major: File accessibilty
minor: Unable to open file
terminate called after throwing an instance of 'hdf5_tools::Exception'
what(): D0134423_FlowFAA44478Ac35_3506_1_ch335_file15_strand_twodirections: error in H5Fopen
local:0/67/100%/0.1s

Error: dereferencing pointer to incomplete type 'struct passwd'

Hi,
I'm trying to Make this and keep getting stuck on this error:

In file included from H5make_libsettings.c:46:0:
 H5make_libsettings.c:186:30: error: dereferencing pointer to incomplete typestruct passwdif((comma = HDstrchr(pwd->pw_gecos, ','))) {
                               ^
 H5private.h:1209:37: note: in definition of macroHDstrchr#define HDstrchr(S,C)    strchr(S,C)
                                      ^
 MAKE[2]: *** [Makefile:1208: H5make_libsettings.o] Error 1
 MAKE[1]: *** [Makefile:850: all] Error 2
 MAKE: *** [Makefile:586: all-recursive] Error 1
 ./MakeFile: line 47: Making: command not found
 ./MakeFile: line 50: am__is_gnu_make: command not found
 ./MakeFile: line 53: syntax error near unexpected token `)'
 ./MakeFile: line 53: `      ?) ;; \'

Any help would be greatly appreciated. Thanks!

HDF5-DIAG: Error detected in HDF5

I have a bit of an issue but it appears it can find the FAST5 files not sure what’s wrong.

$python scripts/nanopolish_makerange.py miri.contigs.fasta | parallel --results nanopolish.results -P 8 nanopolish consensus -o nanopolish.{1}.fa -w {1} --r miriraw.pp.fa -b miriraw.pp.sorted.bam -g miri.contigs.fasta -t 12
HDF5-DIAG: Error detected in HDF5 (1.8.16) thread 139649602275264:
#000: ../../../src/H5A.c line 1692 in H5Aexists_by_name(): unable to determine if attribute exists
major: Attribute
minor: Can't get value
#1: ../../../src/H5Aint.c line 1200 in H5A_exists_by_name(): object not found
major: Attribute
minor: Object not found
#2: ../../../src/H5Gloc.c line 430 in H5G_loc_find(): can't find object
major: Symbol table
minor: Object not found
#3: ../../../src/H5Gtraverse.c line 861 in H5G_traverse(): internal path traversal failed
major: Symbol table
minor: Object not found
#4: ../../../src/H5Gtraverse.c line 755 in H5G_traverse_real(): component not found
major: Symbol table
minor: Object not found
terminate called after throwing an instance of 'hdf5_tools::Exception'
what(): /Analyses/Basecall_2D_002/BaseCalled_template/Model: error in H5Aexists_by_name

/bin/bash: nanopolish: command not found

Hi,

when trying to run the nanopolish consensus I get the following message that is printed on the next 34 lines. I need some assistance to resolve this.

/bin/bash: nanopolish: command not found

samtools -f option is removed

When running the consensus.make script in nanopolish 0.4 with samtools 1.3 the script stops at the samtools sort stage complaining about the -f option: "sort: invalid option -- 'f'"
From the samtools manual I can see that the -f option has been removed:

"Historically samtools sort also accepted a less flexible way of specifying the final and temporary output filenames:

samtools sort [-f] [-o] in.bam out.prefix

This has now been removed. The previous out.prefix argument (and -f option, if any) should be changed to an appropriate combination of -T PREFIX and -o FILE. The previous -o option should be removed, as output defaults to standard output."

I hope I've made a correct analysis of this error and if not please let me know because I like to learn from my mistakes.

Hans Jansen

default log level is verbose

I'm experiencing many megabytes of 'Realigning ...' messages, which I think was added recently. Command line:
nanopolish eventalign -t 8 -r -b -g

Can SQK-MAP005 and SQK-MAP006 data be used at the same time?

I've generated nanopore sequence data to assemble a yeast strain. This was done in two batches. The first batch was made with the SQK-MAP005 kit, the second with SQK-MAP006. The assembly was done with Canu. To further improve the sequence I want to use nanopolish but I'm not sure if I can use both datasets at the same time as they depend on different kmer models.

Error running nanopolish on MAP006 dataset

Hi,

I've been trying to run the nanopore paper pipeline on several other datasets (besides the one used in the paper).

Namely, I'd like to run the latest nanopolish on MAP006 dataset.After I managed to get the fasta headers right, I've gotten a long series of following errors:

Computing consensus for scf7180000000013:3200000-3210200
nanopolish: nanopolish_squiggle_read.cpp:84: void SquiggleRead::load_from_fast5(const string&):
Assertion `model.size() == 1024' failed.

To be more specific, these are 2d reads from MAP006_1-downloads/pass folder.

I've successfully manged to run older version of nanopolish on nanopore paper dataset (and a subset of it). Can you tell what I'm doing wrong this time, or maybe point me in the direction where to look further?

seg fault/no-output with consensus

Trying to polish some slightly assembled reads but nanpolish consensus gives segfault. It might be the contig names(?)

$tail consensus.fasta.fai

1904f9ab-fe41-493c-a6ee-d797ae458a1d_Basecall_2D_2d.0.clustal_CONSENSUS 2567    132119  2567    2568
62cf9ca1-f639-41d8-9533-c262ed303880_Basecall_2D_2d.0.clustal_CONSENSUS 2655    134760  2655    2656
f9c44f7e-1713-4e91-9d22-22da4b91edce_Basecall_2D_2d.0.clustal_CONSENSUS 637     137489  637     638
$ wc -l consensus.fasta.fai 
72 consensus.fasta.fai
$ rm consensus.fasta.fai 

$ nanopolish consensus --verbose --reads basecalls.pp.fa --bam basecalls.pp.sorted.bam --genome consensus.fasta  
[fai_load] build FASTA index.
[fai_fetch_seq] The sequence "" not found
Segmentation fault (core dumped)

Barcoding compatibility?

Just curious if Nanopolish is currently well-suited to the barcodes from ONT in their barcoding kit?

compile failure on 0.5.0

I'm getting a compile failure on v0.5.0 on debian Jessie:

Makefile:104: recipe for target 'src/nanopolish_squiggle_read.o' failed

I can't figure out where the problem might be. It's worth noting that I'm installing on a server with no internet access so I had to download the fast5 and htslib dependencies independently (no recursive git for me...) as well as download the wgets in the makefile (eigen and hdf5) and comment those lines out before make. This approach worked fine with v0.4.0 so I'm a bit stuck!

no @SQ lines in the header. Missing header?

Hi, I am trying to polish my draft assembly with nanopolish but after ssending the first command 'make -f scripts/consensus.make READS=reads.fa ASSEMBLY=draft.fa' I get the following error;
[samopen] no @sq lines in the header
[sam_read1] missing header? Abort!

Any advice? Thanks

Build issues with GCC6

Version 0.4.0 fails to build with GCC6 in Debian Unstable (https://bugs.debian.org/831151). While it's not the latest development snapshot, the line of code that triggers the error looks like it's still there. Here is the error:

> g++ -o src/common/nanopolish_variant.o -c -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -g -O3 -std=c++11 -fopenmp -Wdate-time -D_FORTIFY_SOURCE=2 -I/usr/include/hdf5/serial   -I./fast5 -I./src -I./src/hmm -I./src/thirdparty -I./src/common -I./src/alignment -fPIC src/common/nanopolish_variant.cpp
> src/common/nanopolish_variant.cpp: In function 'std::vector<Variant> extract_variants(const string&, const string&)':
> src/common/nanopolish_variant.cpp:27:79: error: no matching function for call to 'max(int, __gnu_cxx::__enable_if<true, double>::__type)'
>      par.band_width = std::max(20, abs(reference.size() - haplotype.size()) * 2);

...

> In file included from /usr/include/c++/6/algorithm:62:0,
>                  from src/common/nanopolish_variant.cpp:8:
> /usr/include/c++/6/bits/stl_algo.h:3465:5: note: candidate: template<class _Tp, class _Compare> _Tp std::max(std::initializer_list<_Tp>, _Compare)
>      max(initializer_list<_Tp> __l, _Compare __comp)
>      ^~~
> /usr/include/c++/6/bits/stl_algo.h:3465:5: note:   template argument deduction/substitution failed:
> src/common/nanopolish_variant.cpp:27:79: note:   mismatched types 'std::initializer_list<_Tp>' and 'int'
>      par.band_width = std::max(20, abs(reference.size() - haplotype.size()) * 2);
>                                                                                ^
> make[1]: *** [src/common/nanopolish_variant.o] Error 1

The full build log is at:
http://people.debian.org/~lucas/logs/2016/07/13/nanopolish_0.4.0-1_unstable_gcc6.log

HDF5 error

Hi Jared,

I seem to be running into HDF5 issues again, similar to the one I saw in an earlier Issue
These are 1D reads, is it still advisable to use nanopolish with only 2D reads as you suggested in the reply to that post ?

The reads are visibile and accessible from where the the script is being run

HDF5-DIAG: Error detected in HDF5 (1.8.14) thread 140623901505280:
#000: H5O.c line 246 in H5Oopen(): unable to open object
major: Symbol table
minor: Can't open object
#1: H5O.c line 1357 in H5O_open_name(): object not found
major: Symbol table
minor: Object not found
#2: H5Gloc.c line 430 in H5G_loc_find(): can't find object
major: Symbol table
minor: Object not found
#3: H5Gtraverse.c line 861 in H5G_traverse(): internal path traversal failed
major: Symbol table
minor: Object not found
#4: H5Gtraverse.c line 755 in H5G_traverse_real(): component not found
major: Symbol table
minor: Object not found

Cheers,
Vineeth

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.