Welcome to TiddlyWiki created by Jeremy Ruston; Copyright © 2004-2007 Jeremy Ruston, Copyright © 2007-2011 UnaMesa Association
"""FusionMap requires the user to have a reference genome and a gene model built prior to running the actual fusion alignment. The indexing needs to be generated only once for each reference. """
By default, when it is the first time to run ~FusionMap using certain reference and gene model, the program will @@automatically download a compiled genome and gene model@@.
User has to specifies the right name for the reference genome and gene model. See name of [[Reference and Gene Model]].
For example, if we run ~FusionMap detection with Human.B37 (hg19) and ~RefGene model using the following command:
{{{
cd C:\tmp\FusionMap\bin
FusionMap.exe --semap C:\tmp\FusionMap Human.B37 RefGene C:\tmp\FusionMap\TestDataset\secontrol.txt > C:\tmp\FusionMap\TestDataset\run.log
}}}
~FusionMap will download the @@Human.B37@@ and @@~RefGene@@ model in your local folder. You will find two folders under the ''~FusionMap_Base_Dir'':
{{{
-Temp
----sdf231g3654a23sd1f6 (randomly named folder to store temp files)
-ReferenceLibrary
---- Human.B37_GeneModels
---- Human.B37.dreflib1
---- Human.B37.gindex1
}}}
It only takes a few minute to download and build an index into your local cache. See [[a log file for automatically downloading a reference file]] in a Windows 64 bit machine.
Please read [[Example 1]] for more details.
Please read [[Error message when downloading reference index]] if you have problem with the automatic downloading.
!!!!User can also choose to build their own reference library by following commands:
''Building a Reference Library''
{{{
FusionMap.exe --buildref FusionMap_Base_Dir fasta_file_name ref_lib_name
}}}
''Building a Gene Model''
{{{
FusionMap.exe --buildgm FusionMap_Base_Dir gtf_file_name ref_lib_name gene_model_name
}}}
See [[One example of building your own reference and gene model, with tips]].
!!Notes:
In ~FusionMap (version >= 1.40), all chromosome will be labeled as 1-22, X, Y. When user is building reference and gene model with FASTA/GTF files with chromosome names as chr1-22, chrX, chrY, e.g. UCSC hg19, ~FusionMap will automatically chop "chr" away.
We are recommending the pre-built @@Human.B37@@ and @@~RefGene@@ from ~FusionMap website, which contains both gene symbols and transcript ~IDs. The gene model is a combined table from ~RefSeq and ~RefFlat, e.g.:
{{{
chr1 hg19_refGene start_codon 67000042 67000044 0.000000 + . gene_id "SGIP1_chr1"; transcript_id "NM_032291_chr1"; gene_name "SGIP1"; transcript_name "NM_032291"
chr1 hg19_refGene CDS 67000042 67000051 0.000000 + 0 gene_id "SGIP1_chr1"; transcript_id "NM_032291_chr1"; gene_name "SGIP1"; transcript_name "NM_032291"
chr1 hg19_refGene exon 66999825 67000051 0.000000 + . gene_id "SGIP1_chr1"; transcript_id "NM_032291_chr1"; gene_name "SGIP1"; transcript_name "NM_032291"
chr1 hg19_refGene CDS 67091530 67091593 0.000000 + 2 gene_id "SGIP1_chr1"; transcript_id "NM_032291_chr1"; gene_name "SGIP1"; transcript_name "NM_032291"
}}}
!!Next Step: [[(2) Fusion Detection]]
"""FusionMap is designed to detect and align fusion junction-spanning reads to the genome directly. It can be applied to both paired-end and single-end NGS dataset but it is preferable to apply FusionMap to unmapped reads after regular alignment."""
''COMMAND''
{{{
FusionMap.exe --semap FusionMap_Base_Dir ref_lib_name gene_model_name control_file_name
}}}
''Example'':
{{{
FusionMap.exe --semap C:\tmp\FusionMap Human.B37 RefGene C:\tmp\secontrol.txt > C:\tmp\log.txt
}}}
!!!Command Line Options
Besides the options for reference and gene model, all the other parameters are specified in a control file:
{{{
<Files>
C:\...\TestDataset\input\UnmappedReads_from_tophat.fastq
<Options>
MinimalFusionAlignmentLength=25 //Possible values: 15-50. Default value=25 (alpha)
...
<Output>
OutputPath=C:\...\TestDataset\output
OutputName=TestDataset
}}}
See [[(3) Options]] description.
!!Parameter overview
!!!~FusionMap requires a number of parameters:
Three parameters are specific and important to the fusion detection: the minimal end length of seed read (α), the maximal hits of read end (ß) and the penalty for non-canonical splice pattern (G).
The cutoff parameters are applied to the number of distinct, seed and rescued fusion reads in the final fusion report table, which limits the number of false discoveries.
All the other parameters are used for the basic alignment in fusion detection pipeline. Same as other alignment tools, they are usually set at default values.
User only needs to specify values for parameters in the control file if they are different from their defaults.
!!@@''Main parameters in the control file''@@
|''Parameter''|''Description''|''Default''|h
|~RnaMode|"""If using RNA-Seq for fusion detection, set this option to True."""|True|
|~FileFormat|"""File input types include FASTQ, QSEQ, FASTA, BAM, and SAM. Make sure to set this option correctly."""|FASTQ|
|~ThreadNumber|"""Total number of threads to be allocated to the process. This can be set to the total number of cores on the machine."""|1|
|~MinimalFusionAlignmentLength|"""This is the minimal size that a fusion read can be cut to, in order for it to be counted. It is parameter Alpha as described in the FusionMap paper."""|25|
|~FusionReportCutoff|"""The # of reads that can be mapped to either end after the fusion read gets cut (default=1, only considering uniquely mapped reads). This is referred to Beta in the FusionMap paper."""|1|
|~NonCanonicalSpliceJunctionPenalty|"""This is the penalty for the RNA-Seq fusion junction if the junction is not a canonical splice junction (GT-AG, GC-AG and AT-AC). A higher value will decrease false positives, but also limits the reported fusion junctions to splice junctions only. This is referred to G in the FusionMap paper."""|2|
|~FilterBy|"""This controls the post-alignment filtering and determines the method to filter the fusion. Default value = "DefaultList". Options are “DefaultList”, “CustomizedList”, or “None”."""|~DefaultList|
|~OutputFusionReads |"""If set to true, it outputs a report containing read information (read name, cutting position, and the fusion junction) and fusion alignment file in SAM format. If set to false, only the fusion report is outputted. When set to true, this allows the user to find out the exact read, its associated fusion junction, and the cutting position for the fusion read."""|False|
See [[a control with main parameters]] only.
!!@@''Optional parameters in the control file''@@
|''Parameter''|''Description''|''Default''|h
|~PairedEnd|"""By default, PairedEnd=False, FusionMap considers each NGS file as one sample. If PairedEnd=True, FusionMap will pair two files and consider them as NGS reads from the same sample. """|False|
|Gzip|"""If the file formats for the input files are in the gzip format, set this to true; default is False"""|False|
|~Use32BitMode|"""Set this to true if user has less than 8G of memory, or a 32-bit machine. Note: Performance is much slower with this set to true."""|False|
|~QualityEncoding|"""Type of quality encoding. Automatic, Illumina, Sanger. User should set to automatic in most cases to automatically distinguish between Sanger and Illumina quality scoring"""|Automatic|
|~SearchNovelExonJunction|"""To search for novel exon junctions during the filtering steps. Read through events<50Kb may missed if this option is True. This option should be False for gDNA-Seq dataset.."""|False|
|~TrimByQuality|"""When set to true, this will automatically trim each read using the ReadTrimQuality option below. If a base pair has a quality score below the specified amount, the read is trimmed at that point, although the algorithm will only trim, at most, down to a read size of 17 base pairs."""|True|
|~ReadTrimSize|"""If TrimByQuality is set to false, this will trim each read to the specified base pair"""|1024|
|~ReadTrimQuality|"""Quality cutoff for Phred quality scores used by TrimByQuality for trimming."""|2|
|~AutoPenalty|"""Total penalty is the total number of indels or mismatches allowed for a successful mapping. The penalty is defined as the maximal number of mismatches allowed plus the gap penalty if an indel is present in the alignment. Usually we set the gap penalty to one or two (default is two). By default, FusionMap automatically set the maximal penalty for each read to max(2, (read length - 31) / 15) based on trimmed read length. """|True|
|~FixedPenalty, ~IndelPenalty|"""It is user defined penalty if AutoPenalty=False."""|2|
|~DetectIndels|"""Will detect indels if set to true. Does not work with RNA-Seq data (DNA-seq only)."""|False|
|~MinDistalEndSize|"""This is the minimal distance of an indel from the end that can be detected if DetectIndels=True. """|3|
|~MaxMiddleInsertionSize, ~MaxMiddleDeletionSize, ~MaxEndInsertionSize, ~MaxEndDeletionSize|"""This is the maximum size of middle insertion, middle deletion, end insertion and end deletion that can be detected if DetectIndels=True. Default value=10 for all four parameters."""|10|
|~MinimalFusionSpan|"""This is the minimum number of base-pairs between two mappings in order for it to be counted as a fusion."""|5000|
|~ReportUnannotatedFusion|"""When set to true, this will report fusion regions that have no gene annotation information."""|False|
|~MinimalRescuedReadNumber|"""Sets the minimal number of “rescued” reads found by FusionMap. Please see FusionMap for more details on “rescued” reads."""|1|
|~MinimalHit|"""This is the minimal number of unique fusion reads."""|2|
|~FilterUnlikelyFusionReads|"""When set to true, this will filter out reads where those reads can be aligned to the reference as a whole. Filtering out normal reads."""|True|
|~FilterBy|"""Advanced filtering using blacklist. Possible values: DefaultList, CustomizedList, or None"""|~DefaultList|
|~DefaultFilterListVersion|"""Sets the blacklist filter version. Default value = v1. These lists are maintained by Omicsoft at http://www.omicsoft.com/downloads/fusion/filtering/ and can be browsed to see the latest blacklist filter version. This will automatically filter a set of known genes or gene pairs that should be “blacklisted” from being included. At the time of this writing, this list included a number of mitochondrial and pseudo genes. The gene family list will automatically exclude genes from the same family from being included as potential fusion genes."""|v1|
|~FilterGeneFamilyFileName|"""Sets the file name path for the gene family list if FilterBy=CustomizedList. This is just a text file containing two columns, where the first column is the gene name, and the second column is the gene family. If a gene belongs to the same gene family, it will be excluded from being called a potential fusion gene."""| |
|~FilterGeneListFileName|"""Sets the file name path for a user customized list of genes to be blacklisted if FilterBy=CustomizedList. This is just a text file containing a list of genes that the user wishes to exclude from analysis."""| |
See [[a control file with all paramters]].
!@@"""FusionReport.txt"""@@
It report a list of detected fusion junctions, number of supporting reads, fusion gene pairs, genomic locations of junction sites, junction ans splice sequences, which characterizes fusion events comprehensively at base-pair resolution.
!!!Here is the description for each column in the fusion table.
|~ColID|Desctiption|h
|~FusionID|Unique fusion ID|
|xxx.~UniqueCuttingPositionCount|# of distinct reads|
|xxx.~SeedCount|# of seed reads|
|xxx.~RescuedCount|# of rescued reads|
|Strand|fusion junction stand, ("""++/--""": the same strand, or """+-/-+""": opposite strands)|
|Chromosome1|Chr of fusion breakpoint 1|
|Position1|Genomic position of fusion breakpoint 1|
|Chromosome2|Chr of fusion breakpoint 2|
|Position2|Genomic position of fusion breakpoint 2|
|~KnownGene1|Known gene covering fusion breakpoint 1|
|~KnownTranscript1|Known transcript covering fusion breakpoint 1|
|~KnownExonNumber1|Strand of each known trasncript|
|~KnownTranscriptStrand1|Known exon of each transcript covering fusion breakpoint 1|
|~KnownGene2|Known gene covering fusion breakpoint 2|
|~KnownTranscript2|Known transcript covering fusion breakpoint 2|
|~KnownExonNumber2|Strand of each known trasncript|
|~KnownTranscriptStrand2|Known exon of each transcript covering fusion breakpoint 2|
|~FusionJunctionSequence|30nt+30nt fusion junction spanning sequence|
|~SplicePattern*|2nt-2nt splice sequence next to the fusion junction|
|~FrameShit** |Frame shift prediction |
"""*: Three canonical splice patterns: GT-AG, GC-AG and AT-AC. SplicePattern may output the reverse complement of these canonical patterns, e.g., CT-AC is the reverse complement of GT-AG."""
"""**: In the latest FusionMap output, there is one more column for frameshift prediction. Three nucleotide position in each frame is note as position 0, 1, 2. [012][012][012] is amino acid coding pattern. If the FrameShift jumping from gene A to B is 0->1, 1->2, 2->0, then there is no frame shift in both gene A and B due to the fusion event. We infer this information based on the CDS information in gene model. Take BCR-ABL as example:"""
| ~FusionJunctionSequence | ~SplicePattern | ~FusionGene | ~FrameShit |h
|"""ACTCAGCCACTGGATTTAAGCAGAGTTCAAaagcccttcagcggccagtagcatctgact""" | """GT-AG""" | """BCR->ABL1""" | 0->1 |
It is connecting @@color(red):BCR[012][0@@@@color(blue):12][012]ABL@@.
Frame shift is inferred based on CDS information in gene model (get from GTF files). If the frame shit is just’ ->’, then should I assume that the breakpoint is not in the coding region for either gene and similarly, something like ‘->0’ would imply the breakpoint is in the coding region only for the second gene (in phase 0).
Be aware that it is limited to the gene model you used. For example, you may see it is "->" using ~RefGene model but may see it is annotated in Ensembl.
!@@"""Fusion.sam"""@@
It is an optional output which report the SAM format of fusion alignment of seed reads. The SAM format file can be visualized in [[IGV|http://www.broadinstitute.org/software/igv/]] or UCSC genome browser (via [[BAM custom track|http://genome.ucsc.edu/goldenPath/help/bam.html]]).
!!!We followed the format as described in [[SAMtools|http://samtools.sourceforge.net/SAM1.pdf]]. In ~FusionMap SAM output, each alignment line includes:
|Col | Field |h
|1|Read name |
|2|Bitwise FLAG |
|3|Reference sequence name, e.g, chromosome|
|4|1-based leftmost mapping position on the reference|
|5|Mapping quality |
|6|CIGAR string, e.g, match (M)+soft clip (S) |
|7|Reference sequence name of the mate fragment|
|8|1-based leftmost mapping position of the mate fragment on the reference|
|9|Observed insert length, but specified as 0 for inter chromosome fusion events|
|10|Sequence string|
|11|Quality string|
|12|Fusion tag, a unique ID for each fusion junction|
|13|Read type tag, specify the fusion read type, either seed or rescued.|
!!!~FusionMap SAM uses two entries to describe the alignment of each fusion reads
~FusionMap aligns fusion junction spanning reads to the genome. Each fusion will be separated into two ends which were aligned to different locations. In the SAM output, we use two entries to describe the alignment of each fusion reads. For example:
{{{
R_1782:2 67 1 40776789 255 30M45S X 65824263 0
ACCCAGAATCCCGCGTTTGCCCGCATGCCCATTGAACCTCAGAGGTGGGGGTCTGCTTCGTGCACGGGATGCACT
283348985863448157653149274159715381432428925324118868345815774332128375427
ZF:Z:FUS_40776817_2946874630(++) ZT:Z:Seed
R_1782:2 131 X 65824263 255 30S45M 1 40776789 0
ACCCAGAATCCCGCGTTTGCCCGCATGCCCATTGAACCTCAGAGGTGGGGGTCTGCTTCGTGCACGGGATGCACT
283348985863448157653149274159715381432428925324118868345815774332128375427
ZF:Z:FUS_40776817_2946874630(++) ZT:Z:Seed
}}}
Read "R_1782:2" has been cut into two partial reads, one with 30nt and the other with 45nt. The first line represents the alignment of 30nt end using CIGAR 30M45S; the second line represents the alignment of 45nt end using CIGAR 30S45M .
!!!See more details in [[Example 1]] and [[Example 2]].
!Extracted possible fusion based on discordant read pairs
!!Note: ~FusionMap is develop to detect and align fusion junction-spanning reads to the genome directly. This utility is @@color(red):NOT@@ a part of the ~FusionMap paper and it is still in beta testing mode.
In paired-end NGS dataset, a discordant read pair is one that is not aligned to the reference genome with the expected distance and orientation. If a set of discordant read pairs are mapped to two different genes, a fusion gene is suggested.
It is a simple module taking a set of BAM or SAM aligned files, and detects potential fusions based discordant read pairs, by the following command:
{{{
FusionMap --pereport FusionMap_Base_Dir ref_lib_name gene_model_name control_file_name
}}}
Here is one example control file:
{{{
<Files>
C:\tmp\FusionMap\InputFile.sam
<Options>
RnaMode=True // Possible values: True, False. Default value=True
MinimalHit=2 // Possible values: 1-10000, Default value =2
ReportUnannotatedFusion=False // Possible values: True, False. Default value = False
OutputFusionReads=True // Possible values: True, False. Default value = True
FusionReportCutoff=1 // Possible values: 1-1000. Default value=1, require unique mapping of each read
FileFormat=SAM // possible values: SAM, BAM. Default value=SAM
<Output>
OutputPath=C:\tmp\FusionMap\Output
OutputName=Test
}}}
!!Detail descriptions:
|Parameter|Description|Default|h
|~RnaMode|If using ~RNA-Seq for fusion detection, set this option to True | True |
|~MinimalHit|The minimal number of hits for a particular junction to be reported| 2 |
|~ReportUnannotatedFusion|When set to true, this will report fusions that have no gene annotation information| False |
|~OutputFusionReads|If set to true, it outputs a report containing read information (read name and the fusion junction). If set to false, only the report and data are outputted.| True |
|~FusionReportCutoff|The # of alignments that can be mapped to each end, where each end is a single read (=1 only takes unique alignments) | 1 |
|~FileFormat|The file format of the input files. Accepted formats include SAM and BAM| SAM |
{{{
<Files>
/mnt/Win64bin/FusionMap/V_2011-11-22/TestDataset/input/DatasetP2_SimulatedReads_1.fastq
/mnt/Win64bin/FusionMap/V_2011-11-22/TestDataset/input/DatasetP2_SimulatedReads_2.fastq
<Options>
PairedEnd=True
RnaMode=True
Use32BitMode=False
ThreadNumber=8 //Possible values: 1-100. Default value=1
FileFormat=FASTQ // Possible values: FASTQ, QSEQ, FASTA. Default value=FASTQ
MinimalFusionAlignmentLength=25 //Possible values: 15-50. Default value=25 (alpha)
FusionReportCutoff=1 // Possible values: 1-1000. Default value=1 (beta)
NonCanonicalSpliceJunctionPenalty=4 //Possible values: 01-. Default value = 2 (G)
MinimalHit=2 // Minimal distinct read; Possible values: 1-10000, Default value =2
MinimalRescuedReadNumber=1 // Minimal rescued read number. Default value = 1
OutputFusionReads=True // Possible values: True, False. Default value = True
FilterBy=DefaultList //advanced filtering using default black list from FusionMap, set to None to avoid automatic downloading
<Output>
TempPath=/tmp/FusionMapTemp
OutputPath=/mnt/Win64bin/FusionMap/V_2011-11-22/TestDataset/output
OutputName=TestDataset_InputPEReads
}}}
{{{
[12:49 PM] Linux OS detected...
semap -- version 5.2.0.17
[12:49 PM] Loading text information...
.
[12:49 PM] Thread number=8
[12:49 PM] Loading gene model...
.....................................................................................................
[12:49 PM] Downloading from http://www.omicsoft.com/downloads/fusion/filtering/GeneList_v1.txt...
...........................................
[12:49 PM] Downloading from http://www.omicsoft.com/downloads/fusion/filtering/GeneFamilyList_v1.txt...
.....................................................................................................
[12:49 PM] Loading gene blacklist...
.....................................................................................................
[12:49 PM] Loading gene family list...
.....................................................................................................
[12:49 PM] Generating alignments for file: DatasetP2_SimulatedReads_1 and its pair DatasetP2_SimulatedReads_2...
[12:49 PM] Quality encoding for file: /mnt/Win64bin/FusionMap/V_2011-11-22/TestDataset/input/DatasetP2_SimulatedReads_1.fastq was set to Sanger
[12:49 PM] Aligning full-length reads...
[12:49 PM] Loading index for the gene model...
[12:49 PM] Building mapping framework between transcriptome and genome...
.....................................................................................................
[12:49 PM] Loading alignment index...
[12:49 PM] Loading reference sequence into memory...
.....................................................................................................
[12:49 PM] Loading offsets...
.....................................................................................................
[12:49 PM] Loading positions...
...................................
[12:49 PM] Aligning all reads to transcriptome...
.....................................................................................................
[12:49 PM] Memory used = 51311656
[12:49 PM] Loading alignment index...
[12:49 PM] Loading reference sequence into memory...
.........................
[12:49 PM] Loading offsets...
.....................................................................................................
[12:50 PM] Loading positions...
.....................................................................................................
[12:58 PM] Aligning all reads to reference...
.....................................................................................................
[12:58 PM] Merging results...
.....................................................................................................
[12:58 PM] Memory used = 1212102512
[12:58 PM] 111519 out of 114418 was aligned with full length and thus filtered out (after quality based trimming and removing short trimmed reads)
[12:58 PM] Cutting full-length reads (by halve)...
........
[12:58 PM] Aligning read pairs...
[12:58 PM] Loading index for the gene model...
[12:58 PM] Building mapping framework between transcriptome and genome...
.....................................................................................................
[12:58 PM] Loading alignment index...
[12:58 PM] Loading reference sequence into memory...
.....................................................................................................
[12:58 PM] Loading offsets...
.....................................................................................................
[12:58 PM] Loading positions...
...................................
[12:58 PM] Aligning all reads to transcriptome...
........
[12:58 PM] Memory used = 1212060000
[12:58 PM] Loading alignment index...
[12:58 PM] Loading offsets...
.....................................................................................................
[12:58 PM] Loading positions...
.....................................................................................................
[12:58 PM] Aligning all reads to reference...
........
[12:58 PM] Merging results...
........
[12:58 PM] Memory used = 1212053984
[12:58 PM] 2885 out of 2899 was included in the final fusion alignment (after aligning each end and removing reads with neither end aligned)
[12:58 PM] Extracting prefix and suffix reads...
........
[12:58 PM] Aligning read pairs...
[12:58 PM] Loading index for the gene model...
[12:58 PM] Building mapping framework between transcriptome and genome...
.....................................................................................................
[12:58 PM] Loading alignment index...
[12:58 PM] Loading reference sequence into memory...
.....................................................................................................
[12:58 PM] Loading offsets...
.....................................................................................................
[12:58 PM] Loading positions...
...................................
[12:58 PM] Aligning all reads to transcriptome...
......
[12:58 PM] Memory used = 1212134336
[12:58 PM] Loading alignment index...
[12:58 PM] Loading offsets...
.....................................................................................................
[12:58 PM] Loading positions...
.....................................................................................................
[12:59 PM] Aligning all reads to reference...
......
[12:59 PM] Merging results...
......
[12:59 PM] Memory used = 1212122032
........
[12:59 PM] 1754 potential seed reads and 1131 potential rescued reads were included in the next step fusion alignment (after aligning prefix and suffix reads)
[12:59 PM] Cutting full-length reads...
.....
[12:59 PM] Aligning read pairs...
[12:59 PM] Loading index for the gene model...
[12:59 PM] Building mapping framework between transcriptome and genome...
.....................................................................................................
[12:59 PM] Loading alignment index...
[12:59 PM] Loading reference sequence into memory...
.....................................................................................................
[12:59 PM] Loading offsets...
.....................................................................................................
[12:59 PM] Loading positions...
...................................
[12:59 PM] Aligning all reads to transcriptome...
.....................................................................................................
[12:59 PM] Memory used = 1212204464
[12:59 PM] Loading alignment index...
[12:59 PM] Loading offsets...
.....................................................................................................
[12:59 PM] Loading positions...
.....................................................................................................
[12:59 PM] Aligning all reads to reference...
.....................................................................................................
[12:59 PM] Merging results...
.....................................................................................................
[12:59 PM] Memory used = 1213978696
[12:59 PM] Assemblying fusion junctions and performing additional alignments...
[12:59 PM] Writing novel fusion junctions to .fasta file...
[12:59 PM] Scanning sequences...
[12:59 PM] Encoding sequence...
.......................
[12:59 PM] Saving index to file /tmp/72e1202df5fb2e6e.gindex2...
.....................................................
[12:59 PM] Creating offset array...
[12:59 PM] Calculating counts for each K-mer...
.....................................................
[12:59 PM] Calculating cumulative positions...
[12:59 PM] Calculating virtual positions...
.....................................................
.....................................................................................................
[12:59 PM] Stage 2 alignment: loading fusion junction library...
[12:59 PM] Stage 2 alignment: aligning unmapped reads to fusion junctions...
[12:59 PM] Loading alignment index...
[12:59 PM] Loading offsets...
.....................................................................................................
[12:59 PM] Loading positions...
[12:59 PM] Loading sequences...
.....................................................
[12:59 PM] Aligning all reads to reference...
....
[12:59 PM] Memory used = 1215345752
[12:59 PM] Combining results from two stages...
.......................................................
[12:59 PM] Preparing the genome search context...
.........................
..............................
[12:59 PM] Generating fusion report...
[12:59 PM] Preparing the genome search context...
.........................
..............................
[12:59 PM] Merging columns...
[12:59 PM] Merging column: FusionID...
[12:59 PM] Merging column: DatasetP2_SimulatedReads.fastq.UniqueCuttingPositionCount...
[12:59 PM] Merging column: DatasetP2_SimulatedReads.fastq.SeedCount...
[12:59 PM] Merging column: DatasetP2_SimulatedReads.fastq.RescuedCount...
[12:59 PM] Merging column: Strand...
.............................................
[12:59 PM] Merging column: Chromosome1...
.............................................
[12:59 PM] Merging column: Position1...
[12:59 PM] Merging column: Chromosome2...
.............................................
[12:59 PM] Merging column: Position2...
[12:59 PM] Merging column: KnownGene1...
[12:59 PM] Merging column: KnownTranscript1...
[12:59 PM] Merging column: KnownExonNumber1...
[12:59 PM] Merging column: KnownTranscriptStrand1...
.............................................
[12:59 PM] Merging column: KnownGene2...
[12:59 PM] Merging column: KnownTranscript2...
[12:59 PM] Merging column: KnownExonNumber2...
[12:59 PM] Merging column: KnownTranscriptStrand2...
.............................................
[12:59 PM] Merging column: FusionJunctionSequence...
[12:59 PM] Merging column: SplicePattern...
.............................................
[12:59 PM] Merging column: FusionGene...
[12:59 PM] Merging column: FrameShift...
.............................................
.............................................
}}}
{{{
<Files>
C:\Program_portable\FusionMap\V_2011-11-22\TestDataset\input\DatasetP2_SimulatedReads_1.fastq
C:\Program_portable\FusionMap\V_2011-11-22\TestDataset\input\DatasetP2_SimulatedReads_2.fastq
<Options>
PairedEnd=True
RnaMode=True
Use32BitMode=False
ThreadNumber=8 //Possible values: 1-100. Default value=1
FileFormat=FASTQ // Possible values: FASTQ, QSEQ, FASTA. Default value=FASTQ
MinimalFusionAlignmentLength=25 //Possible values: 15-50. Default value=25 (alpha)
FusionReportCutoff=1 // Possible values: 1-1000. Default value=1 (beta)
NonCanonicalSpliceJunctionPenalty=4 //Possible values: 01-. Default value = 2 (G)
MinimalHit=2 // Minimal distinct read; Possible values: 1-10000, Default value =2
MinimalRescuedReadNumber=1 // Minimal rescued read number. Default value = 1
OutputFusionReads=True // Possible values: True, False. Default value = True
FilterBy=DefaultList //advanced filtering using default black list from FusionMap, set to None to avoid automatic downloading
<Output>
TempPath=C:\tmp
OutputPath=C:\Program_portable\FusionMap\V_2011-11-22\TestDataset\output
OutputName=TestDataset_InputPEReads
}}}
{{{
[12:59 PM] Windows OS detected...
semap -- version 5.2.0.17
[12:59 PM] Loading text information...
..
[12:59 PM] Thread number=8
[12:59 PM] Loading gene model...
.....................................................................................................
[12:59 PM] Downloading from http://www.omicsoft.com/downloads/fusion/filtering/GeneList_v1.txt...
.......................................................
[12:59 PM] Downloading from http://www.omicsoft.com/downloads/fusion/filtering/GeneFamilyList_v1.txt...
.....................................................................................................
[12:59 PM] Loading gene blacklist...
.....................................................................................................
[12:59 PM] Loading gene family list...
.....................................................................................................
[12:59 PM] Generating alignments for file: DatasetP2_SimulatedReads_1 and its pair DatasetP2_SimulatedReads_2...
[12:59 PM] Quality encoding for file: C:\Program_portable\FusionMap\V_2011-11-22\TestDataset\input\DatasetP2_SimulatedReads_1.fastq was set to Sanger
[12:59 PM] Aligning full-length reads...
[12:59 PM] Loading index for the gene model...
[12:59 PM] Building mapping framework between transcriptome and genome...
.....................................................................................................
[12:59 PM] Loading alignment index...
[12:59 PM] Loading reference sequence into memory...
.....................................................................................................
[12:59 PM] Loading offsets...
.....................................................................................................
[12:59 PM] Loading positions...
...................................
[12:59 PM] Aligning all reads to transcriptome...
.....................................................................................................
[12:59 PM] Memory used = 42102232
[12:59 PM] Loading alignment index...
[12:59 PM] Loading reference sequence into memory...
.........................
[12:59 PM] Loading offsets...
.....................................................................................................
[12:59 PM] Loading positions...
.....................................................................................................
[12:59 PM] Aligning all reads to reference...
.....................................................................................................
[1:00 PM] Merging results...
.....................................................................................................
[1:00 PM] Memory used = 1203039624
[1:00 PM] 111519 out of 114418 was aligned with full length and thus filtered out (after quality based trimming and removing short trimmed reads)
[1:00 PM] Cutting full-length reads (by halve)...
........
[1:00 PM] Aligning read pairs...
[1:00 PM] Loading index for the gene model...
[1:00 PM] Building mapping framework between transcriptome and genome...
.....................................................................................................
[1:00 PM] Loading alignment index...
[1:00 PM] Loading reference sequence into memory...
.....................................................................................................
[1:00 PM] Loading offsets...
.....................................................................................................
[1:00 PM] Loading positions...
...................................
[1:00 PM] Aligning all reads to transcriptome...
........
[1:00 PM] Memory used = 1202980704
[1:00 PM] Loading alignment index...
[1:00 PM] Loading offsets...
.....................................................................................................
[1:00 PM] Loading positions...
.....................................................................................................
[1:00 PM] Aligning all reads to reference...
........
[1:00 PM] Merging results...
........
[1:00 PM] Memory used = 1203040688
[1:00 PM] 2885 out of 2899 was included in the final fusion alignment (after aligning each end and removing reads with neither end aligned)
[1:00 PM] Extracting prefix and suffix reads...
........
[1:00 PM] Aligning read pairs...
[1:00 PM] Loading index for the gene model...
[1:00 PM] Building mapping framework between transcriptome and genome...
.....................................................................................................
[1:00 PM] Loading alignment index...
[1:00 PM] Loading reference sequence into memory...
.....................................................................................................
[1:00 PM] Loading offsets...
.....................................................................................................
[1:00 PM] Loading positions...
...................................
[1:00 PM] Aligning all reads to transcriptome...
......
[1:00 PM] Memory used = 1202982128
[1:00 PM] Loading alignment index...
[1:00 PM] Loading offsets...
.....................................................................................................
[1:00 PM] Loading positions...
.....................................................................................................
[1:00 PM] Aligning all reads to reference...
......
[1:00 PM] Merging results...
......
[1:00 PM] Memory used = 1202977040
........
[1:00 PM] 1754 potential seed reads and 1131 potential rescued reads were included in the next step fusion alignment (after aligning prefix and suffix reads)
[1:00 PM] Cutting full-length reads...
.....
[1:00 PM] Aligning read pairs...
[1:00 PM] Loading index for the gene model...
[1:00 PM] Building mapping framework between transcriptome and genome...
.....................................................................................................
[1:00 PM] Loading alignment index...
[1:00 PM] Loading reference sequence into memory...
.....................................................................................................
[1:00 PM] Loading offsets...
.....................................................................................................
[1:00 PM] Loading positions...
...................................
[1:00 PM] Aligning all reads to transcriptome...
.....................................................................................................
[1:00 PM] Memory used = 1202999552
[1:00 PM] Loading alignment index...
[1:00 PM] Loading offsets...
.....................................................................................................
[1:00 PM] Loading positions...
.....................................................................................................
[1:00 PM] Aligning all reads to reference...
.....................................................................................................
[1:00 PM] Merging results...
.....................................................................................................
[1:00 PM] Memory used = 1204425032
[1:00 PM] Assemblying fusion junctions and performing additional alignments...
[1:00 PM] Writing novel fusion junctions to .fasta file...
[1:00 PM] Scanning sequences...
[1:00 PM] Encoding sequence...
.......................
[1:00 PM] Saving index to file C:\tmp\70ec502a38dc2d16.gindex2...
.....................................................
[1:00 PM] Creating offset array...
[1:00 PM] Calculating counts for each K-mer...
.....................................................
[1:00 PM] Calculating cumulative positions...
[1:00 PM] Calculating virtual positions...
.....................................................
.....................................................................................................
[1:00 PM] Stage 2 alignment: loading fusion junction library...
[1:00 PM] Stage 2 alignment: aligning unmapped reads to fusion junctions...
[1:00 PM] Loading alignment index...
[1:00 PM] Loading offsets...
.....................................................................................................
[1:00 PM] Loading positions...
[1:00 PM] Loading sequences...
.....................................................
[1:00 PM] Aligning all reads to reference...
....
[1:00 PM] Memory used = 1205787352
[1:00 PM] Combining results from two stages...
.......................................................
[1:00 PM] Preparing the genome search context...
.........................
..............................
[1:00 PM] Generating fusion report...
[1:00 PM] Preparing the genome search context...
.........................
..............................
[1:00 PM] Merging columns...
[1:00 PM] Merging column: FusionID...
[1:00 PM] Merging column: DatasetP2_SimulatedReads.fastq.UniqueCuttingPositionCount...
[1:00 PM] Merging column: DatasetP2_SimulatedReads.fastq.SeedCount...
[1:00 PM] Merging column: DatasetP2_SimulatedReads.fastq.RescuedCount...
[1:00 PM] Merging column: Strand...
.............................................
[1:00 PM] Merging column: Chromosome1...
.............................................
[1:00 PM] Merging column: Position1...
[1:00 PM] Merging column: Chromosome2...
.............................................
[1:00 PM] Merging column: Position2...
[1:00 PM] Merging column: KnownGene1...
[1:00 PM] Merging column: KnownTranscript1...
[1:00 PM] Merging column: KnownExonNumber1...
[1:00 PM] Merging column: KnownTranscriptStrand1...
.............................................
[1:00 PM] Merging column: KnownGene2...
[1:00 PM] Merging column: KnownTranscript2...
[1:00 PM] Merging column: KnownExonNumber2...
[1:00 PM] Merging column: KnownTranscriptStrand2...
.............................................
[1:00 PM] Merging column: FusionJunctionSequence...
[1:00 PM] Merging column: SplicePattern...
.............................................
[1:00 PM] Merging column: FusionGene...
[1:00 PM] Merging column: FrameShift...
.............................................
.............................................
}}}
{{{
<Files>
/mnt/Win64bin/FusionMap/V_2011-11-22/TestDataset/input/UnmappedDatasetP2SimulatedReads_from_tophat.fastq
<Options>
PairedEnd=False
RnaMode=True
Use32BitMode=False
ThreadNumber=8 //Possible values: 1-100. Default value=1
FileFormat=FASTQ // Possible values: FASTQ, QSEQ, FASTA. Default value=FASTQ
MinimalFusionAlignmentLength=25 //Possible values: 15-50. Default value=25 (alpha)
FusionReportCutoff=1 // Possible values: 1-1000. Default value=1 (beta)
NonCanonicalSpliceJunctionPenalty=4 //Possible values: 01-. Default value = 2 (G)
MinimalHit=2 // Minimal distinct read; Possible values: 1-10000, Default value =2
MinimalRescuedReadNumber=1 // Minimal rescued read number. Default value = 1
OutputFusionReads=True // Possible values: True, False. Default value = True
FilterBy=DefaultList //advanced filtering using default black list from FusionMap, set to None to avoid automatic downloading
<Output>
TempPath=/tmp/FusionMapTemp
OutputPath=/mnt/Win64bin/FusionMap/V_2011-11-22/TestDataset/output
OutputName=TestDataset_InputSEReads
}}}
{{{
[12:59 PM] Linux OS detected...
semap -- version 5.2.0.17
[12:59 PM] Loading text information...
.
[12:59 PM] Thread number=8
[12:59 PM] Loading gene model...
.....................................................................................................
[12:59 PM] Downloading from http://www.omicsoft.com/downloads/fusion/filtering/GeneList_v1.txt...
...........................................
[12:59 PM] Downloading from http://www.omicsoft.com/downloads/fusion/filtering/GeneFamilyList_v1.txt...
.....................................................................................................
[12:59 PM] Loading gene blacklist...
.....................................................................................................
[12:59 PM] Loading gene family list...
.....................................................................................................
[12:59 PM] Generating alignments for file: UnmappedDatasetP2SimulatedReads_from_tophat...
[12:59 PM] Quality encoding for file: /mnt/Win64bin/FusionMap/V_2011-11-22/TestDataset/input/UnmappedDatasetP2SimulatedReads_from_tophat.fastq was set to Sanger
[12:59 PM] Aligning full-length reads...
[12:59 PM] Loading index for the gene model...
[12:59 PM] Building mapping framework between transcriptome and genome...
.....................................................................................................
[12:59 PM] Loading alignment index...
[12:59 PM] Loading reference sequence into memory...
.....................................................................................................
[12:59 PM] Loading offsets...
.....................................................................................................
[12:59 PM] Loading positions...
...................................
[12:59 PM] Aligning all reads to transcriptome...
...................
[12:59 PM] Memory used = 51216328
[12:59 PM] Loading alignment index...
[12:59 PM] Loading reference sequence into memory...
.........................
[12:59 PM] Loading offsets...
.....................................................................................................
[12:59 PM] Loading positions...
.....................................................................................................
[12:59 PM] Aligning all reads to reference...
...................
[1:00 PM] Merging results...
...................
[1:00 PM] Memory used = 2285838520
[1:00 PM] 3802 out of 6701 was aligned with full length and thus filtered out (after quality based trimming and removing short trimmed reads)
[1:00 PM] Cutting full-length reads (by halve)...
........
[1:00 PM] Aligning read pairs...
[1:00 PM] Loading index for the gene model...
[1:00 PM] Building mapping framework between transcriptome and genome...
.....................................................................................................
[1:00 PM] Loading alignment index...
[1:00 PM] Loading reference sequence into memory...
.....................................................................................................
[1:00 PM] Loading offsets...
.....................................................................................................
[1:00 PM] Loading positions...
...................................
[1:00 PM] Aligning all reads to transcriptome...
........
[1:00 PM] Memory used = 2285840008
[1:00 PM] Loading alignment index...
[1:00 PM] Loading offsets...
.....................................................................................................
[1:00 PM] Loading positions...
.....................................................................................................
[1:00 PM] Aligning all reads to reference...
........
[1:00 PM] Merging results...
........
[1:00 PM] Memory used = 2285832760
[1:00 PM] 2885 out of 2899 was included in the final fusion alignment (after aligning each end and removing reads with neither end aligned)
[1:00 PM] Extracting prefix and suffix reads...
........
[1:00 PM] Aligning read pairs...
[1:00 PM] Loading index for the gene model...
[1:00 PM] Building mapping framework between transcriptome and genome...
.....................................................................................................
[1:00 PM] Loading alignment index...
[1:00 PM] Loading reference sequence into memory...
.....................................................................................................
[1:00 PM] Loading offsets...
.....................................................................................................
[1:00 PM] Loading positions...
...................................
[1:00 PM] Aligning all reads to transcriptome...
......
[1:00 PM] Memory used = 2285914728
[1:00 PM] Loading alignment index...
[1:00 PM] Loading offsets...
.....................................................................................................
[1:00 PM] Loading positions...
.....................................................................................................
[1:00 PM] Aligning all reads to reference...
......
[1:00 PM] Merging results...
......
[1:00 PM] Memory used = 2285903064
........
[1:00 PM] 1754 potential seed reads and 1131 potential rescued reads were included in the next step fusion alignment (after aligning prefix and suffix reads)
[1:00 PM] Cutting full-length reads...
.....
[1:00 PM] Aligning read pairs...
[1:00 PM] Loading index for the gene model...
[1:00 PM] Building mapping framework between transcriptome and genome...
.....................................................................................................
[1:00 PM] Loading alignment index...
[1:00 PM] Loading reference sequence into memory...
.....................................................................................................
[1:00 PM] Loading offsets...
.....................................................................................................
[1:00 PM] Loading positions...
...................................
[1:00 PM] Aligning all reads to transcriptome...
.....................................................................................................
[1:00 PM] Memory used = 2286070832
[1:00 PM] Loading alignment index...
[1:00 PM] Loading offsets...
.....................................................................................................
[1:00 PM] Loading positions...
.....................................................................................................
[1:00 PM] Aligning all reads to reference...
.....................................................................................................
[1:00 PM] Merging results...
.....................................................................................................
[1:00 PM] Memory used = 2287755904
[1:00 PM] Assemblying fusion junctions and performing additional alignments...
[1:00 PM] Writing novel fusion junctions to .fasta file...
[1:00 PM] Scanning sequences...
[1:00 PM] Encoding sequence...
.......................
[1:00 PM] Saving index to file /tmp/8bb934d3bd7bcd2c.gindex2...
.....................................................
[1:00 PM] Creating offset array...
[1:00 PM] Calculating counts for each K-mer...
.....................................................
[1:00 PM] Calculating cumulative positions...
[1:00 PM] Calculating virtual positions...
.....................................................
.....................................................................................................
[1:00 PM] Stage 2 alignment: loading fusion junction library...
[1:00 PM] Stage 2 alignment: aligning unmapped reads to fusion junctions...
[1:00 PM] Loading alignment index...
[1:00 PM] Loading offsets...
.....................................................................................................
[1:00 PM] Loading positions...
[1:00 PM] Loading sequences...
.....................................................
[1:00 PM] Aligning all reads to reference...
....
[1:00 PM] Memory used = 2289126448
[1:00 PM] Combining results from two stages...
.......................................................
[1:00 PM] Preparing the genome search context...
.........................
..............................
[1:00 PM] Generating fusion report...
[1:00 PM] Preparing the genome search context...
.........................
..............................
[1:00 PM] Merging columns...
[1:00 PM] Merging column: FusionID...
[1:00 PM] Merging column: UnmappedDatasetP2SimulatedReads_from_tophat.fastq.UniqueCuttingPositionCount...
[1:00 PM] Merging column: UnmappedDatasetP2SimulatedReads_from_tophat.fastq.SeedCount...
[1:00 PM] Merging column: UnmappedDatasetP2SimulatedReads_from_tophat.fastq.RescuedCount...
[1:00 PM] Merging column: Strand...
.............................................
[1:00 PM] Merging column: Chromosome1...
.............................................
[1:00 PM] Merging column: Position1...
[1:00 PM] Merging column: Chromosome2...
.............................................
[1:00 PM] Merging column: Position2...
[1:00 PM] Merging column: KnownGene1...
[1:00 PM] Merging column: KnownTranscript1...
[1:00 PM] Merging column: KnownExonNumber1...
[1:00 PM] Merging column: KnownTranscriptStrand1...
.............................................
[1:00 PM] Merging column: KnownGene2...
[1:00 PM] Merging column: KnownTranscript2...
[1:00 PM] Merging column: KnownExonNumber2...
[1:00 PM] Merging column: KnownTranscriptStrand2...
.............................................
[1:00 PM] Merging column: FusionJunctionSequence...
[1:00 PM] Merging column: SplicePattern...
.............................................
[1:00 PM] Merging column: FusionGene...
[1:00 PM] Merging column: FrameShift...
.............................................
.............................................
}}}
{{{
<Files>
C:\Program_portable\FusionMap\V_2011-11-22\TestDataset\input\UnmappedDatasetP2SimulatedReads_from_tophat.fastq
<Options>
PairedEnd=False
RnaMode=True
Use32BitMode=False
ThreadNumber=8 //Possible values: 1-100. Default value=1
FileFormat=FASTQ // Possible values: FASTQ, QSEQ, FASTA. Default value=FASTQ
MinimalFusionAlignmentLength=25 //Possible values: 15-50. Default value=25 (alpha)
FusionReportCutoff=1 // Possible values: 1-1000. Default value=1 (beta)
NonCanonicalSpliceJunctionPenalty=4 //Possible values: 01-. Default value = 2 (G)
MinimalHit=2 // Minimal distinct read; Possible values: 1-10000, Default value =2
MinimalRescuedReadNumber=1 // Minimal rescued read number. Default value = 1
OutputFusionReads=True // Possible values: True, False. Default value = True
FilterBy=DefaultList //advanced filtering using default black list from FusionMap, set to None to avoid automatic downloading
<Output>
TempPath=C:\tmp
OutputPath=C:\Program_portable\FusionMap\V_2011-11-22\TestDataset\output
OutputName=TestDataset_InputSEReads
}}}
{{{
[1:00 PM] Windows OS detected...
semap -- version 5.2.0.17
[1:00 PM] Loading text information...
..
[1:00 PM] Thread number=8
[1:00 PM] Loading gene model...
.....................................................................................................
[1:00 PM] Downloading from http://www.omicsoft.com/downloads/fusion/filtering/GeneList_v1.txt...
................................................
[1:00 PM] Downloading from http://www.omicsoft.com/downloads/fusion/filtering/GeneFamilyList_v1.txt...
.....................................................................................................
[1:00 PM] Loading gene blacklist...
.....................................................................................................
[1:00 PM] Loading gene family list...
.....................................................................................................
[1:00 PM] Generating alignments for file: UnmappedDatasetP2SimulatedReads_from_tophat...
[1:00 PM] Quality encoding for file: C:\Program_portable\FusionMap\V_2011-11-22\TestDataset\input\UnmappedDatasetP2SimulatedReads_from_tophat.fastq was set to Sanger
[1:00 PM] Aligning full-length reads...
[1:00 PM] Loading index for the gene model...
[1:00 PM] Building mapping framework between transcriptome and genome...
.....................................................................................................
[1:00 PM] Loading alignment index...
[1:00 PM] Loading reference sequence into memory...
.....................................................................................................
[1:00 PM] Loading offsets...
.....................................................................................................
[1:00 PM] Loading positions...
...................................
[1:00 PM] Aligning all reads to transcriptome...
...................
[1:00 PM] Memory used = 42094560
[1:00 PM] Loading alignment index...
[1:00 PM] Loading reference sequence into memory...
.........................
[1:00 PM] Loading offsets...
.....................................................................................................
[1:00 PM] Loading positions...
.....................................................................................................
[1:00 PM] Aligning all reads to reference...
...................
[1:00 PM] Merging results...
...................
[1:00 PM] Memory used = 1203039104
[1:00 PM] 3802 out of 6701 was aligned with full length and thus filtered out (after quality based trimming and removing short trimmed reads)
[1:00 PM] Cutting full-length reads (by halve)...
........
[1:00 PM] Aligning read pairs...
[1:00 PM] Loading index for the gene model...
[1:00 PM] Building mapping framework between transcriptome and genome...
.....................................................................................................
[1:00 PM] Loading alignment index...
[1:00 PM] Loading reference sequence into memory...
.....................................................................................................
[1:00 PM] Loading offsets...
.....................................................................................................
[1:00 PM] Loading positions...
...................................
[1:00 PM] Aligning all reads to transcriptome...
........
[1:00 PM] Memory used = 1202980160
[1:00 PM] Loading alignment index...
[1:00 PM] Loading offsets...
.....................................................................................................
[1:00 PM] Loading positions...
.....................................................................................................
[1:01 PM] Aligning all reads to reference...
........
[1:01 PM] Merging results...
........
[1:01 PM] Memory used = 1203040288
[1:01 PM] 2885 out of 2899 was included in the final fusion alignment (after aligning each end and removing reads with neither end aligned)
[1:01 PM] Extracting prefix and suffix reads...
........
[1:01 PM] Aligning read pairs...
[1:01 PM] Loading index for the gene model...
[1:01 PM] Building mapping framework between transcriptome and genome...
.....................................................................................................
[1:01 PM] Loading alignment index...
[1:01 PM] Loading reference sequence into memory...
.....................................................................................................
[1:01 PM] Loading offsets...
.....................................................................................................
[1:01 PM] Loading positions...
...................................
[1:01 PM] Aligning all reads to transcriptome...
......
[1:01 PM] Memory used = 1202981584
[1:01 PM] Loading alignment index...
[1:01 PM] Loading offsets...
.....................................................................................................
[1:01 PM] Loading positions...
.....................................................................................................
[1:01 PM] Aligning all reads to reference...
......
[1:01 PM] Merging results...
......
[1:01 PM] Memory used = 1202976544
........
[1:01 PM] 1754 potential seed reads and 1131 potential rescued reads were included in the next step fusion alignment (after aligning prefix and suffix reads)
[1:01 PM] Cutting full-length reads...
.....
[1:01 PM] Aligning read pairs...
[1:01 PM] Loading index for the gene model...
[1:01 PM] Building mapping framework between transcriptome and genome...
.....................................................................................................
[1:01 PM] Loading alignment index...
[1:01 PM] Loading reference sequence into memory...
.....................................................................................................
[1:01 PM] Loading offsets...
.....................................................................................................
[1:01 PM] Loading positions...
...................................
[1:01 PM] Aligning all reads to transcriptome...
.....................................................................................................
[1:01 PM] Memory used = 1202998904
[1:01 PM] Loading alignment index...
[1:01 PM] Loading offsets...
.....................................................................................................
[1:01 PM] Loading positions...
.....................................................................................................
[1:01 PM] Aligning all reads to reference...
.....................................................................................................
[1:01 PM] Merging results...
.....................................................................................................
[1:01 PM] Memory used = 1204425512
[1:01 PM] Assemblying fusion junctions and performing additional alignments...
[1:01 PM] Writing novel fusion junctions to .fasta file...
[1:01 PM] Scanning sequences...
[1:01 PM] Encoding sequence...
.......................
[1:01 PM] Saving index to file C:\tmp\34cf0bde6d75db10.gindex2...
.....................................................
[1:01 PM] Creating offset array...
[1:01 PM] Calculating counts for each K-mer...
.....................................................
[1:01 PM] Calculating cumulative positions...
[1:01 PM] Calculating virtual positions...
.....................................................
.....................................................................................................
[1:01 PM] Stage 2 alignment: loading fusion junction library...
[1:01 PM] Stage 2 alignment: aligning unmapped reads to fusion junctions...
[1:01 PM] Loading alignment index...
[1:01 PM] Loading offsets...
.....................................................................................................
[1:01 PM] Loading positions...
[1:01 PM] Loading sequences...
.....................................................
[1:01 PM] Aligning all reads to reference...
....
[1:01 PM] Memory used = 1205788080
[1:01 PM] Combining results from two stages...
.......................................................
[1:01 PM] Preparing the genome search context...
.........................
..............................
[1:01 PM] Generating fusion report...
[1:01 PM] Preparing the genome search context...
.........................
..............................
[1:01 PM] Merging columns...
[1:01 PM] Merging column: FusionID...
[1:01 PM] Merging column: UnmappedDatasetP2SimulatedReads_from_tophat.fastq.UniqueCuttingPositionCount...
[1:01 PM] Merging column: UnmappedDatasetP2SimulatedReads_from_tophat.fastq.SeedCount...
[1:01 PM] Merging column: UnmappedDatasetP2SimulatedReads_from_tophat.fastq.RescuedCount...
[1:01 PM] Merging column: Strand...
.............................................
[1:01 PM] Merging column: Chromosome1...
.............................................
[1:01 PM] Merging column: Position1...
[1:01 PM] Merging column: Chromosome2...
.............................................
[1:01 PM] Merging column: Position2...
[1:01 PM] Merging column: KnownGene1...
[1:01 PM] Merging column: KnownTranscript1...
[1:01 PM] Merging column: KnownExonNumber1...
[1:01 PM] Merging column: KnownTranscriptStrand1...
.............................................
[1:01 PM] Merging column: KnownGene2...
[1:01 PM] Merging column: KnownTranscript2...
[1:01 PM] Merging column: KnownExonNumber2...
[1:01 PM] Merging column: KnownTranscriptStrand2...
.............................................
[1:01 PM] Merging column: FusionJunctionSequence...
[1:01 PM] Merging column: SplicePattern...
.............................................
[1:01 PM] Merging column: FusionGene...
[1:01 PM] Merging column: FrameShift...
.............................................
.............................................
}}}
/***
!Metadata:
|''Name:''|ArchivedTimeline|
|''Description:''|Timeline archived monthly.|
|''Version:''|0.7.0|
|''Date:''|Aug 25, 2007|
|''Source:''|http://sourceforge.net/project/showfiles.php?group_id=150646|
|''Author:''|BramChen (bram.chen (at) gmail (dot) com)|
|''License:''|[[Creative Commons Attribution-ShareAlike 3.0 License|http://creativecommons.org/licenses/by-sa/3.0/]]|
|''~CoreVersion:''|2.0.11|
|''Browser:''|Firefox 1.5+; InternetExplorer 6.0|
!Syntax:
{{{<<timeline [modified|created [maxentries [dateFormate]]]>>}}}
!Examples:
{{{<<timeline>>}}}
{{{<<timeline created 10>>}}}
{{{<<timeline modified 10 "MMM DD, YYYY">>}}}
!Revision History:
|''Version''|''Date''|''Note''|
|0.7.0|Jul 25, 2006|Accept a date format parameter|
|0.6.3|Jan 14, 2007|Cleaned codes, Removed config.macros.timeline.slider and config.macros.timeline.onClickSlider|
|0.6.2|Dec 10, 2006|Add monthFormat to display month format for Chinese|
|0.6.1|Aug 12, 2006|A great effect on config.macros.timeline.slider for Firefox, thanks Bob McElrath|
|0.6.0|Jul 25, 2006|Runs compatibly with TW 2.1.0 (rev #403+)|
|0.5.2|Jun 21, 2006|Fixed bugs for dateFormat of TW 2.1|
|~|~|Change default dateFormat to "0DD MMM, YYYY"|
|0.5.1|Jun 04, 2006|Added config.macros.archivedTimeline.orderBy for localization|
|0.5.0|Apr 19, 2006|Fixed bug for twice records of the same date ()|
|~|~|Added Date.prototype.convertToLocalYYYYMMDDHHMM<<br>>in order to backward compatible with 2.0.6-|
|0.4.0|Apr 03, 2006|Added new parameter, {{{<<timeline [sortfield] [maxentries]>>}}}|
|~|~|Added config.options.txtTimelineMaxentries|
|0.3.1|Feb 04, 2006|JSLint checked|
|0.3.0|Feb 04, 2006|Fixed several missing variable declarations|
|0.2.0|Dec 26, 2005|changed for the new feature of Macro timeline of TW 2.0.0 beta 6|
|0.1.0|Nov 3, 2005|Initial release|
!Code section:
***/
//{{{
version.extensions.archivedTimeline = {major: 0, minor: 7, revision: 0,
date: new Date("Aug 26, 2007"),
name: "ArchivedTimeline",
type: "Macro",
author: "BramChen",
source: "http://sourceforge.net/project/showfiles.php?group_id=150646"
};
config.options.txtTimelineMaxentries=0;
config.macros.archivedTimeline = {
tooltips: "Archives sorted by ",
orderBy:{modified: "modified", created: "created"},
monthFormat: "0DD MMM YYYY",
dateFormat: "0DD MMM YYYY"
};
config.macros.timeline = config.macros.archivedTimeline;
config.macros.timeline.handler = function(place,macroName,params) {
var field = params[0] ? params[0] : "modified";
place.appendChild(document.createTextNode(this.tooltips + this.orderBy[field]));
var tiddlers = store.reverseLookup("tags","excludeLists",false,field);
var lastMonth = ""; var lastDay = ""; var theText = "----\n"; var i = 0;
var last = (params[1])?params[1]:config.options.txtTimelineMaxentries;
last = (isNaN(last)||last<1) ? 0:tiddlers.length-Math.min(tiddlers.length,parseInt(last));
var dateFormat = params[2] ? params[2] : this.dateFormat;
var cookie; var archives;
for (var t=tiddlers.length-1; t>=last; t--) {
var tiddler = tiddlers[t];
var theMonth = tiddler[field].convertToLocalYYYYMMDDHHMM().substr(0,6);
var theDay = tiddler[field].convertToLocalYYYYMMDDHHMM().substr(0,8);
if(theMonth != lastMonth) {
if (lastMonth === "") {
lastMonth = theMonth;
}
else {
place.appendChild(document.createElement('hr'));
cookie = 'chktimeline'+(i++);
archives = this.formatString(this.monthFormat, lastMonth);
var panel = config.macros.slider.createSlider(place,cookie,archives,this.tooltips + archives);
wikify(theText,panel);
lastMonth = theMonth; theText = '----\n';
}
}
if(theDay != lastDay){
theText += tiddler[field].formatString(dateFormat) + '\n';
lastDay = theDay;
}
theText += '* [[' + tiddler.title + ']]\n';
}
place.appendChild(document.createElement('hr'));
cookie = 'chktimeline'+(i++);
archives = this.formatString(this.monthFormat, lastMonth);
var panel = config.macros.slider.createSlider(place,cookie,archives,this.tooltips + archives);
wikify(theText,panel);
place.appendChild(document.createElement('hr'));
};
config.macros.timeline.formatString = function(template, yyyymm)
{
var dateString = new Date(yyyymm.substr(0,4)+'/'+yyyymm.substr(4,2)+'/01');
template = template.replace(/DDD|0DD|DD/g,'');
return dateString.formatString(template);
};
if (!Date.prototype.convertToLocalYYYYMMDDHHMM){
Date.prototype.convertToLocalYYYYMMDDHHMM = function(){
return(String.zeroPad(this.getFullYear(),4) + String.zeroPad(this.getMonth()+1,2) + String.zeroPad(this.getDate(),2) + String.zeroPad(this.getHours(),2) + String.zeroPad(this.getMinutes(),2));
}
}
//}}}
{{{
@article{ge2011fusionmap,
title={FusionMap: detecting fusion genes from next-generation sequencing data at base-pair resolution},
author={Ge, H. and Liu, K. and Juan, T. and Fang, F. and Newman, M. and Hoeck, W.},
journal={Bioinformatics},
year={2011},
volume={27},
number={14},
pages={1922-1928},
publisher={Oxford Univ Press}
}
}}}
!The preprocessing before applying ~FusionMap is optional
In the paper, we described a pre-processing step filtering with a standard read mapper, using Bowtie or Tophat. After that, these unmapped reads are used to run ~FusionMap. However, the preprocessing before applying ~FusionMap is optional, as we state in the paper: “~FusionMap can be applied directly to the whole dataset but would take less time if it focuses on unmapped reads after regular alignment.” ~FusionMap prefers the unmapped reads after a standard read mapper like Bowtie/Tophat because the number of input reads will be significantly less which reduces the running time in the filtering step.
Note: if we the pre-alignment can detect novel exon junctions, e.g. ~TopHat, some read-through fusion genes may be missing in ~FusionMap’s result from unmapped reads, because they are close neighbors on the genome (<50Kb) and were identified as novel splice junctions.
/***
|Name|CheckboxPlugin|
|Source|http://www.TiddlyTools.com/#CheckboxPlugin|
|Documentation|http://www.TiddlyTools.com/#CheckboxPluginInfo|
|Version|2.4.0|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|Add checkboxes to your tiddler content|
This plugin extends the TiddlyWiki syntax to allow definition of checkboxes that can be embedded directly in tiddler content. Checkbox states are preserved by:
* by setting/removing tags on specified tiddlers,
* or, by setting custom field values on specified tiddlers,
* or, by saving to a locally-stored cookie ID,
* or, automatically modifying the tiddler content (deprecated)
When an ID is assigned to the checkbox, it enables direct programmatic access to the checkbox DOM element, as well as creating an entry in TiddlyWiki's config.options[ID] internal data. In addition to tracking the checkbox state, you can also specify custom javascript for programmatic initialization and onClick event handling for any checkbox, so you can provide specialized side-effects in response to state changes.
!!!!!Documentation
>see [[CheckboxPluginInfo]]
!!!!!Revisions
<<<
2008.01.08 [*.*.*] plugin size reduction: documentation moved to [[CheckboxPluginInfo]]
2008.01.05 [2.4.0] set global "window.place" to current checkbox element when processing checkbox clicks. This allows init/beforeClick/afterClick handlers to reference RELATIVE elements, including using "story.findContainingTiddler(place)". Also, wrap handlers in "function()" so "return" can be used within handler code.
|please see [[CheckboxPluginInfo]] for additional revision details|
2005.12.07 [0.9.0] initial BETA release
<<<
!!!!!Code
***/
//{{{
version.extensions.CheckboxPlugin = {major: 2, minor: 4, revision:0 , date: new Date(2008,1,5)};
//}}}
//{{{
config.checkbox = { refresh: { tagged:true, tagging:true, container:true } };
config.formatters.push( {
name: "checkbox",
match: "\\[[xX_ ][\\]\\=\\(\\{]",
lookahead: "\\[([xX_ ])(=[^\\s\\(\\]{]+)?(\\([^\\)]*\\))?({[^}]*})?({[^}]*})?({[^}]*})?\\]",
handler: function(w) {
var lookaheadRegExp = new RegExp(this.lookahead,"mg");
lookaheadRegExp.lastIndex = w.matchStart;
var lookaheadMatch = lookaheadRegExp.exec(w.source)
if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
// get params
var checked=(lookaheadMatch[1].toUpperCase()=="X");
var id=lookaheadMatch[2];
var target=lookaheadMatch[3];
if (target) target=target.substr(1,target.length-2).trim(); // trim off parentheses
var fn_init=lookaheadMatch[4];
var fn_clickBefore=lookaheadMatch[5];
var fn_clickAfter=lookaheadMatch[6];
var tid=story.findContainingTiddler(w.output); if (tid) tid=tid.getAttribute("tiddler");
var srctid=w.tiddler?w.tiddler.title:null;
config.macros.checkbox.create(w.output,tid,srctid,w.matchStart+1,checked,id,target,config.checkbox.refresh,fn_init,fn_clickBefore,fn_clickAfter);
w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;
}
}
} );
config.macros.checkbox = {
handler: function(place,macroName,params,wikifier,paramString,tiddler) {
if(!(tiddler instanceof Tiddler)) { // if no tiddler passed in try to find one
var here=story.findContainingTiddler(place);
if (here) tiddler=store.getTiddler(here.getAttribute("tiddler"))
}
var srcpos=0; // "inline X" not applicable to macro syntax
var target=params.shift(); if (!target) target="";
var defaultState=params[0]=="checked"; if (defaultState) params.shift();
var id=params.shift(); if (id && !id.length) id=null;
var fn_init=params.shift(); if (fn_init && !fn_init.length) fn_init=null;
var fn_clickBefore=params.shift();
if (fn_clickBefore && !fn_clickBefore.length) fn_clickBefore=null;
var fn_clickAfter=params.shift();
if (fn_clickAfter && !fn_clickAfter.length) fn_clickAfter=null;
var refresh={ tagged:true, tagging:true, container:false };
this.create(place,tiddler.title,tiddler.title,0,defaultState,id,target,refresh,fn_init,fn_clickBefore,fn_clickAfter);
},
create: function(place,tid,srctid,srcpos,defaultState,id,target,refresh,fn_init,fn_clickBefore,fn_clickAfter) {
// create checkbox element
var c = document.createElement("input");
c.setAttribute("type","checkbox");
c.onclick=this.onClickCheckbox;
c.srctid=srctid; // remember source tiddler
c.srcpos=srcpos; // remember location of "X"
c.container=tid; // containing tiddler (may be null if not in a tiddler)
c.tiddler=tid; // default target tiddler
c.refresh = {};
c.refresh.container = refresh.container;
c.refresh.tagged = refresh.tagged;
c.refresh.tagging = refresh.tagging;
place.appendChild(c);
// set default state
c.checked=defaultState;
// track state in config.options.ID
if (id) {
c.id=id.substr(1); // trim off leading "="
if (config.options[c.id]!=undefined)
c.checked=config.options[c.id];
else
config.options[c.id]=c.checked;
}
// track state in (tiddlername|tagname) or (fieldname@tiddlername)
if (target) {
var pos=target.indexOf("@");
if (pos!=-1) {
c.field=pos?target.substr(0,pos):"checked"; // get fieldname (or use default "checked")
c.tiddler=target.substr(pos+1); // get specified tiddler name (if any)
if (!c.tiddler || !c.tiddler.length) c.tiddler=tid; // if tiddler not specified, default == container
if (store.getValue(c.tiddler,c.field)!=undefined)
c.checked=(store.getValue(c.tiddler,c.field)=="true"); // set checkbox from saved state
} else {
var pos=target.indexOf("|"); if (pos==-1) var pos=target.indexOf(":");
c.tag=target;
if (pos==0) c.tag=target.substr(1); // trim leading "|" or ":"
if (pos>0) { c.tiddler=target.substr(0,pos); c.tag=target.substr(pos+1); }
if (!c.tag.length) c.tag="checked";
var t=store.getTiddler(c.tiddler);
if (t && t.tags)
c.checked=t.isTagged(c.tag); // set checkbox from saved state
}
}
// trim off surrounding { and } delimiters from init/click handlers
if (fn_init) c.fn_init="(function(){"+fn_init.trim().substr(1,fn_init.length-2)+"})()";
if (fn_clickBefore) c.fn_clickBefore="(function(){"+fn_clickBefore.trim().substr(1,fn_clickBefore.length-2)+"})()";
if (fn_clickAfter) c.fn_clickAfter="(function(){"+fn_clickAfter.trim().substr(1,fn_clickAfter.length-2)+"})()";
c.init=true; c.onclick(); c.init=false; // compute initial state and save in tiddler/config/cookie
},
onClickCheckbox: function(event) {
window.place=this;
if (this.init && this.fn_init) // custom function hook to set initial state (run only once)
{ try { eval(this.fn_init); } catch(e) { displayMessage("Checkbox init error: "+e.toString()); } }
if (!this.init && this.fn_clickBefore) // custom function hook to override changes in checkbox state
{ try { eval(this.fn_clickBefore) } catch(e) { displayMessage("Checkbox onClickBefore error: "+e.toString()); } }
if (this.id)
// save state in config AND cookie (only when ID starts with 'chk')
{ config.options[this.id]=this.checked; if (this.id.substr(0,3)=="chk") saveOptionCookie(this.id); }
if (this.srctid && this.srcpos>0 && (!this.id || this.id.substr(0,3)!="chk") && !this.tag && !this.field) {
// save state in tiddler content only if not using cookie, tag or field tracking
var t=store.getTiddler(this.srctid); // put X in original source tiddler (if any)
if (t && this.checked!=(t.text.substr(this.srcpos,1).toUpperCase()=="X")) { // if changed
t.set(null,t.text.substr(0,this.srcpos)+(this.checked?"X":"_")+t.text.substr(this.srcpos+1),null,null,t.tags);
if (!story.isDirty(t.title)) story.refreshTiddler(t.title,null,true);
store.setDirty(true);
}
}
if (this.field) {
if (this.checked && !store.tiddlerExists(this.tiddler))
store.saveTiddler(this.tiddler,this.tiddler,"",config.options.txtUserName,new Date());
// set the field value in the target tiddler
store.setValue(this.tiddler,this.field,this.checked?"true":"false");
// DEBUG: displayMessage(this.field+"@"+this.tiddler+" is "+this.checked);
}
if (this.tag) {
if (this.checked && !store.tiddlerExists(this.tiddler))
store.saveTiddler(this.tiddler,this.tiddler,"",config.options.txtUserName,new Date());
var t=store.getTiddler(this.tiddler);
if (t) {
var tagged=(t.tags && t.tags.indexOf(this.tag)!=-1);
if (this.checked && !tagged) { t.tags.push(this.tag); store.setDirty(true); }
if (!this.checked && tagged) { t.tags.splice(t.tags.indexOf(this.tag),1); store.setDirty(true); }
}
// if tag state has been changed, update display of corresponding tiddlers (unless they are in edit mode...)
if (this.checked!=tagged) {
if (this.refresh.tagged) {
if (!story.isDirty(this.tiddler)) // the TAGGED tiddler in view mode
story.refreshTiddler(this.tiddler,null,true);
else // the TAGGED tiddler in edit mode (with tags field)
config.macros.checkbox.refreshEditorTagField(this.tiddler,this.tag,this.checked);
}
if (this.refresh.tagging)
if (!story.isDirty(this.tag)) story.refreshTiddler(this.tag,null,true); // the TAGGING tiddler
}
}
if (!this.init && this.fn_clickAfter) // custom function hook to react to changes in checkbox state
{ try { eval(this.fn_clickAfter) } catch(e) { displayMessage("Checkbox onClickAfter error: "+e.toString()); } }
// refresh containing tiddler (but not during initial rendering, or we get an infinite loop!) (and not when editing container)
if (!this.init && this.refresh.container && this.container!=this.tiddler)
if (!story.isDirty(this.container)) story.refreshTiddler(this.container,null,true); // the tiddler CONTAINING the checkbox
return true;
},
refreshEditorTagField: function(title,tag,set) {
var tagfield=story.getTiddlerField(title,"tags");
if (!tagfield||tagfield.getAttribute("edit")!="tags") return; // if no tags field in editor (i.e., custom template)
var tags=tagfield.value.readBracketedList();
if (tags.contains(tag)==set) return; // if no change needed
if (set) tags.push(tag); // add tag
else tags.splice(tags.indexOf(tag),1); // remove tag
for (var t=0;t<tags.length;t++) tags[t]=String.encodeTiddlyLink(tags[t]);
tagfield.value=tags.join(" "); // reassemble tag string (with brackets as needed)
return;
}
}
//}}}
!Please contact us if you have question or have errors running ~FusionMap, using the following email address:
!!fusionmapauthors AT gmail DOT com
Please also read the [[Q&A, Tips]]. Your question may already be answered there.
!Licence
~FusionMap is a free tool for personal and academic use.
Commercial users: please contact [[OmicSoft|http://www.omicsoft.com/contact.php]] to get a license.
!~FusionMap has tried its best to remove false positives, including steps to:
(1) Filter normal reads allowing at most 8% dissimilarity between each read and the reference;
(2) Set β=1 which requires unique alignment of each end after cutting seed reads;
(3) Penalize fusion alignment of ~RNA-Seq read with non-canonical splice pattern on the fusion junction; (G=4 is recommended for 75nt reads)
(4) Require at least one rescued reads and two distinct supporting fusion reads by default;
(5) Maintain a blacklist to further filter potential false positives.
!In order to further reduce false positives, user can
(1) Rank the fusion candidates by the number of supporting seed reads
(2) Combine ~FusionMap result with fusion detections from paired-end information;
(3) Compare the SRPKM value of fusion gene ~A-B and RPKM of gene A and B;
(4) Visualize the junction sequence and fusion reads coverage in IGV or Genome Browser
(5) Analyze more samples to detect recurrent true fusion events;
!@@''[[DOWNLOAD HERE | http://www.omicsoft.com/fusionmap/Software/FusionMap_2013-02-01.zip]]''@@
Total 11MB, including the software and a simple test dataset.
Current software released date: 2013-02-01
!!Examples
Please see examples of control and run log files. (Please also check the ~TestDataset folder after you download/unzip the software folder)
They were created for the software released on 2011-11-22 but they are the same for the 2012 new year's edition.
| Control files | Log files |h
| [[2011-11-22 secontrol_InputPairedEndReads-Win64.config]] | [[2011-11-22 secontrol_InputPairedEndReads-Win64.log]] |
| [[2011-11-22 secontrol_InputPairedEndReads-Linux64.config]] | [[2011-11-22 secontrol_InputPairedEndReads-Linux64.log]] |
| [[2011-11-22 secontrol_InputSingleEndReads-Win64.config]] | [[2011-11-22 secontrol_InputSingleEndReads-Win64.log]] |
| [[2011-11-22 secontrol_InputSingleEndReads-Linux64.config]] | [[2011-11-22 secontrol_InputSingleEndReads-Linux64.log]] |
''Please email to {{{fusionmapauthors AT gmail DOT com}}} to report any issue with ~FusionMap.''
!NOTE:
We recommend using MONO Version 2.10.8 or higher for latest ~FusionMap release.
Direct link to MONO 2.10.8: http://download.mono-project.com/sources/mono/mono-2.10.8.tar.gz
Use {{{mono}}} instead of {{{mono-sgen}}} in the latest MONO+~FusionMap
!Citation
~FusionMap: detecting fusion genes from next-generation sequencing data at base-pair resolution
Huanying Ge; Kejun Liu; Todd Juan; Fang Fang; Matthew Newman; Wolfgang Hoeck
Bioinformatics (2011) 27 (14): 1922-1928. doi: 10.1093/bioinformatics/btr310
[[BibTex format]]
!!!Licence
~FusionMap is a free tool for personal and academic use.
Commercial users: please contact [[OmicSoft|http://www.omicsoft.com/contact.php]] to get a license.
!Typical error message:
{{{
Downloading from http://www.omicsoft.com/downloads/dreflib/Human.B37.dreflib1.gzip...
Error occured in module::semap
Error=Unable to download file from http://www.omicsoft.com/downloads/dreflib/Human.B37.dreflib1.gzip
}}}
!Solution
The ~FusionMap fails in downloading the index through INTERNET. We do not know what is the problem on the network connection but most of users were working well with automatically downloading. It might be firewall issue, blocking the ~FusionMap to access Internet.
In case, the automatic downloading is never working for you. We have prepared a 64bit version of human reference and ~RefGene gene model online (~5GB). You can manually download using link:
@@hg19@@
http://omicsoft.com/fusionmap/Reference/ReferenceLibrary.HumanB37.RefGene.zip
@@hg18@@
http://omicsoft.com/fusionmap/Reference/ReferenceLibrary.HumanB36.RefGene.zip
You can unzip and organize the reference directory as:
{{{
FusionMap_Base_Dir(folder)
-Temp(folder)
-ReferenceLibrary(folder)
---- Human.B37_GeneModels(folder)
---- Human.B37.dreflib1
---- Human.B37.gindex1
}}}
make sure puttting the right @@~FusionMap_Base_Dir@@ in the command; otherwise, ~FusionMap cannot find the index and it will try to download one from internet.
{{{
cd /FusionMap_Base_Dir/bin
mono-sgen FusionMap.exe --semap /FusionMap_Base_Dir Human.B37 RefGene /FusionMap_Base_Dir/TestDataset/secontrol.txt > /FusionMap_Base_Dir/log/run.log
}}}
!Please read the following article if you want to build your own reference:
[[(1) Building a reference library and gene model]]
!!In ~FusionMap, all chromosome will be labeled as 1-22, X, Y.
This error only occurs in old version of FusionMap (version < 1.40)
In the current version, when user is building reference and gene model with FASTA/GTF files with chromosome names as chr1-22, chrX, chrY, e.g. UCSC hg19, ~FusionMap will automatically chop "chr" away.
We are recommending the pre-built @@Human.B37@@ and @@~RefGene@@ from ~FusionMap website, which contains both gene symbols and transcript ~IDs. The gene model is a combined table from ~RefSeq and ~RefFlat, e.g.:
{{{
chr1 hg19_refGene start_codon 67000042 67000044 0.000000 + . gene_id "SGIP1_chr1"; transcript_id "NM_032291_chr1"; gene_name "SGIP1"; transcript_name "NM_032291"
chr1 hg19_refGene CDS 67000042 67000051 0.000000 + 0 gene_id "SGIP1_chr1"; transcript_id "NM_032291_chr1"; gene_name "SGIP1"; transcript_name "NM_032291"
chr1 hg19_refGene exon 66999825 67000051 0.000000 + . gene_id "SGIP1_chr1"; transcript_id "NM_032291_chr1"; gene_name "SGIP1"; transcript_name "NM_032291"
chr1 hg19_refGene CDS 67091530 67091593 0.000000 + 2 gene_id "SGIP1_chr1"; transcript_id "NM_032291_chr1"; gene_name "SGIP1"; transcript_name "NM_032291"
}}}
!Dataset
The ~FusionMap package comes with this example dataset. In the ~TestDataset folder, you will find following files:
*simulated paired-end ~RNA-Seq reads (~60,000 pairs of reads, 75nt, fragment size=158bp)
*unmapped reads after Tophat alignment (~6500 reads)
*control file to run ~FusionMap
*outputs from ~FusionMap
!Fusion detection
!!Step 1: configure the ~FusionMap run based on either whole dataset or unmapped reads
!!!Based on the whole dataset (method 1)
"""In the paper, we described a pre-processing step filtering with a regular read mapper, using Bowtie or Tophat. After that, these unmapped reads are used to run FusionMap. However, the preprocessing before applying FusionMap is optional. We later find that it is too complicated to ask user to find unmapped reads. We are now recommending user to run FusionMap directly on the whole dataset since it won't take too much time now. For paired-end reads, we added PairedEnd option in FusionMap, if user specify PairedEnd=True, FusionMap will pair two files and consider them as NGS raw reads from the same sample."""
''Read1 File location'': """TestDataset/input/DatasetP2SimulatedReads_1.fastq"""
''Read2 File location'': """TestDataset/input/DatasetP2SimulatedReads_2.fastq"""
@@copy/paste the following parameter settings and save it into a control file (e.g. secontrol.txt)@@ if run ~FusionMap on paired-end raw data files:
{{{
<Files>
/mnt/Win64bin/FusionMap/V_2011-11-22/TestDataset/input/DatasetP2_SimulatedReads_1.fastq
/mnt/Win64bin/FusionMap/V_2011-11-22/TestDataset/input/DatasetP2_SimulatedReads_2.fastq
<Options>
PairedEnd=True
RnaMode=True
Use32BitMode=False
ThreadNumber=8 //Possible values: 1-100. Default value=1
FileFormat=FASTQ // Possible values: FASTQ, QSEQ, FASTA. Default value=FASTQ
MinimalFusionAlignmentLength=25 //Possible values: 15-50. Default value=25 (alpha)
FusionReportCutoff=1 // Possible values: 1-1000. Default value=1 (beta)
NonCanonicalSpliceJunctionPenalty=4 //Possible values: 01-. Default value = 2 (G)
MinimalHit=2 // Minimal distinct read; Possible values: 1-10000, Default value =2
MinimalRescuedReadNumber=1 // Minimal rescued read number. Default value = 1
OutputFusionReads=True // Possible values: True, False. Default value = True
FilterBy=DefaultList //advanced filtering using default black list from FusionMap, set to None to avoid automatic downloading
<Output>
TempPath=/tmp/FusionMapTemp
OutputPath=/mnt/Win64bin/FusionMap/V_2011-11-22/TestDataset/output
OutputName=TestDataset_InputPEReads
}}}
!!!Based on unmapped reads (method 2)
~FusionMap can be applied directly to the whole dataset but would take less time if you already have unmapped reads after regular alignment. In this example, we are using unmapped reads after Tophat alignment.
''File location'': """TestDataset/input/UnmappedDatasetP2SimulatedReads_from_tophat.fastq"""
User can applied ~FusionMap using {α=25, β=1, G=4} on this unmapped dataset.
@@copy/paste the following parameter settings and save it into a control file (e.g. secontrol.txt).@@
{{{
<Files>
/mnt/Win64bin/FusionMap/V_2011-11-22/TestDataset/input/UnmappedDatasetP2SimulatedReads_from_tophat.fastq
<Options>
PairedEnd=False
RnaMode=True
Use32BitMode=False
ThreadNumber=8 //Possible values: 1-100. Default value=1
FileFormat=FASTQ // Possible values: FASTQ, QSEQ, FASTA. Default value=FASTQ
MinimalFusionAlignmentLength=25 //Possible values: 15-50. Default value=25 (alpha)
FusionReportCutoff=1 // Possible values: 1-1000. Default value=1 (beta)
NonCanonicalSpliceJunctionPenalty=4 //Possible values: 01-. Default value = 2 (G)
MinimalHit=2 // Minimal distinct read; Possible values: 1-10000, Default value =2
MinimalRescuedReadNumber=1 // Minimal rescued read number. Default value = 1
OutputFusionReads=True // Possible values: True, False. Default value = True
FilterBy=DefaultList //advanced filtering using default black list from FusionMap, set to None to avoid automatic downloading
<Output>
TempPath=/tmp
OutputPath=/mnt/Win64bin/FusionMap/V_2011-11-22/TestDataset/output
OutputName=TestDataset_InputSEReads
}}}
!!Step 2: execute ~FusionMap detection program
!!!! in Windows:
{{{
cd C:\tmp\FusionMap\bin
FusionMap.exe --semap C:\tmp\FusionMap Human.B37 RefGene C:\tmp\FusionMap\TestDataset\secontrol.txt > C:\tmp\FusionMap\TestDataset\run.log
}}}
Make sure to change the path in the command and control file.
The command will save the log into run.log file, recording the running time of each step.
Here is the [[log file for TestDataset]] in running in our windows machine.
!!!! in Linux:
{{{
cd /tmp/FusionMap/bin
mono-sgen FusionMap.exe --semap /tmp/FusionMap Human.B37 RefGene /tmp/FusionMap/TestDataset/secontrol.txt > /tmp/FusionMap/TestDataset/run.log
}}}
Make sure MONO =2.8.1 is installed. Using {{{mono FusionMap.exe}}} in some version of MONO.
Here is the [[log file for TestDataset in Ubuntu Linux]]
When it is your first time running ~FusionMap, it will need a few minute to download and index human genome and ~RefGene ([[a log file for automatically downloading a reference file]]).
You will see two folders under """C:\tmp\FusionMap""":
{{{
-Temp
----sdf231g3654a23sd1f6 (randomly named folder to store temp files)
-ReferenceLibrary
---- Human.B37_GeneModels
---- Human.B37.dreflib1
---- Human.B37.gindex1
}}}
!! Outputs
!!!Fusion junction report table
~FusionMap reports a list of detected fusion junctions, statistics of supporting reads, fusion gene pairs, as well as genomic locations of breakpoints and junction sequences, which characterize fusion genes comprehensively at base-pair resolution. Here is the [[description of each column in the fusion table]].
~FusionMap reports all possible fusion junctions. We highly recommend user to sort the fusion candidates by the number of supporting seed reads, or using cutoff, e.g., #seed reads≥4.
Here is top 10 fusion junctions detected by ~FusionMap in this dataset (short version, display important columns only):
|"""fusionid"""|"""#Distinct"""|"""#Seed"""|"""#Rescued"""|"""chr1"""|"""Pos1"""|"""chr2"""|"""Pos2"""|"""KnownGene1"""|"""KnownGene2"""|"""FusionJunctionSequence"""|"""SplicePattern"""|h
|"""FUS_640668117_1228902508(--)"""|"""62"""|"""487"""|"""653"""|"""12"""|"""120876182"""|"""19"""|"""580461"""|"""COX6A1"""|"""BSG"""|"""CGAAGAAGGTGAGAGTCTTCCACATGCGAGcgtggagctggatgttggccgtgcccatgg"""|"""GT-AG"""|
|"""FUS_684680688_2568453169(++)"""|"""60"""|"""123"""|"""149"""|"""13"""|"""31036849"""|"""7"""|"""134135538"""|"""HMGB1"""|"""AKR1B1"""|"""TACTCAGAGCAGAAGAGGAAGAAGGCCGAActtaaagccagtcggccagtgaataaggta"""|"""GT-AG"""|
|"""FUS_576143803_2535201742(++)"""|"""59"""|"""96"""|"""126"""|"""12"""|"""56351868"""|"""7"""|"""100884111"""|"""SILV"""|"""FIS1"""|"""CTGGGCCCCCTAGAACTTGCCAGTATTGGCcttgagccggtagttccccacggccaggta"""|"""GT-AG"""|
|"""FUS_1967705332_2460560273(+-)"""|"""48"""|"""75"""|"""48"""|"""4"""|"""76572341"""|"""7"""|"""26242642"""|"""G3BP2"""|"""CBX3"""|"""CAGAGTCATTCTGTTCCATATCTCCTCTGCcaatgtagttttgttggaggccatttttta"""|"""GT-AG"""|
|"""FUS_1311742400_2316342447(++)"""|"""54"""|"""72"""|"""79"""|"""2"""|"""24291329"""|"""6"""|"""53139888"""|"""SF3B14"""|"""ELOVL5"""|"""GCTGTTCCTCTAGTTTCAGGTGTGTTCCCCagtggccgcaggggacccagttcatcacaa"""|"""GT-AG"""|
|"""FUS_1228939896_1373859493(++)"""|"""45"""|"""48"""|"""49"""|"""19"""|"""617849"""|"""2"""|"""86408422"""|"""POLRMT"""|"""IMMT"""|"""TCGTGCACAGAGACGAAGGTCAGGCCCTTCccagagctgcctgaagtagagtatctgcgg"""|"""GT-AG"""|
|"""FUS_1459255931_1687940670(--)"""|"""52"""|"""44"""|"""51"""|"""2"""|"""171804860"""|"""22"""|"""46134719"""|"""GORASP2"""|"""ATXN10"""|"""AGCTCTGTGTCCTGGGGAATTTTCTTGTACcaatcactctttccagcaagccagggaaaa"""|"""GT-AG"""|
|"""FUS_11184689_446432191(++)"""|"""41"""|"""41"""|"""36"""|"""1"""|"""11184690"""|"""11"""|"""61646784"""|"""MTOR"""|"""FADS3"""|"""GAAGGAAAACAAACTCATGTCCGTTGCTGCctgagagatggccaggatgaaggcggccag"""|"""GT-AG"""|
|"""FUS_1675506166_2624113590(--)"""|"""40"""|"""35"""|"""35"""|"""22"""|"""33700215"""|"""8"""|"""30657271"""|"""LARGE"""|"""PPP2CB"""|"""GCCCATGTATGGGCTCTATGAGTACCTCAGgcaaaggaaattttaacaaaagaatcaaat"""|"""GT-AG"""|
|"""FUS_54427968_706894294(--)"""|"""37"""|"""29"""|"""33"""|"""1"""|"""54427969"""|"""13"""|"""53250455"""|"""LRRC42"""|"""SUGT1"""|"""CTGGAGCTTGTGCTTGACGGTTTTGATGTCctgctacgaattgttttggcgtaggcacat"""|"""GT-AG"""|
Also see [[TestDataset fusion detection report (full version)]]
!!!!User can blat each junction sequence to validate each fusion junction.
For example, here is one simulated fusion junction [~FUS_40776817_2946874630(++)] in [[UCSC genome browser|http://genome.ucsc.edu/cgi-bin/hgBlat?command=start]]:
The junction sequence is ~ACCCAGAATCCCGCGTTTGCCCGCATGCCCattgaacctcagaggtgggggtctgcttcg
[img[http://dl.dropbox.com/u/7635496/FusionMap/FusionMapScreenShot_TestDatasetUCSC.png]]
!!!!Related reading:
[[In some cases, the junction sequence can be mapped to multiple positions using BLAT even after I specify beta=1 in FusionMap, why?]]
!! SAM file for aligned fusion reads
We now output SAM files
"""FusionMap output file: UnmappedDatasetP2SimulatedReads_from_tophat.FusionReads.sam"""
!!! Output format
Each fusion read will be cut into two ends which aligned to different locations. In the SAM output, we use two entries (in paired-end fashion) to describe the alignment of each fusion reads. Each line also contain the tag of fusion read type and fusion junction ID. See [[description of each element in the FusionMap SAM output]]
Example of a fusion read in the SAM file:
{{{
R_1782:2 67 1 40776789 255 30M45S X 65824263 0
ACCCAGAATCCCGCGTTTGCCCGCATGCCCATTGAACCTCAGAGGTGGGGGTCTGCTTCGTGCACGGGATGCACT
283348985863448157653149274159715381432428925324118868345815774332128375427
ZF:Z:FUS_40776817_2946874630(++) ZT:Z:Seed
R_1782:2 131 X 65824263 255 30S45M 1 40776789 0
ACCCAGAATCCCGCGTTTGCCCGCATGCCCATTGAACCTCAGAGGTGGGGGTCTGCTTCGTGCACGGGATGCACT
283348985863448157653149274159715381432428925324118868345815774332128375427
ZF:Z:FUS_40776817_2946874630(++) ZT:Z:Seed
}}}
Read "R_1782:2" has been cut into two partial reads, one with 30nt and the other with 45nt. The first line represents the alignment of 30nt end using CIGAR 30M45S; the second line represents the alignment of 45nt end using CIGAR 30S45M .
!!!The fusion alignment can be visualized in [[IGV|http://www.broadinstitute.org/software/igv/]] (integrative genome browser) and [[UCSC genome browser|http://genome.ucsc.edu/]].
Covert it to BAM file, sort the alignment and index the BAM file:
{{{
samtools view -b -S UnmappedDatasetP2SimulatedReads_from_tophat.FusionReads.sam -o Alignment.bam
samtools sort Alignment.bam AlginmentSorted
samtools index AlginmentSorted.bam
}}}
Load the BAM file and check each fusion junction in IGV or UCSC Genome Browser
@@~ScreenShot in IGV@@
[img[http://www.omicsoft.com/fusionmap/images/FusionMapScreenShot_TestDatasetIGV1.png]]
@@~ScreenShot in UCSC Genome Browser@@
[img[http://www.omicsoft.com/fusionmap/images/FusionMapScreenShot_TestDatasetUCSC2.png]]
!!Note:
This example dataset contains simulated reads only. These reads are part of the dataset P2 as described in the Paper. Dataset P2 is based on SRA dataset [[SRR066679|http://trace.ncbi.nlm.nih.gov/Traces/sra/sra.cgi?cmd=viewer&m=data&s=viewer&run=SRR066679]]. The simulation dataset contains 75nt paired-end reads from 50 simulated fusion transcripts. The fragment size of simulated paired-end reads was 158bp which was equal to the median insert fragment sizes in the background datasets. Users can merge read files from both ends with the background dataset (download from SRA) if users want to test a fusion spike-in dataset with noise close to the real scenario.
!(1) Dataset
14 million 76-nt single reads from a ~RNA-Seq study which captured fragments from the K562 cDNA library by hybridization to oligonucleotide probes specific for 467 cancer-related genes. Reference: [[Levin, et al., 2009|http://genomebiology.com/2009/10/10/R115]]
User can download the raw data in .fastq format (compressed in .gz) through this [[LINK|http://www.omicsoft.com/fusionmap/Dataset/BI.081030_SL-XBF_0001_FC30CB2AAXX.7.fastq.gz]] (size: ~1.1 Gb)
!!(2) Fusion detection based on the whole dataset
User can applied ~FusionMap using {α=25, β=1, G=4} directly to the whole dataset since it is a single-end 75nt ~RNA-Seq dataset.
~FusionMap accepts the read file in gzip compressed format but make sure to specify Gzip=True in the control file.
!!!Step 1: copy/paste the following parameter settings and save it into a control file (e.g. secontrol.txt).
{{{
<Files>
C:\tmp\FusionMap\Example2\input\BI.081030_SL-XBF_0001_FC30CB2AAXX.7.fastq.gz
<Options>
Gzip=True //using the .gz file directly
ThreadNumber=8
FileFormat=FASTQ
MinimalFusionAlignmentLength=25 (α)
FusionReportCutoff=1 // (β)
NonCanonicalSpliceJunctionPenalty=4 // (G)
FilterBy=DefaultList //advanced filtering using default black list
OutputFusionReads=True // output cutting positions and SAM alignment file
<Output>
TempPath=C\tmp
OutputPath=C:\tmp\FusionMap\Example2\output
OutputName=K562Dataset
}}}
!!!Step 2: execute ~FusionMap detection program
!!!! in Windows:
{{{
cd C:\tmp\FusionMap\bin
FusionMap.exe --semap C:\tmp\FusionMap Human.B37 RefGene C:\tmp\FusionMap\Example2\secontrol.txt > C:\tmp\FusionMap\Example2\output\run.log
}}}
Make sure to change the path in the command and control file.
The command will save the log into run.log file, recording the running time of each step.
Here is the [[log file for K562Dataset]] running in our windows machine.
!!!! in Linux:
{{{
cd /tmp/FusionMap/bin
mono-sgen FusionMap.exe --semap /tmp/FusionMap Human.B37 RefGene /tmp/FusionMap/Example2/secontrol.txt > /tmp/FusionMap/Example2/output/run.log
}}}
Make sure MONO 2.8.1 is installed. Using {{{mono FusionMap.exe}}} in some version of MONO
When it is your first time running ~FusionMap, it will need a few minute to download and index human genome and ~RefGene ([[a log file for automatically downloading a reference file]]).
You will see two folders under """C:\tmp\FusionMap""":
{{{
-Temp
----sdf231g3654a23sd1f6 (randomly named folder to store temp files)
-ReferenceLibrary
---- Human.B37_GeneModels
---- Human.B37.dreflib1
---- Human.B37.gindex1
}}}
!!(3) Outputs
!!!Fusion junction report table
~FusionMap reports a list of detected fusion junctions, statistics of supporting reads, fusion gene pairs, as well as genomic locations of breakpoints and junction sequences, which characterize fusion genes comprehensively at base-pair resolution. Here is the [[description of each column in the fusion table]].
~FusionMap reports all possible fusion junctions. We highly recommend user to sort the fusion candidates by the number of supporting seed reads, or using cutoff, e.g., #seed reads≥4.
Here is the truncated results from ~FusionMap run with {α=25, β=1, G=4} . The following filters were applied in ~FusionMap’s report: advanced filtering; #distinct read≥2; #seed read≥4; #rescue read≥1.
|Note|#Distinct Read|#Seed Reads|#Rescued reads|Chr1|Pos1|Chr2|Pos2|Gene1|Gene2|~FusionJunctionSequence|Splice Pattern|Fusion Gene|h
|(1)|65|461|542|22|23632600|9|133729451|BCR|~ABL1|~ACTCAGCCACTGGATTTAAGCAGAGTTCAAaagcccttcagcggccagtagcatctgact|~GT-AG|~BCR->~ABL1|
|(1)|52|76|88|22|17288973|9|134074402|~XKR3|~NUP214|~TCTTCAAACACTGTCTCCATTCTCAGGGTGctgaagcttggcaaaagctgaacccagagg|~GT-AG|~NUP214->~XKR3|
|(1)|9|6|14|12|57108471|12|57127931|NACA|~PRIM1|~ATTCATCACTGTCAGATTCTGTTCCAGACCcactcttcttaagaagttctccttttcggg|~GT-AG|~PRIM1->NACA|
|(1)|2|5|2|1|28834672|11|85718626|~SNHG3/~RCC1|PICALM|~TTGTTAAGGATTCCAAGTAACTCTTATTTGcaagttggaattgacagaggtgatatacca|~GT-AG|~SNHG3,~RCC1->PICALM|
|(1)|2|4|1|3|48694781|3|48715997|~CELSR3|NCKIPSD|~CACACTGCGCCGTCACGCTGTGCAGGCCATcttgtctcctggtgacaggtctgcgatgtg|~GT-AG|~NCKIPSD->~CELSR3|
(1): detected in [[Levin, J.Z., et al. (2009)|http://genomebiology.com/2009/10/10/R115]];
(2): breakpoint within ±5nt range at the genomic or transcript level.
!!!!User can blat each junction sequence to validate each fusion junction.
For example, BLAT the junction sequence of ~BCR-ABL1 in [[UCSC genome browser|http://genome.ucsc.edu/cgi-bin/hgBlat?command=start]]:
The fusion junction sequence: ~ACTCAGCCACTGGATTTAAGCAGAGTTCAAaagcccttcagcggccagtagcatctgact
[img[http://www.omicsoft.com/fusionmap/images/FusionMapScreenShot_K562BCRABL.png]]
!!!!Related reading:
[[In some cases, the junction sequence can be mapped to multiple positions using BLAT even after I specify beta=1 in FusionMap, why?]]
!! SAM file for aligned fusion seed reads
We now output SAM files .
"""FusionMap output file: K562Dataset.FusionReads.sam"""
!!! Output format
Each fusion read will be cut into two ends which aligned to different locations. In the SAM output, we use two entries to describe the alignment of each fusion reads in the paired-end fashion. Each line also contain the tag of fusion read type and fusion junction ID. See [[description of each element in the FusionMap SAM output]]
Example of a fusion read in the SAM file:
{{{
BI:081030_SL-XBF_0001_FC30CB2AAXX:7:1:954:637 67 22 23632564 255 37M39S 9 133729451 0
ATCGTCCACTCAGCCACTGGATTTAAGCAGAGTTCAAAAGCCCTTCAGCGGCCAGTAGCATCTGACTTTGAGCCTC
IIIIIII>III/III1I7II.0F;*8>I=I'>,+I(**&<I>I*/I)4?=0<C&8%&;<&&4&4%3**/2%,35#7
ZF:Z:FUS_1665438551_2873549802(++) ZT:Z:Seed
BI:081030_SL-XBF_0001_FC30CB2AAXX:7:1:954:637 131 9 133729451 255 37S39M 22 23632564 0
ATCGTCCACTCAGCCACTGGATTTAAGCAGAGTTCAAAAGCCCTTCAGCGGCCAGTAGCATCTGACTTTGAGCCTC
IIIIIII>III/III1I7II.0F;*8>I=I'>,+I(**&<I>I*/I)4?=0<C&8%&;<&&4&4%3**/2%,35#7
ZF:Z:FUS_1665438551_2873549802(++) ZT:Z:Seed
}}}
Read '"""BI:081030_SL-XBF_0001_FC30CB2AAXX:7:1:954:637"""' has been cut into two partial reads, one with 37nt and the other with 39nt. The first line represents the alignment of 37nt end using CIGAR 37M39S; the second line represents the alignment of 39nt end using CIGAR 37S39M.
!!!The fusion alignment can be visualized in [[IGV|http://www.broadinstitute.org/software/igv/]] (integrative genome browser).
Covert it to BAM file, sort the alignment and index the BAM file:
{{{
samtools view -b -S K562Dataset.FusionReads.sam -o K562Dataset.bam
samtools sort K562Dataset.bam K562Dataset
samtools index K562Dataset.bam
}}}
Load the BAM file and check each fusion junction in IGV.
@@~ScreenShot of ~BCR-ABL fusion at the transcript level@@
In the BCR gene:
[img[http://www.omicsoft.com/fusionmap/images/FusionMapScreenShot_K562BCRABL_IGV1.png]]
In the ~ABL1 gene:
[img[http://www.omicsoft.com/fusionmap/images/FusionMapScreenShot_K562BCRABL_IGV2.png]]
{{{
<Files>
C:\tmp\FusionMap\TestDataset\input\s_1_1.fastq
C:\tmp\FusionMap\TestDataset\input\s_1_2.fastq
C:\tmp\FusionMap\TestDataset\input\s_2_1.fastq
C:\tmp\FusionMap\TestDataset\input\s_2_2.fastq
C:\tmp\FusionMap\TestDataset\input\s_3_1.fastq
C:\tmp\FusionMap\TestDataset\input\s_3_2.fastq
<Options>
PairedEnd=True
RnaMode=True
ThreadNumber=8 //Possible values: 1-100. Default value=1
FileFormat=FASTQ // Possible values: FASTQ, QSEQ, FASTA. Default value=FASTQ
MinimalFusionAlignmentLength=25 //Possible values: 15-50. Default value=25 (alpha)
FusionReportCutoff=1 // Possible values: 1-1000. Default value=1 (beta)
NonCanonicalSpliceJunctionPenalty=4 // Default value = 2 (G)
MinimalHit=2 // Minimal distinct read; Possible values: 1-10000, Default value =2
MinimalRescuedReadNumber=1 // Minimal rescued read number. Default value = 1
OutputFusionReads=True // Possible values: True, False. Default value = True
FilterBy=DefaultList //advanced filtering using default black list from FusionMap
<Output>
OutputPath=C:\tmp\FusionMap\TestDataset\output
OutputName=TestDataset
}}}
In this example, s_1_1 and s_1_2 will be considered as one sample. ~FusionMap will consolidate their reads automatically by {{{PairedEnd=True}}}.
Fusion detection reports for three samples, s_1, s_2 and s_3, will be generated in one report grouping fusion junctions by rows in one table. User can easily find recurrent fusion in this table.
/***
|Name|ExportTiddlersPlugin|
|Source|http://www.TiddlyTools.com/#ExportTiddlersPlugin|
|Documentation|http://www.TiddlyTools.com/#ExportTiddlersPluginInfo|
|Version|2.9.6|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|interactively select/export tiddlers to a separate file|
!!!!!Documentation
>see [[ExportTiddlersPluginInfo]]
!!!!!Inline control panel (live):
><<exportTiddlers inline>>
!!!!!Revisions
<<<
2011.02.14 2.9.6 fix OSX error: use picker.file.path
2010.02.25 2.9.5 added merge checkbox option and improved 'merge' status message
|please see [[ExportTiddlersPluginInfo]] for additional revision details|
2005.10.09 0.0.0 development started
<<<
!!!!!Code
***/
//{{{
// version
version.extensions.ExportTiddlersPlugin= {major: 2, minor: 9, revision: 6, date: new Date(2011,2,14)};
// default shadow definition
config.shadowTiddlers.ExportTiddlers='<<exportTiddlers inline>>';
// add 'export' backstage task (following built-in import task)
if (config.tasks) { // TW2.2 or above
config.tasks.exportTask = {
text:'export',
tooltip:'Export selected tiddlers to another file',
content:'<<exportTiddlers inline>>'
}
config.backstageTasks.splice(config.backstageTasks.indexOf('importTask')+1,0,'exportTask');
}
config.macros.exportTiddlers = {
$: function(id) { return document.getElementById(id); }, // abbreviation
label: 'export tiddlers',
prompt: 'Copy selected tiddlers to an export document',
okmsg: '%0 tiddler%1 written to %2',
failmsg: 'An error occurred while creating %1',
overwriteprompt: '%0\ncontains %1 tiddler%2 that will be discarded or replaced',
mergestatus: '%0 tiddler%1 added, %2 tiddler%3 updated, %4 tiddler%5 unchanged',
statusmsg: '%0 tiddler%1 - %2 selected for export',
newdefault: 'export.html',
datetimefmt: '0MM/0DD/YYYY 0hh:0mm:0ss', // for 'filter date/time' edit fields
type_TW: "tw", type_PS: "ps", type_TX: "tx", type_CS: "cs", type_NF: "nf", // file type tokens
type_map: { // maps type param to token values
tiddlywiki:"tw", tw:"tw", wiki: "tw",
purestore: "ps", ps:"ps", store:"ps",
plaintext: "tx", tx:"tx", text: "tx",
comma: "cs", cs:"cs", csv: "cs",
newsfeed: "nf", nf:"nf", xml: "nf", rss:"nf"
},
handler: function(place,macroName,params) {
if (params[0]!='inline')
{ createTiddlyButton(place,this.label,this.prompt,this.togglePanel); return; }
var panel=this.createPanel(place);
panel.style.position='static';
panel.style.display='block';
},
createPanel: function(place) {
var panel=this.$('exportPanel');
if (panel) { panel.parentNode.removeChild(panel); }
setStylesheet(store.getTiddlerText('ExportTiddlersPlugin##css',''),'exportTiddlers');
panel=createTiddlyElement(place,'span','exportPanel',null,null)
panel.innerHTML=store.getTiddlerText('ExportTiddlersPlugin##html','');
this.initFilter();
this.refreshList(0);
var fn=this.$('exportFilename');
if (window.location.protocol=='file:' && !fn.value.length) {
// get new target path/filename
var newPath=getLocalPath(window.location.href);
var slashpos=newPath.lastIndexOf('/'); if (slashpos==-1) slashpos=newPath.lastIndexOf('\\');
if (slashpos!=-1) newPath=newPath.substr(0,slashpos+1); // trim filename
fn.value=newPath+this.newdefault;
}
return panel;
},
togglePanel: function(e) { var e=e||window.event;
var cme=config.macros.exportTiddlers; // abbrev
var parent=resolveTarget(e).parentNode;
var panel=cme.$('exportPanel');
if (panel==undefined || panel.parentNode!=parent)
panel=cme.createPanel(parent);
var isOpen=panel.style.display=='block';
if(config.options.chkAnimate)
anim.startAnimating(new Slider(panel,!isOpen,e.shiftKey || e.altKey,'none'));
else
panel.style.display=isOpen?'none':'block' ;
if (panel.style.display!='none') {
cme.refreshList(0);
cme.$('exportFilename').focus();
cme.$('exportFilename').select();
}
e.cancelBubble = true; if (e.stopPropagation) e.stopPropagation(); return(false);
},
process: function(which) { // process panel control interactions
var theList=this.$('exportList'); if (!theList) return false;
var count = 0;
var total = store.getTiddlers('title').length;
switch (which.id) {
case 'exportFilter':
count=this.filterExportList();
var panel=this.$('exportFilterPanel');
if (count==-1) { panel.style.display='block'; break; }
this.$('exportStart').disabled=(count==0);
this.$('exportDelete').disabled=(count==0);
this.displayStatus(count,total);
if (count==0) { alert('No tiddlers were selected'); panel.style.display='block'; }
break;
case 'exportStart':
this.go();
break;
case 'exportDelete':
this.deleteTiddlers();
break;
case 'exportHideFilter':
case 'exportToggleFilter':
var panel=this.$('exportFilterPanel')
panel.style.display=(panel.style.display=='block')?'none':'block';
break;
case 'exportSelectChanges':
var lastmod=new Date(document.lastModified);
for (var t = 0; t < theList.options.length; t++) {
if (theList.options[t].value=='') continue;
var tiddler=store.getTiddler(theList.options[t].value); if (!tiddler) continue;
theList.options[t].selected=(tiddler.modified>lastmod);
count += (tiddler.modified>lastmod)?1:0;
}
this.$('exportStart').disabled=(count==0);
this.$('exportDelete').disabled=(count==0);
this.displayStatus(count,total);
if (count==0) alert('There are no unsaved changes');
break;
case 'exportSelectAll':
for (var t = 0; t < theList.options.length; t++) {
if (theList.options[t].value=='') continue;
theList.options[t].selected=true;
count += 1;
}
this.$('exportStart').disabled=(count==0);
this.$('exportDelete').disabled=(count==0);
this.displayStatus(count,count);
break;
case 'exportSelectOpened':
for (var t=0; t<theList.options.length; t++) theList.options[t].selected=false;
var tiddlerDisplay=this.$('tiddlerDisplay');
for (var t=0; t<tiddlerDisplay.childNodes.length;t++) {
var tiddler=tiddlerDisplay.childNodes[t].id.substr(7);
for (var i=0; i<theList.options.length; i++) {
if (theList.options[i].value!=tiddler) continue;
theList.options[i].selected=true; count++; break;
}
}
this.$('exportStart').disabled=(count==0);
this.$('exportDelete').disabled=(count==0);
this.displayStatus(count,total);
if (count==0) alert('There are no tiddlers currently opened');
break;
case 'exportSelectRelated':
// recursively build list of related tiddlers
function getRelatedTiddlers(tid,tids) {
var t=store.getTiddler(tid); if (!t || tids.contains(tid)) return tids;
tids.push(t.title);
if (!t.linksUpdated) t.changed();
for (var i=0; i<t.links.length; i++)
if (t.links[i]!=tid) tids=getRelatedTiddlers(t.links[i],tids);
return tids;
}
// for all currently selected tiddlers, gather up the related tiddlers (including self) and select them as well
var tids=[];
for (var i=0; i<theList.options.length; i++)
if (theList.options[i].selected) tids=getRelatedTiddlers(theList.options[i].value,tids);
// select related tiddlers (includes original selected tiddlers)
for (var i=0; i<theList.options.length; i++)
theList.options[i].selected=tids.contains(theList.options[i].value);
this.displayStatus(tids.length,total);
break;
case 'exportListSmaller': // decrease current listbox size
var min=5;
theList.size-=(theList.size>min)?1:0;
break;
case 'exportListLarger': // increase current listbox size
var max=(theList.options.length>25)?theList.options.length:25;
theList.size+=(theList.size<max)?1:0;
break;
case 'exportClose':
this.$('exportPanel').style.display='none';
break;
}
return false;
},
displayStatus: function(count,total) {
var txt=this.statusmsg.format([total,total!=1?'s':'',!count?'none':count==total?'all':count]);
clearMessage(); displayMessage(txt);
return txt;
},
refreshList: function(selectedIndex) {
var theList = this.$('exportList'); if (!theList) return;
// get the sort order
var sort;
if (!selectedIndex) selectedIndex=0;
if (selectedIndex==0) sort='modified';
if (selectedIndex==1) sort='title';
if (selectedIndex==2) sort='modified';
if (selectedIndex==3) sort='modifier';
if (selectedIndex==4) sort='tags';
// unselect headings and count number of tiddlers actually selected
var count=0;
for (var t=5; t < theList.options.length; t++) {
if (!theList.options[t].selected) continue;
if (theList.options[t].value!='')
count++;
else { // if heading is selected, deselect it, and then select and count all in section
theList.options[t].selected=false;
for ( t++; t<theList.options.length && theList.options[t].value!=''; t++) {
theList.options[t].selected=true;
count++;
}
}
}
// disable 'export' and 'delete' buttons if no tiddlers selected
this.$('exportStart').disabled=(count==0);
this.$('exportDelete').disabled=(count==0);
// show selection count
var tiddlers = store.getTiddlers('title');
if (theList.options.length) this.displayStatus(count,tiddlers.length);
// if a [command] item, reload list... otherwise, no further refresh needed
if (selectedIndex>4) return;
// clear current list contents
while (theList.length > 0) { theList.options[0] = null; }
// add heading and control items to list
var i=0;
var indent=String.fromCharCode(160)+String.fromCharCode(160);
theList.options[i++]=
new Option(tiddlers.length+' tiddlers in document', '',false,false);
theList.options[i++]=
new Option(((sort=='title' )?'>':indent)+' [by title]', '',false,false);
theList.options[i++]=
new Option(((sort=='modified')?'>':indent)+' [by date]', '',false,false);
theList.options[i++]=
new Option(((sort=='modifier')?'>':indent)+' [by author]', '',false,false);
theList.options[i++]=
new Option(((sort=='tags' )?'>':indent)+' [by tags]', '',false,false);
// output the tiddler list
switch(sort) {
case 'title':
for(var t = 0; t < tiddlers.length; t++)
theList.options[i++] = new Option(tiddlers[t].title,tiddlers[t].title,false,false);
break;
case 'modifier':
case 'modified':
var tiddlers = store.getTiddlers(sort);
// sort descending for newest date first
tiddlers.sort(function (a,b) {if(a[sort] == b[sort]) return(0); else return (a[sort] > b[sort]) ? -1 : +1; });
var lastSection = '';
for(var t = 0; t < tiddlers.length; t++) {
var tiddler = tiddlers[t];
var theSection = '';
if (sort=='modified') theSection=tiddler.modified.toLocaleDateString();
if (sort=='modifier') theSection=tiddler.modifier;
if (theSection != lastSection) {
theList.options[i++] = new Option(theSection,'',false,false);
lastSection = theSection;
}
theList.options[i++] = new Option(indent+indent+tiddler.title,tiddler.title,false,false);
}
break;
case 'tags':
var theTitles = {}; // all tiddler titles, hash indexed by tag value
var theTags = new Array();
for(var t=0; t<tiddlers.length; t++) {
var title=tiddlers[t].title;
var tags=tiddlers[t].tags;
if (!tags || !tags.length) {
if (theTitles['untagged']==undefined) { theTags.push('untagged'); theTitles['untagged']=new Array(); }
theTitles['untagged'].push(title);
}
else for(var s=0; s<tags.length; s++) {
if (theTitles[tags[s]]==undefined) { theTags.push(tags[s]); theTitles[tags[s]]=new Array(); }
theTitles[tags[s]].push(title);
}
}
theTags.sort();
for(var tagindex=0; tagindex<theTags.length; tagindex++) {
var theTag=theTags[tagindex];
theList.options[i++]=new Option(theTag,'',false,false);
for(var t=0; t<theTitles[theTag].length; t++)
theList.options[i++]=new Option(indent+indent+theTitles[theTag][t],theTitles[theTag][t],false,false);
}
break;
}
theList.selectedIndex=selectedIndex; // select current control item
this.$('exportStart').disabled=true;
this.$('exportDelete').disabled=true;
this.displayStatus(0,tiddlers.length);
},
askForFilename: function(here) {
var msg=here.title; // use tooltip as dialog box message
var path=getLocalPath(document.location.href);
var slashpos=path.lastIndexOf('/'); if (slashpos==-1) slashpos=path.lastIndexOf('\\');
if (slashpos!=-1) path = path.substr(0,slashpos+1); // remove filename from path, leave the trailing slash
var filetype=this.$('exportFormat').value.toLowerCase();
var defext='html';
if (filetype==this.type_TX) defext='txt';
if (filetype==this.type_CS) defext='csv';
if (filetype==this.type_NF) defext='xml';
var file=this.newdefault.replace(/html$/,defext);
var result='';
if(window.Components) { // moz
try {
netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
var nsIFilePicker = window.Components.interfaces.nsIFilePicker;
var picker = Components.classes['@mozilla.org/filepicker;1'].createInstance(nsIFilePicker);
picker.init(window, msg, nsIFilePicker.modeSave);
var thispath = Components.classes['@mozilla.org/file/local;1'].createInstance(Components.interfaces.nsILocalFile);
thispath.initWithPath(path);
picker.displayDirectory=thispath;
picker.defaultExtension=defext;
picker.defaultString=file;
picker.appendFilters(nsIFilePicker.filterAll|nsIFilePicker.filterText|nsIFilePicker.filterHTML);
if (picker.show()!=nsIFilePicker.returnCancel) var result=picker.file.path;
}
catch(e) { alert('error during local file access: '+e.toString()) }
}
else { // IE
try { // XPSP2 IE only
var s = new ActiveXObject('UserAccounts.CommonDialog');
s.Filter='All files|*.*|Text files|*.txt|HTML files|*.htm;*.html|XML files|*.xml|';
s.FilterIndex=defext=='txt'?2:'html'?3:'xml'?4:1;
s.InitialDir=path;
s.FileName=file;
if (s.showOpen()) var result=s.FileName;
}
catch(e) { // fallback
var result=prompt(msg,path+file);
}
}
return result;
},
initFilter: function() {
this.$('exportFilterStart').checked=false; this.$('exportStartDate').value='';
this.$('exportFilterEnd').checked=false; this.$('exportEndDate').value='';
this.$('exportFilterTags').checked=false; this.$('exportTags').value='';
this.$('exportFilterText').checked=false; this.$('exportText').value='';
this.showFilterFields();
},
showFilterFields: function(which) {
var show=this.$('exportFilterStart').checked;
this.$('exportFilterStartBy').style.display=show?'block':'none';
this.$('exportStartDate').style.display=show?'block':'none';
var val=this.$('exportFilterStartBy').value;
this.$('exportStartDate').value
=this.getFilterDate(val,'exportStartDate').formatString(this.datetimefmt);
if (which && (which.id=='exportFilterStartBy') && (val=='other'))
this.$('exportStartDate').focus();
var show=this.$('exportFilterEnd').checked;
this.$('exportFilterEndBy').style.display=show?'block':'none';
this.$('exportEndDate').style.display=show?'block':'none';
var val=this.$('exportFilterEndBy').value;
this.$('exportEndDate').value
=this.getFilterDate(val,'exportEndDate').formatString(this.datetimefmt);
if (which && (which.id=='exportFilterEndBy') && (val=='other'))
this.$('exportEndDate').focus();
var show=this.$('exportFilterTags').checked;
this.$('exportTags').style.display=show?'block':'none';
var show=this.$('exportFilterText').checked;
this.$('exportText').style.display=show?'block':'none';
},
getFilterDate: function(val,id) {
var result=0;
switch (val) {
case 'file':
result=new Date(document.lastModified);
break;
case 'other':
result=new Date(this.$(id).value);
break;
default: // today=0, yesterday=1, one week=7, two weeks=14, a month=31
var now=new Date(); var tz=now.getTimezoneOffset()*60000; now-=tz;
var oneday=86400000;
if (id=='exportStartDate')
result=new Date((Math.floor(now/oneday)-val)*oneday+tz);
else
result=new Date((Math.floor(now/oneday)-val+1)*oneday+tz-1);
break;
}
return result;
},
filterExportList: function() {
var theList = this.$('exportList'); if (!theList) return -1;
var filterStart=this.$('exportFilterStart').checked;
var val=this.$('exportFilterStartBy').value;
var startDate=config.macros.exportTiddlers.getFilterDate(val,'exportStartDate');
var filterEnd=this.$('exportFilterEnd').checked;
var val=this.$('exportFilterEndBy').value;
var endDate=config.macros.exportTiddlers.getFilterDate(val,'exportEndDate');
var filterTags=this.$('exportFilterTags').checked;
var tags=this.$('exportTags').value;
var filterText=this.$('exportFilterText').checked;
var text=this.$('exportText').value;
if (!(filterStart||filterEnd||filterTags||filterText)) {
alert('Please set the selection filter');
this.$('exportFilterPanel').style.display='block';
return -1;
}
if (filterStart&&filterEnd&&(startDate>endDate)) {
var msg='starting date/time:\n'
msg+=startDate.toLocaleString()+'\n';
msg+='is later than ending date/time:\n'
msg+=endDate.toLocaleString()
alert(msg);
return -1;
}
// if filter by tags, get list of matching tiddlers
// use getMatchingTiddlers() (if MatchTagsPlugin is installed) for full boolean expressions
// otherwise use getTaggedTiddlers() for simple tag matching
if (filterTags) {
var fn=store.getMatchingTiddlers||store.getTaggedTiddlers;
var t=fn.apply(store,[tags]);
var tagged=[];
for (var i=0; i<t.length; i++) tagged.push(t[i].title);
}
// scan list and select tiddlers that match all applicable criteria
var total=0;
var count=0;
for (var i=0; i<theList.options.length; i++) {
// get item, skip non-tiddler list items (section headings)
var opt=theList.options[i]; if (opt.value=='') continue;
// get tiddler, skip missing tiddlers (this should NOT happen)
var tiddler=store.getTiddler(opt.value); if (!tiddler) continue;
var sel=true;
if ( (filterStart && tiddler.modified<startDate)
|| (filterEnd && tiddler.modified>endDate)
|| (filterTags && !tagged.contains(tiddler.title))
|| (filterText && (tiddler.text.indexOf(text)==-1) && (tiddler.title.indexOf(text)==-1)))
sel=false;
opt.selected=sel;
count+=sel?1:0;
total++;
}
return count;
},
deleteTiddlers: function() {
var list=this.$('exportList'); if (!list) return;
var tids=[];
for (i=0;i<list.length;i++)
if (list.options[i].selected && list.options[i].value.length)
tids.push(list.options[i].value);
if (!confirm('Are you sure you want to delete these tiddlers:\n\n'+tids.join(', '))) return;
store.suspendNotifications();
for (t=0;t<tids.length;t++) {
var tid=store.getTiddler(tids[t]); if (!tid) continue;
var msg="'"+tid.title+"' is tagged with 'systemConfig'.\n\n";
msg+='Removing this tiddler may cause unexpected results. Are you sure?'
if (tid.tags.contains('systemConfig') && !confirm(msg)) continue;
store.removeTiddler(tid.title);
story.closeTiddler(tid.title);
}
store.resumeNotifications();
alert(tids.length+' tiddlers deleted');
this.refreshList(0); // reload listbox
store.notifyAll(); // update page display
},
go: function() {
if (window.location.protocol!='file:') // make sure we are local
{ displayMessage(config.messages.notFileUrlError); return; }
// get selected tidders, target filename, target type, and notes
var list=this.$('exportList'); if (!list) return;
var tids=[]; for (var i=0; i<list.options.length; i++) {
var opt=list.options[i]; if (!opt.selected||!opt.value.length) continue;
var tid=store.getTiddler(opt.value); if (!tid) continue;
tids.push(tid);
}
if (!tids.length) return; // no tiddlers selected
var target=this.$('exportFilename').value.trim();
if (!target.length) {
displayMessage('A local target path/filename is required',target);
return;
}
var merge=this.$('exportMerge').checked;
var filetype=this.$('exportFormat').value.toLowerCase();
var notes=this.$('exportNotes').value.replace(/\n/g,'<br>');
var total={val:0};
var out=this.assembleFile(target,filetype,tids,notes,total,merge);
if (!total.val) return; // cancelled file overwrite
var link='file:///'+target.replace(/\\/g,'/');
var samefile=link==decodeURIComponent(window.location.href);
var p=getLocalPath(document.location.href);
if (samefile) {
if (config.options.chkSaveBackups) { var t=loadOriginal(p);if(t)saveBackup(p,t); }
if (config.options.chkGenerateAnRssFeed && saveRss instanceof Function) saveRss(p);
}
var ok=saveFile(target,out);
displayMessage((ok?this.okmsg:this.failmsg).format([total.val,total.val!=1?'s':'',target]),link);
},
plainTextHeader:
'Source:\n\t%0\n'
+'Title:\n\t%1\n'
+'Subtitle:\n\t%2\n'
+'Created:\n\t%3 by %4\n'
+'Application:\n\tTiddlyWiki %5 / %6 %7\n\n',
plainTextTiddler:
'- - - - - - - - - - - - - - -\n'
+'| title: %0\n'
+'| created: %1\n'
+'| modified: %2\n'
+'| edited by: %3\n'
+'| tags: %4\n'
+'- - - - - - - - - - - - - - -\n'
+'%5\n',
plainTextFooter:
'',
newsFeedHeader:
'<'+'?xml version="1.0"?'+'>\n'
+'<rss version="2.0">\n'
+'<channel>\n'
+'<title>%1</title>\n'
+'<link>%0</link>\n'
+'<description>%2</description>\n'
+'<language>en-us</language>\n'
+'<copyright>Copyright '+(new Date().getFullYear())+' %4</copyright>\n'
+'<pubDate>%3</pubDate>\n'
+'<lastBuildDate>%3</lastBuildDate>\n'
+'<docs>http://blogs.law.harvard.edu/tech/rss</docs>\n'
+'<generator>TiddlyWiki %5 / %6 %7</generator>\n',
newsFeedTiddler:
'\n%0\n',
newsFeedFooter:
'</channel></rss>',
pureStoreHeader:
'<html><body>'
+'<style type="text/css">'
+' #storeArea {display:block;margin:1em;}'
+' #storeArea div {padding:0.5em;margin:1em;border:2px solid black;height:10em;overflow:auto;}'
+' #pureStoreHeading {width:100%;text-align:left;background-color:#eeeeee;padding:1em;}'
+'</style>'
+'<div id="pureStoreHeading">'
+' TiddlyWiki "PureStore" export file<br>'
+' Source'+': <b>%0</b><br>'
+' Title: <b>%1</b><br>'
+' Subtitle: <b>%2</b><br>'
+' Created: <b>%3</b> by <b>%4</b><br>'
+' TiddlyWiki %5 / %6 %7<br>'
+' Notes:<hr><pre>%8</pre>'
+'</div>'
+'<div id="storeArea">',
pureStoreTiddler:
'%0\n%1',
pureStoreFooter:
'</div><!--POST-BODY-START-->\n<!--POST-BODY-END--></body></html>',
assembleFile: function(target,filetype,tids,notes,total,merge) {
var revised='';
var now = new Date().toLocaleString();
var src=convertUnicodeToUTF8(document.location.href);
var title = convertUnicodeToUTF8(wikifyPlain('SiteTitle').htmlEncode());
var subtitle = convertUnicodeToUTF8(wikifyPlain('SiteSubtitle').htmlEncode());
var user = convertUnicodeToUTF8(config.options.txtUserName.htmlEncode());
var twver = version.major+'.'+version.minor+'.'+version.revision;
var v=version.extensions.ExportTiddlersPlugin; var pver = v.major+'.'+v.minor+'.'+v.revision;
var headerargs=[src,title,subtitle,now,user,twver,'ExportTiddlersPlugin',pver,notes];
switch (filetype) {
case this.type_TX: // plain text
var header=this.plainTextHeader.format(headerargs);
var footer=this.plainTextFooter;
break;
case this.type_CS: // comma-separated
var fields={};
for (var i=0; i<tids.length; i++) for (var f in tids[i].fields) fields[f]=f;
var names=['title','created','modified','modifier','tags','text'];
for (var f in fields) names.push(f);
var header=names.join(',')+'\n';
var footer='';
break;
case this.type_NF: // news feed (XML)
headerargs[0]=store.getTiddlerText('SiteUrl','');
var header=this.newsFeedHeader.format(headerargs);
var footer=this.newsFeedFooter;
break;
case this.type_PS: // PureStore (no code)
var header=this.pureStoreHeader.format(headerargs);
var footer=this.pureStoreFooter;
break;
case this.type_TW: // full TiddlyWiki
default:
var currPath=getLocalPath(window.location.href);
var original=loadFile(currPath);
if (!original) { displayMessage(config.messages.cantSaveError); return; }
var posDiv = locateStoreArea(original);
if (!posDiv) { displayMessage(config.messages.invalidFileError.format([currPath])); return; }
var header = original.substr(0,posDiv[0]+startSaveArea.length)+'\n';
var footer = '\n'+original.substr(posDiv[1]);
break;
}
var out=this.getData(target,filetype,tids,fields,merge);
var revised = header+convertUnicodeToUTF8(out.join('\n'))+footer;
// if full TW, insert page title and language attr, and reset all MARKUP blocks...
if (filetype==this.type_TW) {
var newSiteTitle=convertUnicodeToUTF8(getPageTitle()).htmlEncode();
revised=revised.replaceChunk('<title'+'>','</title'+'>',' ' + newSiteTitle + ' ');
revised=updateLanguageAttribute(revised);
var titles=[]; for (var i=0; i<tids.length; i++) titles.push(tids[i].title);
revised=updateMarkupBlock(revised,'PRE-HEAD',
titles.contains('MarkupPreHead')? 'MarkupPreHead' :null);
revised=updateMarkupBlock(revised,'POST-HEAD',
titles.contains('MarkupPostHead')?'MarkupPostHead':null);
revised=updateMarkupBlock(revised,'PRE-BODY',
titles.contains('MarkupPreBody')? 'MarkupPreBody' :null);
revised=updateMarkupBlock(revised,'POST-SCRIPT',
titles.contains('MarkupPostBody')?'MarkupPostBody':null);
}
total.val=out.length;
return revised;
},
getData: function(target,filetype,tids,fields,merge) {
// output selected tiddlers and gather list of titles (for use with merge)
var out=[]; var titles=[];
var url=store.getTiddlerText('SiteUrl','');
for (var i=0; i<tids.length; i++) {
out.push(this.formatItem(store,filetype,tids[i],url,fields));
titles.push(tids[i].title);
}
// if TW or PureStore format, ask to merge with existing tiddlers (if any)
if (filetype==this.type_TW || filetype==this.type_PS) {
var txt=loadFile(target);
if (txt && txt.length) {
var remoteStore=new TiddlyWiki();
if (version.major+version.minor*.1+version.revision*.01<2.52) txt=convertUTF8ToUnicode(txt);
if (remoteStore.importTiddlyWiki(txt)) {
var existing=remoteStore.getTiddlers('title');
var msg=this.overwriteprompt.format([target,existing.length,existing.length!=1?'s':'']);
if (merge) {
var added=titles.length; var updated=0; var kept=0;
for (var i=0; i<existing.length; i++)
if (titles.contains(existing[i].title)) {
added--; updated++;
} else {
out.push(this.formatItem(remoteStore,filetype,existing[i],url));
kept++;
}
displayMessage(this.mergestatus.format(
[added,added!=1?'s':'',updated,updated!=1?'s':'',kept,kept!=1?'s':'',]));
}
else if (!confirm(msg)) out=[]; // empty the list = don't write file
}
}
}
return out;
},
formatItem: function(s,f,t,u,fields) {
if (f==this.type_TW)
var r=s.getSaver().externalizeTiddler(s,t);
if (f==this.type_PS)
var r=this.pureStoreTiddler.format([t.title,s.getSaver().externalizeTiddler(s,t)]);
if (f==this.type_NF)
var r=this.newsFeedTiddler.format([t.saveToRss(u)]);
if (f==this.type_TX)
var r=this.plainTextTiddler.format([t.title, t.created.toLocaleString(), t.modified.toLocaleString(),
t.modifier, String.encodeTiddlyLinkList(t.tags), t.text]);
if (f==this.type_CS) {
function toCSV(t) { return '"'+t.replace(/"/g,'""')+'"'; } // always encode CSV
var out=[ toCSV(t.title), toCSV(t.created.toLocaleString()), toCSV(t.modified.toLocaleString()),
toCSV(t.modifier), toCSV(String.encodeTiddlyLinkList(t.tags)), toCSV(t.text) ];
for (var f in fields) out.push(toCSV(t.fields[f]||''));
var r=out.join(',');
}
return r||"";
}
}
//}}}
/***
!!!Control panel CSS
//{{{
!css
#exportPanel {
display: none; position:absolute; z-index:12; width:35em; right:105%; top:6em;
background-color: #eee; color:#000; font-size: 8pt; line-height:110%;
border:1px solid black; border-bottom-width: 3px; border-right-width: 3px;
padding: 0.5em; margin:0em; -moz-border-radius:1em;-webkit-border-radius:1em;
}
#exportPanel a, #exportPanel td a { color:#009; display:inline; margin:0px; padding:1px; }
#exportPanel table {
width:100%; border:0px; padding:0px; margin:0px;
font-size:8pt; line-height:110%; background:transparent;
}
#exportPanel tr { border:0px;padding:0px;margin:0px; background:transparent; }
#exportPanel td { color:#000; border:0px;padding:0px;margin:0px; background:transparent; }
#exportPanel select { width:98%;margin:0px;font-size:8pt;line-height:110%;}
#exportPanel input { width:98%;padding:0px;margin:0px;font-size:8pt;line-height:110%; }
#exportPanel textarea { width:98%;padding:0px;margin:0px;overflow:auto;font-size:8pt; }
#exportPanel .box {
border:1px solid black; padding:3px; margin-bottom:5px;
background:#f8f8f8; -moz-border-radius:5px;-webkit-border-radius:5px; }
#exportPanel .topline { border-top:2px solid black; padding-top:3px; margin-bottom:5px; }
#exportPanel .rad { width:auto;border:0 }
#exportPanel .chk { width:auto;border:0 }
#exportPanel .btn { width:auto; }
#exportPanel .btn1 { width:98%; }
#exportPanel .btn2 { width:48%; }
#exportPanel .btn3 { width:32%; }
#exportPanel .btn4 { width:24%; }
#exportPanel .btn5 { width:19%; }
!end
//}}}
!!!Control panel HTML
//{{{
!html
<!-- target path/file -->
<div>
<div style="float:right;padding-right:.5em">
<input type="checkbox" style="width:auto" id="exportMerge" CHECKED
title="combine selected tiddlers with existing tiddlers (if any) in export file"> merge
</div>
export to:<br>
<input type="text" id="exportFilename" size=40 style="width:93%"><input
type="button" id="exportBrowse" value="..." title="select or enter a local folder/file..." style="width:5%"
onclick="var fn=config.macros.exportTiddlers.askForFilename(this); if (fn.length) this.previousSibling.value=fn; ">
</div>
<!-- output format -->
<div>
format:
<select id="exportFormat" size=1>
<option value="TW">TiddlyWiki HTML document (includes core code)</option>
<option value="PS">TiddlyWiki "PureStore" HTML file (tiddler data only)</option>
<option value="TX">TiddlyWiki plain text TXT file (tiddler source listing)</option>
<option value="CS">Comma-Separated Value (CSV) data file</option>
<option value="NF">RSS NewsFeed XML file</option>
</select>
</div>
<!-- notes -->
<div>
notes:<br>
<textarea id="exportNotes" rows=3 cols=40 style="height:4em;margin-bottom:5px;" onfocus="this.select()"></textarea>
</div>
<!-- list of tiddlers -->
<table><tr align="left"><td>
select:
<a href="JavaScript:;" id="exportSelectAll"
onclick="return config.macros.exportTiddlers.process(this)" title="select all tiddlers">
all </a>
<a href="JavaScript:;" id="exportSelectChanges"
onclick="return config.macros.exportTiddlers.process(this)" title="select tiddlers changed since last save">
changes </a>
<a href="JavaScript:;" id="exportSelectOpened"
onclick="return config.macros.exportTiddlers.process(this)" title="select tiddlers currently being displayed">
opened </a>
<a href="JavaScript:;" id="exportSelectRelated"
onclick="return config.macros.exportTiddlers.process(this)" title="select tiddlers related to the currently selected tiddlers">
related </a>
<a href="JavaScript:;" id="exportToggleFilter"
onclick="return config.macros.exportTiddlers.process(this)" title="show/hide selection filter">
filter </a>
</td><td align="right">
<a href="JavaScript:;" id="exportListSmaller"
onclick="return config.macros.exportTiddlers.process(this)" title="reduce list size">
– </a>
<a href="JavaScript:;" id="exportListLarger"
onclick="return config.macros.exportTiddlers.process(this)" title="increase list size">
+ </a>
</td></tr></table>
<select id="exportList" multiple size="10" style="margin-bottom:5px;"
onchange="config.macros.exportTiddlers.refreshList(this.selectedIndex)">
</select><br>
<!-- selection filter -->
<div id="exportFilterPanel" style="display:none">
<table><tr align="left"><td>
selection filter
</td><td align="right">
<a href="JavaScript:;" id="exportHideFilter"
onclick="return config.macros.exportTiddlers.process(this)" title="hide selection filter">hide</a>
</td></tr></table>
<div class="box">
<input type="checkbox" class="chk" id="exportFilterStart" value="1"
onclick="config.macros.exportTiddlers.showFilterFields(this)"> starting date/time<br>
<table cellpadding="0" cellspacing="0"><tr valign="center"><td width="50%">
<select size=1 id="exportFilterStartBy"
onchange="config.macros.exportTiddlers.showFilterFields(this);">
<option value="0">today</option>
<option value="1">yesterday</option>
<option value="7">a week ago</option>
<option value="30">a month ago</option>
<option value="file">file date</option>
<option value="other">other (mm/dd/yyyy hh:mm)</option>
</select>
</td><td width="50%">
<input type="text" id="exportStartDate" onfocus="this.select()"
onchange="config.macros.exportTiddlers.$('exportFilterStartBy').value='other';">
</td></tr></table>
<input type="checkbox" class="chk" id="exportFilterEnd" value="1"
onclick="config.macros.exportTiddlers.showFilterFields(this)"> ending date/time<br>
<table cellpadding="0" cellspacing="0"><tr valign="center"><td width="50%">
<select size=1 id="exportFilterEndBy"
onchange="config.macros.exportTiddlers.showFilterFields(this);">
<option value="0">today</option>
<option value="1">yesterday</option>
<option value="7">a week ago</option>
<option value="30">a month ago</option>
<option value="file">file date</option>
<option value="other">other (mm/dd/yyyy hh:mm)</option>
</select>
</td><td width="50%">
<input type="text" id="exportEndDate" onfocus="this.select()"
onchange="config.macros.exportTiddlers.$('exportFilterEndBy').value='other';">
</td></tr></table>
<input type="checkbox" class="chk" id=exportFilterTags value="1"
onclick="config.macros.exportTiddlers.showFilterFields(this)"> match tags<br>
<input type="text" id="exportTags" onfocus="this.select()">
<input type="checkbox" class="chk" id=exportFilterText value="1"
onclick="config.macros.exportTiddlers.showFilterFields(this)"> match titles/tiddler text<br>
<input type="text" id="exportText" onfocus="this.select()">
</div> <!--box-->
</div> <!--panel-->
<!-- action buttons -->
<div style="text-align:center">
<input type=button class="btn4" onclick="config.macros.exportTiddlers.process(this)"
id="exportFilter" value="apply filter">
<input type=button class="btn4" onclick="config.macros.exportTiddlers.process(this)"
id="exportStart" value="export tiddlers">
<input type=button class="btn4" onclick="config.macros.exportTiddlers.process(this)"
id="exportDelete" value="delete tiddlers">
<input type=button class="btn4" onclick="config.macros.exportTiddlers.process(this)"
id="exportClose" value="close">
</div><!--center-->
!end
//}}}
***/
/***
|Name|FullScreenPlugin|
|Created by|SaqImtiaz|
|Location|http://tw.lewcid.org/#FullScreenPlugin|
|Version|1.1|
|Requires|~TW2.x|
!Description:
Toggle between viewing tiddlers fullscreen and normally. Very handy for when you need more viewing space.
!Demo:
Click the ↕ button in the toolbar for this tiddler. Click it again to turn off fullscreen.
!Installation:
Copy the contents of this tiddler to your TW, tag with systemConfig, save and reload your TW.
Edit the ViewTemplate to add the fullscreen command to the toolbar.
!History:
*25-07-06: ver 1.1
*20-07-06: ver 1.0
!Code
***/
//{{{
var lewcidFullScreen = false;
config.commands.fullscreen =
{
text:" «FullScreen» ",
tooltip:"Fullscreen mode"
};
config.commands.fullscreen.handler = function (event,src,title)
{
if (lewcidFullScreen == false)
{
lewcidFullScreen = true;
setStylesheet('#sidebar, .header , #mainMenu{display:none;} #displayArea{margin:0em 0 0 0 !important;}',"lewcidFullScreenStyle");
}
else
{
lewcidFullScreen = false;
setStylesheet(' ',"lewcidFullScreenStyle");
}
}
config.macros.fullscreen={};
config.macros.fullscreen.handler = function(place,macroName,params,wikifier,paramString,tiddler)
{
var label = params[0]||" «Screen» ";
var tooltip = params[1]||"Fullscreen mode";
createTiddlyButton(place,label,tooltip,config.commands.fullscreen.handler);
}
var lewcid_fullscreen_closeTiddler = Story.prototype.closeTiddler;
Story.prototype.closeTiddler =function(title,animate,slowly)
{
lewcid_fullscreen_closeTiddler.apply(this,arguments);
if (story.isEmpty() && lewcidFullScreen == true)
config.commands.fullscreen.handler();
}
Slider.prototype.lewcidStop = Slider.prototype.stop;
Slider.prototype.stop = function()
{
this.lewcidStop();
if (story.isEmpty() && lewcidFullScreen == true)
config.commands.fullscreen.handler();
}
//}}}
!What is ~FusionMap?
!!''"""FusionMap is an efficient fusion aligner which aligns reads spanning fusion junctions directly to the genome without prior knowledge of potential fusion regions. It detects and characterizes fusion junctions at base-pair resolution. FusionMap can be applied to detect fusion junctions in both single- and paired-end dataset from either gDNA-Seq or RNA-Seq studies."""''
!Getting Started
*[[Download]] ~FusionMap software
*Read [[System requirements]] and [[Manual]].
*Follow the instructions to test ~FusionMap on example datasets.
** [[Example 1]]: a simple and small dataset
** [[Example 2]]: a real ~RNA-Seq dataset with 14 million reads
!Latest Updates
@@04/15/2011@@
v 1.40 has been released with the following changes:
(1) @@color(brown):Clean the parameters in control file.@@ User only needs to specify the parameters that are different from the default values (see [[(3) Options]]).
(2) @@color(brown):Applying a simple check rule on unmapped reads for seed fusion read selection.@@ In the last version, ~FusionMap cut and aligned two ends of each unassembled reads to the reference. In this version, ~FusionMap aligns the first and last α-nt (by default α=25 for 75nt reads) to the reference. If both α-nt short ends are mapped, ~FusionMap will choose it as a candidate seed read and then cut the read at all positions in the seed region to find an optimal cutting position for the fusion junction detection. This simple check speeds up the running time, particularly for large NGS dataset (>50 million reads).
(3) @@color(brown):Output the alignment of fusion reads in SAM format@@ which can be visualized in genome browsers (e.g. IGV) (see [[(4) Output files]]).
@@02/23/2011@@
v 1.30 has been released: added advanced filtering based on gene blacklist and gene family list; further increased specificity.
@@11/30/2010@@
The website for ~FusionMap has been setup. Version 1.0 has been released.
A getting started instruction webpage is included for your convenience.
----
@@color(grey):The ~FusionMap website is built using [[TiddlyWiki|http://www.tiddlywiki.com/]]@@
!~FusionMap: detecting fusion genes from next-generation sequencing data at base-pair resolution
Huanying Ge, Kejun Liu, Todd Juan, Fang Fang, Matthew Newman, Wolfgang Hoeck
To get started with this blank [[TiddlyWiki]], you'll need to modify the following tiddlers:
* [[SiteTitle]] & [[SiteSubtitle]]: The title and subtitle of the site, as shown above (after saving, they will also appear in the browser title bar)
* [[MainMenu]]: The menu (usually on the left)
* [[DefaultTiddlers]]: Contains the names of the tiddlers that you want to appear when the TiddlyWiki is opened
You'll also need to enter your username for signing your edits: <<option txtUserName>>
<<tagging tips>>
/***
|Name|GotoPlugin|
|Source|http://www.TiddlyTools.com/#GotoPlugin|
|Documentation|http://www.TiddlyTools.com/#GotoPluginInfo|
|Version|1.5.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides||
|Description|view any tiddler by entering it's title - displays list of possible matches|
''View a tiddler by typing its title and pressing //enter//.'' As you type, a list of possible matches is displayed. You can scroll-and-click (or use arrows+enter) to select/view a tiddler, or press //escape// to close the listbox to resume typing. When the listbox is ''//not//'' being displayed, press //escape// to clear the current text input and start over.
!!!!!Documentation
>see [[GotoPluginInfo]]
!!!!!Revisions
<<<
2008.02.17 [1.5.0] ENTER key always displays tiddler based on current input regardless of whether input matches any existing tiddler
|please see [[GotoPluginInfo]] for additional revision details|
2006.05.05 [0.0.0] started
<<<
!!!!!Code
***/
//{{{
version.extensions.gotoTiddler = {major: 1, minor: 5, revision: 0, date: new Date(200,2,17)};
// automatically tweak shadow SideBarOptions to add <<gotoTiddler>> macro above <<search>>
config.shadowTiddlers.SideBarOptions=config.shadowTiddlers.SideBarOptions.replace(/<<search>>/,"{{button{goto}}}\n<<gotoTiddler>><<search>>");
config.macros.gotoTiddler= {
handler:
function(place,macroName,params) {
var quiet=(params[0] && params[0]=="quiet"); if (quiet) params.shift();
var insert=(params[0] && params[0]=="insert"); if (insert) params.shift();
var instyle=params.shift(); if (!instyle) instyle="";
var liststyle=params.shift(); if (!liststyle) liststyle="";
var keyevent=window.event?"onkeydown":"onkeypress";
createTiddlyElement(place,"span").innerHTML
=this.html.replace(/%keyevent%/g,keyevent).replace(/%insert%/g,insert).replace(/%quiet%/g,quiet).replace(/%instyle%/g,instyle).replace(/%liststyle%/g,liststyle);
},
html:
'<form onsubmit="return false" style="display:inline;margin:0;padding:0">\
<input name=gotoTiddler type=text autocomplete="off" accesskey="G" style="%instyle%"\
title="enter a tiddler title"\
onclick="this.form.list.style.display=\'none\';"\
onfocus="this.select(); this.setAttribute(\'accesskey\',\'G\');"\
%keyevent%="return config.macros.gotoTiddler.inputEscKeyHandler(event,this,this.form.list);"\
onkeyup="return config.macros.gotoTiddler.inputKeyHandler(event,this,this.form.list,%quiet%,%insert%);">\
<select name=list style="%liststyle%;display:none;position:absolute"\
onchange="if (!this.selectedIndex) this.selectedIndex=1;"\
onblur="this.style.display=\'none\';"\
%keyevent%="return config.macros.gotoTiddler.selectKeyHandler(event,this,this.form.gotoTiddler,%insert%);"\
onclick="return config.macros.gotoTiddler.processItem(this.value,this.form.gotoTiddler,this,%insert%);">\
</select>\
</form>',
getItems:
function(val) {
if (!this.items.length || val.length<2) { // starting new search, refresh cached list of tiddlers/shadows/tags
this.items=new Array();
var tiddlers=store.getTiddlers("title","excludeLists");
for(var t=0; t<tiddlers.length; t++) this.items.push(tiddlers[t].title);
for (var t in config.shadowTiddlers) this.items.pushUnique(t);
var tags=store.getTags();
for(var t=0; t<tags.length; t++) this.items.pushUnique(tags[t][0]);
}
var found = [];
var match=val.toLowerCase();
for(var i=0; i<this.items.length; i++)
if (this.items[i].toLowerCase().indexOf(match)!=-1) found.push(this.items[i]);
return found;
},
items: [], // cached list of tiddlers/shadows/tags
getItemSuffix:
function(t) {
if (store.tiddlerExists(t)) return ""; // tiddler
if (store.isShadowTiddler(t)) return " (shadow)"; // shadow
return " (tag)"; // tag
},
keyProcessed:
function(ev) { // utility function: exits handler and prevents browser from processing the keystroke
ev.cancelBubble=true; // IE4+
try{event.keyCode=0;}catch(e){}; // IE5
if (window.event) ev.returnValue=false; // IE6
if (ev.preventDefault) ev.preventDefault(); // moz/opera/konqueror
if (ev.stopPropagation) ev.stopPropagation(); // all
return false;
},
inputEscKeyHandler:
function(event,here,list) {
var key=event.keyCode;
// escape... hide list (2nd esc=clears input)
if (key==27) {
if (list.style.display=="none")
here.value=here.defaultValue;
list.style.display="none";
return this.keyProcessed(event);
}
return true; // key bubbles up
},
inputKeyHandler:
function(event,here,list,quiet,insert) {
var key=event.keyCode;
// non-printing chars... bubble up, except: backspace=8, enter=13, space=32, down=40, delete=46
if (key<48) switch(key) { case 8: case 13: case 32: case 40: case 46: break; default: return true; }
// blank input... if down/enter... fall through (list all)... else, and hide list
if (!here.value.length && !(key==40 || key==13))
{ list.style.display="none"; return this.keyProcessed(event); }
// find matching items...
var found = this.getItems(here.value);
// non-blank input... enter key... show/create tiddler
if (key==13) return this.processItem(here.value,here,list,insert);
// make sure list is shown/hidden
list.style.display=(!quiet && found.length)?"block":"none";
// no matches, key bubbles up
if (!found.length) return true;
// down key... shows/moves to list...
if (key==40) { list.style.display="block"; list.focus(); }
// finally, if list is showing, fill it with found results...
if (list.style.display!="none") {
while (list.length > 0) list.options[0]=null; // clear list
found.sort(); // alpha by title
var hdr=this.listHeading.format([found.length,found.length==1?"":"s"]);
list.options[0]=new Option(hdr,"",false,false);
for (var t=0; t<found.length; t++) // fill list...
list.options[list.length]=new Option(found[t]+this.getItemSuffix(found[t]),found[t],false,false);
list.size=(found.length<this.listMaxSize?found.length:this.listMaxSize)+1; // resize list...
list.selectedIndex=(key==40 || key==13)?1:0;
}
return true; // key bubbles up
},
listMaxSize: 10,
listHeading: 'Found %0 matching title%1:',
selectKeyHandler:
function(event,list,editfield,insert) {
if (event.keyCode==27) // escape... hide list, move to edit field
{ editfield.focus(); list.style.display="none"; return this.keyProcessed(event); }
if (event.keyCode==13 && list.value.length) // enter... view selected item
{ this.processItem(list.value,editfield,list,insert); return this.keyProcessed(event); }
return true; // key bubbles up
},
processItem:
function(title,here,list,insert) {
if (!title.length) return; here.value=title; list.style.display='none';
if (insert) {
var tidElem=story.findContainingTiddler(here); if (!tidElem) { here.focus(); return false; }
var e=story.getTiddlerField(tidElem.getAttribute("tiddler"),"text");
if (!e||e.getAttribute("edit")!="text") return false;
var txt=prompt(this.askForText,title); if (!txt||!txt.length) { here.focus(); return false; }
e.focus(); // put focus on target field before setting selection
replaceSelection(e,"[["+txt+"|"+title+"]]"); // insert selected tiddler as a PrettyLink
}
else
story.displayTiddler(null,title); // show selected tiddler
return false;
},
askForText: "Enter the text to display for this link"
}
//}}}
!What is ~FusionMap?
!!''"""FusionMap is an efficient fusion aligner which aligns reads spanning fusion junctions directly to the genome without prior knowledge of potential fusion regions. It detects and characterizes fusion junctions at base-pair resolution. FusionMap can be applied to detect fusion junctions in both single- and paired-end dataset from either gDNA-Seq or RNA-Seq studies."""''
!Getting Started
*[[Download]] ~FusionMap software and read recent updates
*Read [[System requirements]], [[Manual]] and [[Paper|http://bioinformatics.oxfordjournals.org/content/27/14/1922.full]]
*Follow the instructions to test ~FusionMap on example datasets.
** [[Example 1]]: a simple and small dataset;
** [[Example 2]]: a real ~RNA-Seq dataset with 14 million reads.
*Read common [[Q&A, Tips]]
*Please email to {{{fusionmapauthors AT gmail DOT com}}} to report any issue with ~FusionMap.
!Latest Updates
!!!@@12/08/2012@@
bug fix and software update
Support BAM file input for semap. ~FusionMap will use unmapped reads in the BAM files to do fusion alignment and detection.
See [[example of running FusionMap semap on BAM file]]
!!!@@10/02/2012@@
bug fix and software update
!!!@@08/16/2012@@
bug fix
!!!@@04/16/2012@@
Fix a bug dealing with the situation when read1 and read2 have the same name without /1 /2 or :1 :2.
Adding instruction to use OSA + ~FusionMap::pereport.
!!!@@03/03/2012@@
New release ~FusionMap.2012-03-03
* Use [[OSA|http://omicsoft.com/osa/]] as the basic aligner for ~FusionMap;
* Resolve some Memory problem using MMF;
* Resolve some I/O problem related to default Linux flushing mechanism
If your old mono is not working with ~FusionMap, we recommend using {{{MONO Version 2.10.8}}} or higher for latest ~FusionMap release.
Direct link to MONO 2.10.8: http://download.mono-project.com/sources/mono/mono-2.10.8.tar.gz
Use mono instead of mono-sgen in the latest MONO+~FusionMap
!!!@@01/01/2012@@
Happy new year! Wish you have a wonderful year 2012.
If your ~FusionMap reports "this version of software has expired", we have updated ~FusionMap with latest configuration. Please [[Download]] it again.
If you have not updated your ~FusionMap for a while, please read previous update notes.
!!!@@11/22/2011@@
*Allow users to specify the temp folder using a line ({{{TempPath=/tmp}}} in the {{{<output>}}} section) in the config/control file. We notice that some users are trying to run the ~FusionMap on a cluster and had file handler problem in tmp file I/O. User can solve this problem by specifying a Temp folder. {{{NOTE}}} Everything in the ~TempPath will be deleted in the end of ~FusionMap. Please create a folder (or check whether a folder exist), e.g. {{{/tmp/FusionMapTmp}}}, before you run ~FusionMap in the pipeline. It could be dangerous to wipe the whole {{{/tmp}}} folder in linux.
*Adding {{{Use32BitMode=False}}} to enforce 64bit running mode.
*Predict the 5' and 3' fusion gene (A->B, """BCR->ABL1"""), output the splice pattern and open reading frame status
Please see examples
| Control files | Log files |h
| [[2011-11-22 secontrol_InputPairedEndReads-Win64.config]] | [[2011-11-22 secontrol_InputPairedEndReads-Win64.log]] |
| [[2011-11-22 secontrol_InputPairedEndReads-Linux64.config]] | [[2011-11-22 secontrol_InputPairedEndReads-Linux64.log]] |
| [[2011-11-22 secontrol_InputSingleEndReads-Win64.config]] | [[2011-11-22 secontrol_InputSingleEndReads-Win64.log]] |
| [[2011-11-22 secontrol_InputSingleEndReads-Linux64.config]] | [[2011-11-22 secontrol_InputSingleEndReads-Linux64.log]] |
!!!@@10/09/2011@@
v2.1 has been released.
performance improvement update (no bug fix)
Find a bug in MONO 2.10.x. Please use ~FusionMap under MONO 2.8.1 now.
Direct link to MONO 2.8.1: http://ftp.novell.com/pub/mono/sources/mono/mono-2.8.1.tar.bz2
!!!@@08/12/2011@@
v2.0 has been released with the following changes:
*2x faster than before (especially for linux and thread>4 performance)
*Automatically clean temporary files when exits
*Output SAM file for paired end fusion report
@@color(red):RECOMENDATION@@: Apply ~FusionMap directly to the whole dataset
"""In the paper, we described a pre-processing step filtering with a regular read mapper, using Bowtie or Tophat. After that, these unmapped reads are used to run FusionMap. However, the preprocessing before applying FusionMap is optional. We later find that it is too complicated to ask user to find unmapped reads. We are now recommending user to run FusionMap directly on the whole dataset since it won't take too much time now. For paired-end reads, we added PairedEnd option in FusionMap, if user specify PairedEnd=True, FusionMap will pair two files and consider them as NGS raw reads from the same sample. """
See [[Example of input paired-end raw data files for FusionMap]]
!!!@@05/20/2011@@
v 1.42.1 has been released with the following changes:
add @@color(brown):"""PairedEnd"""@@ option.
~FusionMap is not limited to a single dataset, but rather can be applied to multiple NGS datasets in a single run. It provides an easy way to detecting recurrent fusion events by grouping fusion junctions by rows in one table. By default, {{{PairedEnd=False}}}, ~FusionMap considers each NGS file as one sample. If user input two NGS files, ~FusionMap runs fusion detection twice in a single run and generates one report grouping fusion junctions by rows in one table.
If user specify {{{PairedEnd=True}}}, ~FusionMap will pair two files and consider them as NGS reads from the same sample. It provides convenience if user wants to detection fusion junctions using the raw paired-end datasets.
@@color(brown):''Related reading:'' @@
[[Can I input raw read files to run FusionMap?]]
[[The filtering step in FusionMap]]
[[Example of input paired-end raw data files for FusionMap]]
!!!@@05/11/2011@@
@@color(brown): ~FusionMap paper has been accepted by Bioinformatics.@@ Please cite as below:
[[FusionMap: detecting fusion genes from next-generation sequencing data at base-pair resolution | http://bioinformatics.oxfordjournals.org/content/27/14/1922.full]]
Huanying Ge; Kejun Liu; Todd Juan; Fang Fang; Matthew Newman; Wolfgang Hoeck
Bioinformatics (2011) 27 (14): 1922-1928. doi: 10.1093/bioinformatics/btr310 [[BibTex format]]
!!!@@04/15/2011@@
v 1.42 has been released with the following changes:
(1) @@color(brown):Clean the parameters in control file.@@ User only needs to specify the parameters that are different from the default values (see [[(3) Options]]).
(2) @@color(brown):Applying a simple check rule on unmapped reads for seed fusion read selection.@@ In the previous version, ~FusionMap cut and aligned two ends of each unmapped read to the reference. In this version, ~FusionMap aligns the first and last α-nt (by default α=25 for 75nt reads) to the reference. If both α-nt short ends are mapped, ~FusionMap will choose it as a candidate seed read and then cut the read at all positions in the seed region to find an optimal cutting position for the fusion junction detection. This simple check speeds up the running time, particularly for large NGS dataset (>40 million reads).
(3) @@color(brown):Output the alignment of fusion reads in SAM format@@ which can be visualized in genome browsers (e.g. IGV) (see [[(4) Output files]]).
!!!@@02/23/2011@@
v 1.30 has been released: added advanced filtering based on gene black list and gene family list; further increased the specificity.
!!!@@11/30/2010@@
The website for ~FusionMap has been setup. Version 1.0 has been released.
A getting started instruction webpage is included for your convenience.
----
@@color(grey):The ~FusionMap website is built using [[TiddlyWiki|http://www.tiddlywiki.com/]]@@
!Notes from UCSC Genome Browser website: http://genome.ucsc.edu/goldenPath/help/bam.html
*Put both sorted BAM and index file (fusion.bam and fusion.bam.bai) to an http, https, or ftp location.
*Add a custom track in UCSC genome browser. A simple version of the "track" line will look something like this:
{{{
track type=bam name="FusionMap result" bigDataUrl=http://website.com/fusion.bam
}}}
*The associated index file must also be there as """http://website.com/fusion.bam.bai"""
*Submit and view in the Genome Browser.
Example [[link|http://dl.dropbox.com/u/7635496/FusionMap/Example/index.html]].
!IGV may not display all reads due to its limit.
!!New maximum depth setting for alignment tracks. (from IGV [[release note|http://www.broadinstitute.org/software/igv/v1.5]])
See the parameter in View->preference->alignment tab:
@@IGV now limits the maximum depth displayed as individual alignments. @@ All alignments are still used for the coverage track count, but if necessary they are down-sampled to the maximum depth setting for display. This results in a significant reduction in memory required for deep-coverage regions. For example, chrM of the CEU Daughter alignment file can now be loaded in ~150 MB, previously it took almost 10 GB to load the entire region. The default setting is 100x, and can be set on the Alignments tab of the user preferences window. The setting for an individual track can be changed dynamically by right-clicking over the alignments and setting the depth (second screenshot below).
However, usually, fusion BAM file is small. In order to see all fusion reads, @@''we suggest to set this value as 2000 or higher.''@@
!Answer to the question:
Yes, by setting {{{[0 < NonCanonicalSpliceJunctionPenalty < maximum alignment penalty for a read]}}}, ~FusionMap will favor fusion junctions with canonical splice pattern but also detect junctions without them. if {{{NonCanonicalSpliceJunctionPenalty = 0}}}, ~FusionMap will not favor fusion junctions with canonical splice pattern but the detection specificity will drop.
!Fusion junctions in ~RNA-Seq dataset
"""In gDNA-Seq fusion junctions detected are the actual fusion positions in the genome, while junctions detected in RNA-Seq are more likely to be splice junctions of fusion genes, as shown by studies (Levin, et al., 2009; Sboner, et al., 2010). """
!non-canonical splice pattern penalty in ~FusionMap
Thus, we defined a ~NonCanonicalSpliceJunctionPenalty for the mapped genomic location of fusion reads in ~RNA-Seq alignment (see [[(3) Options]]). It has been represented as ''G'' in the paper.
~FusionMap favors the cut and alignment that forms splice junctions by setting {{{NonCanonicalSpliceJunctionPenalty > 0}}}. When we set {{{NonCanonicalSpliceJunctionPenalty > maximum alignment penalty for a read}}}, it only detects fusion junctions with canonical splice patterns. """
By default, {{{NonCanonicalSpliceJunctionPenalty = 2}}} for ~RNA-Seq datasets. Because the maximum alignment penalty is 2 or 3 (number of mismatches plus the gap penalty) for a 75nt read, fusion junctions with canonical splice patterns were favored by setting {{{NonCanonicalSpliceJunctionPenalty = 2}}} and became the only choice for ~FusionMap detection by setting {{{NonCanonicalSpliceJunctionPenalty = 4}}}.
!Canonical splice junction v. exon boundaries
Some approach to detect fusion junction-spanning reads is mapping the reads to a set of artificially constructed exon–exon segments from potential fusion gene pairs (Levin, et al., 2009). Such an approach relies on prior knowledge of potential fusion regions and only identifies fusion junctions between known exons. In some cancer samples, we noticed that certain fusion breakpoint was using canonical splice patterns in the middle of known exon. Its canonical splice pattern on the exon boundary was either destroyed by translocation/deletion fusion events or skipped in the alternative splicing process. That is why ~FusionMap favored fusion junctions with canonical splice patterns rather than exon boundaries.
!Evaluation of ~FusionMap on simulated datasets
Please read [[Performance of FusionMap on simulated RNA-Seq datasets]]
!30+30nt fusion junction sequence does not represent seed reads
"""FusionMap users can check the detection results using BLAT of the 30+30nt fusion junction sequence. However, the 30+30nt junction sequence does not represent seed reads. Usually, input reads are longer than 60nt and the BLAT results using junction sequence do not reflect the alignment properties, e.g., the unique alignment of each part after cutting the seed reads. FusionMap does control the multiple mapping using the parameter β (the maximum hits of a read end after cutting). By default, we set β=1 which requires unique alignment of each end after cutting. FusionMap also filters out normal reads which had a perfect alignment with the genome in the first step."""
!~PRIM1-NACA example
Let us elaborate in details using the ~PRIM1-NACA fusion candidate as one example, which has been validated as a true fusion transcript in Levin, J.Z., et al. (2009). ~FusionMap detects the following:
|Breakpoint Pos1|Known Gene1|Breakpoint Pos2|Known Gene2|Fusion Junction Sequence|h
|chr12:57108471 |NACA|chr12:57127931|~PRIM1|~ATTCATCACTGTCAGATTCTGTTCCAGACCcactcttcttaagaagttctccttttcggg|
In dataset A (or example 2 on the website), ~PRIM1-NACA fusion was supported by 6 seed reads and 14 rescued reads.
Here is the result if we BLAT the whole 60nt junction sequence:
[img[http://www.omicsoft.com/fusionmap/images/PRIM1-NACA-1.png]]
The result shows that the uncut junction sequence has a perfect alignment with the genome but with a big gap size. BLAT will output such a perfect alignment for the junction sequence only if it is a read through event and two genes are very close.
A better approach is to BLAT the first 30nt and the last 30nt separately.
BLAT result for ATTCATCACTGTCAGATTCTGTTCCAGACC (NACA part):
[img[http://www.omicsoft.com/fusionmap/images/PRIM1-NACA-2.png]]
BLAT result for cactcttcttaagaagttctccttttcggg (~PRIM1 part)
[img[http://www.omicsoft.com/fusionmap/images/PRIM1-NACA-3.png]]
We can see that the 30nt junction sequence from NACA, ATTCATCACTGTCAGATTCTGTTCCAGACC, has multiple mapping. However, the multiple mapping of the junction sequence does not indicate the multiple mapping of seed reads. There are 6 seed reads supporting ~PRIM1-NACA fusion:
{{{
>@BI:081030_SL-XBF_0001_FC30CB2AAXX:7:99:264:536
GAAAAGGAGAACTTCTTAAGAAGAGTGGGTCTGGAACAGAATCTGACAGTGATGAATCAGTACCAGAGCTTGAAGA
>@BI:081030_SL-XBF_0001_FC30CB2AAXX:7:11:1447:1171
GATAAATCCCGAAAAGGAGAACTTCTTAAGAAGAGTGGGTCTGGAACAGAATCTGACAGTGATGAATCAGTACCAG
>@BI:081030_SL-XBF_0001_FC30CB2AAXX:7:18:688:451
TGGATAAATCCCGAAAAGGAGAACTTCTTAAGAAGAGTGGGTCTGGAACAGAATCTGACAGTGATGAATCAGTACC
>@BI:081030_SL-XBF_0001_FC30CB2AAXX:7:24:1037:577
GATAAATCCCGAAAAGGAGAACTTCTTAAGAAGAGTGGGTCTGGAACAGAATCTGACAGTGATGAATCAGTACCAG
>@BI:081030_SL-XBF_0001_FC30CB2AAXX:7:79:1739:1882
GATAAATCCCGAAAAGGAGAACTTCTTAAGAAGAGTGGGTCTGGAACAGAATCTGACAGTGATGAATCAGTACCAG
>@BI:081030_SL-XBF_0001_FC30CB2AAXX:7:97:778:1864
AAATCCCGAAAAGGAGAACTTCTTAAGAAGAGTGGGTCTGGAACAGAATCTGACAGTGATGAATCAGTACCAGAGC
}}}
Here is the BLAT result for the first seed read (BI:081030_SL-XBF_0001_FC30CB2AAXX:7:99:264:536).
For the GAAAAGGAGAACTTCTTAAGAAGAGTG portion:
[img[http://www.omicsoft.com/fusionmap/images/PRIM1-NACA-4.png]]
For the GGTCTGGAACAGAATCTGACAGTGATGAATCAGTACCAGAGCTTGAAGA portion:
[img[http://www.omicsoft.com/fusionmap/images/PRIM1-NACA-5.png]]
For this seed read, both ends after the optimal cutting can be mapped to multiple locations but each portion has a unique best mapping, as marked in blue.
!Related reading:
[[Some detected seed reads can be mapped to multiple positions using BLAT even after I specify beta=1 in FusionMap, why?]]
/***
|Name|InlineJavascriptPlugin|
|Source|http://www.TiddlyTools.com/#InlineJavascriptPlugin|
|Documentation|http://www.TiddlyTools.com/#InlineJavascriptPluginInfo|
|Version|1.9.6|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|Insert Javascript executable code directly into your tiddler content.|
''Call directly into TW core utility routines, define new functions, calculate values, add dynamically-generated TiddlyWiki-formatted output'' into tiddler content, or perform any other programmatic actions each time the tiddler is rendered.
!!!!!Documentation
>see [[InlineJavascriptPluginInfo]]
!!!!!Revisions
<<<
2010.12.15 1.9.6 allow (but ignore) type="..." syntax
|please see [[InlineJavascriptPluginInfo]] for additional revision details|
2005.11.08 1.0.0 initial release
<<<
!!!!!Code
***/
//{{{
version.extensions.InlineJavascriptPlugin= {major: 1, minor: 9, revision: 6, date: new Date(2010,12,15)};
config.formatters.push( {
name: "inlineJavascript",
match: "\\<script",
lookahead: "\\<script(?: type=\\\"[^\\\"]*\\\")?(?: src=\\\"([^\\\"]*)\\\")?(?: label=\\\"([^\\\"]*)\\\")?(?: title=\\\"([^\\\"]*)\\\")?(?: key=\\\"([^\\\"]*)\\\")?( show)?\\>((?:.|\\n)*?)\\</script\\>",
handler: function(w) {
var lookaheadRegExp = new RegExp(this.lookahead,"mg");
lookaheadRegExp.lastIndex = w.matchStart;
var lookaheadMatch = lookaheadRegExp.exec(w.source)
if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
var src=lookaheadMatch[1];
var label=lookaheadMatch[2];
var tip=lookaheadMatch[3];
var key=lookaheadMatch[4];
var show=lookaheadMatch[5];
var code=lookaheadMatch[6];
if (src) { // external script library
var script = document.createElement("script"); script.src = src;
document.body.appendChild(script); document.body.removeChild(script);
}
if (code) { // inline code
if (show) // display source in tiddler
wikify("{{{\n"+lookaheadMatch[0]+"\n}}}\n",w.output);
if (label) { // create 'onclick' command link
var link=createTiddlyElement(w.output,"a",null,"tiddlyLinkExisting",wikifyPlainText(label));
var fixup=code.replace(/document.write\s*\(/gi,'place.bufferedHTML+=(');
link.code="function _out(place,tiddler){"+fixup+"\n};_out(this,this.tiddler);"
link.tiddler=w.tiddler;
link.onclick=function(){
this.bufferedHTML="";
try{ var r=eval(this.code);
if(this.bufferedHTML.length || (typeof(r)==="string")&&r.length)
var s=this.parentNode.insertBefore(document.createElement("span"),this.nextSibling);
if(this.bufferedHTML.length)
s.innerHTML=this.bufferedHTML;
if((typeof(r)==="string")&&r.length) {
wikify(r,s,null,this.tiddler);
return false;
} else return r!==undefined?r:false;
} catch(e){alert(e.description||e.toString());return false;}
};
link.setAttribute("title",tip||"");
var URIcode='javascript:void(eval(decodeURIComponent(%22(function(){try{';
URIcode+=encodeURIComponent(encodeURIComponent(code.replace(/\n/g,' ')));
URIcode+='}catch(e){alert(e.description||e.toString())}})()%22)))';
link.setAttribute("href",URIcode);
link.style.cursor="pointer";
if (key) link.accessKey=key.substr(0,1); // single character only
}
else { // run script immediately
var fixup=code.replace(/document.write\s*\(/gi,'place.innerHTML+=(');
var c="function _out(place,tiddler){"+fixup+"\n};_out(w.output,w.tiddler);";
try { var out=eval(c); }
catch(e) { out=e.description?e.description:e.toString(); }
if (out && out.length) wikify(out,w.output,w.highlightRegExp,w.tiddler);
}
}
w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;
}
}
} )
//}}}
// // Backward-compatibility for TW2.1.x and earlier
//{{{
if (typeof(wikifyPlainText)=="undefined") window.wikifyPlainText=function(text,limit,tiddler) {
if(limit > 0) text = text.substr(0,limit);
var wikifier = new Wikifier(text,formatter,null,tiddler);
return wikifier.wikifyPlain();
}
//}}}
// // GLOBAL FUNCTION: $(...) -- 'shorthand' convenience syntax for document.getElementById()
//{{{
if (typeof($)=='undefined') { function $(id) { return document.getElementById(id.replace(/^#/,'')); } }
//}}}
/***
|Name:|LessBackupsPlugin|
|Description:|Intelligently limit the number of backup files you create|
|Version:|3.0.1 ($Rev: 2320 $)|
|Date:|$Date: 2007-06-18 22:37:46 +1000 (Mon, 18 Jun 2007) $|
|Source:|http://mptw.tiddlyspot.com/#LessBackupsPlugin|
|Author:|Simon Baird|
|Email:|simon.baird@gmail.com|
|License:|http://mptw.tiddlyspot.com/#TheBSDLicense|
!!Description
You end up with just backup one per year, per month, per weekday, per hour, minute, and second. So total number won't exceed about 200 or so. Can be reduced by commenting out the seconds/minutes/hours line from modes array
!!Notes
Works in IE and Firefox only. Algorithm by Daniel Baird. IE specific code by by Saq Imtiaz.
***/
//{{{
var MINS = 60 * 1000;
var HOURS = 60 * MINS;
var DAYS = 24 * HOURS;
if (!config.lessBackups) {
config.lessBackups = {
// comment out the ones you don't want or set config.lessBackups.modes in your 'tweaks' plugin
modes: [
//["YYYY", 365*DAYS], // one per year for ever
//["MMM", 31*DAYS], // one per month
["ddd", 7*DAYS], // one per weekday
//["d0DD", 1*DAYS], // one per day of month
//["h0hh", 24*HOURS], // one per hour
//["m0mm", 1*HOURS], // one per minute
//["s0ss", 1*MINS], // one per second
["latest",0] // always keep last version. (leave this).
]
};
}
window.getSpecialBackupPath = function(backupPath) {
var now = new Date();
var modes = config.lessBackups.modes;
for (var i=0;i<modes.length;i++) {
// the filename we will try
var specialBackupPath = backupPath.replace(/(\.)([0-9]+\.[0-9]+)(\.html)$/,
'$1'+now.formatString(modes[i][0]).toLowerCase()+'$3')
// open the file
try {
if (config.browser.isIE) {
var fsobject = new ActiveXObject("Scripting.FileSystemObject")
var fileExists = fsobject.FileExists(specialBackupPath);
if (fileExists) {
var fileObject = fsobject.GetFile(specialBackupPath);
var modDate = new Date(fileObject.DateLastModified).valueOf();
}
}
else {
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
file.initWithPath(specialBackupPath);
var fileExists = file.exists();
if (fileExists) {
var modDate = file.lastModifiedTime;
}
}
}
catch(e) {
// give up
return backupPath;
}
// expiry is used to tell if it's an 'old' one. Eg, if the month is June and there is a
// June file on disk that's more than an month old then it must be stale so overwrite
// note that "latest" should be always written because the expiration period is zero (see above)
var expiry = new Date(modDate + modes[i][1]);
if (!fileExists || now > expiry)
return specialBackupPath;
}
}
// hijack the core function
window.getBackupPath_mptw_orig = window.getBackupPath;
window.getBackupPath = function(localPath) {
return getSpecialBackupPath(getBackupPath_mptw_orig(localPath));
}
//}}}
!~FusionMap is extensively tested with MONO 2.8.1.
We are trying to test ~FusionMap with new version of MONO but it will take some time.
In the later version MONO, user may have to use {{{mono FusionMap.exe}}} rather than {{{mono-sgen FusionMap.exe}}} to be able to use threading.
Thank Martin for reporting this issue.
Please email to {{{fusionmapauthors AT gmail DOT com}}} to report your issue with ~FusionMap.
!Site Map:
[[Home]]
[[Download]]
[[System requirements]]
[[Manual]]
[[Example 1]]
[[Example 2]]
[[Supplementary]]
[[Q&A, Tips]]
[[Contact us]]
!Tag Cloud:
<<tagCloud>>
!~FusionMap program includes reference indexing, read filtering, fusion alignment and fusion reporting in one package
!!Contents
<<tagging helpFile>>
/***
|Name|NestedSlidersPlugin|
|Source|http://www.TiddlyTools.com/#NestedSlidersPlugin|
|Documentation|http://www.TiddlyTools.com/#NestedSlidersPluginInfo|
|Version|2.3.4|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides||
|Description|show content in nest-able sliding/floating panels, without creating separate tiddlers for each panel's content|
This plugin adds new wiki syntax for embedding 'slider' panels directly into tiddler content.
!!!!!Documentation
>see [[NestedSlidersPluginInfo]]
!!!!!Configuration
<<<
Enable animation for slider panels
<<option chkFloatingSlidersAnimate>> allow sliders to animate when opening/closing
>(note: This setting is in //addition// to the general option for enabling/disabling animation effects:
><<option chkAnimate>> enable animations (entire document)
>For slider animation to occur, you must also allow animation in general.
Debugging messages for 'lazy sliders' deferred rendering:
<<option chkDebugLazySliderDefer>> show debugging alert when deferring slider rendering
<<option chkDebugLazySliderRender>> show debugging alert when deferred slider is actually rendered
<<<
!!!!!Revisions
<<<
2008.01.08 - [*.*.*] plugin size reduction: documentation moved to ...Info tiddler
2007.12.28 - 2.3.4 added hijack for Animator.prototype.startAnimating(). Previously, the plugin code simply set the overflow to "visible" after animation. This code tweak corrects handling of elements that were styled with overflow=hidden/auto/scroll before animation by saving the overflow style and then restoring it after animation has completed.
|please see [[NestedSlidersPluginInfo]] for additional revision details|
2005.11.03 - 1.0.0 initial public release. Thanks to RodneyGomes, GeoffSlocock, and PaulPetterson for suggestions and experiments.
<<<
!!!!!Code
***/
//{{{
version.extensions.nestedSliders = {major: 2, minor: 3, revision: 4, date: new Date(2007,12,28)};
//}}}
//{{{
// options for deferred rendering of sliders that are not initially displayed
if (config.options.chkDebugLazySliderDefer==undefined) config.options.chkDebugLazySliderDefer=false;
if (config.options.chkDebugLazySliderRender==undefined) config.options.chkDebugLazySliderRender=false;
if (config.options.chkFloatingSlidersAnimate==undefined) config.options.chkFloatingSlidersAnimate=false;
// default styles for 'floating' class
setStylesheet(".floatingPanel { position:absolute; z-index:10; padding:0.5em; margin:0em; \
background-color:#eee; color:#000; border:1px solid #000; text-align:left; }","floatingPanelStylesheet");
//}}}
//{{{
config.formatters.push( {
name: "nestedSliders",
match: "\\n?\\+{3}",
terminator: "\\s*\\={3}\\n?",
lookahead: "\\n?\\+{3}(\\+)?(\\([^\\)]*\\))?(\\!*)?(\\^(?:[^\\^\\*\\[\\>]*\\^)?)?(\\*)?(?:\\{\\{([\\w]+[\\s\\w]*)\\{)?(\\[[^\\]]*\\])?(\\[[^\\]]*\\])?(?:\\}{3})?(\\#[^:]*\\:)?(\\>)?(\\.\\.\\.)?\\s*",
handler: function(w)
{
lookaheadRegExp = new RegExp(this.lookahead,"mg");
lookaheadRegExp.lastIndex = w.matchStart;
var lookaheadMatch = lookaheadRegExp.exec(w.source)
if(lookaheadMatch && lookaheadMatch.index == w.matchStart)
{
// var defopen=lookaheadMatch[1]
// var cookiename=lookaheadMatch[2]
// var header=lookaheadMatch[3]
// var panelwidth=lookaheadMatch[4]
// var transient=lookaheadMatch[5]
// var class=lookaheadMatch[6]
// var label=lookaheadMatch[7]
// var openlabel=lookaheadMatch[8]
// var panelID=lookaheadMatch[9]
// var blockquote=lookaheadMatch[10]
// var deferred=lookaheadMatch[11]
// location for rendering button and panel
var place=w.output;
// default to closed, no cookie, no accesskey, no alternate text/tip
var show="none"; var cookie=""; var key="";
var closedtext=">"; var closedtip="";
var openedtext="<"; var openedtip="";
// extra "+", default to open
if (lookaheadMatch[1]) show="block";
// cookie, use saved open/closed state
if (lookaheadMatch[2]) {
cookie=lookaheadMatch[2].trim().slice(1,-1);
cookie="chkSlider"+cookie;
if (config.options[cookie]==undefined)
{ config.options[cookie] = (show=="block") }
show=config.options[cookie]?"block":"none";
}
// parse label/tooltip/accesskey: [label=X|tooltip]
if (lookaheadMatch[7]) {
var parts=lookaheadMatch[7].trim().slice(1,-1).split("|");
closedtext=parts.shift();
if (closedtext.substr(closedtext.length-2,1)=="=")
{ key=closedtext.substr(closedtext.length-1,1); closedtext=closedtext.slice(0,-2); }
openedtext=closedtext;
if (parts.length) closedtip=openedtip=parts.join("|");
else { closedtip="show "+closedtext; openedtip="hide "+closedtext; }
}
// parse alternate label/tooltip: [label|tooltip]
if (lookaheadMatch[8]) {
var parts=lookaheadMatch[8].trim().slice(1,-1).split("|");
openedtext=parts.shift();
if (parts.length) openedtip=parts.join("|");
else openedtip="hide "+openedtext;
}
var title=show=='block'?openedtext:closedtext;
var tooltip=show=='block'?openedtip:closedtip;
// create the button
if (lookaheadMatch[3]) { // use "Hn" header format instead of button/link
var lvl=(lookaheadMatch[3].length>6)?6:lookaheadMatch[3].length;
var btn = createTiddlyElement(createTiddlyElement(place,"h"+lvl,null,null,null),"a",null,lookaheadMatch[6],title);
btn.onclick=onClickNestedSlider;
btn.setAttribute("href","javascript:;");
btn.setAttribute("title",tooltip);
}
else
var btn = createTiddlyButton(place,title,tooltip,onClickNestedSlider,lookaheadMatch[6]);
btn.innerHTML=title; // enables use of HTML entities in label
// set extra button attributes
btn.setAttribute("closedtext",closedtext);
btn.setAttribute("closedtip",closedtip);
btn.setAttribute("openedtext",openedtext);
btn.setAttribute("openedtip",openedtip);
btn.sliderCookie = cookie; // save the cookiename (if any) in the button object
btn.defOpen=lookaheadMatch[1]!=null; // save default open/closed state (boolean)
btn.keyparam=key; // save the access key letter ("" if none)
if (key.length) {
btn.setAttribute("accessKey",key); // init access key
btn.onfocus=function(){this.setAttribute("accessKey",this.keyparam);}; // **reclaim** access key on focus
}
btn.onmouseover=function(event) // mouseover on button aligns floater position with button
{ if (window.adjustSliderPos) window.adjustSliderPos(this.parentNode,this,this.sliderPanel); }
// create slider panel
var panelClass=lookaheadMatch[4]?"floatingPanel":"sliderPanel";
var panelID=lookaheadMatch[9]; if (panelID) panelID=panelID.slice(1,-1); // trim off delimiters
var panel=createTiddlyElement(place,"div",panelID,panelClass,null);
panel.button = btn; // so the slider panel know which button it belongs to
btn.sliderPanel=panel; // so the button knows which slider panel it belongs to
panel.defaultPanelWidth=(lookaheadMatch[4] && lookaheadMatch[4].length>2)?lookaheadMatch[4].slice(1,-1):"";
panel.setAttribute("transient",lookaheadMatch[5]=="*"?"true":"false");
panel.style.display = show;
panel.style.width=panel.defaultPanelWidth;
panel.onmouseover=function(event) // mouseover on panel aligns floater position with button
{ if (window.adjustSliderPos) window.adjustSliderPos(this.parentNode,this.button,this); }
// render slider (or defer until shown)
w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;
if ((show=="block")||!lookaheadMatch[11]) {
// render now if panel is supposed to be shown or NOT deferred rendering
w.subWikify(lookaheadMatch[10]?createTiddlyElement(panel,"blockquote"):panel,this.terminator);
// align floater position with button
if (window.adjustSliderPos) window.adjustSliderPos(place,btn,panel);
}
else {
var src = w.source.substr(w.nextMatch);
var endpos=findMatchingDelimiter(src,"+++","===");
panel.setAttribute("raw",src.substr(0,endpos));
panel.setAttribute("blockquote",lookaheadMatch[10]?"true":"false");
panel.setAttribute("rendered","false");
w.nextMatch += endpos+3;
if (w.source.substr(w.nextMatch,1)=="\n") w.nextMatch++;
if (config.options.chkDebugLazySliderDefer) alert("deferred '"+title+"':\n\n"+panel.getAttribute("raw"));
}
}
}
}
)
// TBD: ignore 'quoted' delimiters (e.g., "{{{+++foo===}}}" isn't really a slider)
function findMatchingDelimiter(src,starttext,endtext) {
var startpos = 0;
var endpos = src.indexOf(endtext);
// check for nested delimiters
while (src.substring(startpos,endpos-1).indexOf(starttext)!=-1) {
// count number of nested 'starts'
var startcount=0;
var temp = src.substring(startpos,endpos-1);
var pos=temp.indexOf(starttext);
while (pos!=-1) { startcount++; pos=temp.indexOf(starttext,pos+starttext.length); }
// set up to check for additional 'starts' after adjusting endpos
startpos=endpos+endtext.length;
// find endpos for corresponding number of matching 'ends'
while (startcount && endpos!=-1) {
endpos = src.indexOf(endtext,endpos+endtext.length);
startcount--;
}
}
return (endpos==-1)?src.length:endpos;
}
//}}}
//{{{
window.onClickNestedSlider=function(e)
{
if (!e) var e = window.event;
var theTarget = resolveTarget(e);
var theLabel = theTarget.firstChild.data;
var theSlider = theTarget.sliderPanel
var isOpen = theSlider.style.display!="none";
// toggle label
theTarget.innerHTML=isOpen?theTarget.getAttribute("closedText"):theTarget.getAttribute("openedText");
// toggle tooltip
theTarget.setAttribute("title",isOpen?theTarget.getAttribute("closedTip"):theTarget.getAttribute("openedTip"));
// deferred rendering (if needed)
if (theSlider.getAttribute("rendered")=="false") {
if (config.options.chkDebugLazySliderRender)
alert("rendering '"+theLabel+"':\n\n"+theSlider.getAttribute("raw"));
var place=theSlider;
if (theSlider.getAttribute("blockquote")=="true")
place=createTiddlyElement(place,"blockquote");
wikify(theSlider.getAttribute("raw"),place);
theSlider.setAttribute("rendered","true");
}
// show/hide the slider
if(config.options.chkAnimate && (!hasClass(theSlider,'floatingPanel') || config.options.chkFloatingSlidersAnimate))
anim.startAnimating(new Slider(theSlider,!isOpen,e.shiftKey || e.altKey,"none"));
else
theSlider.style.display = isOpen ? "none" : "block";
// reset to default width (might have been changed via plugin code)
theSlider.style.width=theSlider.defaultPanelWidth;
// align floater panel position with target button
if (!isOpen && window.adjustSliderPos) window.adjustSliderPos(theSlider.parentNode,theTarget,theSlider);
// if showing panel, set focus to first 'focus-able' element in panel
if (theSlider.style.display!="none") {
var ctrls=theSlider.getElementsByTagName("*");
for (var c=0; c<ctrls.length; c++) {
var t=ctrls[c].tagName.toLowerCase();
if ((t=="input" && ctrls[c].type!="hidden") || t=="textarea" || t=="select")
{ ctrls[c].focus(); break; }
}
}
var cookie=theTarget.sliderCookie;
if (cookie && cookie.length) {
config.options[cookie]=!isOpen;
if (config.options[cookie]!=theTarget.defOpen)
saveOptionCookie(cookie);
else { // remove cookie if slider is in default display state
var ex=new Date(); ex.setTime(ex.getTime()-1000);
document.cookie = cookie+"=novalue; path=/; expires="+ex.toGMTString();
}
}
// prevent SHIFT-CLICK from being processed by browser (opens blank window... yuck!)
// but allow plain click to bubble up to page background (to dismiss open popup, if any)
if (e.shiftKey) { e.cancelBubble=true; if (e.stopPropagation) e.stopPropagation(); }
return false;
}
//}}}
//{{{
// click in document background closes transient panels
document.nestedSliders_savedOnClick=document.onclick;
document.onclick=function(ev) { if (!ev) var ev=window.event; var target=resolveTarget(ev);
// call original click handler
if (document.nestedSliders_savedOnClick)
var retval=document.nestedSliders_savedOnClick.apply(this,arguments);
// if click was inside transient panel (or something contained by a transient panel)... leave it alone
var p=target;
while (p)
if ((hasClass(p,"floatingPanel")||hasClass(p,"sliderPanel"))&&p.getAttribute("transient")=="true") break;
else p=p.parentNode;
if (p) return retval;
// otherwise, find and close all transient panels...
var all=document.all?document.all:document.getElementsByTagName("DIV");
for (var i=0; i<all.length; i++) {
// if it is not a transient panel, or the click was on the button that opened this panel, don't close it.
if (all[i].getAttribute("transient")!="true" || all[i].button==target) continue;
// otherwise, if the panel is currently visible, close it by clicking it's button
if (all[i].style.display!="none") window.onClickNestedSlider({target:all[i].button})
}
return retval;
};
//}}}
//{{{
// adjust floating panel position based on button position
if (window.adjustSliderPos==undefined) window.adjustSliderPos=function(place,btn,panel) {
if (hasClass(panel,"floatingPanel")) {
var left=0;
var top=btn.offsetHeight;
if (place.style.position!="relative") {
var left=findPosX(btn);
var top=findPosY(btn)+btn.offsetHeight;
var p=place; while (p && !hasClass(p,'floatingPanel')) p=p.parentNode;
if (p) { left-=findPosX(p); top-=findPosY(p); }
}
if (findPosX(btn)+panel.offsetWidth > getWindowWidth()) // adjust position to stay inside right window edge
left-=findPosX(btn)+panel.offsetWidth-getWindowWidth()+15; // add extra 15px 'fudge factor'
panel.style.left=left+"px"; panel.style.top=top+"px";
}
}
function getWindowWidth() {
if(document.width!=undefined)
return document.width; // moz (FF)
if(document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) )
return document.documentElement.clientWidth; // IE6
if(document.body && ( document.body.clientWidth || document.body.clientHeight ) )
return document.body.clientWidth; // IE4
if(window.innerWidth!=undefined)
return window.innerWidth; // IE - general
return 0; // unknown
}
//}}}
//{{{
// TW2.1 and earlier:
// hijack Slider animation handler 'stop' handler so overflow is visible after animation has completed
Slider.prototype.coreStop = Slider.prototype.stop;
Slider.prototype.stop = function()
{ this.coreStop.apply(this,arguments); this.element.style.overflow = "visible"; }
// TW2.2+
// hijack start/stop handlers so overflow style is saved and restored after animation has completed
if (version.major+.1*version.minor+.01*version.revision>=2.2) {
/**
Animator.prototype.core_startAnimating = Animator.prototype.startAnimating;
Animator.prototype.startAnimating = function() {
for(var t=0; t<arguments.length; t++)
arguments[t].element.save_overflow=arguments[t].element.style.overflow;
return this.core_startAnimating.apply(this,arguments);
};
**/
Morpher.prototype.coreStop = Morpher.prototype.stop;
Morpher.prototype.stop = function() {
this.coreStop.apply(this,arguments);
this.element.style.overflow = this.element.save_overflow||"visible";
};
}
//}}}
!!When you build a gene model, you have to specify the reference library which should be the same as the one you built.
As we wrote in the [[Manual]]:
!!!!Building a Reference Library
"""FusionMap.exe --buildref FusionMap_Base_Dir fasta_file_name""" @@color(red):ref_lib_name@@
!!!!Building a Gene Model
"""FusionMap.exe --buildgm FusionMap_Base_Dir gtf_file_name""" @@color(red):ref_lib_name@@ @@color(green):gene_model_name@@
!!Example using Human.fasta as reference and ~HumanGene.gtf as gene model
"""FusionMap.exe --buildref /FusionMap_Base_Dir Human.fasta""" @@color(red):~ReferenceName1@@
"""FusionMap.exe --buildgm /FusionMap_Base_Dir HumanGene.gtf""" @@color(red):~ReferenceName1@@ @@color(green):~GeneModel1@@
You should have a folder structure for ~FusionMap_Base_Dir
"""/FusionMap_Base_Dir/Temp/"""
"""/FusionMap_Base_Dir/ReferenceLibrary/"""@@color(red):~ReferenceName1@@""".dreflib1"""
"""/FusionMap_Base_Dir/ReferenceLibrary/"""@@color(red):~ReferenceName1@@""".gindex1"""
"""/FusionMap_Base_Dir/ReferenceLibrary/"""@@color(red):~ReferenceName1@@"""_GeneModels/"""@@color(green):~GeneModel1@@""".gmodel2"""
When you run ~FusionMap, you can use the command:
"""FusionMap.exe --semap /FusionMap_Base_Dir """@@color(red):~ReferenceName1@@ @@color(green):~GeneModel1@@ """/FusionMap_Base_Dir/secontrol.txt > ./run.log"""
Make sure the the path to ~FusionMap_Base_Dir is right. Otherwise, ~FusionMap cannot find them and will go to search the online database.
!(1) Simulation datasets:
"""The simulation used H1 human embryonic stem cells (hESCs) as backgrounds which were not expected to harbor any fusion transcripts. Two background datasets (2x75nt) were downloaded from NCBI Sequence Read Archive (SRA) under accession no. SRR065491 and SRR066679, which were generated by the ENCODE Caltech RNA-Seq project (Birney, et al., 2007; Raney, et al., 2010). We simulated three datasets P1, P2 and P3.Each dataset contained 75nt paired-end reads from 50 simulated fusion transcripts and they were mixed with the background reads. The number of reads generated per fusion depended on the RPKM values of the genes forming the fusion transcript, and their insert fragment size was equal to the median insert size in the corresponding background dataset. """
!!Simulated fusion junctions in P1 & P2 were on known exon boundaries.
"""P1 and P2 were based on run SRR065491 and SRR066679, respectively.In both datasets, for each fusion gene, one breakpoint was randomly selected from ending points of exons in the first transcript and the other from starting points of exons in the second transcript, respectively. The simulated fusion junctions in both datasets, therefore, were on known exon boundaries."""
!!Breakpoints in P3 were in the middle of exons without known splice patterns
"""Moreover, since it is possible that the fusion junction may not have the canonical splice patterns, we also simulated an additional dataset, named P3, based on the background dataset from the run SRR066679. The simulation process was the same as described above expect that we chose the fusion breakpoints randomly in the middle of exons. The simulated fusion junctions in dataset P3 had no known splice patterns on the genome."""
!!Distribution of RPKM values of simulated fusion genes.
[img[http://www.omicsoft.com/fusionmap/images/SimulatedFusionRPKM.png]]
The histograms illustrate the distribution for simulated fusion genes, and the curves illustrate the density of RPKM values in corresponding background dataset. The gene pairs selected to form the fusion have a representation across the broad range of gene expression in the background.
Please read details in the Paper and its Supplementary Materials.
!(2) Evaluation of ~FusionMap in detecting 50 simulated fusion
[img[http://www.omicsoft.com/fusionmap/images/FusionDetection1.png]]
"""Performance of FusionMap on simulated RNA-Seq datasets. (A and C): dataset P1; (B and D): dataset P2. (A and B): number of false and true positives in results using varied parameter combinations. (C and D): detection accuracy of breakpoint positions measured by the distance between simulated and detected positions.
Because the maximum alignment penalty is 2 (number of mismatches plus the gap penalty) for a 75nt read, fusion junctions with canonical splice patterns were favored by setting G=2 and became the only choice for FusionMap detection by setting G=4. Thus the specificity was improved in dataset P1 and P2 by increasing G from 2 to 4."""
"""Among breakpoints detected for simulated fusion genes using G=2, close to 70% matched the exact positions in dataset P1 and P2 . We further examined the breakpoints with the genomic distance larger than five base-pairs and found the majority of them were actually close (<5bp) to the simulated positions at the transcript levels. The detected and simulated breakpoints were in two adjacent exons but far away at the genomic level which caused the aggregation step to fail to combine them into one. In fact, for the fusion gene with multiple detected junctions, if we only chose the one with the maximum number of seed reads, >96% of them matched the exact positions in dataset P1 and P2. Moreover, when using G=4, FusionMap detected one fusion junction per fusion gene, and the detection accuracy reached 100%."""
----
[img[http://www.omicsoft.com/fusionmap/images/FusionDetection2.png]]
"""Performance of FusionMap on simulated RNA-Seq dataset P3. Dataset P3 contains simulated fusion genes without splice patterns. (A): Number of false and true positives in detecting fusion junctions using different parameter settings. (B): Evaluating detection accuracy of breakpoint positions by calculating the distance between simulated and detected positions on each truly detected fusion genes. We found that the majority of simulated fusion genes (42 out of 50) were detected using {α=25, β=1, G=2}, and the sensitivity was slightly impaired using G=2 comparing to that from G=0."""
!!"""By default, FusionMap will automatically download a compiled genome and gene model, if the user is using human or mouse, and specifies the following tags in the FusionMap.exe command:"""
{{{
FusionMap.exe --semap FusionMap_Base_Dir ref_lib_name gene_model_name control_file_name
}}}
''~FusionMap_Base_Dir'' is the running environment folder for ~FusionMap.
!!!Reference (ref_lib_name):
Mouse.B36
Mouse.B37
Human.B36
Human.B37
!!!Gene Model (gene_model_name):
~RefGene
Ensembl.R60
Ensembl.R59
Ensembl.R58
Ensembl.R54
/***
|Name|SinglePageModePlugin|
|Source|http://www.TiddlyTools.com/#SinglePageModePlugin|
|Documentation|http://www.TiddlyTools.com/#SinglePageModePluginInfo|
|Version|2.9.7|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|Show tiddlers one at a time with automatic permalink, or always open tiddlers at top/bottom of page.|
This plugin allows you to configure TiddlyWiki to navigate more like a traditional multipage web site with only one tiddler displayed at a time.
!!!!!Documentation
>see [[SinglePageModePluginInfo]]
!!!!!Configuration
<<<
<<option chkSinglePageMode>> Display one tiddler at a time
><<option chkSinglePagePermalink>> Automatically permalink current tiddler
><<option chkSinglePageKeepFoldedTiddlers>> Don't close tiddlers that are folded
><<option chkSinglePageKeepEditedTiddlers>> Don't close tiddlers that are being edited
<<option chkTopOfPageMode>> Open tiddlers at the top of the page
<<option chkBottomOfPageMode>> Open tiddlers at the bottom of the page
<<option chkSinglePageAutoScroll>> Automatically scroll tiddler into view (if needed)
Notes:
* The "display one tiddler at a time" option can also be //temporarily// set/reset by including a 'paramifier' in the document URL: {{{#SPM:true}}} or {{{#SPM:false}}}.
* If more than one display mode is selected, 'one at a time' display takes precedence over both 'top' and 'bottom' settings, and if 'one at a time' setting is not used, 'top of page' takes precedence over 'bottom of page'.
* When using Apple's Safari browser, automatically setting the permalink causes an error and is disabled.
<<<
!!!!!Revisions
<<<
2010.11.30 2.9.7 use story.getTiddler()
2008.10.17 2.9.6 changed chkSinglePageAutoScroll default to false
| Please see [[SinglePageModePluginInfo]] for previous revision details |
2005.08.15 1.0.0 Initial Release. Support for BACK/FORWARD buttons adapted from code developed by Clint Checketts.
<<<
!!!!!Code
***/
//{{{
version.extensions.SinglePageModePlugin= {major: 2, minor: 9, revision: 7, date: new Date(2010,11,30)};
//}}}
//{{{
config.paramifiers.SPM = { onstart: function(v) {
config.options.chkSinglePageMode=eval(v);
if (config.options.chkSinglePageMode && config.options.chkSinglePagePermalink && !config.browser.isSafari) {
config.lastURL = window.location.hash;
if (!config.SPMTimer) config.SPMTimer=window.setInterval(function() {checkLastURL();},1000);
}
} };
//}}}
//{{{
if (config.options.chkSinglePageMode==undefined)
config.options.chkSinglePageMode=false;
if (config.options.chkSinglePagePermalink==undefined)
config.options.chkSinglePagePermalink=true;
if (config.options.chkSinglePageKeepFoldedTiddlers==undefined)
config.options.chkSinglePageKeepFoldedTiddlers=false;
if (config.options.chkSinglePageKeepEditedTiddlers==undefined)
config.options.chkSinglePageKeepEditedTiddlers=false;
if (config.options.chkTopOfPageMode==undefined)
config.options.chkTopOfPageMode=false;
if (config.options.chkBottomOfPageMode==undefined)
config.options.chkBottomOfPageMode=false;
if (config.options.chkSinglePageAutoScroll==undefined)
config.options.chkSinglePageAutoScroll=false;
//}}}
//{{{
config.SPMTimer = 0;
config.lastURL = window.location.hash;
function checkLastURL()
{
if (!config.options.chkSinglePageMode)
{ window.clearInterval(config.SPMTimer); config.SPMTimer=0; return; }
if (config.lastURL == window.location.hash) return; // no change in hash
var tids=decodeURIComponent(window.location.hash.substr(1)).readBracketedList();
if (tids.length==1) // permalink (single tiddler in URL)
story.displayTiddler(null,tids[0]);
else { // restore permaview or default view
config.lastURL = window.location.hash;
if (!tids.length) tids=store.getTiddlerText("DefaultTiddlers").readBracketedList();
story.closeAllTiddlers();
story.displayTiddlers(null,tids);
}
}
if (Story.prototype.SPM_coreDisplayTiddler==undefined)
Story.prototype.SPM_coreDisplayTiddler=Story.prototype.displayTiddler;
Story.prototype.displayTiddler = function(srcElement,tiddler,template,animate,slowly)
{
var title=(tiddler instanceof Tiddler)?tiddler.title:tiddler;
var tiddlerElem=story.getTiddler(title); // ==null unless tiddler is already displayed
var opt=config.options;
var single=opt.chkSinglePageMode && !startingUp;
var top=opt.chkTopOfPageMode && !startingUp;
var bottom=opt.chkBottomOfPageMode && !startingUp;
if (single) {
story.forEachTiddler(function(tid,elem) {
// skip current tiddler and, optionally, tiddlers that are folded.
if ( tid==title
|| (opt.chkSinglePageKeepFoldedTiddlers && elem.getAttribute("folded")=="true"))
return;
// if a tiddler is being edited, ask before closing
if (elem.getAttribute("dirty")=="true") {
if (opt.chkSinglePageKeepEditedTiddlers) return;
// if tiddler to be displayed is already shown, then leave active tiddler editor as is
// (occurs when switching between view and edit modes)
if (tiddlerElem) return;
// otherwise, ask for permission
var msg="'"+tid+"' is currently being edited.\n\n";
msg+="Press OK to save and close this tiddler\nor press Cancel to leave it opened";
if (!confirm(msg)) return; else story.saveTiddler(tid);
}
story.closeTiddler(tid);
});
}
else if (top)
arguments[0]=null;
else if (bottom)
arguments[0]="bottom";
if (single && opt.chkSinglePagePermalink && !config.browser.isSafari) {
window.location.hash = encodeURIComponent(String.encodeTiddlyLink(title));
config.lastURL = window.location.hash;
document.title = wikifyPlain("SiteTitle") + " - " + title;
if (!config.SPMTimer) config.SPMTimer=window.setInterval(function() {checkLastURL();},1000);
}
if (tiddlerElem && tiddlerElem.getAttribute("dirty")=="true") { // editing... move tiddler without re-rendering
var isTopTiddler=(tiddlerElem.previousSibling==null);
if (!isTopTiddler && (single || top))
tiddlerElem.parentNode.insertBefore(tiddlerElem,tiddlerElem.parentNode.firstChild);
else if (bottom)
tiddlerElem.parentNode.insertBefore(tiddlerElem,null);
else this.SPM_coreDisplayTiddler.apply(this,arguments); // let CORE render tiddler
} else
this.SPM_coreDisplayTiddler.apply(this,arguments); // let CORE render tiddler
var tiddlerElem=story.getTiddler(title);
if (tiddlerElem&&opt.chkSinglePageAutoScroll) {
// scroll to top of page or top of tiddler
var isTopTiddler=(tiddlerElem.previousSibling==null);
var yPos=isTopTiddler?0:ensureVisible(tiddlerElem);
// if animating, defer scroll until after animation completes
var delay=opt.chkAnimate?config.animDuration+10:0;
setTimeout("window.scrollTo(0,"+yPos+")",delay);
}
}
if (Story.prototype.SPM_coreDisplayTiddlers==undefined)
Story.prototype.SPM_coreDisplayTiddlers=Story.prototype.displayTiddlers;
Story.prototype.displayTiddlers = function() {
// suspend single/top/bottom modes when showing multiple tiddlers
var opt=config.options;
var saveSPM=opt.chkSinglePageMode; opt.chkSinglePageMode=false;
var saveTPM=opt.chkTopOfPageMode; opt.chkTopOfPageMode=false;
var saveBPM=opt.chkBottomOfPageMode; opt.chkBottomOfPageMode=false;
this.SPM_coreDisplayTiddlers.apply(this,arguments);
opt.chkBottomOfPageMode=saveBPM;
opt.chkTopOfPageMode=saveTPM;
opt.chkSinglePageMode=saveSPM;
}
//}}}
detecting fusion genes from next-generation sequencing data at base-pair resolution <<tiddler ToggleRightSidebar with: ".">>
!~FusionMap Software
<html>
<table width="100%" border="0">
<tr>
<td width="70%" valign="top">
<h1>Licence:</h1>
</td>
<td width="30%">
<iframe src="https://spreadsheets.google.com/embeddedform?formkey=dGZKcGlzQTZPUHRmRU5DR2lEbno3OHc6MQ" width="250" height="624" frameborder="0" marginheight="0" marginwidth="0">Loading...</iframe>
</td>
</tr>
</table>
</html>
"""For RNA-Seq dataset, it is worthwhile to mention that FusionMap first maps reads to the transcriptome and maps the remaining reads to the genome directly. If a read or a partial read is mapped to more than one location in the genome but is mapped uniquely in the transcriptome library, FusionMap still considers it as uniquely mapped. One example is another seed read for fusion PRIM1-NACA (BI:081030_SL-XBF_0001_FC30CB2AAXX:7:11:1447:1171)."""
{{{
>@BI:081030_SL-XBF_0001_FC30CB2AAXX:7:11:1447:1171
GATAAATCCCGAAAAGGAGAACTTCTTAAGAAGAGTGGGTCTGGAACAGAATCTGACAGTGATGAATCAGTACCAG
}}}
The GATAAATCCCGAAAAGGAGAACTTCTTAAGAAGAGTG portion has a unique best mapping on the genome:
[img[http://www.omicsoft.com/fusionmap/images/PRIM1-NACA-6.png]]
The GGTCTGGAACAGAATCTGACAGTGATGAATCAGTACCAG portion has three best mapping hits on the genome:
[img[http://www.omicsoft.com/fusionmap/images/PRIM1-NACA-7.png]]
However, there is no gene encoded in the second (chr10:121,757,131-121,757,169) and third (chr4:165,864,512-165,864,550) genomic region:
[img[http://www.omicsoft.com/fusionmap/images/PRIM1-NACA-8.png]]
!Related reading
[[In some cases, the junction sequence can be mapped to multiple positions using BLAT even after I specify beta=1 in FusionMap, why?]]
!Running time using ~FusionMap (release on 5/14/2011) on test samples. It has been improved 2X in the most recent version.
|ID|Read Length|α|Total read#|64bit Windows|64bit Linux|h
|Dataset 1| 76 |25|14,032,746|45min|1hr 10min |
|Dataset 2| 90 |30|26,000,000|1hr 51min|2hr 50min |
|Dataset 3| 76 |25|26,563,678|1hr 22min| 2hr 4min|
|Dataset 4| 76 |25|50,927,780|2hr 34min| 3hr 40min|
|Dataset 5| 76 |25|74,445,068|3hr 2min|4hr 16min |
|Dataset 6| 76 |25|100,145,890|7hr 11min| 11hr 2min|
*Running using {β=1, G=4}
* Windows 64 bit machine with Intel Xeon E5640 (2.66GHz, two Quad Cores) and 12GB RAM; Windows 7 OS
* Linux machine with Intel Xeon E5540(2.53GHz, two Quad Cores) and 16GB RAM; Ubuntu OS
*Raw data input and output folders are on two separate hard drives.
@@NOTE@@: The running time is closely related to the number of reads. The time is also related to the complexity of biological samples. For the same size of NGS dataset, we observed that ~FusionMap runs significantly longer in tumor than that in normal samples. It also runs longer in some tumor types, e.g. breast cancer samples. These tumor samples may have more sequence fragments that are different from the standard genome reference. These unmapped reads will be considered as possible fusion reads and ~FusionMap will spend longer time.
!@@2x faster now in the most recent version@@
!!"""FusionMap runs under both Windows and Linux (requiring MONO) environments and in both 32- and 64-bit modes."""
64-bit mode performs much faster but it requires 6GB RAM or more.
!!In Windows machine:
~FusionMap runs on Windows directly:
{{{
# FusionMap.exe
}}}
Screenshot:
[img[http://www.omicsoft.com/fusionmap/images/FusionMapScreenShot_win64.png]]
!!In Linux machine:
"""We recommend using MONO Version 2.10.8 or higher for latest ~FusionMap release. MONO should be compiled with the "with-large-heap=YES" compilation option, or FusionMap will not work."""
!!!!Download MONO
We recommend using MONO Version 2.10.8 or higher for latest ~FusionMap release.
Direct link to MONO 2.10.8: http://download.mono-project.com/sources/mono/mono-2.10.8.tar.gz
{{{
./configure --with-large-heap=yes
make
make install
}}}
use {{{sudo make install}}} if permission denied.
In Linux, using the following command to run ~FusionMap:
{{{
machine$ mono FusionMap.exe
}}}
Using {{{mono-sgen FusionMap.exe}}} in some version of MONO
Screenshot in Ubuntu 64bit:
[img[http://www.omicsoft.com/fusionmap/images/FusionMapScreenShot_ubuntu.png]]
!!In Mac OS X
The default installation of Mono on the Mac is 32-bit, while the OS is 64-bit. The last time we tried compiling and installing mono with the correct settings and in different ways, mono-sgen/mono did not run at all in 64-bit mode on the mac. If you have Parallels, you can run it in Windows, or you use something like ~VMWare and you can run it in Linux/windows running on the Mac, but right now, mono 64 bit for Mac is just not stable to run ~FusionMap.
/***
|Name|TagCloudPlugin|
|Source|http://www.TiddlyTools.com/#TagCloudPlugin|
|Version|0.0.0|
|Author|Clint Checketts|
|License|unknown|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides||
|Description||
!Usage
<<tagCloud>>
!Code
***/
//{{{
version.extensions.tagCloud = {major: 1, minor: 0 , revision: 0, date: new Date(2006,2,04)};
//Created by Clint Checketts, contributions by Jonny Leroy and Eric Shulman
config.macros.tagCloud = {
noTags: "No tag cloud created because there are no tags.",
tooltip: "%1 tiddlers tagged with '%0'"
};
config.shadowTiddlers.TagCloud="<<tagCloud>>";
config.macros.tagCloud.handler = function(place,macroName,params) {
var excludeTags = ['systemConfig', 'systemScript', 'systemTiddlers', 'excludeLists'];
var tagCloudWrapper = createTiddlyElement(place,"div",null,"tagCloud",null);
var tags = store.getTags();
for (var t=0; t<tags.length; t++) {
for (var p=0;p<params.length; p++) if (tags[t][0] == params[p]) tags[t][0] = "";
}
if(tags.length == 0)
createTiddlyElement(tagCloudWrapper,"span",null,null,this.noTags);
//Findout the maximum number of tags
var mostTags = 0;
for (var t=0; t<tags.length; t++) if (tags[t][0].length > 0){
if (tags[t][1] > mostTags) mostTags = tags[t][1];
}
//divide the mostTags into 4 segments for the 4 different tagCloud sizes
var tagSegment = mostTags / 4;
for (var t=0; t<tags.length; t++) if (tags[t][0].length > 0){
if (excludeTags.indexOf(tags[t][0])>=0) continue;
var tagCloudElement = createTiddlyElement(tagCloudWrapper,"span",null,null,null);
tagCloudWrapper.appendChild(document.createTextNode(" "));
var theTag = createTiddlyButton(tagCloudElement,tags[t][0],this.tooltip.format(tags[t]),onClickTag,"tagCloudtag tagCloud" + (Math.round(tags[t][1]/tagSegment)+1));
theTag.setAttribute("tag",tags[t][0]);
}
};
setStylesheet(".tagCloud span{height: 1.8em;margin: 3px;}.tagCloud1{font-size: 1.2em;}.tagCloud2{font-size: 1.4em;}.tagCloud3{font-size: 1.6em;}.tagCloud4{font-size: 1.8em;}.tagCloud5{font-size: 1.8em;font-weight: bold;}","tagCloudsStyles");
//}}}
{{{
fusionid UnmappedDatasetP2SimulatedReads_from_tophat.fastq.UniqueCuttingPositionCount UnmappedDatasetP2SimulatedReads_from_tophat.fastq.SeedCount UnmappedDatasetP2SimulatedReads_from_tophat.fastq.RescuedCount Strand Chromosome1 Position1 Chromosome2 Position2 KnownGene1 KnownTranscript1 KnownExonNumber1 KnownTranscriptStrand1 KnownGene2 KnownTranscript2 KnownExonNumber2 KnownTranscriptStrand2 FusionJunctionSequence SplicePattern
FUS_640668117_1228902508(--) 62 487 653 -- 12 120876182 19 580461 COX6A1 NM_004373_chr12 2 + BSG NM_001728_chr19,NM_198589_chr19,NM_198591_chr19 4,3,2 +++ CGAAGAAGGTGAGAGTCTTCCACATGCGAGcgtggagctggatgttggccgtgcccatgg GT-AG
FUS_684680688_2568453169(++) 60 123 149 ++ 13 31036849 7 134135538 HMGB1 NM_002128_chr13 4 - AKR1B1 NM_001628_chr7 3 - TACTCAGAGCAGAAGAGGAAGAAGGCCGAActtaaagccagtcggccagtgaataaggta GT-AG
FUS_576143803_2535201742(++) 59 96 126 ++ 12 56351868 7 100884111 SILV NM_006928_chr12 5 - FIS1 NM_016068_chr7 3 - CTGGGCCCCCTAGAACTTGCCAGTATTGGCcttgagccggtagttccccacggccaggta GT-AG
FUS_1967705332_2460560273(+-) 48 75 48 +- 4 76572341 7 26242642 G3BP2 NM_203504_chr4,NM_203505_chr4,NM_012297_chr4 9,10,10 --- CBX3 NM_016587_chr7,NM_007276_chr7 2,2 ++ CAGAGTCATTCTGTTCCATATCTCCTCTGCcaatgtagttttgttggaggccatttttta GT-AG
FUS_1311742400_2316342447(++) 54 72 79 ++ 2 24291329 6 53139888 SF3B14 NM_016047_chr2 3 - ELOVL5 NM_021814_chr6 5 - GCTGTTCCTCTAGTTTCAGGTGTGTTCCCCagtggccgcaggggacccagttcatcacaa GT-AG
FUS_1228939896_1373859493(++) 45 48 49 ++ 19 617849 2 86408422 POLRMT NM_005035_chr19 18 - IMMT NM_001100169_chr2,NM_006839_chr2,NM_001100170_chr2 2,2,2 --- TCGTGCACAGAGACGAAGGTCAGGCCCTTCccagagctgcctgaagtagagtatctgcgg GT-AG
FUS_1459255931_1687940670(--) 52 44 51 -- 2 171804860 22 46134719 GORASP2 NM_015530_chr2 2 + ATXN10 NM_001167621_chr22,NM_013236_chr22 7,8 ++ AGCTCTGTGTCCTGGGGAATTTTCTTGTACcaatcactctttccagcaagccagggaaaa GT-AG
FUS_11184689_446432191(++) 41 41 36 ++ 1 11184690 11 61646784 MTOR NM_004958_chr1 47 - FADS3 NM_021727_chr11 3 - GAAGGAAAACAAACTCATGTCCGTTGCTGCctgagagatggccaggatgaaggcggccag GT-AG
FUS_1675506166_2624113590(--) 40 35 35 -- 22 33700215 8 30657271 LARGE NM_133642_chr22,NM_004737_chr22 12,13 -- PPP2CB NM_001009552_chr8 2 - GCCCATGTATGGGCTCTATGAGTACCTCAGgcaaaggaaattttaacaaaagaatcaaat GT-AG
FUS_54427968_706894294(--) 37 29 33 -- 1 54427969 13 53250455 LRRC42 NM_052940_chr1 6 + SUGT1 NM_001130912_chr13,NM_006704_chr13 12,11 ++ CTGGAGCTTGTGCTTGACGGTTTTGATGTCctgctacgaattgttttggcgtaggcacat GT-AG
FUS_858470487_2261605881(--) 34 25 34 -- 14 89656728 5 179318586 FOXN3 NM_001085471_chr14 5 - TBC1D9B NM_198868_chr5,NM_015043_chr5 6,6 -- TGAATACTCCCCCTGAGATACAAGCAGGTTagacctggacgcccgagccaagaatgagtg GT-AG
FUS_1126900781_1228135785(++) 30 25 19 ++ 17 57851246 18 77890986 TMEM49 NM_030938_chr17 7 + ADNP2 NM_014913_chr18 3 + GAGATGCTGGAACATGCAGAGTCTGCACAAgaccttaaaggctttgatccaggagagaaa GT-AG
FUS_94341200_2301252727(-+) 32 24 26 -+ 1 94341201 6 38050168 DNTTIP2 NM_014597_chr1 3 - ZFAND3 NM_021943_chr6 4 + ACACAGATCAAGGAGAAAAAGAAAAATGAGgtgggccatgcacagacacagctcatgtct GT-AG
FUS_1109680142_2577279272(++) 28 23 15 ++ 17 40630607 7 142961641 ATP6V0A1 NM_001130020_chr17,NM_005177_chr17,NM_001130021_chr17 7,7,7 +++ GSTK1 NM_001143680_chr7,NM_001143679_chr7,NM_015917_chr7 3,3,3 +++ ATCGAGAACCCCCTGGAGGATCCTGTGACTgaaacaagcctccaggtctgcttccccgca GT-AG
FUS_569991698_2532977091(--) 21 18 8 -- 12 50199763 7 98659460 NCKAP5L NM_001037806_chr12 2 - SMURF1 NM_020429_chr7,NM_181349_chr7 2,2 -- GTGCCCACCTGCGTAAGGGGGCAGAGACAGtgttatgtgccaagaaccttgcaaagaaag GT-AG
FUS_565543008_1568268055(--) 23 18 10 -- 12 45751073 20 37617560 ANO6 NM_001025356_chr12,NM_001142678_chr12,NM_001142680_chr12,NM_001142679_chr12 8,8,9,8 ++++ DHX35 NR_033905_chr20,NM_021931_chr20,NM_001190809_chr20 5,5,4 +++ TAGATTCCAATCTTCTCTCCATAGTATTTCcttaattctcgtggccagctggtcggtgca GT-AG
FUS_941310563_2950614094(++) 22 17 9 ++ 15 65147236 X 69563727 PLEKHO2 NM_025201_chr15,NM_001195059_chr15 3,2 ++ KIF4A NM_012310_chrX 13 + TTTATCCTGCTGCGATCCCCAGGGAACAAGctgcaaactggatcttcaaaagctagtgga GT-AG
FUS_1276308465_2405727681(-+) 21 16 10 -+ 19 47986418 6 142525122 KPTN NM_007059_chr19 4 - VTA1 NM_016485_chr6 7 + GTTCACTCCGTTCCAGCTGTGCCATGCGGAgtgtagcaagtaatactatccaacctactc GT-AG
FUS_2270379565_2576885914(++) 23 16 16 ++ 6 7177006 7 142568283 RREB1 NM_001168344_chr6,NM_001003699_chr6,NM_001003700_chr6,NM_001003698_chr6 2,2,2,2 ++++ EPHB6 NM_004445_chr7 19 + GAGGGCAGCTTGATAACACAAAGAAAACAGgccttcccaggcccttctgacccctgtggc GT-AG
FUS_428931941_584877185(++) 28 12 28 ++ 11 44146534 12 65085250 EXT2 NM_207122_chr11,NM_001178083_chr11,NM_000401_chr11 5,5,5 +++ RASSF3 NM_178169_chr12 4 + CAGGTCTTCGATTACCCACAGGTGCTACAGtctacgcctgcaagctctcagaccgggaac GT-AG
FUS_52926894_576657838(++) 23 12 14 ++ 1 52926895 12 56865903 ZCCHC11 NM_015269_chr1,NM_001009881_chr1 19,19 -- GLS2 NM_013267_chr12 16 - AGTAGCTAGCATTCTTGTGTTATGTTGAGCcttcagctgcagcaacatgcagagctgtgc GT-AG
FUS_527046429_939193740(-+) 14 10 5 -+ 12 7254494 15 63030413 C1RL NM_016546_chr12 3 - TLN2 NM_015059_chr15 27 + AGGGCTTCCTGGCCCTCTACCAAACCGTGGgtggctaaagccgtctcacactccttgaat GT-AG
FUS_1686040824_2535279868(++) 16 10 11 ++ 22 44234873 7 100962237 SULT4A1 NM_014351_chr22 4 - RABL5 NM_001130820_chr7,NM_022777_chr7,NM_001130821_chr7 2,2,2 --- ATCCTTGGGGTTGCGAGCCATATAGATGACctcactccttgggttgggctgtattcagtg GT-AG
FUS_1408298994_2879828009(-+) 13 8 7 -+ 2 120847923 9 140007658 EPB41L5 NM_001184939_chr2,NM_001184938_chr2,NM_020909_chr2,NM_001184937_chr2 12,12,12,12 ++++ DPP7 NM_013379_chr9 6 - AAAGACAAATGTATGTTCCTGTTCTTTGCCctccctgtaggaacaagtccttgatctgtc GT-AG
FUS_510563590_1125836755(++) 14 6 13 ++ 11 125778183 17 56787220 DDX25 NM_013264_chr11 5 + RAD51C NM_058216_chr17 5 + GATGGCTCTCCCTATGATGCTGGCACATCCgttcgactagtgatagtggatggtattgct GT-AG
FUS_1142323099_1839353919(++) 14 6 9 ++ 17 73273564 3 146243392 SLC25A19 NM_001126122_chr17,NM_001126121_chr17,NM_021734_chr17 6,7,7 --- PLSCR1 NM_021105_chr3 5 - CACTGCCACAAAGCAGGTTTTGGAGGTTCTcttccagaagttcaatttgctgatgaatca GT-AG
FUS_269682969_2584403141(++) 24 5 26 ++ 10 20432346 7 150085510 PLXDC2 NM_032812_chr10 5 + ZNF775 NM_173680_chr7 2 + GAAATTCAACTGTCAGATATTTTGATAATGatggcaggaaagggacacagccggcgctga GT-AG
FUS_448043122_2574704421(-+) 12 5 8 -+ 11 63257715 7 140386790 HRASLS5 NM_054108_chr11,NM_001146728_chr11,NM_001146729_chr11 2,2,2 --- ADCK2 NM_052853_chr7 5 + ATTAGAACAGGGCAGAAGCATCCAGCAAGGatatttgtggataactttgtccatgcagac GT-AG
FUS_681489694_1672611127(++) 6 5 2 ++ 13 27845855 22 30805176 RASL11A NM_206827_chr13 3 + SEC14L2 NM_012429_chr22,NM_033382_chr22 6,6 ++ CAGATCCAGGATACTCCCGGGGGCGTCCAGttggggaggaaggtggagaccatcaccata GT-AG
FUS_40776817_2946874630(++) 7 4 4 ++ 1 40776818 X 65824263 COL9A2 NM_001852_chr1 12 - EDA2R NM_001199689_chrX,NM_021783_chrX,NM_001199687_chrX,NM_001199688_chrX 4,4,4,4 ---- ACCCAGAATCCCGCGTTTGCCCGCATGCCCattgaacctcagaggtgggggtctgcttcg GT-AG
FUS_1231308936_2879513905(++) 5 4 1 ++ 19 2986889 9 139693554 TLE6 NM_024760_chr19,NM_001143986_chr19 5,6 ++ KIAA1984 NM_001039374_chr9 2 + AGCCAACTCCAGGGTTTCCAGTCTGAGGAGagcagtgtcgggcactccagatccaagggg GT-AG
FUS_45268526_1998285927(+-) 7 4 4 +- 1 45268527 4 107152936 PLK3 NM_004073_chr1 6 + TBCK NM_001163436_chr4,NM_001163435_chr4,NM_033115_chr4,NM_001163437_chr4 18,18,16,18 ---- GGCGGATGTATGGTCACTGGGCTGTGTCATgtcttgactcactttgtgctccattcctat CT-AC
FUS_1133819640_2304974103(-+) 11 4 9 -+ 17 64770105 6 41771544 PRKCA NM_002737_chr17 14 + USP49 NM_018561_chr6 5 - AGATTTTCCATACGGCTGATAAGCGATTATtgttacactggtcacaagcgtagattctcc GT-AG
FUS_420281699_805966792(++) 7 4 3 ++ 11 35496292 14 37153033 PAMR1 NM_001001991_chr11,NM_015430_chr11 4,4 -- SLC25A21 NM_001171170_chr14,NM_030631_chr14 9,9 -- CCTTTGGGGCTCGCAGAACCTGGCCACATCctggtccaagtctcataatcttgggaagca GT-AG
FUS_1025814969_2697870063(++) 6 3 4 ++ 16 47120250 8 104413744 NETO2 NM_018092_chr16 8 - SLC25A32 NM_030780_chr8 6 - GGCAAAAGAAAGTGCTGCTTGTGCAGGGAGctccatgtctttgtgattacatctattaca GT-AG
FUS_1288619849_1704514929(--) 7 3 4 -- 2 1168778 3 11404402 SNTG2 NM_018968_chr2 8 + ATG7 NM_001144912_chr3,NM_001136031_chr3,NM_006395_chr3 14,15,15 +++ TGCTGTGGTCGCTGGATGGCCCTGGGGACCccttctggatgctgcaaaacagataccatc GT-AG
FUS_978010857_1316078296(+-) 4 3 1 +- 15 101847530 2 28627225 PCSK6 NM_138319_chr15,NM_002570_chr15 20,21 -- FOSL2 NM_005253_chr2 2 + CCTGCACAGCTCAAGCAGTTCTCGTCACACctgctcatctctcctcctgcggcccacggt GT-AG
FUS_247163213_1279331876(--) 9 3 6 -- 1 247163214 19 51009829 ZNF695 NM_020394_chr1 2 - JOSD2 NM_138334_chr19 4 - ATAGCTTCAATATGCAATTCCTATTTCACAgcccctgtcccagctggccctgccccaggt GT-AG
FUS_2848183777_2867558744(-+) 3 2 1 -+ 9 108363426 9 127738393 FKTN NM_006731_chr9,NM_001079802_chr9,NM_001198963_chr9 4,5,5 +++ SCAI NM_001144877_chr9,NM_173690_chr9 15,16 -- TGTTAACATAATAAATTTTTTAACTGCACGcttgtaaagcttttggatatgctgtaggag GT-AG
FUS_938405884_1035361971(-+) 5 2 3 -+ 15 62242557 16 56667252 VPS13C NM_020821_chr15,NM_001018088_chr15,NM_018080_chr15,NM_017684_chr15 41,41,39,39 ---- MT1M NM_176870_chr16 2 + ATTCATGACAGTACCAAACAGAGACTGAAGgtgtctcctgcgcctgcaccggctcctgca GT-AG
FUS_16069514_1286118092(--) 4 2 2 -- 1 16069515 19 57796045 TMEM82 NM_001013641_chr1 3 + ZNF460 NM_006635_chr19 2 + CGCTCCTTTTCGGGTCGCCGCTGCGGGTCAccagtgcgaccagaagcccacaggtctcca CT-AC
FUS_11918525_535496540(+-) 3 2 1 +- 1 11918526 12 15704605 NPPB NM_002521_chr1 2 - PTPRO NM_002848_chr12,NM_030671_chr12,NM_030669_chr12,NM_030668_chr12,NM_030667_chr12,NM_030670_chr12 15,3,3,3,15,3 ++++++ CAGTTTGCCCTGCAAATGGTTGCGCTGCTCctagccatctgcagatgctttttcctaaga GT-AG
FUS_1109141537_2572680901(+-) 3 2 1 +- 17 40092002 7 138363270 TTC25 NM_031421_chr17 3 + SVOPL NM_001139456_chr7 2 - CCCAGGAAGCCATCAACAACTCAGTGGGAAagccaaagacgttcaccgtggaagatgcag GT-AG
FUS_1272908213_2831006474(--) 3 2 1 -- 19 44586166 9 91186123 ZNF284 NM_001037813_chr19 4 + NXNL2 NM_145283_chr9 2 + GAAAAGTATCTCGGTGGGAAAGTTGATGCCctgtagtcccagatgctcaggaggctaagg GT-AG
FUS_1357203315_2035249989(+-) 3 1 2 +- 2 69752244 4 144116998 AAK1 NM_014911_chr2 10 - USP38 NM_032557_chr4 3 + TTCAGGAAGCTTTGCAGGAATGGGAGAGTTcagttctattttcagcaaagtaacatctat GT-AG
}}}
Results are based on {α=25, β=1, G=4}.
In order to view in a table, copy/paste into Excel.
!There are two reasons for the filtering step to be presented in the ~FusionMap pipeline:
(1) It provides flexible options that user can apply ~FusionMap directly to the whole dataset or unmapped reads after regular alignment.
(2) In the filtering step in ~FusionMap, by default, we relax the alignment parameter allowing at most 8% dissimilarity between each read and the reference. It allows at most six mismatches for a 75nt read. It can further filter our additional normal reads even after the regular alignment, such as the Bowtie filter, which allows less number of mismatches. The filtering step can reduce the false positives from the misalignment of “normal reads”.
Moreover, as we described in the user manual, the user can skip this filtering step by specifying {{{FilterUnlikelyFusionReads=False}}} if they prefer to filter these normal reads using other alignment methods.
/%
!info
|Name|ToggleRightSidebar|
|Source|http://www.TiddlyTools.com/#ToggleRightSidebar|
|Version|2.0.0|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|transclusion|
|Description|show/hide right sidebar (SideBarOptions)|
Usage
<<<
{{{
<<tiddler ToggleRightSidebar>>
<<tiddler ToggleRightSidebar with: label tooltip>>
}}}
Try it: <<tiddler ToggleRightSidebar##show
with: {{config.options.chkShowRightSidebar?'►':'◄'}}>>
<<<
Configuration:
<<<
copy/paste the following settings into a tiddler tagged with <<tag systemConfig>> and then modify the values to suit your preferences:
{{{
config.options.chkShowRightSidebar=false;
config.options.txtToggleRightSideBarLabelShow="◄";
config.options.txtToggleRightSideBarLabelHide="►";
}}}
<<<
!end
!show
<<tiddler {{
var co=config.options;
if (co.chkShowRightSidebar===undefined) co.chkShowRightSidebar=true;
var sb=document.getElementById('sidebar');
var da=document.getElementById('displayArea');
if (sb) {
sb.style.display=co.chkShowRightSidebar?'block':'none';
da.style.marginRight=co.chkShowRightSidebar?'':'1em';
}
'';}}>><html><nowiki><a href='javascript:;' title="$2"
onmouseover="
this.href='javascript:void(eval(decodeURIComponent(%22(function(){try{('
+encodeURIComponent(encodeURIComponent(this.onclick))
+')()}catch(e){alert(e.description?e.description:e.toString())}})()%22)))';"
onclick="
var co=config.options;
var opt='chkShowRightSidebar';
var show=co[opt]=!co[opt];
var sb=document.getElementById('sidebar');
var da=document.getElementById('displayArea');
if (sb) {
sb.style.display=show?'block':'none';
da.style.marginRight=show?'':'1em';
}
saveOptionCookie(opt);
var labelShow=co.txtToggleRightSideBarLabelShow||'◄';
var labelHide=co.txtToggleRightSideBarLabelHide||'►';
if (this.innerHTML==labelShow||this.innerHTML==labelHide)
this.innerHTML=show?labelHide:labelShow;
this.title=(show?'hide':'show')+' right sidebar';
var sm=document.getElementById('storyMenu');
if (sm) config.refreshers.content(sm);
return false;
">$1</a></html>
!end
%/<<tiddler {{
var src='ToggleRightSidebar';
src+(tiddler&&tiddler.title==src?'##info':'##show');
}} with: {{
var co=config.options;
var labelShow=co.txtToggleRightSideBarLabelShow||'◄';
var labelHide=co.txtToggleRightSideBarLabelHide||'►';
'$1'!='$'+'1'?'$1':(co.chkShowRightSidebar?labelHide:labelShow);
}} {{
var tip=(config.options.chkShowRightSidebar?'hide':'show')+' right sidebar';
'$2'!='$'+'2'?'$2':tip;
}}>>
{{{
|~ViewToolbar|closeTiddler closeOthers +editTiddler > fields syncing permalink references jump|
|~EditToolbar|+saveTiddler -cancelTiddler deleteTiddler|
}}}
|~ViewToolbar|closeTiddler closeOthers editTiddler > fields syncing permalink references jump|
|~EditToolbar|+saveTiddler -cancelTiddler deleteTiddler|
!ngsfse stand for Next Generation Sequencing Fusion detection from Single End
it is an intermediate binary file recording the fusion alignment. Since Version 1.41, ~FusionMap outputs SAM file for fusion alignment and ngsfse is not useful for user. Technically, .ngsfse file is just the binary format of SAM file in ~FusionMap's implementation.
We now still output ngsfse file temporally. Please @@delete@@ them if they are annoying to you.
"""In the latest FusionMap output, there is one more column for frameshift prediction. Three nucleotide position in each frame is note as position 0, 1, 2. [012][012][012] is amino acid coding pattern. If the FrameShift jumping from gene A to B is 0->1, 1->2, 2->0, then there is no frame shift in both gene A and B due to the fusion event. We infer this information based on the CDS information in gene model. Take BCR-ABL as example:"""
| ~FusionJunctionSequence | ~SplicePattern | ~FusionGene | ~FrameShit |h
|"""ACTCAGCCACTGGATTTAAGCAGAGTTCAAaagcccttcagcggccagtagcatctgact""" | """GT-AG""" | """BCR->ABL1""" | 0->1 |
It is connecting @@color(red):BCR[012][0@@@@color(blue):12][012]ABL@@.
Frame shift is inferred based on CDS information in gene model (get from GTF files). If the frame shit is just’ ->’, then should I assume that the breakpoint is not in the coding region for either gene and similarly, something like ‘->0’ would imply the breakpoint is in the coding region only for the second gene (in phase 0).
Be aware that it is limited to the gene model you used. For example, you may see it is "->" using ~RefGene model but may see it is annotated in Ensembl.
"""The main limitation of FusionMap is its reliance on long read lengths. FusionMap successfully detects the true genomic fusion in dataset B (gDNA-Seq dataset with 38nt reads for K562 CML) with high specificity, mainly because it is a targeted sequencing dataset for BCR-ABL1 only. In order to achieve high sensitivity and specificity, read lengths ≥50nt are preferred (≥75nt are much better) in whole genome/transcriptome sequencing datasets. FusionMap will benefit from longer read length and deeper coverage. """
!!~FusionMap runs in both 32- and 64-bit modes
For human genome hg19, the 64-bit index is based on 14mers. It takes about 5.8 Gb memory and this is the memory requirement for ~FusionMap. In 32-bit mode, the reference indexing is based on 12mers. The index file size is about 5.2 Gb, but the memory usage is fixed at <1 Gb memory because the index is broken into small pieces and loaded into memory sequentially.
!!The running time of ~FusionMap in 32bit mode depends on the read number and data quality. Examples:
For 2million ~RNA-Seq 76nt reads, ~FusionMap used 2hr 12min in 32bit mode and 11min in 64 bit mode.
For 47093 gDNA-Seq reads (unmapped reads from dataset B, ~SRX025461, as described in the paper), ~FusionMap used 10 min in 32bit mode and used 3min in 64 bit mode.
Save the following in a text file: secontrol.txt
{{{
<Files>
C:\...\TestDataset\input\UnmappedDatasetP2SimulatedReads_from_tophat.fastq
<Options>
RnaMode=True // Possible values: True, False. Default value=True
ThreadNumber=8 //Possible values: 1-100. Default value=1
SearchNovelExonJunction=False // Possible: True, False. Default=False, read through events<50Kb may missed if this option is on.
FileFormat=FASTQ // Possible values: FASTQ, QSEQ, FASTA. Default value=FASTQ
AutoPenalty=True // Possible values: True, False. Default value=True
FixedPenalty=2 // Possible values: 0-100. Default value=2
IndelPenalty=2 // Possible values: 0-100. Default value=2
DetectIndels=False //Possible values: True, False. Default value=False
Use32BitMode=False // Possible values: True, False. Default value = True for 64-bit OS and False for 32-bit OS
MaxMiddleInsertionSize=10 //Possible values: 1-50. Default value=10
MaxMiddleDeletionSize=10 //Possible values: 1-500. Default value=10
MaxEndInsertionSize=10 //Possible values: 1-50. Default value=10
MaxEndDeletionSize=10 //Possible values: 1-500. Default value=10
MaxDistalEndSize=3 //Possible values: 3-10. Default value=3
TrimByQuality=True // Possible values: True, False. Default value=True
ReadTrimSize=1024 //Possible values: 20-65536. Default value = 1024
ReadTrimQuality=2 //Possible values: 0-20. Default value=2
QualityEncoding=Automatic //Possible values: Automatic, Illumina, Sanger. Default value=Automatic
Gzip=False //Possible values: True, False. Default value=False
MinimalFusionAlignmentLength=25 //Possible values: 15-50. Default value=25
FilterUnlikelyFusionReads=True // Possible values: True, False. Default Value=True
MinimalFusionSpan=5000 //Possible values:0-500000. Default value=5000
MinimalHit=2 // Possible values: 1-10000, Default value =2
MinimalRescuedReadNumber=1 // Minimal rescued read number. Default value = 1
ReportUnannotatedFusion=False // Possible values: True, False. Default value = False
OutputFusionReads=True // Possible values: True, False. Default value = True
FusionReportCutoff=1 // Possible values: 1-1000. Default value=1
NonCanonicalSpliceJunctionPenalty=2 //Possible values: 01-. Default value = 2
FilterBy=DefaultList //Possible values: “DefaultList”, “CustomizedList”, or “None”
DefaultFilterListVersion=v1
FilterGeneListFileName= // Specify the file path if FilterBy=CustomizedList
FilterGeneFamilyFileName= // Specify the file path if FilterBy=CustomizedList
<Output>
OutputPath=C:\...\TestDataset\output
OutputName=TestDataset
}}}
See [[(3) Options]]
Save the following in a text file: secontrol.txt
{{{
<Files>
C:\...\TestDataset\input\UnmappedDatasetP2SimulatedReads_from_tophat.fastq
<Options>
ThreadNumber=8 //Possible values: 1-100. Default value=1
FileFormat=FASTQ // Possible values: FASTQ, QSEQ, FASTA. Default value=FASTQ
MinimalFusionAlignmentLength=25 //Possible values: 15-50. Default value=25 (alpha)
FusionReportCutoff=1 // Possible values: 1-1000. Default value=1, (beta)
NonCanonicalSpliceJunctionPenalty=4 //Possible values: 01-. Default value = 2, (G)
FilterBy=DefaultList //advanced filtering using default black list
OutputFusionReads=True // Possible values: True, False. Default value = True
<Output>
OutputPath=C:\...\TestDataset\output
OutputName=TestDataset
}}}
See [[(3) Options]]
{{{
[12:43 PM] Downloading from http://www.omicsoft.com/downloads/dreflib/Human.B37.dreflib1.gzip...
[12:53 PM] Unzipping file...
[12:54 PM] Building index for the reference library. This may take up to 30 minutes but only occur once for each reference library...
[12:54 PM] Creating offset array...
[12:54 PM] Loading all sequences into memory...
[12:54 PM] Calculating counts for each 14-mer...
[12:57 PM] Calculating cumulative positions...
[12:57 PM] Calculating virtual positions...
[1:03 PM] Saving index to file C:\tmp\FusionMap\reflib\ReferenceLibrary\Human.B37.gindex1...
[1:03 PM] Loading gene model...
[1:03 PM] Downloading from http://www.omicsoft.com/downloads/dreflib/Human.B37_RefGene.gmodel2.gzip...
[1:03 PM] Unzipping file...
}}}
''It only downloads only once for each reference and gene model.''
!Subscribe to ~FusionMap discussion group
Note: If you don't want to receive any email from the group, please remember to set the 'Delivery' type of your account as 'No Email'.
<html>
<form action="http://groups.google.com/group/fusionmapgroup/boxsubscribe">
<tr><td style="padding-left: 5px;">
Email: <input type=text name=email>
<input type=submit name="sub" value="Subscribe">
</td></tr>
</form>
</html>
|ColID| Desctiption |h
|~FusionID|Unique fusion ID|
|xxx.~UniqueCuttingPositionCount|# of distinct reads|
|xxx.~SeedCount|# of seed reads|
|xxx.~RescuedCount|# of rescued reads|
|Strand|fusion junction stand, ("""++/--""": the same strand, or """+-/-+""": opposite strands)|
|Chromosome1|Chr of fusion breakpoint 1|
|Position1|Genomic position of fusion breakpoint 1|
|Chromosome2|Chr of fusion breakpoint 2|
|Position2|Genomic position of fusion breakpoint 2|
|~KnownGene1|Known gene covering fusion breakpoint 1|
|~KnownTranscript1|Known transcript covering fusion breakpoint 1|
|~KnownExonNumber1|Strand of each known trasncript|
|~KnownTranscriptStrand1|Known exon of each transcript covering fusion breakpoint 1|
|~KnownGene2|Known gene covering fusion breakpoint 2|
|~KnownTranscript2|Known transcript covering fusion breakpoint 2|
|~KnownExonNumber2|Strand of each known trasncript|
|~KnownTranscriptStrand2|Known exon of each transcript covering fusion breakpoint 2|
|~FusionJunctionSequence|30nt+30nt fusion junction spanning sequence|
|~SplicePattern*|2nt-2nt splice sequence next to the fusion junction|
"""*: Three canonical splice patterns: GT-AG, GC-AG and AT-AC. SplicePattern may output the reverse complement of these canonical patterns, e.g., CT-AC is the reverse complement of GT-AG."""
!!We followed the format as described in [[SAMtools|http://samtools.sourceforge.net/SAM1.pdf]].
!!Each alignment line includes:
|Col | Field |h
|1|Read name |
|2|Bitwise FLAG |
|3|Reference sequence name, e.g, chromosome|
|4|1-based leftmost mapping position on the reference|
|5|Mapping quality |
|6|CIGAR string, e.g, match (M)+soft clip (S) |
|7|Reference sequence name of the mate fragment|
|8|1-based leftmost mapping position of the mate fragment on the reference|
|9|Observed insert length, but specified as 0 for inter chromosome fusion events |
|10|Sequence string|
|11|Quality string|
|12|Fusion tag, a unique ID for each fusion junction|
|13|Read type tag, specify the fusion read type, either seed or rescued.|
!!~FusionMap aligns fusion junction spanning reads to the genome.
Each fusion will be separated into two ends which were aligned to different locations. In the SAM output, we use two entries to describe the alignment of each fusion reads. For example:
{{{
R_1782:2 67 1 40776789 255 30M45S X 65824263 0
ACCCAGAATCCCGCGTTTGCCCGCATGCCCATTGAACCTCAGAGGTGGGGGTCTGCTTCGTGCACGGGATGCACT
283348985863448157653149274159715381432428925324118868345815774332128375427
ZF:Z:FUS_40776817_2946874630(++) ZT:Z:Seed
R_1782:2 131 X 65824263 255 30S45M 1 40776789 0
ACCCAGAATCCCGCGTTTGCCCGCATGCCCATTGAACCTCAGAGGTGGGGGTCTGCTTCGTGCACGGGATGCACT
283348985863448157653149274159715381432428925324118868345815774332128375427
ZF:Z:FUS_40776817_2946874630(++) ZT:Z:Seed
}}}
Read "R_1782:2" has been cut into two partial reads, one with 30nt and the other with 45nt. The first line represents the alignment of 30nt end using CIGAR 30M45S; the second line represents the alignment of 45nt end using CIGAR 30S45M .
example control file
{{{
<Files>
C:\MASS\omicsoft\FusionMap\TestDataset\output\DatasetP2_SimulatedReads.bam
<Options>
RnaMode=True
Use32BitMode=False
ThreadNumber=8 //Possible values: 1-100. Default value=1
FileFormat=BAM // Possible values: FASTQ, QSEQ, FASTA, BAM. Default value=FASTQ
MinimalFusionAlignmentLength=25 //Possible values: 15-50. Default value=25 (alpha)
FusionReportCutoff=1 // Possible values: 1-1000. Default value=1 (beta)
NonCanonicalSpliceJunctionPenalty=4 //Possible values: 01-. Default value = 2 (G)
MinimalHit=2 // Minimal distinct read; Possible values: 1-10000, Default value =2
MinimalRescuedReadNumber=1 // Minimal rescued read number. Default value = 1
OutputFusionReads=True // Possible values: True, False. Default value = True
FilterBy=DefaultList //advanced filtering using default black list from FusionMap, set to None to avoid automatic downloading
<Output>
TempPath=C:\tmp
OutputPath=C:\MASS\omicsoft\FusionMap\TestDataset\output
OutputName=TestDataset_InputBAMfile
}}}
{{{
[2:56 PM] Loading gene model...
[2:56 PM] Downloading from http://www.omicsoft.com/downloads/fusion/filtering/GeneList_v1.txt...
[2:56 PM] Downloading from http://www.omicsoft.com/downloads/fusion/filtering/GeneFamilyList_v1.txt...
[2:56 PM] Loading gene blacklist...
[2:56 PM] Loading gene family list...
[2:56 PM] Generating alignments for file: BI.081030_SL-XBF_0001_FC30CB2AAXX.7.fastq...
[2:56 PM] Quality encoding for file: C:\tmp\BI.081030_SL-XBF_0001_FC30CB2AAXX.7.fastq.gz was set to Sanger
[2:56 PM] Aligning full-length reads...
[2:56 PM] Loading index for the gene model...
[2:56 PM] Building mapping framework between transcriptome and genome...
[2:56 PM] Loading alignment index...
[2:56 PM] Loading reference sequence into memory...
[2:56 PM] Loading offsets...
[2:56 PM] Loading positions...
[2:56 PM] Aligning all reads to transcriptome...
[3:05 PM] Memory used = 53557576
[3:05 PM] Loading alignment index...
[3:05 PM] Loading reference sequence into memory...
[3:05 PM] Loading offsets...
[3:05 PM] Loading positions...
[3:05 PM] Aligning all reads to reference...
[3:15 PM] Merging results...
[3:18 PM] Memory used = 1212412784
[3:18 PM] 9391978 out of 14017455 was aligned with full length and thus filtered out (after quality based trimming and removing short trimmed reads)
[3:18 PM] Cutting full-length reads (by halve)...
[3:19 PM] Aligning read pairs...
[3:19 PM] Loading index for the gene model...
[3:19 PM] Building mapping framework between transcriptome and genome...
[3:19 PM] Loading alignment index...
[3:19 PM] Loading reference sequence into memory...
[3:19 PM] Loading offsets...
[3:19 PM] Loading positions...
[3:19 PM] Aligning all reads to transcriptome...
[3:20 PM] Memory used = 1214452328
[3:20 PM] Loading alignment index...
[3:20 PM] Loading offsets...
[3:20 PM] Loading positions...
[3:21 PM] Aligning all reads to reference...
[3:25 PM] Merging results...
[3:25 PM] Memory used = 1212416848
[3:25 PM] 883840 out of 4625477 was included in the final fusion alignment (after aligning each end and removing reads with neither end aligned)
[3:25 PM] Extracting prefix and suffix reads...
[3:25 PM] Aligning read pairs...
[3:25 PM] Loading index for the gene model...
[3:25 PM] Building mapping framework between transcriptome and genome...
[3:25 PM] Loading alignment index...
[3:25 PM] Loading reference sequence into memory...
[3:25 PM] Loading offsets...
[3:25 PM] Loading positions...
[3:25 PM] Aligning all reads to transcriptome...
[3:25 PM] Memory used = 1212617936
[3:25 PM] Loading alignment index...
[3:25 PM] Loading offsets...
[3:26 PM] Loading positions...
[3:26 PM] Aligning all reads to reference...
[3:26 PM] Merging results...
[3:26 PM] Memory used = 1212482360
[3:26 PM] 165521 potential seed reads and 718319 potential rescued reads were included in the next step fusion alignment (after aligning prefix and suffix reads)
[3:26 PM] Cutting full-length reads...
[3:26 PM] Aligning read pairs...
[3:26 PM] Loading index for the gene model...
[3:26 PM] Building mapping framework between transcriptome and genome...
[3:26 PM] Loading alignment index...
[3:26 PM] Loading reference sequence into memory...
[3:26 PM] Loading offsets...
[3:26 PM] Loading positions...
[3:26 PM] Aligning all reads to transcriptome...
[3:29 PM] Memory used = 1214587568
[3:29 PM] Loading alignment index...
[3:29 PM] Loading offsets...
[3:29 PM] Loading positions...
[3:29 PM] Aligning all reads to reference...
[3:32 PM] Merging results...
[3:32 PM] Memory used = 1224961128
[3:32 PM] Assemblying fusion junctions and performing additional alignments...
[3:32 PM] Writing novel fusion junctions to .fasta file...
[3:32 PM] Scanning sequences...
[3:32 PM] Encoding sequence...
[3:32 PM] Saving index to file C:\Temp\279ba446cf58a083.gindex2...
[3:32 PM] Creating offset array...
[3:32 PM] Calculating counts for each K-mer...
[3:32 PM] Calculating cumulative positions...
[3:32 PM] Calculating virtual positions...
[3:32 PM] Stage 2 alignment: loading fusion junction library...
[3:32 PM] Stage 2 alignment: aligning unmapped reads to fusion junctions...
[3:32 PM] Loading alignment index...
[3:32 PM] Loading offsets...
[3:32 PM] Loading positions...
[3:32 PM] Loading sequences...
[3:32 PM] Aligning all reads to reference...
[3:33 PM] Memory used = 1235578360
[3:33 PM] Combining results from two stages...
[3:33 PM] Preparing the genome search context...
[3:33 PM] Generating fusion report...
[3:33 PM] Importing single end fusion from file: BI.081030_SL-XBF_0001_FC30CB2AAXX.7.fastq.gz...
[3:33 PM] Preparing the genome search context...
[3:33 PM] Saving project...
[3:33 PM] Saving properties...
[3:33 PM] Saving audit trails...
[3:33 PM] Saving items...
[3:33 PM] Saving attachments...
[3:33 PM] Saving data...
}}}
{{{
FusionMap version 1.42
[9:51 PM] Windows OS detected...
FusionMap::semap -- version 1.42
[9:51 PM] Loading text information...
.
[9:51 PM] Automatic garbage collection will be performed...
[9:51 PM] Thread number=8
[9:51 PM] Loading gene model...
.....................................................................................................
[9:51 PM] Downloading from http://www.omicsoft.com/downloads/fusion/filtering/GeneList_v1.txt...
............................................
[9:51 PM] Downloading from http://www.omicsoft.com/downloads/fusion/filtering/GeneFamilyList_v1.txt...
.....................................................................................................
[9:51 PM] Loading gene blacklist...
.....................................................................................................
[9:51 PM] Loading gene family list...
.....................................................................................................
[9:51 PM] Generating alignments for file: UnmappedDatasetP2SimulatedReads_from_tophat...
[9:51 PM] Quality encoding for file: C:\tmp\FusionMap\TestDataset\input\UnmappedDatasetP2SimulatedReads_from_tophat.fastq was set to Sanger
[9:51 PM] Aligning full-length reads...
[9:51 PM] Loading index for the gene model...
[9:51 PM] Building mapping framework between transcriptome and genome...
.....................................................................................................
[9:51 PM] Loading alignment index...
[9:51 PM] Loading reference sequence into memory...
.....................................................................................................
[9:51 PM] Loading offsets...
.....................................................................................................
[9:51 PM] Loading positions...
...................................
[9:51 PM] Aligning all reads to transcriptome...
...................
[9:51 PM] Memory used = 42532912
[9:51 PM] Loading alignment index...
[9:51 PM] Loading reference sequence into memory...
.........................
[9:51 PM] Loading offsets...
.....................................................................................................
[9:51 PM] Loading positions...
.....................................................................................................
[9:51 PM] Aligning all reads to reference...
...................
[9:51 PM] Merging results...
...................
[9:51 PM] Memory used = 1203477368
[9:51 PM] 3802 out of 6701 was aligned with full length and thus filtered out (after quality based trimming and removing short trimmed reads)
[9:51 PM] Cutting full-length reads (by halve)...
........
[9:51 PM] Aligning read pairs...
[9:51 PM] Loading index for the gene model...
[9:51 PM] Building mapping framework between transcriptome and genome...
.....................................................................................................
[9:51 PM] Loading alignment index...
[9:51 PM] Loading reference sequence into memory...
.....................................................................................................
[9:51 PM] Loading offsets...
.....................................................................................................
[9:51 PM] Loading positions...
...................................
[9:51 PM] Aligning all reads to transcriptome...
........
[9:51 PM] Memory used = 1203419264
[9:51 PM] Loading alignment index...
[9:51 PM] Loading offsets...
.....................................................................................................
[9:51 PM] Loading positions...
.....................................................................................................
[9:52 PM] Aligning all reads to reference...
........
[9:52 PM] Merging results...
........
[9:52 PM] Memory used = 1203479216
[9:52 PM] 2885 out of 2899 was included in the final fusion alignment (after aligning each end and removing reads with neither end aligned)
[9:52 PM] Extracting prefix and suffix reads...
........
[9:52 PM] Aligning read pairs...
[9:52 PM] Loading index for the gene model...
[9:52 PM] Building mapping framework between transcriptome and genome...
.....................................................................................................
[9:52 PM] Loading alignment index...
[9:52 PM] Loading reference sequence into memory...
.....................................................................................................
[9:52 PM] Loading offsets...
.....................................................................................................
[9:52 PM] Loading positions...
...................................
[9:52 PM] Aligning all reads to transcriptome...
......
[9:52 PM] Memory used = 1203420304
[9:52 PM] Loading alignment index...
[9:52 PM] Loading offsets...
.....................................................................................................
[9:52 PM] Loading positions...
.....................................................................................................
[9:52 PM] Aligning all reads to reference...
......
[9:52 PM] Merging results...
......
[9:52 PM] Memory used = 1203415304
........
[9:52 PM] 1754 potential seed reads and 1131 potential rescued reads were included in the next step fusion alignment (after aligning prefix and suffix reads)
[9:52 PM] Cutting full-length reads...
.....
[9:52 PM] Aligning read pairs...
[9:52 PM] Loading index for the gene model...
[9:52 PM] Building mapping framework between transcriptome and genome...
.....................................................................................................
[9:52 PM] Loading alignment index...
[9:52 PM] Loading reference sequence into memory...
.....................................................................................................
[9:52 PM] Loading offsets...
.....................................................................................................
[9:52 PM] Loading positions...
...................................
[9:52 PM] Aligning all reads to transcriptome...
.....................................................................................................
[9:52 PM] Memory used = 1203438752
[9:52 PM] Loading alignment index...
[9:52 PM] Loading offsets...
.....................................................................................................
[9:52 PM] Loading positions...
.....................................................................................................
[9:52 PM] Aligning all reads to reference...
.....................................................................................................
[9:52 PM] Merging results...
.....................................................................................................
[9:52 PM] Memory used = 1204865296
[9:52 PM] Assemblying fusion junctions and performing additional alignments...
[9:52 PM] Writing novel fusion junctions to .fasta file...
[9:52 PM] Scanning sequences...
[9:52 PM] Encoding sequence...
.......................
[9:52 PM] Saving index to file C:\tmp\FusionMap\Temp\66dd28ccf4f3c053.gindex2...
.....................................................
[9:52 PM] Creating offset array...
[9:52 PM] Calculating counts for each K-mer...
.....................................................
[9:52 PM] Calculating cumulative positions...
[9:52 PM] Calculating virtual positions...
.....................................................
................
[9:52 PM] Stage 2 alignment: loading fusion junction library...
[9:52 PM] Stage 2 alignment: aligning unmapped reads to fusion junctions...
[9:52 PM] Loading alignment index...
[9:52 PM] Loading offsets...
.....................................................................................................
[9:52 PM] Loading positions...
[9:52 PM] Loading sequences...
.....................................................
[9:52 PM] Aligning all reads to reference...
....
[9:52 PM] Memory used = 1206228840
[9:52 PM] Combining results from two stages...
.......................................................
[9:52 PM] Preparing the genome search context...
.........................
..............................
[9:52 PM] Generating fusion report...
[9:52 PM] Importing single end fusion from file: UnmappedDatasetP2SimulatedReads_from_tophat.fastq...
[9:52 PM] Preparing the genome search context...
.........................
..............................
[9:52 PM] Saving table as text file...
.............................................
}}}
{{{
FusionMap version 1.41
[9:57 PM] Linux OS detected...
FusionMap::semap -- version 1.41
[9:57 PM] Loading text information...
.
[9:57 PM] Automatic garbage collection will be performed...
[9:57 PM] Thread number=8
[9:57 PM] Downloading from http://www.omicsoft.com/downloads/dreflib/Human.B37.dreflib1.gzip...
.....................................................................................................
[10:06 PM] Unzipping file...
.....................................................................................................
[10:06 PM] Building index for the reference library. This may take up to 30 minutes but only occur once for each reference library...
[10:06 PM] Creating offset array...
[10:06 PM] Loading all sequences into memory...
.........................
[10:07 PM] Calculating counts for each 14-mer...
.........................
[10:09 PM] Calculating cumulative positions...
[10:09 PM] Calculating virtual positions...
.........................
[10:14 PM] Saving index to file /tmp/FusionMap/ReferenceLibrary/Human.B37.gindex1...
.....................................................................................................
.....................................................................................................
[10:14 PM] Loading gene model...
[10:14 PM] Downloading from http://www.omicsoft.com/downloads/dreflib/Human.B37_RefGene.gmodel2.gzip...
.....................................................................................................
[10:14 PM] Unzipping file...
..........................................
.....................................................................................................
[10:14 PM] Downloading from http://www.omicsoft.com/downloads/fusion/filtering/GeneList_v1.txt...
...................................................................................................
[10:14 PM] Downloading from http://www.omicsoft.com/downloads/fusion/filtering/GeneFamilyList_v1.txt...
.....................................................................................................
[10:14 PM] Loading gene blacklist...
.....................................................................................................
[10:14 PM] Loading gene family list...
.....................................................................................................
[10:14 PM] Generating alignments for file: UnmappedDatasetP2SimulatedReads_from_tophat...
[10:14 PM] Quality encoding for file: /tmp/FusionMap/TestDataset/input/UnmappedDatasetP2SimulatedReads_from_tophat.fastq was set to Sanger
[10:14 PM] Aligning full-length reads...
[10:14 PM] Building transcriptome from gene model, this only occur once for each gene model...
.....................................................................................................
[10:14 PM] Scanning sequences...
[10:14 PM] Encoding sequence...
.....................................................................................................
[10:14 PM] Building index from gene model, this may take up to 30 minutes but only occur once for each gene model...
[10:14 PM] Creating offset array...
[10:14 PM] Loading all sequences into memory...
.....................................................................................................
[10:14 PM] Calculating counts for each 14-mer...
.....................................................................................................
[10:15 PM] Calculating cumulative positions...
[10:15 PM] Calculating virtual positions...
.....................................................................................................
[10:15 PM] Saving index to file /tmp/FusionMap/ReferenceLibrary/Human.B37_GeneModels/RefGene.tindex1...
.....................................................................................................
...................................
[10:15 PM] Loading index for the gene model...
[10:15 PM] Building mapping framework between transcriptome and genome...
.....................................................................................................
[10:15 PM] Loading alignment index...
[10:15 PM] Loading reference sequence into memory...
.....................................................................................................
[10:15 PM] Loading offsets...
.....................................................................................................
[10:15 PM] Loading positions...
...................................
[10:15 PM] Aligning all reads to transcriptome...
...................
[10:15 PM] Memory used = 1212771400
[10:15 PM] Loading alignment index...
[10:15 PM] Loading reference sequence into memory...
.........................
[10:15 PM] Loading offsets...
.....................................................................................................
[10:15 PM] Loading positions...
.....................................................................................................
[10:15 PM] Aligning all reads to reference...
...................
[10:15 PM] Merging results...
...................
[10:15 PM] Memory used = 2373651696
[10:15 PM] 3802 out of 6701 was aligned with full length and thus filtered out (after quality based trimming and removing short trimmed reads)
[10:15 PM] Cutting full-length reads (by halve)...
........
[10:15 PM] Aligning read pairs...
[10:15 PM] Loading index for the gene model...
[10:15 PM] Building mapping framework between transcriptome and genome...
.....................................................................................................
[10:15 PM] Loading alignment index...
[10:15 PM] Loading reference sequence into memory...
.....................................................................................................
[10:15 PM] Loading offsets...
.....................................................................................................
[10:15 PM] Loading positions...
...................................
[10:15 PM] Aligning all reads to transcriptome...
........
[10:15 PM] Memory used = 2373652664
[10:15 PM] Loading alignment index...
[10:15 PM] Loading offsets...
.....................................................................................................
[10:15 PM] Loading positions...
.....................................................................................................
[10:15 PM] Aligning all reads to reference...
........
[10:15 PM] Merging results...
........
[10:15 PM] Memory used = 2373646296
[10:15 PM] 2885 out of 2899 was included in the final fusion alignment (after aligning each end and removing reads with neither end aligned)
[10:15 PM] Extracting prefix and suffix reads...
........
[10:15 PM] Aligning read pairs...
[10:15 PM] Loading index for the gene model...
[10:15 PM] Building mapping framework between transcriptome and genome...
.....................................................................................................
[10:15 PM] Loading alignment index...
[10:15 PM] Loading reference sequence into memory...
.....................................................................................................
[10:15 PM] Loading offsets...
.....................................................................................................
[10:15 PM] Loading positions...
...................................
[10:15 PM] Aligning all reads to transcriptome...
......
[10:15 PM] Memory used = 2373726688
[10:15 PM] Loading alignment index...
[10:15 PM] Loading offsets...
.....................................................................................................
[10:15 PM] Loading positions...
.....................................................................................................
[10:15 PM] Aligning all reads to reference...
......
[10:15 PM] Merging results...
......
[10:15 PM] Memory used = 2373714584
........
[10:15 PM] 1754 potential seed reads and 1131 potential rescued reads were included in the next step fusion alignment (after aligning prefix and suffix reads)
[10:15 PM] Cutting full-length reads...
.....
[10:15 PM] Aligning read pairs...
[10:15 PM] Loading index for the gene model...
[10:15 PM] Building mapping framework between transcriptome and genome...
.....................................................................................................
[10:15 PM] Loading alignment index...
[10:15 PM] Loading reference sequence into memory...
.....................................................................................................
[10:15 PM] Loading offsets...
.....................................................................................................
[10:15 PM] Loading positions...
...................................
[10:15 PM] Aligning all reads to transcriptome...
.....................................................................................................
[10:16 PM] Memory used = 2373865104
[10:16 PM] Loading alignment index...
[10:16 PM] Loading offsets...
.....................................................................................................
[10:16 PM] Loading positions...
.....................................................................................................
[10:16 PM] Aligning all reads to reference...
.....................................................................................................
[10:16 PM] Merging results...
.....................................................................................................
[10:16 PM] Memory used = 2375546808
[10:16 PM] Assemblying fusion junctions and performing additional alignments...
[10:16 PM] Writing novel fusion junctions to .fasta file...
[10:16 PM] Scanning sequences...
[10:16 PM] Encoding sequence...
.......................
[10:16 PM] Saving index to file /tmp/FusionMap/Temp/f437a5b022786236.gindex2...
.....................................................
[10:16 PM] Creating offset array...
[10:16 PM] Calculating counts for each K-mer...
.....................................................
[10:16 PM] Calculating cumulative positions...
[10:16 PM] Calculating virtual positions...
.....................................................
................
[10:16 PM] Stage 2 alignment: loading fusion junction library...
[10:16 PM] Stage 2 alignment: aligning unmapped reads to fusion junctions...
[10:16 PM] Loading alignment index...
[10:16 PM] Loading offsets...
.....................................................................................................
[10:16 PM] Loading positions...
[10:16 PM] Loading sequences...
.....................................................
[10:16 PM] Aligning all reads to reference...
....
[10:16 PM] Memory used = 2376942192
[10:16 PM] Combining results from two stages...
.......................................................
[10:16 PM] Preparing the genome search context...
.........................
..............................
[10:16 PM] Generating fusion report...
[10:16 PM] Importing single end fusion from file: UnmappedDatasetP2SimulatedReads_from_tophat.fastq...
[10:16 PM] Preparing the genome search context...
.........................
..............................
[10:16 PM] Saving table as text file...
.............................................
}}}
if(config.options.txtUserName != "FusionMapAuthors") {
config.options.chkSinglePageMode= true;
readOnly = true;
showBackstage = false;
config.options.chkShowRightSidebar=false;
}