(c) 2013 Austin G. Davis-Richardson, LICENSE: MITv3
- Ruby 1.9.3 or better (check with
ruby --version) - DNA (
sudo gem install dna)
./demultiplex_iontorrent.rb reads.fastq
Creates a directory on the desktop called split_by_barcode.
| 1 | CTAAGGTAA | |
|---|---|---|
| 2 | TAAGGAGAA | |
| 3 | AAGAGGATT | |
| 4 | TACCAAGAT | |
| 5 | CAGAAGGAA | |
| 6 | CTGCAAGTT | |
| 7 | TTCGTGATT | |
| 8 | TTCCGATAA | |
| 9 | TGAGCGGAA | |
| 10 | CTGACCGAA | |
| 11 | TCCTCGAAT | |
| 12 | TAGGTGGTT | |
| 13 | TCTAACGGA | |
| 14 | TTGGAGTGT | |
| 15 | TCTAGAGGT | |
| 16 | TCTGGATGA |
| #!/usr/bin/env ruby | |
| require 'dna' | |
| # Usage | |
| # 1 - install dna by typing suda gem install dna | |
| # 2 - you need a file called barcodes.csv | |
| # that contains the barcode,sample_id on each line | |
| # 3 - ruby split.rb reads.fastq | |
| # this will output files in split_by_barcode/ | |
| MIN_READ_LEN = 300 | |
| BARCODES = 'barcodes.csv' | |
| OUT_DIR = File.expand_path('~/Desktop/split_by_barcode/') | |
| `mkdir -p #{OUT_DIR}` | |
| barcodes = Hash.new | |
| File.open BARCODES do |handle| | |
| handle.each do |line| | |
| line = line.strip.split(',') | |
| id, barcode = line | |
| barcodes[barcode] = File.open(File.join(OUT_DIR, "sample_#{id}.fastq"), 'w') | |
| end | |
| end | |
| File.open ARGV[0] do |handle| | |
| records = Dna.new(handle) | |
| records.each do |record| | |
| bc = record.sequence[0..8] | |
| handle = barcodes[bc] | |
| next if handle.nil? | |
| unless record.sequence.size < MIN_READ_LEN | |
| # remove barcode from sequence | |
| record.sequence = record.sequence[7..-1] | |
| record.quality = record.quality[7..-1] | |
| handle.puts record | |
| end | |
| end | |
| end |