Merge branch 'dev'
This commit is contained in:
commit
7e29a01b77
|
|
@ -1,7 +1,7 @@
|
|||
## Getting Started
|
||||
## For the Impatient
|
||||
|
||||
```sh
|
||||
# Download the bwa-0.7.11 binary package
|
||||
# Download the bwa-0.7.11 binary package (download link may change)
|
||||
wget -O- http://sourceforge.net/projects/bio-bwa/files/bwakit-0.7.11_x64-linux.tar.bz2/download \
|
||||
| gzip -dc | tar xf -
|
||||
# Generate the GRCh38+ALT+decoy+HLA and create the BWA index
|
||||
|
|
@ -11,22 +11,9 @@ bwa.kit/bwa index hs38d6.fa # create BWA index
|
|||
bwa.kit/run-bwamem -o out hs38d6.fa read1.fq read2.fq | sh # skip "|sh" to show command lines
|
||||
```
|
||||
|
||||
This will generate the following files:
|
||||
|
||||
* `out.aln.bam`: unsorted alignments with ALT-aware mapping quality. In this
|
||||
file, one read may be placed on multiple overlapping ALT contigs at the same
|
||||
time even if the read is mapped better to some contigs than others. This makes
|
||||
it possible to analyze each contig independent of others.
|
||||
|
||||
* `out.hla.top`: best genotypes for HLA-A, -B, -C, -DQA1, -DQB1 and -DRB1 genes.
|
||||
|
||||
* `out.hla.all`: other possible genotypes on the six HLA genes.
|
||||
|
||||
* `out.log.*`: bwa-mem, samblaster and HLA typing log files.
|
||||
|
||||
Note that `run-bwamem` only prints command lines but doesn't execute them. It
|
||||
is advised to have a look at the command lines before passing them to `sh` for
|
||||
actual execution.
|
||||
This generates `out.aln.bam` as the final alignment, `out.hla.top` for best HLA
|
||||
genotypes on each gene and `out.hla.all` for other possible HLA genotypes.
|
||||
Please check out [bwa/bwakit/README.md][kithelp] for details.
|
||||
|
||||
## Background
|
||||
|
||||
|
|
@ -57,7 +44,7 @@ postprocessing. The `bwa.kit/run-bwamem` script performs the two steps when ALT
|
|||
contigs are present. The following picture shows an example about how BWA-MEM
|
||||
infers mapping quality and reports alignment after step 2:
|
||||
|
||||

|
||||

|
||||
|
||||
#### Step 1: BWA-MEM mapping
|
||||
|
||||
|
|
@ -189,3 +176,4 @@ can even get rid of ALT contigs for good.
|
|||
[hla2]: http://nar.oxfordjournals.org/content/41/14/e142.full.pdf+html
|
||||
[hla3]: http://www.biomedcentral.com/1471-2164/15/325
|
||||
[hla4]: http://genomemedicine.com/content/4/12/95
|
||||
[kithelp]: https://github.com/lh3/bwa/tree/master/bwakit
|
||||
|
|
|
|||
17
bwa.c
17
bwa.c
|
|
@ -367,13 +367,13 @@ int bwa_idx2mem(bwaidx_t *idx)
|
|||
* SAM header routines *
|
||||
***********************/
|
||||
|
||||
void bwa_print_sam_hdr(const bntseq_t *bns, const char *rg_line)
|
||||
void bwa_print_sam_hdr(const bntseq_t *bns, const char *hdr_line)
|
||||
{
|
||||
int i;
|
||||
extern char *bwa_pg;
|
||||
for (i = 0; i < bns->n_seqs; ++i)
|
||||
err_printf("@SQ\tSN:%s\tLN:%d\n", bns->anns[i].name, bns->anns[i].len);
|
||||
if (rg_line) err_printf("%s\n", rg_line);
|
||||
if (hdr_line) err_printf("%s\n", hdr_line);
|
||||
if (bwa_pg) err_printf("%s\n", bwa_pg);
|
||||
}
|
||||
|
||||
|
|
@ -422,3 +422,16 @@ err_set_rg:
|
|||
return 0;
|
||||
}
|
||||
|
||||
char *bwa_insert_header(const char *s, char *hdr)
|
||||
{
|
||||
int len = 0;
|
||||
if (s == 0 || s[0] != '@') return hdr;
|
||||
if (hdr) {
|
||||
len = strlen(hdr);
|
||||
hdr = realloc(hdr, len + strlen(s) + 2);
|
||||
hdr[len++] = '\n';
|
||||
strcpy(hdr + len, s);
|
||||
} else hdr = strdup(s);
|
||||
bwa_escape(hdr + len);
|
||||
return hdr;
|
||||
}
|
||||
|
|
|
|||
3
bwa.h
3
bwa.h
|
|
@ -51,8 +51,9 @@ extern "C" {
|
|||
int bwa_idx2mem(bwaidx_t *idx);
|
||||
int bwa_mem2idx(int64_t l_mem, uint8_t *mem, bwaidx_t *idx);
|
||||
|
||||
void bwa_print_sam_hdr(const bntseq_t *bns, const char *rg_line);
|
||||
void bwa_print_sam_hdr(const bntseq_t *bns, const char *hdr_line);
|
||||
char *bwa_set_rg(const char *s);
|
||||
char *bwa_insert_header(const char *s, char *hdr);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,50 @@
|
|||
Bwakit is a self-consistent installation-free package of scripts and precompiled
|
||||
binaries which provide an end-to-end solution to read mapping. In addition to
|
||||
the basic mapping functionality implemented in bwa, bwakit is able to generate
|
||||
proper human reference genome and to take advantage of ALT contigs, if present,
|
||||
to improve read mapping and to perform HLA typing for high-coverage human data.
|
||||
It can remap name- or coordinate-sorted BAM with read group and barcode
|
||||
information retained. Bwakit also *optionally* trims adapters (via
|
||||
[trimadap][ta]), marks duplicates (via [samblaster][sb]) and sorts the final
|
||||
alignment (via [samtools][smtl]).
|
||||
|
||||
Bwakit has two entry scripts: `run-gen-ref` which downloads and generates human
|
||||
reference genomes, and `run-bwamem` which prints mapping command lines on the
|
||||
standard output that can be piped to `sh` to execute. The two scripts will call
|
||||
other programs or use data in `bwa.kit`. The following shows an example about
|
||||
how to use bwakit:
|
||||
|
||||
```sh
|
||||
# Download the bwa-0.7.11 binary package (download link may change)
|
||||
wget -O- http://sourceforge.net/projects/bio-bwa/files/bwakit/bwakit-0.7.11_x64-linux.tar.bz2/download \
|
||||
| gzip -dc | tar xf -
|
||||
# Generate the GRCh38+ALT+decoy+HLA and create the BWA index
|
||||
bwa.kit/run-gen-ref hs38d6 # download GRCh38 and write hs38d6.fa
|
||||
bwa.kit/bwa index hs38d6.fa # create BWA index
|
||||
# mapping
|
||||
bwa.kit/run-bwamem -o out hs38d6.fa read1.fq read2.fq | sh
|
||||
```
|
||||
|
||||
The last mapping command line will generate the following files:
|
||||
|
||||
* `out.aln.bam`: unsorted alignments with ALT-aware mapping quality. In this
|
||||
file, one read may be placed on multiple overlapping ALT contigs at the same
|
||||
time even if the read is mapped better to some contigs than others. This makes
|
||||
it possible to analyze each contig independent of others.
|
||||
|
||||
* `out.hla.top`: best genotypes for HLA-A, -B, -C, -DQA1, -DQB1 and -DRB1 genes.
|
||||
|
||||
* `out.hla.all`: other possible genotypes on the six HLA genes.
|
||||
|
||||
* `out.log.*`: bwa-mem, samblaster and HLA typing log files.
|
||||
|
||||
Bwakit can be [downloaded here][res]. It is only available to x86_64-linux. The
|
||||
scripts in the package are available in the [bwa/bwakit][kit] directory.
|
||||
Packaging is done manually for now.
|
||||
|
||||
|
||||
[res]: https://sourceforge.net/projects/bio-bwa/files/
|
||||
[sb]: https://github.com/GregoryFaust/samblaster
|
||||
[ta]: https://github.com/lh3/seqtk/blob/master/trimadap.c
|
||||
[smtl]: http://www.htslib.org
|
||||
[kit]: https://github.com/lh3/bwa/tree/master/bwakit
|
||||
|
|
@ -31,16 +31,16 @@ Examples:
|
|||
|
||||
run-bwamem -o prefix -t8 -R"@RG\tID:foo\tSM:bar" hs38d6.fa read1.fq.gz read2.fq.gz
|
||||
|
||||
* Remap coordinate-sorted BAM, trim Illumina PE adapters and sort the output. The BAM
|
||||
may contain single-end or paired-end reads, or a mixture of the two types. Read groups
|
||||
are not transferred to the output BAM, though.
|
||||
* Remap coordinate-sorted BAM, transfer read groups tags, trim Illumina PE adapters and
|
||||
sort the output. The BAM may contain single-end or paired-end reads, or a mixture of
|
||||
the two types. Specifying -R stops read group transfer.
|
||||
|
||||
run-bwamem -sao prefix hs38d6.fa old-srt.bam
|
||||
|
||||
* Remap name-grouped BAM and mark duplicates. Note that in this case, all reads from
|
||||
a single library should be aligned at the same time. Paired-end only.
|
||||
|
||||
run-bwamem -Sdo prefix hs38d6.fa old-unsrt.bam
|
||||
run-bwamem -Sdo prefix hs38d6.fa old-unsrt.bam
|
||||
|
||||
Output files:
|
||||
|
||||
|
|
@ -51,8 +51,6 @@ Output files:
|
|||
|
||||
') if @ARGV < 2;
|
||||
|
||||
warn("WARNING: many programs require read groups. Please specify with -R if you can.\n") unless defined($opts{R});
|
||||
|
||||
my $idx = $ARGV[0];
|
||||
|
||||
my $exepath = $0 =~/^\S+\/[^\/\s]+/? $0 : &which($0);
|
||||
|
|
@ -82,7 +80,7 @@ if (defined $opts{o}) {
|
|||
last if substr($ARGV[1], $i, 1) ne substr($ARGV[2], $i, 1)
|
||||
}
|
||||
$prefix = substr($ARGV[1], 0, $i) if $i > 0;
|
||||
} elsif ($ARGV[1] =~ /^(\S+)\.(fastq|fq|fasta|fa|mag|sam|sam\.gz|mag\.gz|fasta\.gz|fa\.gz|fastq\.gz|fq\.gz|bam)$/) {
|
||||
} elsif ($ARGV[1] =~ /^(\S+)\.(fastq|fq|fasta|fa|mag|mag\.gz|fasta\.gz|fa\.gz|fastq\.gz|fq\.gz|bam)$/) {
|
||||
$prefix = $1;
|
||||
}
|
||||
die("ERROR: failed to identify the prefix for output. Please specify -p.\n") unless defined($prefix);
|
||||
|
|
@ -98,19 +96,36 @@ for my $f (@ARGV[1..$#ARGV]) {
|
|||
}
|
||||
|
||||
my $is_pe = (defined($opts{p}) || @ARGV >= 3)? 1 : 0;
|
||||
my $is_sam = $ARGV[1] =~ /\.(sam|sam\.gz)$/? 1 : 0;
|
||||
my $is_bam = $ARGV[1] =~ /\.bam$/? 1 : 0;
|
||||
|
||||
if (defined($opts{x})) {
|
||||
delete($opts{d}); delete($opts{a}); delete $opts{p};
|
||||
}
|
||||
|
||||
# for BAM input, find @RG header lines
|
||||
my @RG_lines = ();
|
||||
if ($is_bam && !defined($opts{R})) {
|
||||
my $fh;
|
||||
open($fh, "$root/samtools view -H $ARGV[1] |") || die;
|
||||
while (<$fh>) {
|
||||
chomp;
|
||||
if (/^\@RG\t/) {
|
||||
s/\t/\\t/g;
|
||||
push(@RG_lines, "-H'$_'");
|
||||
}
|
||||
}
|
||||
close($fh);
|
||||
}
|
||||
|
||||
warn("WARNING: many programs require read groups. Please specify with -R if you can.\n") if !defined($opts{R}) && @RG_lines == 0;
|
||||
|
||||
my $cmd = '';
|
||||
if ($is_sam || $is_bam) {
|
||||
my $cmd_sam2bam = $is_sam? "$root/htsbox samview -uS $ARGV[1] \\\n" : "cat $ARGV[1] \\\n";
|
||||
if ($is_bam) {
|
||||
my $cmd_sam2bam = "cat $ARGV[1] \\\n";
|
||||
my $ntmps = int($size / 4e9) + 1;
|
||||
my $cmd_shuf = ($is_bam || $is_sam) && !defined($opts{S})? " | $root/htsbox bamshuf -uOn$ntmps - $prefix.shuf \\\n" : "";
|
||||
my $cmd_bam2fq = " | $root/htsbox bam2fq -O - \\\n";
|
||||
my $cmd_shuf = !defined($opts{S})? " | $root/htsbox bamshuf -uOn$ntmps - $prefix.shuf \\\n" : "";
|
||||
my $bam2fq_opt = @RG_lines > 0? " -t" : "";
|
||||
my $cmd_bam2fq = " | $root/htsbox bam2fq -O$bam2fq_opt - \\\n";
|
||||
$cmd = $cmd_sam2bam . $cmd_shuf . $cmd_bam2fq;
|
||||
} elsif (@ARGV >= 3) {
|
||||
$cmd = "$root/seqtk mergepe $ARGV[1] $ARGV[2] \\\n";
|
||||
|
|
@ -119,6 +134,7 @@ if ($is_sam || $is_bam) {
|
|||
}
|
||||
|
||||
my $bwa_opts = "-p " . ($opts{t} > 1? "-t$opts{t} " : "") . (defined($opts{x})? "-x $opts{x} " : "") . (defined($opts{R})? "-R'$opts{R}' " : "");
|
||||
$bwa_opts .= join(" ", @RG_lines) . " -C " if @RG_lines > 0;
|
||||
|
||||
$cmd .= " | $root/trimadap 2> $prefix.log.trim \\\n" if defined($opts{a});
|
||||
$cmd .= " | $root/bwa mem $bwa_opts$ARGV[0] - 2> $prefix.log.bwamem \\\n";
|
||||
|
|
@ -1,330 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>ActiveLayerIndex</key>
|
||||
<integer>0</integer>
|
||||
<key>ApplicationVersion</key>
|
||||
<array>
|
||||
<string>com.omnigroup.OmniGraffle</string>
|
||||
<string>139.18.0.187838</string>
|
||||
</array>
|
||||
<key>AutoAdjust</key>
|
||||
<true/>
|
||||
<key>BackgroundGraphic</key>
|
||||
<dict>
|
||||
<key>Bounds</key>
|
||||
<string>{{0, 0}, {576, 733}}</string>
|
||||
<key>Class</key>
|
||||
<string>SolidGraphic</string>
|
||||
<key>ID</key>
|
||||
<integer>2</integer>
|
||||
<key>Style</key>
|
||||
<dict>
|
||||
<key>shadow</key>
|
||||
<dict>
|
||||
<key>Draws</key>
|
||||
<string>NO</string>
|
||||
</dict>
|
||||
<key>stroke</key>
|
||||
<dict>
|
||||
<key>Draws</key>
|
||||
<string>NO</string>
|
||||
</dict>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>BaseZoom</key>
|
||||
<integer>0</integer>
|
||||
<key>CanvasOrigin</key>
|
||||
<string>{0, 0}</string>
|
||||
<key>ColumnAlign</key>
|
||||
<integer>1</integer>
|
||||
<key>ColumnSpacing</key>
|
||||
<real>36</real>
|
||||
<key>CreationDate</key>
|
||||
<string>2014-11-17 16:51:42 +0000</string>
|
||||
<key>Creator</key>
|
||||
<string>Heng Li</string>
|
||||
<key>DisplayScale</key>
|
||||
<string>1 0/72 in = 1 0/72 in</string>
|
||||
<key>GraphDocumentVersion</key>
|
||||
<integer>8</integer>
|
||||
<key>GraphicsList</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>Bounds</key>
|
||||
<string>{{35.699992179870605, 151.89999580383301}, {476, 224}}</string>
|
||||
<key>Class</key>
|
||||
<string>ShapedGraphic</string>
|
||||
<key>FitText</key>
|
||||
<string>YES</string>
|
||||
<key>Flow</key>
|
||||
<string>Resize</string>
|
||||
<key>FontInfo</key>
|
||||
<dict>
|
||||
<key>Font</key>
|
||||
<string>AndaleMono</string>
|
||||
<key>Size</key>
|
||||
<real>12</real>
|
||||
</dict>
|
||||
<key>ID</key>
|
||||
<integer>28</integer>
|
||||
<key>Shape</key>
|
||||
<string>Rectangle</string>
|
||||
<key>Style</key>
|
||||
<dict>
|
||||
<key>fill</key>
|
||||
<dict>
|
||||
<key>Draws</key>
|
||||
<string>NO</string>
|
||||
</dict>
|
||||
<key>shadow</key>
|
||||
<dict>
|
||||
<key>Draws</key>
|
||||
<string>NO</string>
|
||||
</dict>
|
||||
<key>stroke</key>
|
||||
<dict>
|
||||
<key>Draws</key>
|
||||
<string>NO</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>Text</key>
|
||||
<dict>
|
||||
<key>Align</key>
|
||||
<integer>0</integer>
|
||||
<key>Pad</key>
|
||||
<integer>0</integer>
|
||||
<key>Text</key>
|
||||
<string>{\rtf1\ansi\ansicpg1252\cocoartf1265\cocoasubrtf210
|
||||
\cocoascreenfonts1{\fonttbl\f0\fnil\fcharset0 Consolas;\f1\fnil\fcharset0 Consolas-Bold;}
|
||||
{\colortbl;\red255\green255\blue255;\red0\green0\blue0;\red127\green127\blue127;\red255\green0\blue0;
|
||||
\red204\green204\blue204;\red0\green0\blue255;\red0\green128\blue0;\red255\green128\blue0;}
|
||||
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
|
||||
|
||||
\f0\fs24 \cf2 Read: A\cf0 TCAGCATC\
|
||||
\cf2 \
|
||||
ALT ctg 1: \cf3 TGA\cf3 AA---CGAATGCAAATGGTCA
|
||||
\f1\b \cf4 ATCAGCATC
|
||||
\f0\b0 \cf3 GAACTAGTCACAT\cf2 \
|
||||
\cf3 |||||\cf5 (high div) \cf3 ||||||\cf5 (novel ins)\cf3 ||||||||||\cf2 \
|
||||
Chromosome:\cf3 GCGTACATGATACGA
|
||||
\f1\b \cf6 ATCgGCATC
|
||||
\f0\b0 \cf3 ATGGTC-------------CTAGTCACATCGTAATC\
|
||||
\cf2 \cf3 |||||||||||| ||||||||||\cf5 (novel ins) \cf3 ||||||||||\
|
||||
\cf2 ALT ctg 2:\cf3 TGATACGA
|
||||
\f1\b \cf7 ATCgcCATC
|
||||
\f0\b0 \cf3 ATGGTCA
|
||||
\f1\b \cf8 ATCgcCAgC
|
||||
\f0\b0 \cf3 GAACTAGTCACAT\
|
||||
\
|
||||
\cf2 4 potential hits:
|
||||
\f1\b \cf4 ATCAGCATC
|
||||
\f0\b0 \cf0 >
|
||||
\f1\b \cf6 ATCgGCATC
|
||||
\f0\b0 \cf0 >
|
||||
\f1\b \cf7 ATCgcCATC
|
||||
\f0\b0 \cf2 >
|
||||
\f1\b \cf8 ATCgcCAgC\
|
||||
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
|
||||
|
||||
\f0\b0 \cf0 2 hit groups: \{
|
||||
\f1\b \cf4 ATCAGCATC
|
||||
\f0\b0 \cf0 ,
|
||||
\f1\b \cf8 ATCgcCAgC
|
||||
\f0\b0 \cf2 \} and\cf0 \{
|
||||
\f1\b \cf6 ATCgGCATC
|
||||
\f0\b0 \cf2 ,
|
||||
\f1\b \cf7 ATCgcCATC
|
||||
\f0\b0 \cf2 \}\
|
||||
\cf0 Hits considered in mapQ:
|
||||
\f1\b \cf4 ATCAGCATC
|
||||
\f0\b0 \cf0 and
|
||||
\f1\b \cf6 ATCgGCATC
|
||||
\f0\b0 \cf2 (best from each group)
|
||||
\f1\b \cf6 \
|
||||
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
|
||||
|
||||
\f0\b0 \cf3 \
|
||||
\cf2 In the output SAM:
|
||||
\f1\b \cf6 ATCgGCATC
|
||||
\f0\b0 \cf2 as the primary SAM line with mapQ=0\
|
||||
|
||||
\f1\b \cf4 ATCAGCATC
|
||||
\f0\b0 \cf2 as a supplementary line with mapQ>0\
|
||||
|
||||
\f1\b \cf8 ATCgcCAgC
|
||||
\f0\b0 \cf2 as a supplementary line with mapQ>0\
|
||||
|
||||
\f1\b \cf7 ATCgcCATC
|
||||
\f0\b0 \cf2 in an XA tag, not as a separate line}</string>
|
||||
<key>VerticalPad</key>
|
||||
<integer>0</integer>
|
||||
</dict>
|
||||
<key>Wrap</key>
|
||||
<string>NO</string>
|
||||
</dict>
|
||||
</array>
|
||||
<key>GridInfo</key>
|
||||
<dict>
|
||||
<key>GridSpacing</key>
|
||||
<real>7.1999998092651367</real>
|
||||
<key>MajorGridSpacing</key>
|
||||
<integer>10</integer>
|
||||
<key>SnapsToGrid</key>
|
||||
<string>YES</string>
|
||||
</dict>
|
||||
<key>GuidesLocked</key>
|
||||
<string>NO</string>
|
||||
<key>GuidesVisible</key>
|
||||
<string>YES</string>
|
||||
<key>HPages</key>
|
||||
<integer>1</integer>
|
||||
<key>ImageCounter</key>
|
||||
<integer>1</integer>
|
||||
<key>KeepToScale</key>
|
||||
<false/>
|
||||
<key>Layers</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>Lock</key>
|
||||
<string>NO</string>
|
||||
<key>Name</key>
|
||||
<string>Layer 1</string>
|
||||
<key>Print</key>
|
||||
<string>YES</string>
|
||||
<key>View</key>
|
||||
<string>YES</string>
|
||||
</dict>
|
||||
</array>
|
||||
<key>LayoutInfo</key>
|
||||
<dict>
|
||||
<key>Animate</key>
|
||||
<string>NO</string>
|
||||
<key>circoMinDist</key>
|
||||
<real>18</real>
|
||||
<key>circoSeparation</key>
|
||||
<real>0.0</real>
|
||||
<key>layoutEngine</key>
|
||||
<string>dot</string>
|
||||
<key>neatoSeparation</key>
|
||||
<real>0.0</real>
|
||||
<key>twopiSeparation</key>
|
||||
<real>0.0</real>
|
||||
</dict>
|
||||
<key>LinksVisible</key>
|
||||
<string>NO</string>
|
||||
<key>MagnetsVisible</key>
|
||||
<string>NO</string>
|
||||
<key>MasterSheets</key>
|
||||
<array/>
|
||||
<key>ModificationDate</key>
|
||||
<string>2014-11-17 18:28:10 +0000</string>
|
||||
<key>Modifier</key>
|
||||
<string>Heng Li</string>
|
||||
<key>NotesVisible</key>
|
||||
<string>NO</string>
|
||||
<key>Orientation</key>
|
||||
<integer>2</integer>
|
||||
<key>OriginVisible</key>
|
||||
<string>NO</string>
|
||||
<key>PageBreaks</key>
|
||||
<string>YES</string>
|
||||
<key>PrintInfo</key>
|
||||
<dict>
|
||||
<key>NSBottomMargin</key>
|
||||
<array>
|
||||
<string>float</string>
|
||||
<string>41</string>
|
||||
</array>
|
||||
<key>NSHorizonalPagination</key>
|
||||
<array>
|
||||
<string>coded</string>
|
||||
<string>BAtzdHJlYW10eXBlZIHoA4QBQISEhAhOU051bWJlcgCEhAdOU1ZhbHVlAISECE5TT2JqZWN0AIWEASqEhAFxlwCG</string>
|
||||
</array>
|
||||
<key>NSLeftMargin</key>
|
||||
<array>
|
||||
<string>float</string>
|
||||
<string>18</string>
|
||||
</array>
|
||||
<key>NSPaperSize</key>
|
||||
<array>
|
||||
<string>size</string>
|
||||
<string>{612, 792}</string>
|
||||
</array>
|
||||
<key>NSPrintReverseOrientation</key>
|
||||
<array>
|
||||
<string>int</string>
|
||||
<string>0</string>
|
||||
</array>
|
||||
<key>NSRightMargin</key>
|
||||
<array>
|
||||
<string>float</string>
|
||||
<string>18</string>
|
||||
</array>
|
||||
<key>NSTopMargin</key>
|
||||
<array>
|
||||
<string>float</string>
|
||||
<string>18</string>
|
||||
</array>
|
||||
</dict>
|
||||
<key>PrintOnePage</key>
|
||||
<false/>
|
||||
<key>ReadOnly</key>
|
||||
<string>NO</string>
|
||||
<key>RowAlign</key>
|
||||
<integer>1</integer>
|
||||
<key>RowSpacing</key>
|
||||
<real>36</real>
|
||||
<key>SheetTitle</key>
|
||||
<string>Canvas 1</string>
|
||||
<key>SmartAlignmentGuidesActive</key>
|
||||
<string>YES</string>
|
||||
<key>SmartDistanceGuidesActive</key>
|
||||
<string>YES</string>
|
||||
<key>UniqueID</key>
|
||||
<integer>1</integer>
|
||||
<key>UseEntirePage</key>
|
||||
<false/>
|
||||
<key>VPages</key>
|
||||
<integer>1</integer>
|
||||
<key>WindowInfo</key>
|
||||
<dict>
|
||||
<key>CurrentSheet</key>
|
||||
<integer>0</integer>
|
||||
<key>ExpandedCanvases</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>Canvas 1</string>
|
||||
</dict>
|
||||
</array>
|
||||
<key>Frame</key>
|
||||
<string>{{367, 6}, {710, 872}}</string>
|
||||
<key>ListView</key>
|
||||
<true/>
|
||||
<key>OutlineWidth</key>
|
||||
<integer>142</integer>
|
||||
<key>RightSidebar</key>
|
||||
<false/>
|
||||
<key>ShowRuler</key>
|
||||
<true/>
|
||||
<key>Sidebar</key>
|
||||
<true/>
|
||||
<key>SidebarWidth</key>
|
||||
<integer>120</integer>
|
||||
<key>VisibleRegion</key>
|
||||
<string>{{0, 0}, {575, 733}}</string>
|
||||
<key>Zoom</key>
|
||||
<real>1</real>
|
||||
<key>ZoomValues</key>
|
||||
<array>
|
||||
<array>
|
||||
<string>Canvas 1</string>
|
||||
<real>1</real>
|
||||
<real>1</real>
|
||||
</array>
|
||||
</array>
|
||||
</dict>
|
||||
</dict>
|
||||
</plist>
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 47 KiB |
16
fastmap.c
16
fastmap.c
|
|
@ -44,7 +44,7 @@ int main_mem(int argc, char *argv[])
|
|||
kseq_t *ks, *ks2 = 0;
|
||||
bseq1_t *seqs;
|
||||
bwaidx_t *idx;
|
||||
char *p, *rg_line = 0;
|
||||
char *p, *rg_line = 0, *hdr_line = 0;
|
||||
const char *mode = 0;
|
||||
void *ko = 0, *ko2 = 0;
|
||||
int64_t n_processed = 0;
|
||||
|
|
@ -55,7 +55,7 @@ int main_mem(int argc, char *argv[])
|
|||
|
||||
opt = mem_opt_init();
|
||||
memset(&opt0, 0, sizeof(mem_opt_t));
|
||||
while ((c = getopt(argc, argv, "epaFMCSPHVYjk:c:v:s:r:t:R:A:B:O:E:U:w:L:d:T:Q:D:m:I:N:W:x:G:h:y:K:X:")) >= 0) {
|
||||
while ((c = getopt(argc, argv, "epaFMCSPVYjk:c:v:s:r:t:R:A:B:O:E:U:w:L:d:T:Q:D:m:I:N:W:x:G:h:y:K:X:H:")) >= 0) {
|
||||
if (c == 'k') opt->min_seed_len = atoi(optarg), opt0.min_seed_len = 1;
|
||||
else if (c == 'x') mode = optarg;
|
||||
else if (c == 'w') opt->w = atoi(optarg), opt0.w = 1;
|
||||
|
|
@ -115,6 +115,8 @@ int main_mem(int argc, char *argv[])
|
|||
opt->pen_clip3 = strtol(p+1, &p, 10);
|
||||
} else if (c == 'R') {
|
||||
if ((rg_line = bwa_set_rg(optarg)) == 0) return 1; // FIXME: memory leak
|
||||
} else if (c == 'H') {
|
||||
hdr_line = bwa_insert_header(optarg, hdr_line);
|
||||
} else if (c == 'I') { // specify the insert size distribution
|
||||
pes0 = pes;
|
||||
pes[1].failed = 0;
|
||||
|
|
@ -135,6 +137,12 @@ int main_mem(int argc, char *argv[])
|
|||
}
|
||||
else return 1;
|
||||
}
|
||||
|
||||
if (rg_line) {
|
||||
hdr_line = bwa_insert_header(rg_line, hdr_line);
|
||||
free(rg_line);
|
||||
}
|
||||
|
||||
if (opt->n_threads < 1) opt->n_threads = 1;
|
||||
if (optind + 1 >= argc || optind + 3 < argc) {
|
||||
fprintf(stderr, "\n");
|
||||
|
|
@ -169,6 +177,7 @@ int main_mem(int argc, char *argv[])
|
|||
fprintf(stderr, "\nInput/output options:\n\n");
|
||||
fprintf(stderr, " -p smart pairing (ignoring in2.fq)\n");
|
||||
fprintf(stderr, " -R STR read group header line such as '@RG\\tID:foo\\tSM:bar' [null]\n");
|
||||
fprintf(stderr, " -H STR insert an arbitrary header line [null]\n");
|
||||
fprintf(stderr, " -j ignore ALT contigs\n");
|
||||
fprintf(stderr, "\n");
|
||||
fprintf(stderr, " -v INT verbose level: 1=error, 2=warning, 3=message, 4+=debugging [%d]\n", bwa_verbose);
|
||||
|
|
@ -261,7 +270,7 @@ int main_mem(int argc, char *argv[])
|
|||
}
|
||||
}
|
||||
if (!(opt->flag & MEM_F_ALN_REG))
|
||||
bwa_print_sam_hdr(idx->bns, rg_line);
|
||||
bwa_print_sam_hdr(idx->bns, hdr_line);
|
||||
actual_chunk_size = fixed_chunk_size > 0? fixed_chunk_size : opt->chunk_size * opt->n_threads;
|
||||
while ((seqs = bseq_read(actual_chunk_size, &n, ks, ks2)) != 0) {
|
||||
int64_t size = 0;
|
||||
|
|
@ -301,6 +310,7 @@ int main_mem(int argc, char *argv[])
|
|||
free(seqs);
|
||||
}
|
||||
|
||||
free(hdr_line);
|
||||
free(opt);
|
||||
bwa_idx_destroy(idx);
|
||||
kseq_destroy(ks);
|
||||
|
|
|
|||
Loading…
Reference in New Issue