Repository 's_mart'
hg clone https://toolshed.g2.bx.psu.edu/repos/yufei-luo/s_mart

Changeset 18:94ab73e8a190 (2013-04-29)
Previous changeset 17:b0e8584489e6 (2013-04-22) Next changeset 19:9bcfa7936eec (2013-04-29)
Commit message:
Uploaded
modified:
SMART/Java/Python/CleanTranscriptFile.py
SMART/Java/Python/CollapseReads.py
SMART/Java/Python/ComputeCoverage.py
SMART/Java/Python/GetDistribution.py
SMART/Java/Python/GetFlanking.py
SMART/Java/Python/GetReadDistribution.py
SMART/Java/Python/GetReadSizes.py
SMART/Java/Python/__init__.pyc
SMART/Java/Python/clusterize.py
SMART/Java/Python/getSizes.py
SMART/Java/Python/misc/Progress.pyc
SMART/Java/Python/misc/RPlotter.py
SMART/Java/Python/misc/UnlimitedProgress.pyc
SMART/Java/Python/misc/Utils.pyc
SMART/Java/Python/misc/__init__.pyc
SMART/Java/Python/mySql/MySqlConnection.py
SMART/Java/Python/mySql/MySqlExonTable.pyc
SMART/Java/Python/mySql/MySqlQuery.py
SMART/Java/Python/mySql/MySqlTable.py
SMART/Java/Python/mySql/MySqlTable.pyc
SMART/Java/Python/mySql/MySqlTranscriptTable.py
SMART/Java/Python/mySql/MySqlTranscriptTable.pyc
SMART/Java/Python/mySql/__init__.pyc
SMART/Java/Python/ncList/NCIndex.pyc
SMART/Java/Python/ncList/NCList.pyc
SMART/Java/Python/ncList/NCListCursor.pyc
SMART/Java/Python/ncList/NCListFilePickle.pyc
SMART/Java/Python/ncList/__init__.pyc
SMART/Java/Python/plot.py
SMART/Java/Python/plotCoverage.py
SMART/Java/Python/removeEmptySequences.py
SMART/Java/Python/structure/Bins.pyc
SMART/Java/Python/structure/Interval.py
SMART/Java/Python/structure/Interval.pyc
SMART/Java/Python/structure/Mapping.pyc
SMART/Java/Python/structure/Sequence.pyc
SMART/Java/Python/structure/SequenceList.pyc
SMART/Java/Python/structure/SubMapping.pyc
SMART/Java/Python/structure/Transcript.py
SMART/Java/Python/structure/Transcript.pyc
SMART/Java/Python/structure/TranscriptContainer.pyc
SMART/Java/Python/structure/TranscriptList.pyc
SMART/Java/Python/structure/__init__.pyc
SMART/galaxy/CleanTranscriptFile.xml
SMART/galaxy/Clusterize.xml
SMART/galaxy/CollapseReads.xml
SMART/galaxy/CompareOverlappingSmallQuery.xml
SMART/galaxy/CompareOverlappingSmallRef.xml
SMART/galaxy/ConvertTranscriptFile.xml
SMART/galaxy/CountReadGCPercent.xml
SMART/galaxy/GetDifferentialExpression.xml
SMART/galaxy/GetFlanking.xml
SMART/galaxy/SelectByTag.xml
SMART/galaxy/WrappGetLetterDistribution.xml
SMART/galaxy/changeGffFeatures.xml
SMART/galaxy/changeTagName.xml
SMART/galaxy/clusterizeBySlidingWindows.xml
SMART/galaxy/compareOverlapping.xml
SMART/galaxy/computeCoverage.xml
SMART/galaxy/coordinatesToSequence.xml
SMART/galaxy/getDifference.xml
SMART/galaxy/getDistance.xml
SMART/galaxy/getDistribution.xml
SMART/galaxy/getExons.xml
SMART/galaxy/getIntrons.xml
SMART/galaxy/getReadDistribution.xml
SMART/galaxy/getSizes.xml
SMART/galaxy/getWigData.xml
SMART/galaxy/getWigDistance.xml
SMART/galaxy/getWigProfile.xml
SMART/galaxy/mapperAnalyzer.xml
SMART/galaxy/mergeSlidingWindowsClusters.xml
SMART/galaxy/mergeTranscriptLists.xml
SMART/galaxy/modifyGenomicCoordinates.xml
SMART/galaxy/modifySequenceList.xml
SMART/galaxy/plotCoverage.xml
SMART/galaxy/plotTranscriptList.xml
SMART/galaxy/removeExonLines.xml
SMART/galaxy/restrictFromSize.xml
SMART/galaxy/restrictTranscriptList.xml
SMART/galaxy/trimSequences.xml
commons/__init__.pyc
commons/core/__init__.pyc
commons/core/coord/Align.pyc
commons/core/coord/Map.pyc
commons/core/coord/Range.pyc
commons/core/coord/__init__.pyc
commons/core/coord/test/Test_Range.py
commons/core/launcher/JobScriptTemplate.py
commons/core/launcher/JobScriptTemplateLight.py
commons/core/launcher/JobScriptWithFilesCopyTemplate.py
commons/core/launcher/LauncherUtils.py
commons/core/launcher/test/Test_Launcher.py
commons/core/launcher/test/expFiles/expJobScriptTemplate.py
commons/core/launcher/test/expFiles/expJobScriptTemplateLight.py
commons/core/launcher/test/expFiles/expJobScriptTemplate_cmdWith2Lines.py
commons/core/launcher/test/expFiles/expJobScriptWithFilesCopyTemplate.py
commons/core/parsing/AxtParser.py
commons/core/parsing/AxtParser.pyc
commons/core/parsing/BamParser.pyc
commons/core/parsing/BedParser.pyc
commons/core/parsing/BlastParser.pyc
commons/core/parsing/BowtieParser.pyc
commons/core/parsing/CoordsParser.pyc
commons/core/parsing/ElandParser.pyc
commons/core/parsing/ExoParser.pyc
commons/core/parsing/FastaParser.py
commons/core/parsing/FastaParser.pyc
commons/core/parsing/FastqParser.pyc
commons/core/parsing/GffParser.pyc
commons/core/parsing/GtfParser.pyc
commons/core/parsing/MapParser.pyc
commons/core/parsing/MapperParser.pyc
commons/core/parsing/MaqParser.pyc
commons/core/parsing/NCListParser.pyc
commons/core/parsing/ParserChooser.py
commons/core/parsing/ParserChooser.pyc
commons/core/parsing/PklParser.pyc
commons/core/parsing/PslParser.pyc
commons/core/parsing/RmapParser.pyc
commons/core/parsing/SamParser.pyc
commons/core/parsing/SeqmapParser.pyc
commons/core/parsing/SequenceListParser.pyc
commons/core/parsing/ShrimpParser.pyc
commons/core/parsing/Soap2Parser.pyc
commons/core/parsing/SoapParser.pyc
commons/core/parsing/TranscriptListParser.pyc
commons/core/parsing/WigParser.py
commons/core/parsing/__init__.pyc
commons/core/parsing/test/Test_WigParser.py
commons/core/seq/AlignedBioseqDB.py
commons/core/seq/Bioseq.py
commons/core/seq/Bioseq.pyc
commons/core/seq/FastaUtils.py
commons/core/seq/__init__.pyc
commons/core/seq/test/Test_Bioseq.py
commons/core/seq/test/Test_FastaUtils.py
commons/core/utils/FileUtils.py
commons/core/utils/test/Test_FileUtils.py
commons/core/writer/BedWriter.pyc
commons/core/writer/CsvWriter.pyc
commons/core/writer/EmblWriter.pyc
commons/core/writer/FastaWriter.pyc
commons/core/writer/FastqWriter.pyc
commons/core/writer/GbWriter.pyc
commons/core/writer/Gff2Writer.pyc
commons/core/writer/Gff3Writer.pyc
commons/core/writer/GtfWriter.pyc
commons/core/writer/MapWriter.pyc
commons/core/writer/MySqlTranscriptWriter.py
commons/core/writer/MySqlTranscriptWriter.pyc
commons/core/writer/SamWriter.pyc
commons/core/writer/SequenceListWriter.pyc
commons/core/writer/TranscriptListWriter.pyc
commons/core/writer/TranscriptWriter.pyc
commons/core/writer/UcscWriter.pyc
commons/core/writer/WigWriter.pyc
commons/core/writer/WriterChooser.pyc
commons/core/writer/__init__.pyc
added:
SMART/DiffExpAnal/DESeqTools/HTseqClean.R
SMART/DiffExpAnal/DESeqTools/MAplotDE.R
SMART/DiffExpAnal/DESeqTools/RNAseqFunctions.R
SMART/DiffExpAnal/DESeqTools/anadiffGenes2conds.R
SMART/DiffExpAnal/DESeqTools/barplotNul.R
SMART/DiffExpAnal/DESeqTools/barplotTC.R
SMART/DiffExpAnal/DESeqTools/boxplotCounts.R
SMART/DiffExpAnal/DESeqTools/clusterPlot.R
SMART/DiffExpAnal/DESeqTools/densityPlot.R
SMART/DiffExpAnal/DESeqTools/exportComplete.R
SMART/DiffExpAnal/DESeqTools/exportDiff.R
SMART/DiffExpAnal/DESeqTools/histoRawp.R
SMART/DiffExpAnal/DESeqTools/loadCountData.R
SMART/DiffExpAnal/DESeqTools/loadTargetFile.R
SMART/DiffExpAnal/DESeqTools/majSequence.R
SMART/DiffExpAnal/DESeqTools/pairwiseSERE.R
SMART/DiffExpAnal/DESeqTools/pairwiseScatterPlots.R
SMART/DiffExpAnal/DESeqTools/plotDispEstimates.R
SMART/DiffExpAnal/DESeqTools/raw/f1cond1.tsv
SMART/DiffExpAnal/DESeqTools/raw/f1cond2.tsv
SMART/DiffExpAnal/DESeqTools/raw/f2cond1.tsv
SMART/DiffExpAnal/DESeqTools/raw/f2cond2.tsv
SMART/DiffExpAnal/DESeqTools/raw2counts.R
SMART/DiffExpAnal/DESeqTools/removeNul.R
SMART/DiffExpAnal/__init__.py
SMART/DiffExpAnal/bam_to_sam_parallel.py
SMART/DiffExpAnal/bam_to_sam_parallel.xml
SMART/DiffExpAnal/bam_to_sam_parallel_unSQL.py
SMART/DiffExpAnal/bam_to_sam_parallel_unSQL.xml
SMART/DiffExpAnal/compareOverlapping_parallel.py
SMART/DiffExpAnal/compareOverlapping_parallel.xml
SMART/DiffExpAnal/compareOverlapping_parallel_unSQL.py
SMART/DiffExpAnal/compareOverlapping_parallel_unSQL.xml
SMART/DiffExpAnal/countNumber.pl
SMART/DiffExpAnal/countNumber.xml
SMART/DiffExpAnal/countNumber_parallel.py
SMART/DiffExpAnal/countNumber_parallel.xml
SMART/DiffExpAnal/countNumber_parallel_unSQL.py
SMART/DiffExpAnal/countNumber_parallel_unSQL.xml
SMART/DiffExpAnal/deseq.sh
SMART/DiffExpAnal/deseq.xml
SMART/DiffExpAnal/fastq_groomer_parallel.py
SMART/DiffExpAnal/fastq_groomer_parallel.xml
SMART/DiffExpAnal/fastq_groomer_parallel_unSQL.py
SMART/DiffExpAnal/fastq_groomer_parallel_unSQL.xml
SMART/DiffExpAnal/gsnap.xml
SMART/DiffExpAnal/gsnap_parallel_unSQL.py
SMART/DiffExpAnal/gsnap_parallel_unSQL.xml
SMART/DiffExpAnal/listInputs.pl
SMART/DiffExpAnal/listInputs.xml
SMART/DiffExpAnal/loadHTSeqResultFiles.py
SMART/DiffExpAnal/loadHTSeqResultFiles.xml
SMART/DiffExpAnal/loadMultiFastqFiles.py
SMART/DiffExpAnal/loadMultiFastqFiles.sh
SMART/DiffExpAnal/loadMultiFastqFiles.xml
SMART/DiffExpAnal/testR.R
SMART/DiffExpAnal/testR.sh
SMART/DiffExpAnal/tophat_parallel.py
SMART/DiffExpAnal/tophat_parallel.xml
SMART/DiffExpAnal/tophat_parallel_unSQL.py
SMART/DiffExpAnal/tophat_parallel_unSQL.xml
SMART/DiffExpAnal/wrappGSNAP.py
SMART/Java/File.class
SMART/Java/File.java
SMART/Java/Files.class
SMART/Java/Files.java
SMART/Java/FormatType.class
SMART/Java/FormatType.java
SMART/Java/FormatsContainer.class
SMART/Java/FormatsContainer.java
SMART/Java/FormatsReader.class
SMART/Java/FormatsReader.java
SMART/Java/Global.class
SMART/Java/Global.java
SMART/Java/Installer/Old/PasswordAsker.java
SMART/Java/Installer/Old/SmartInstaller.java
SMART/Java/Installer/Old/SmartInstallerTask.java
SMART/Java/Installer/PasswordAsker.java
SMART/Java/Installer/SmartInstaller.jar
SMART/Java/Installer/SmartInstaller.java
SMART/Java/Installer/SmartInstallerTask.java
SMART/Java/Installer/build.sh
SMART/Java/Installer/manifest.txt
SMART/Java/Installer/s-mart.zip
SMART/Java/Program.class
SMART/Java/Program.java
SMART/Java/ProgramFileReader.class
SMART/Java/ProgramFileReader.java
SMART/Java/ProgramLauncher.class
SMART/Java/ProgramLauncher.java
SMART/Java/ProgramOption.class
SMART/Java/ProgramOption.java
SMART/Java/Python/.RData
SMART/Java/Python/.Rhistory
SMART/Java/Python/CompareOverlapping.pyc
SMART/Java/Python/CompareOverlappingSmallQuery.pyc
SMART/Java/Python/CompareOverlappingSmallRef.pyc
SMART/Java/Python/CountLoci.py
SMART/Java/Python/Cpp/Makefile
SMART/Java/Python/Cpp/findOverlaps.cpp
SMART/Java/Python/Cpp/genomicInterval.hpp
SMART/Java/Python/Cpp/inputFileParser.cpp
SMART/Java/Python/Cpp/inputFileParser.hpp
SMART/Java/Python/Cpp/inputFileParser.o
SMART/Java/Python/Cpp/interval.hpp
SMART/Java/Python/Cpp/ncList.hpp
SMART/Java/Python/Cpp/ncListCreator.cpp
SMART/Java/Python/Cpp/ncListCreator.hpp
SMART/Java/Python/Cpp/table.hpp
SMART/Java/Python/Cpp/testIn.bed
SMART/Java/Python/Cpp/testOut.bed
SMART/Java/Python/GetIntersection.py
SMART/Java/Python/GetUpDownStream.pyc
SMART/Java/Python/TestFiles/SR1.fastq
SMART/Java/Python/TestFiles/Wig/chr1.wig
SMART/Java/Python/TestFiles/adress.txt
SMART/Java/Python/TestFiles/clusterize_default_expected.gff3
SMART/Java/Python/TestFiles/clusterize_default_expected.map
SMART/Java/Python/TestFiles/clusterize_normalize_expected.gff3
SMART/Java/Python/TestFiles/clusterize_output_tag_expected.gff3
SMART/Java/Python/TestFiles/clusterize_strands_expected.gff3
SMART/Java/Python/TestFiles/expOutputGff.gff3
SMART/Java/Python/TestFiles/expRef.fasta
SMART/Java/Python/TestFiles/inputCR.gff3
SMART/Java/Python/TestFiles/inputFileTest1.bed
SMART/Java/Python/TestFiles/inputFileTest2.bed
SMART/Java/Python/TestFiles/inputMSWC1.gff3
SMART/Java/Python/TestFiles/inputMSWC2.gff3
SMART/Java/Python/TestFiles/inputMTC.sam
SMART/Java/Python/TestFiles/inputMapping.map
SMART/Java/Python/TestFiles/mapperAnalyzerExpected.gff3
SMART/Java/Python/TestFiles/mapperAnalyzerMappings.axt
SMART/Java/Python/TestFiles/mapperAnalyzerOutput.gff3
SMART/Java/Python/TestFiles/mapperAnalyzerSequences.mfq
SMART/Java/Python/TestFiles/sorted_file_oneline.gff3
SMART/Java/Python/TestFiles/sorted_query.gff3
SMART/Java/Python/TestFiles/sorted_query_wig.wig
SMART/Java/Python/TestFiles/sorted_ref.gff3
SMART/Java/Python/TestFiles/testBedParser1.bed
SMART/Java/Python/TestFiles/testC2S.fa
SMART/Java/Python/TestFiles/testC2S.gff3
SMART/Java/Python/TestFiles/testCompareTranscriptListDistanceAntisense1.gff3
SMART/Java/Python/TestFiles/testCompareTranscriptListDistanceAntisense2.gff3
SMART/Java/Python/TestFiles/testCompareTranscriptListDistanceSimple1.gff3
SMART/Java/Python/TestFiles/testCompareTranscriptListDistanceSimple2.gff3
SMART/Java/Python/TestFiles/testDifferentialExpressionExpected.gff3
SMART/Java/Python/TestFiles/testDifferentialExpressionOutput.gff3
SMART/Java/Python/TestFiles/testDifferentialExpressionReference.gff3
SMART/Java/Python/TestFiles/testDifferentialExpressionSample1.gff3
SMART/Java/Python/TestFiles/testDifferentialExpressionSample2.gff3
SMART/Java/Python/TestFiles/testGffParser1.gff3
SMART/Java/Python/TestFiles/testPlot.gff3
SMART/Java/Python/TestFiles/testSW.gff3
SMART/Java/Python/TestFiles/testTranscriptListsComparatorCompareTranscriptList1.bed
SMART/Java/Python/TestFiles/testTranscriptListsComparatorCompareTranscriptList2.bed
SMART/Java/Python/TestFiles/testTranscriptListsComparatorCompareTranscriptListGetDifference1.gff3
SMART/Java/Python/TestFiles/testTranscriptListsComparatorCompareTranscriptListGetDifference2.gff3
SMART/Java/Python/TestFiles/testTranscriptListsComparatorCompareTranscriptListMergeAggregation1.bed
SMART/Java/Python/TestFiles/testTranscriptListsComparatorCompareTranscriptListMergeAggregation2.bed
SMART/Java/Python/TestFiles/testTranscriptListsComparatorCompareTranscriptListMergeSenseAntiSenseAway1.bed
SMART/Java/Python/TestFiles/testTranscriptListsComparatorCompareTranscriptListMergeSenseAntiSenseAway1_modif.bed
SMART/Java/Python/TestFiles/testTranscriptListsComparatorCompareTranscriptListMergeSenseAntiSenseAway2.bed
SMART/Java/Python/TestFiles/testTranscriptListsComparatorCompareTranscriptListMergeSimple1.bed
SMART/Java/Python/TestFiles/testTranscriptListsComparatorCompareTranscriptListMergeSimple2.bed
SMART/Java/Python/TestFiles/testTranscriptListsComparatorCompareTranscriptListSelfMerge1.gff3
SMART/Java/Python/TestFiles/testTranscriptListsComparatorCompareTranscriptListSelfMergeDifferentClusters1.bed
SMART/Java/Python/TestFiles/testTranscriptListsComparatorCompareTranscriptListSelfMergeSense1.bed
SMART/Java/Python/TestFiles/testTranscriptNormalize.gff3
SMART/Java/Python/TestFiles/test_distance.bed
SMART/Java/Python/TestFiles/test_minoverlapp.bed
SMART/Java/Python/cleanGff.pyc
SMART/Java/Python/cleaning/CleanerChooser.pyc
SMART/Java/Python/cleaning/DefaultCleaner.pyc
SMART/Java/Python/cleaning/GffCleaner.pyc
SMART/Java/Python/cleaning/GtfCleaner.pyc
SMART/Java/Python/cleaning/TranscriptListCleaner.pyc
SMART/Java/Python/cleaning/__init__.pyc
SMART/Java/Python/genes.gtf
SMART/Java/Python/getRandomRegions.pyc
SMART/Java/Python/misc/RPlotter.pyc
SMART/Java/Python/mySql/MySqlConnection.pyc
SMART/Java/Python/mySql/MySqlQuery.pyc
SMART/Java/Python/ncList/.NCList.py.swp
SMART/Java/Python/ncList/.NCListCursor.py.swp
SMART/Java/Python/ncList/Benchmark.py
SMART/Java/Python/ncList/ConvertToNCList.pyc
SMART/Java/Python/ncList/FileSorter.pyc
SMART/Java/Python/ncList/NCListHandler.pyc
SMART/Java/Python/ncList/NCListMerger.pyc
SMART/Java/Python/ncList/NCListParser.pyc
SMART/Java/Python/script.Rout
SMART/Java/Python/structure/TranscriptListsComparator.pyc
SMART/Java/Python/test/MockGetLetterDistribution.py
SMART/Java/Python/test/Test_F_Clusterize.py
SMART/Java/Python/test/Test_F_ClusterizeByTags.py
SMART/Java/Python/test/Test_F_CollapseReads.py
SMART/Java/Python/test/Test_F_CombineTags.py
SMART/Java/Python/test/Test_F_FindOverlapsOptim.py
SMART/Java/Python/test/Test_F_GetDifferentialExpression.py
SMART/Java/Python/test/Test_F_GetFlanking.py
SMART/Java/Python/test/Test_F_GetRandomSubset.py
SMART/Java/Python/test/Test_F_GetSizes.py
SMART/Java/Python/test/Test_F_RestrictFromCoverage.py
SMART/Java/Python/test/Test_F_clusterizeBySlidingWindows.py
SMART/Java/Python/test/Test_F_compareOverlapping.py
SMART/Java/Python/test/Test_F_convertTranscriptFile.py
SMART/Java/Python/test/Test_F_coordinatesToSequence.py
SMART/Java/Python/test/Test_F_findTss.py
SMART/Java/Python/test/Test_F_getExons.py
SMART/Java/Python/test/Test_F_getLetterDistribution.py
SMART/Java/Python/test/Test_F_getRandomRegions.py
SMART/Java/Python/test/Test_F_getReadDistribution.py
SMART/Java/Python/test/Test_F_getWigData.py
SMART/Java/Python/test/Test_F_getWigDistance.py
SMART/Java/Python/test/Test_F_getWigProfile.py
SMART/Java/Python/test/Test_F_mapperAnalyzer.py
SMART/Java/Python/test/Test_F_mappingToCoordinates.py
SMART/Java/Python/test/Test_F_mergeSlidingWindowsClusters.py
SMART/Java/Python/test/Test_F_mergeTranscriptLists.py
SMART/Java/Python/test/Test_F_plot.py
SMART/Java/Python/test/Test_F_plotCoverage.py
SMART/Java/Python/test/Test_F_qualToFastq.py
SMART/Java/Python/test/Test_F_restrictSequenceList.py
SMART/Java/Python/test/Test_F_selectByTag.py
SMART/Java/Python/test/Test_F_trimSequences.py
SMART/Java/Python/test/Test_FindOverlapsOptim.py
SMART/Java/Python/test/Test_FindOverlaps_optim.py
SMART/Java/Python/test/__init__.py
SMART/Java/Python/test/timeResults.R
SMART/Java/Python/test3.gff3
SMART/Java/Python/testPC_unnamed transcript_coverage.png
SMART/Java/Python/testPC_unnamed transcript_overlap.png
SMART/Java/Python/tmpFile26845.R
SMART/Java/Python/tmpFile26845.Rout
SMART/Java/Python/tmpFile26845.dat
SMART/Java/Python/toolLauncher/RnaFoldLauncher.py
SMART/Java/Python/toolLauncher/__init__.py
SMART/Java/PythonHelperReader.class
SMART/Java/PythonHelperReader.java
SMART/Java/PythonProgramFinder$1.class
SMART/Java/PythonProgramFinder.class
SMART/Java/PythonProgramFinder.java
SMART/Java/README.txt
SMART/Java/Sav/File.java
SMART/Java/Sav/Files.java
SMART/Java/Sav/FormatType.java
SMART/Java/Sav/FormatsContainer.java
SMART/Java/Sav/FormatsReader.java
SMART/Java/Sav/Global.java
SMART/Java/Sav/Program.java
SMART/Java/Sav/ProgramFileReader.java
SMART/Java/Sav/ProgramLauncher.java
SMART/Java/Sav/ProgramOption.java
SMART/Java/Sav/PythonHelperReader.java
SMART/Java/Sav/PythonProgramFinder.java
SMART/Java/Sav/Smart.java
SMART/Java/Smart$1.class
SMART/Java/Smart$2.class
SMART/Java/Smart.class
SMART/Java/Smart.jar
SMART/Java/Smart.java
SMART/Java/SmartInstaller.jar
SMART/Java/WindowsRegistry.class
SMART/Java/WindowsRegistry.java
SMART/Java/__init__.pyc
SMART/Java/createJar.sh
SMART/Java/doc.pdf
SMART/Java/formats.txt
SMART/Java/manifest.txt
SMART/__init__.pyc
SMART/bacteriaRegulatoryRegion_Detection/changeName.py
SMART/bacteriaRegulatoryRegion_Detection/changeName.xml
SMART/bacteriaRegulatoryRegion_Detection/colorGff.pl
SMART/bacteriaRegulatoryRegion_Detection/colorGff.xml
SMART/bacteriaRegulatoryRegion_Detection/coverageGff.pl
SMART/bacteriaRegulatoryRegion_Detection/coverageGff.xml
SMART/bacteriaRegulatoryRegion_Detection/interElementGff.pl
SMART/bacteriaRegulatoryRegion_Detection/interElementGff.xml
SMART/bacteriaRegulatoryRegion_Detection/listGff.sh
SMART/bacteriaRegulatoryRegion_Detection/prepareAnnot.sh
SMART/bacteriaRegulatoryRegion_Detection/prepareAnnot.xml
SMART/bacteriaRegulatoryRegion_Detection/seedGff.pl
SMART/bacteriaRegulatoryRegion_Detection/seedGff.xml
SMART/bacteriaRegulatoryRegion_Detection/sortGff.pl
SMART/bacteriaRegulatoryRegion_Detection/sortGff.xml
SMART/bacteriaRegulatoryRegion_Detection/splitTranscriptGff.pl
SMART/bacteriaRegulatoryRegion_Detection/splitTranscriptGff.xml
SMART/bacteriaRegulatoryRegion_Detection/strictlyIncludeGff.pl
SMART/bacteriaRegulatoryRegion_Detection/strictlyIncludeGff.xml
SMART/bacteriaRegulatoryRegion_Detection/writeResToHTML.py
SMART/bacteriaRegulatoryRegion_Detection/writeResToHTML.xml
SMART/data/REF.fasta
SMART/data/REF.fasta.fai
SMART/data/SR1.fasta
SMART/data/SR1.fastq
SMART/data/SR2.fastq
SMART/data/bamFile.bam
SMART/data/dummy.fasta
SMART/data/expRef.fasta
SMART/data/expRef_withoutSplit.fasta
SMART/data/output.png
SMART/data/part0.bam
SMART/data/part0.sam
SMART/data/part1.bam
SMART/data/part1.sam
SMART/data/part2.bam
SMART/data/part2.sam
SMART/data/part3.bam
SMART/data/part3.sam
SMART/data/part4.bam
SMART/data/part4.sam
SMART/data/samFile.sam
SMART/data/sortedBamFile.bam
SMART/data/test.gff.gff3
SMART/data/test_clusterize.gff3
SMART/data/test_clusterize2.gff3
SMART/galaxy/WrappGetLetterDistribution.py
SMART/galaxy/__init__.py
SMART/galaxy/removeExonLines.sh
SMART/galaxy/test.py
SMART/galaxy/test.xml
SMART/galaxy/test/CollapseReads.xml
SMART/galaxy/test/Test_F_WrappGetLetterDistribution.py
SMART/galaxy/test/__init__.py
SMART/galaxy/tool_conf.xml
SMART/galaxy/tool_dependencies.xml
commons/core/LoggerFactory.py
commons/core/LoggerFactory.pyc
commons/core/checker/RepetException.pyc
commons/core/checker/__init__.pyc
commons/core/launcher/Launcher2.py
commons/core/launcher/test/Test_Launcher2.py
commons/core/parsing/.BamParser.py.swp
commons/core/parsing/VarscanToVCF.py
commons/core/parsing/WigParser.pyc
commons/core/parsing/test/Test_F_VarscanToVCF.py
commons/core/parsing/test/Test_VarscanToVCF.py
commons/core/parsing/test/data/sampleForTestVarscanToVCF.varscan
commons/core/test/Test_LoggerFactory.py
commons/core/test/__init__.py
commons/core/utils/RepetOptionParser.pyc
commons/core/utils/__init__.pyc
commons/launcher/BlatClusterLauncher.py
commons/launcher/BlatProgramLauncher.py
commons/launcher/LaunchBlastclust.py
commons/launcher/LaunchLastZ.py
commons/launcher/LaunchMCL.py
commons/launcher/LaunchMap.py
commons/launcher/LaunchMatcher.py
commons/launcher/LaunchMummerPlot.py
commons/launcher/LaunchNucmer.py
commons/launcher/LaunchPhyML.py
commons/launcher/LaunchPromer.py
commons/launcher/LaunchRefAlign.py
commons/launcher/LaunchRefalign_old.py
commons/launcher/LaunchRepeatMasker.py
commons/launcher/LaunchTRF.py
commons/launcher/LaunchTallymer.py
commons/launcher/MafftClusterLauncher.py
commons/launcher/MafftProgramLauncher.py
commons/launcher/MapClusterLauncher.py
commons/launcher/MapProgramLauncher.py
commons/launcher/NWalignProgramLauncher.py
commons/launcher/RepeatMaskerClusterLauncher.py
commons/launcher/RepeatMaskerProgramLauncher.py
commons/launcher/YassClusterLauncher.py
commons/launcher/YassProgramLauncher.py
commons/launcher/__init__.py
commons/launcher/launchBlasterMatcherPerQuery.py
commons/launcher/launchMafft.py
commons/launcher/launchMreps.py
commons/launcher/launchPhyML.py
commons/launcher/launchPrank.py
commons/launcher/launchTCoffee.py
commons/launcher/launchTEclass.py
commons/launcher/tests/MockDataBankForBlat.py
commons/launcher/tests/MockESTBankForBlat.py
commons/launcher/tests/MockOutputForBlat.py
commons/launcher/tests/Test_BlatClusterLauncher.py
commons/launcher/tests/Test_BlatProgramLauncher.py
commons/launcher/tests/Test_F_BlatProgramLauncher.py
commons/launcher/tests/Test_F_LaunchBlastclust.py
commons/launcher/tests/Test_F_LaunchLastZ.py
commons/launcher/tests/Test_F_LaunchMCL.py
commons/launcher/tests/Test_F_LaunchMap.py
commons/launcher/tests/Test_F_LaunchMatcher.py
commons/launcher/tests/Test_F_LaunchMummerPlot.py
commons/launcher/tests/Test_F_LaunchNucmer.py
commons/launcher/tests/Test_F_LaunchPhyML.py
commons/launcher/tests/Test_F_LaunchPromer.py
commons/launcher/tests/Test_F_LaunchRefAlign.py
commons/launcher/tests/Test_F_LaunchRefalign.py
commons/launcher/tests/Test_F_LaunchRepeatMasker.py
commons/launcher/tests/Test_F_LaunchTRF.py
commons/launcher/tests/Test_F_LaunchTallymer.py
commons/launcher/tests/Test_LaunchBlastclust.py
commons/launcher/tests/Test_LaunchTallymer.py
commons/launcher/tests/Test_MafftClusterLauncher.py
commons/launcher/tests/Test_MafftProgramLauncher.py
commons/launcher/tests/Test_MapClusterLauncher.py
commons/launcher/tests/Test_MapProgramLauncher.py
commons/launcher/tests/Test_NWalignProgramLauncher.py
commons/launcher/tests/Test_RepeatMaskerClusterLauncher.py
commons/launcher/tests/Test_RepeatMaskerProgramLauncher.py
commons/launcher/tests/Test_YassClusterLauncher.py
commons/launcher/tests/Test_YassProgramLauncher.py
commons/launcher/tests/Test_launchTEclass.py
commons/launcher/tests/__init__.py
commons/pyRepetUnit/__init__.py
commons/pyRepetUnit/align/AlignList.py
commons/pyRepetUnit/align/AlignListUtils.py
commons/pyRepetUnit/align/__init__.py
commons/pyRepetUnit/align/hmmOutputParsing/HmmpfamOutput2align.py
commons/pyRepetUnit/align/hmmOutputParsing/HmmscanOutput2align.py
commons/pyRepetUnit/align/hmmOutputParsing/__init__.py
commons/pyRepetUnit/align/hmmOutputParsing/tests/HmmpfamOutput2AlignTestSuite.py
commons/pyRepetUnit/align/hmmOutputParsing/tests/Test_F_Hmmerpfam2align.py
commons/pyRepetUnit/align/hmmOutputParsing/tests/Test_F_HmmpfamOutput2align.py
commons/pyRepetUnit/align/hmmOutputParsing/tests/Test_F_HmmscanOutput2align.py
commons/pyRepetUnit/align/hmmOutputParsing/tests/__init__.py
commons/pyRepetUnit/align/hmmOutputParsing/tests/datas/ConsensusTestFile_nt.fsa
commons/pyRepetUnit/align/hmmOutputParsing/tests/datas/OutputHmmpfamTest
commons/pyRepetUnit/align/hmmOutputParsing/tests/datas/PostPostProcessTestFiltered.align
commons/pyRepetUnit/align/hmmOutputParsing/tests/datas/hmmscanTransformedExpected.align
commons/pyRepetUnit/align/hmmOutputParsing/tests/datas/repetHmmscan.fa
commons/pyRepetUnit/align/hmmOutputParsing/tests/datas/test_hmmpfam_output
commons/pyRepetUnit/align/hmmOutputParsing/tests/datas/test_hmmpfam_output.align
commons/pyRepetUnit/align/tests/Test_AlignListUtils.py
commons/pyRepetUnit/align/tests/__init__.py
commons/pyRepetUnit/align/tests/hmmpfamOutputParsingTestSuite.py
commons/pyRepetUnit/align/transformAACoordIntoNtCoord/TransformAACoordIntoNtCoordInAlignFormat.py
commons/pyRepetUnit/align/transformAACoordIntoNtCoord/__init__.py
commons/pyRepetUnit/align/transformAACoordIntoNtCoord/tests/Test_F_TransformAACoordIntoNtCoordAndScoreFiltering.py
commons/pyRepetUnit/align/transformAACoordIntoNtCoord/tests/Test_TransformAACoordIntoNtCoordInAlignFormat.py
commons/pyRepetUnit/align/transformAACoordIntoNtCoord/tests/TransformAACoordIntoNtCoordTestSuite.py
commons/pyRepetUnit/align/transformAACoordIntoNtCoord/tests/__init__.py
commons/pyRepetUnit/align/transformAACoordIntoNtCoord/tests/datas/ConsensusTestFile_nt.fsa
commons/pyRepetUnit/align/transformAACoordIntoNtCoord/tests/datas/OutputHmmpfamTest.align
commons/pyRepetUnit/align/transformAACoordIntoNtCoord/tests/datas/PostPostProcessTest.align
commons/pyRepetUnit/align/transformAACoordIntoNtCoord/tests/datas/PostPostProcessTestFiltered.align
commons/pyRepetUnit/blastnForClassifierStep1/RepbaseBLRnForClassifierStep1.py
commons/pyRepetUnit/blastnForClassifierStep1/__init__.py
commons/pyRepetUnit/blastnForClassifierStep1/tests/Test_RepbaseBLRnForClassifierStep1.py
commons/pyRepetUnit/blastnForClassifierStep1/tests/__init__.py
commons/pyRepetUnit/components/AbstractClusterLauncher.py
commons/pyRepetUnit/components/AbstractProgramLauncher.py
commons/pyRepetUnit/components/IClusterLauncher.py
commons/pyRepetUnit/components/__init__.py
commons/pyRepetUnit/components/blastx2GFF/__init__.py
commons/pyRepetUnit/components/blastx2GFF/tests/__init__.py
commons/pyRepetUnit/components/blastx2GFF/tests/blastx2GFFTestSuite.py
commons/pyRepetUnit/components/blastx2GFF/tests/datas/dummy.align.match.path
commons/pyRepetUnit/components/blastx2GFF/tests/datas/dummy.align.match.tab
commons/pyRepetUnit/components/blastx2GFF/tests/datas/exp_dummy.gff
commons/pyRepetUnit/components/blastx2GFF/tests/datas/lm_supctg_v2_29_30_vs_BlastBank.align
commons/pyRepetUnit/components/blastx2GFF/tests/datas/lm_supctg_v2_29_30_vs_BlastBank.align.match.map
commons/pyRepetUnit/components/blastx2GFF/tests/datas/lm_supctg_v2_29_30_vs_BlastBank.align.match.path
commons/pyRepetUnit/components/blastx2GFF/tests/datas/lm_supctg_v2_29_30_vs_BlastBank.align.match.tab
commons/pyRepetUnit/convCoord/ConvMapChr2Chunk.py
commons/pyRepetUnit/convCoord/ConvPathChr2Chunk.py
commons/pyRepetUnit/convCoord/ConvSetChr2Chunk.py
commons/pyRepetUnit/convCoord/PathChunkConnector.py
commons/pyRepetUnit/convCoord/__init__.py
commons/pyRepetUnit/convCoord/test/TestConvCoordWithOverlapps.py
commons/pyRepetUnit/convCoord/test/Test_ConvMapChr2Chunk.py
commons/pyRepetUnit/convCoord/test/Test_ConvPathChr2Chunk.py
commons/pyRepetUnit/convCoord/test/Test_ConvSetChr2Chunk.py
commons/pyRepetUnit/convCoord/test/Test_PathChunkConnector.py
commons/pyRepetUnit/convCoord/test/__init__.py
commons/pyRepetUnit/convCoord/test/convCoordTestSuite.py
commons/pyRepetUnit/doc/__init__.py
commons/pyRepetUnit/doc/api-objects.txt
commons/pyRepetUnit/doc/class-tree.html
commons/pyRepetUnit/doc/commons.Checker-module.html
commons/pyRepetUnit/doc/commons.Checker-pysrc.html
commons/pyRepetUnit/doc/commons.Checker.Checker-class.html
commons/pyRepetUnit/doc/commons.Checker.CheckerException-class.html
commons/pyRepetUnit/doc/commons.Checker.ConfigChecker-class.html
commons/pyRepetUnit/doc/commons.Checker.ConfigException-class.html
commons/pyRepetUnit/doc/commons.Checker.IChecker-class.html
commons/pyRepetUnit/doc/commons.Checker._Logger-class.html
commons/pyRepetUnit/doc/commons.IComponentWrapper-module.html
commons/pyRepetUnit/doc/commons.IComponentWrapper-pysrc.html
commons/pyRepetUnit/doc/commons.IComponentWrapper.IComponentWrapper-class.html
commons/pyRepetUnit/doc/commons.IDataProcessor-module.html
commons/pyRepetUnit/doc/commons.IDataProcessor-pysrc.html
commons/pyRepetUnit/doc/commons.IDataProcessor.IDataProcessor-class.html
commons/pyRepetUnit/doc/crarr.png
commons/pyRepetUnit/doc/epydoc.css
commons/pyRepetUnit/doc/epydoc.js
commons/pyRepetUnit/doc/frames.html
commons/pyRepetUnit/doc/help.html
commons/pyRepetUnit/doc/identifier-index.html
commons/pyRepetUnit/doc/index.html
commons/pyRepetUnit/doc/module-tree.html
commons/pyRepetUnit/doc/redirect.html
commons/pyRepetUnit/doc/toc-commons.Checker-module.html
commons/pyRepetUnit/doc/toc-commons.IComponentWrapper-module.html
commons/pyRepetUnit/doc/toc-commons.IDataProcessor-module.html
commons/pyRepetUnit/doc/toc-everything.html
commons/pyRepetUnit/doc/toc.html
commons/pyRepetUnit/fastaTranslation/__init__.py
commons/pyRepetUnit/fastaTranslation/allFrames/TranslateInAllFramesAndReplaceStopByX.py
commons/pyRepetUnit/fastaTranslation/allFrames/__init__.py
commons/pyRepetUnit/fastaTranslation/allFrames/tests/Test_F_TranslateAfastaFileInAllFrameAndReplaceStopsByX.py
commons/pyRepetUnit/fastaTranslation/allFrames/tests/Test_F_TranslateInAllFramesAndReplaceStopByX.py
commons/pyRepetUnit/fastaTranslation/allFrames/tests/Test_TranslateAfastaFileInAllFrameAndReplaceStopsByX.py
commons/pyRepetUnit/fastaTranslation/allFrames/tests/Test_TranslateInAllFramesAndReplaceStopByX.py
commons/pyRepetUnit/fastaTranslation/allFrames/tests/__init__.py
commons/pyRepetUnit/fastaTranslation/allFrames/tests/datas/ConsensusTestFile_aaWithoutStop.fsa
commons/pyRepetUnit/fastaTranslation/allFrames/tests/datas/ConsensusTestFile_nt.fsa
commons/pyRepetUnit/fastaTranslation/allFrames/tests/datas/__init__.py
commons/pyRepetUnit/fastaTranslation/allFrames/tests/datas/test_input_aa.fa
commons/pyRepetUnit/fastaTranslation/allFrames/tests/datas/test_input_nt.fa
commons/pyRepetUnit/fastaTranslation/allFrames/translateAfastaFileInAllFrameAndReplaceStopsByX_script.py
commons/pyRepetUnit/hmmer/HmmpfamClusterComponent.py
commons/pyRepetUnit/hmmer/LaunchPreProcessHmmpfamPostProcessNotInParallel.py
commons/pyRepetUnit/hmmer/__init__.py
commons/pyRepetUnit/hmmer/check/OldDetectFeatureConfigChecker.py
commons/pyRepetUnit/hmmer/check/__init__.py
commons/pyRepetUnit/hmmer/check/test/Test_OldDetectFeaturesConfigChecker.py
commons/pyRepetUnit/hmmer/check/test/__init__.py
commons/pyRepetUnit/hmmer/check/test/detectFeatureConfigCheckerTestSuite.py
commons/pyRepetUnit/hmmer/hmmOutput/HmmOutput.py
commons/pyRepetUnit/hmmer/hmmOutput/HmmOutputProcessing.py
commons/pyRepetUnit/hmmer/hmmOutput/HmmpfamOutputProcessing.py
commons/pyRepetUnit/hmmer/hmmOutput/HmmscanOutputProcessing.py
commons/pyRepetUnit/hmmer/hmmOutput/__init__.py
commons/pyRepetUnit/hmmer/hmmOutput/tests/TestHmmOutputProcessing.py
commons/pyRepetUnit/hmmer/hmmOutput/tests/TestHmmpfamOutputProcessing.py
commons/pyRepetUnit/hmmer/hmmOutput/tests/TestHmmscanOutputProcessing.py
commons/pyRepetUnit/hmmer/hmmOutput/tests/Test_HmmOutput.py
commons/pyRepetUnit/hmmer/hmmOutput/tests/__init__.py
commons/pyRepetUnit/hmmer/hmmOutput/tests/datas/Outputhmmpfam
commons/pyRepetUnit/hmmer/hmmOutput/tests/datas/hmmscanOutput
commons/pyRepetUnit/hmmer/hmmOutput/tests/datas/hmmscanOutput.align
commons/pyRepetUnit/hmmer/hmmOutput/tests/datas/hmmscanOutputTab.txt
commons/pyRepetUnit/hmmer/hmmOutput/tests/datas/test_hmmpfam_output
commons/pyRepetUnit/hmmer/hmmOutput/tests/hmmOutputTestSuite.py
commons/pyRepetUnit/hmmer/profilsSearchInTEClassifier/ProfilesSearch.py
commons/pyRepetUnit/hmmer/profilsSearchInTEClassifier/__init__.py
commons/pyRepetUnit/hmmer/profilsSearchInTEClassifier/tests/Test_ProfilesSearch.py
commons/pyRepetUnit/hmmer/profilsSearchInTEClassifier/tests/__init__.py
commons/pyRepetUnit/hmmer/profilsSearchInTEClassifier/tests/datas/ConsensusFile_test.fa
commons/pyRepetUnit/hmmer/profilsSearchInTEClassifier/tests/datas/DummyRepbase_aa.fa
commons/pyRepetUnit/hmmer/profilsSearchInTEClassifier/tests/datas/DummyRepbase_nt.fa
commons/pyRepetUnit/hmmer/profilsSearchInTEClassifier/tests/datas/hmmbank_test
commons/pyRepetUnit/hmmer/profilsSearchInTEClassifier/tests/datas/hmmpfamOut.align.clean_match.path
commons/pyRepetUnit/hmmer/tests/TestAcceptanceHmmpfamAndParse2alignInparallel.py
commons/pyRepetUnit/hmmer/tests/TestFunctionalHmmpfamAndParse2alignLauncherInParallel.py
commons/pyRepetUnit/hmmer/tests/TestFunctionalHmmpfamClusterComponent.py
commons/pyRepetUnit/hmmer/tests/TestHmmpfamAndParse2alignLauncher.py
commons/pyRepetUnit/hmmer/tests/TestHmmpfamClusterComponent.py
commons/pyRepetUnit/hmmer/tests/TestHmmpfamLauncher.py
commons/pyRepetUnit/hmmer/tests/TestLaunchPreProcessHmmpfamPostProcessNotInParallel.py
commons/pyRepetUnit/hmmer/tests/TestProgramLauncher.py
commons/pyRepetUnit/hmmer/tests/__init__.py
commons/pyRepetUnit/hmmer/tests/datas/Outputhmmpfam
commons/pyRepetUnit/hmmer/tests/datas/config.cfg
commons/pyRepetUnit/hmmer/tests/datas/configTestAcceptanceHmmpfamAndParse2alignLauncherInparallel.cfg
commons/pyRepetUnit/hmmer/tests/datas/configTestFunctionalHmmpfamLauncherInparallel.cfg
commons/pyRepetUnit/hmmer/tests/datas/configTestLaunchPreProcessHmmpfamPostProcessNotInParallel.cfg
commons/pyRepetUnit/hmmer/tests/datas/myhmms
commons/pyRepetUnit/hmmer/tests/datas/test_input_aa.fa
commons/pyRepetUnit/hmmer/tests/datas/test_input_nt.fa
commons/pyRepetUnit/profilesDB/CompleteAProfilesDBFromAFileWithProfilesNamesOrAccNumber.py
commons/pyRepetUnit/profilesDB/InsertProfilesMapFileInDB.py
commons/pyRepetUnit/profilesDB/Profiles.py
commons/pyRepetUnit/profilesDB/ProfilesDB2Map.py
commons/pyRepetUnit/profilesDB/ProfilesDB4Repet.py
commons/pyRepetUnit/profilesDB/ProfilesDatabank.py
commons/pyRepetUnit/profilesDB/ProfilesDatabankUtils.py
commons/pyRepetUnit/profilesDB/__init__.py
commons/pyRepetUnit/profilesDB/tests/InsertProfilesMapFileInDBTestRessources.py
commons/pyRepetUnit/profilesDB/tests/TestCompleteProfilesDBFromProfilesNameListOrAccNumber.py
commons/pyRepetUnit/profilesDB/tests/TestInsertProfilesMapFileInDB.py
commons/pyRepetUnit/profilesDB/tests/TestProfiles.py
commons/pyRepetUnit/profilesDB/tests/TestProfilesDB2Map.py
commons/pyRepetUnit/profilesDB/tests/TestProfilesDatabankUtils.py
commons/pyRepetUnit/profilesDB/tests/Test_F_CompleteProfilDB.py
commons/pyRepetUnit/profilesDB/tests/Test_F_ProfilesDB2Map.py
commons/pyRepetUnit/profilesDB/tests/Test_F_ProfilesDB4Repet.py
commons/pyRepetUnit/profilesDB/tests/Test_ProfilesDB4Repet.py
commons/pyRepetUnit/profilesDB/tests/__init__.py
commons/pyRepetUnit/profilesDB/tests/completeProfilesDBFromAFileWithProfilesList_script.py
commons/pyRepetUnit/profilesDB/tests/datas/ListPfamProfilsInRepbase.txt
commons/pyRepetUnit/profilesDB/tests/datas/ListpfamAccNumber.txt
commons/pyRepetUnit/profilesDB/tests/datas/myhmms
commons/pyRepetUnit/profilesDB/tests/datas/profilesDBTest.hmm
commons/pyRepetUnit/profilesDB/tests/profilesDBTestSuite.py
commons/tools/AlignTEOnGenomeAccordingToAnnotation.py
commons/tools/AnnotationStats.py
commons/tools/BenchmarkTEconsensus.py
commons/tools/CalcCoordCumulLength.py
commons/tools/ChangeSequenceHeaders.py
commons/tools/CheckMysqlConnect.py
commons/tools/CleanClusterNodesAfterRepet.py
commons/tools/CorrelateTEageWithGCcontent.py
commons/tools/FilterAlign.py
commons/tools/GFF3Maker.py
commons/tools/GameXmlMaker.py
commons/tools/GetMultAlignAndPhylogenyPerTErefSeq.py
commons/tools/GetSpecificTELibAccordingToAnnotation.py
commons/tools/HmmOutput2alignAndTransformCoordInNtAndFilterScores_script.py
commons/tools/LaunchBlaster.py
commons/tools/LaunchBlasterInParallel.py
commons/tools/LaunchMatcherInParallel.py
commons/tools/ListAndDropTables.py
commons/tools/MergeMatchsFiles.py
commons/tools/MysqlConnect.py
commons/tools/OrientSequences.py
commons/tools/PostAnalyzeTELib.py
commons/tools/PrepareBatches.py
commons/tools/RetrieveInitHeaders.py
commons/tools/RmvPairAlignInChunkOverlaps.py
commons/tools/SpliceTEsFromGenome.py
commons/tools/SplicerFromAnnotation.py
commons/tools/TEclassifierPE.py
commons/tools/TEclassifierPE_parallelized.py
commons/tools/__init__.py
commons/tools/blast2align.py
commons/tools/dbBestLength.py
commons/tools/dbConsensus.py
commons/tools/dbShuffle.py
commons/tools/dbSplit.py
commons/tools/filterOutMatcher.py
commons/tools/getCumulLengthFromTEannot.py
commons/tools/pathnum2id.py
commons/tools/refalign2fasta.py
commons/tools/removeDescriptionInFastaHeaderProgramLauncher.py
commons/tools/replaceGreaterThanSymbolInFastaHeaderProgramLauncher.py
commons/tools/setnum2id.py
commons/tools/srptBlasterMatcher.py
commons/tools/srptCreateTable.py
commons/tools/srptExportTable.py
commons/tools/srptGameXmlMaker.py
commons/tools/srptPhyML.py
commons/tools/srptTableOverlap.py
commons/tools/tabFileReader.py
commons/tools/tests/MockFastaForReplaceGreaterThanSymbolInFastaHeader.py
commons/tools/tests/Test_AlignTEOnGenomeAccordingToAnnotation.py
commons/tools/tests/Test_CalcCoordCumulLength.py
commons/tools/tests/Test_ChangeSequenceHeaders.py
commons/tools/tests/Test_CorrelateTEageWithGCcontent.py
commons/tools/tests/Test_F_AlignTEOnGenomeAccordingToAnnotation.py
commons/tools/tests/Test_F_CheckMysqlConnect.py
commons/tools/tests/Test_F_FilterAlign.py
commons/tools/tests/Test_F_GFF3Maker.py
commons/tools/tests/Test_F_GameXmlMaker.py
commons/tools/tests/Test_F_GetMultiAlignAndPhylogenyPerTErefSeq.py
commons/tools/tests/Test_F_GetSpecificTELibAccordingToAnnotation.py
commons/tools/tests/Test_F_HmmOutput2alignAndTransformCoordInNtAndFilterScores_script.py
commons/tools/tests/Test_F_LaunchBlaster.py
commons/tools/tests/Test_F_LaunchBlasterInParallel.py
commons/tools/tests/Test_F_LaunchMatcherInParallel.py
commons/tools/tests/Test_F_MergeMatchsFiles.py
commons/tools/tests/Test_F_PostAnalyzeTELib.py
commons/tools/tests/Test_F_ReplaceGreaterThanSymbolInFastaHeader.py
commons/tools/tests/Test_F_RetrieveInitHeaders.py
commons/tools/tests/Test_F_SplicerFromAnnotation.py
commons/tools/tests/Test_F_TEclassifierPE.py
commons/tools/tests/Test_GetMultAlignAndPhylogenyPerTErefSeq.py
commons/tools/tests/Test_GetSpecificTELibAccordingToAnnotation.py
commons/tools/tests/Test_OrientSequences.py
commons/tools/tests/Test_RmvPairAlignInChunkOverlaps.py
commons/tools/tests/Test_SpliceTEsFromGenome.py
commons/tools/tests/Test_getCumulLengthFromTEannot.py
commons/tools/tests/Test_pathnum2id.py
commons/tools/tests/Test_refalign2fasta.py
commons/tools/tests/Test_srptTableOverlap.py
commons/tools/tests/__init__.py
removed:
README.txt
SMART/Java/Python/fastqToFasta.py
SMART/Java/Python/plotCsv.py
SMART/galaxy/DiffExpAnal.xml
SMART/galaxy/plotGenomeCoverage.xml
__init__.py
documentation.pdf
b
diff -r b0e8584489e6 -r 94ab73e8a190 README.txt
--- a/README.txt Mon Apr 22 11:11:10 2013 -0400
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
b
@@ -1,58 +0,0 @@
-----------
-|  NAME  |
-----------
-S-MART
-
-
-Description
------------
-Several tools are now available for mapping high-throughput sequencing data from a genome, but few can extract biological knowledge from the mapped reads. We have developed a toolbox, S-MART, which handles mapped RNA-Seq and ChIP-Seq data.
-
-S-MART is an intuitive and lightweight tool, performing several tasks that are usually required during the analysis of mapped RNA-Seq and ChIP-Seq reads, including data selection and data visualization.
-
-S-MART does not require a computer science background and thus can be used by all biologists through a graphical interface. S-MART can run on any personal computer, yielding results within an hour for most queries. 
-
-
-Instructions
-------------
-Environment Installation :
-1). Put the downloaded S-MART directories into your Galaxy tools directory.
-2). Open .bashrc (if it dosen't exist, create one).
-Write or add the S-MART directory path to PYTHONPATH :
-export PYTHONPATH=S-MART_PATH:/usr/lib/python2.7/
-(ex. export PYTHONPATH=/home/user/galaxy-dist/tools/s_mart/)
-3). Run .bashrc using . .bashrc command.
-
-Supplementary Softwares :
- * R, under the GNU General Public License
- * Python, under the Python License, compatible with the GNU General Public License
-Installation instructions and the user guide are available in the file
-"documentation.pdf".
-
-
-Copyright
----------
-Copyright INRA-URGI 2009-2013
-
-
-Authors
--------
-Matthias Zytnicki
-Yufei Luo
-
-Contact
--------
-urgi-support@versailles.inra.fr
-
-
-License
--------
-This library is distributed under the terms of the CeCILL license 
-(http://www.cecill.info/index.en.html).
-See the LICENSE.txt file.
-
-
-Acknowledgements
-----------------
-Yufei Luo was supported by the Plant Breeding and Genetics research division of
-the INRA, and by the Groupement d'intérêt scientifique IBISA.
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/DiffExpAnal/DESeqTools/HTseqClean.R
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/DiffExpAnal/DESeqTools/HTseqClean.R Mon Apr 29 03:20:15 2013 -0400
[
@@ -0,0 +1,19 @@
+# HTseqClean
+# remove extra counts out of genes
+# for HTseq output
+
+# input : rawCounts
+# output : cleaned rawCounts
+
+# created Feb 6th, 2012
+# Modified Feb 16th, 2012
+# Marie-Agnes Dillies
+
+
+HTseqClean <- function( rawCounts ){
+
+  row2remove <- c("alignment_not_unique", "ambiguous", "no_feature", "not_aligned", "too_low_aQual")
+  rawCounts <- rawCounts[!rawCounts$Id %in% row2remove,]
+  rawCounts[is.na(rawCounts)] <- 0
+  return(rawCounts)
+}
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/DiffExpAnal/DESeqTools/MAplotDE.R
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/DiffExpAnal/DESeqTools/MAplotDE.R Mon Apr 29 03:20:15 2013 -0400
b
@@ -0,0 +1,16 @@
+# MAplotDE
+# MAplot of DE genes
+
+# input : res, alpha,OUT_MAplotDEName 
+# output : MAplot (png)
+
+MAplotDE <- function( res, alpha, OUT_MAplotDEName, out = TRUE ){
+
+  if (out) png( file=OUT_MAplotDEName )
+  
+  plot( res$baseMean, res$log2FoldChange, pch=".", xlab="Mean expression", ylab="log2FC", main="",
+   log="x", col=ifelse(res$padj < alpha, "red", "black") )
+ abline(h=0, col="red")
+
+   if (out) dev.off()
+}
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/DiffExpAnal/DESeqTools/RNAseqFunctions.R
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/DiffExpAnal/DESeqTools/RNAseqFunctions.R Mon Apr 29 03:20:15 2013 -0400
b
@@ -0,0 +1,38 @@
+# RNAseqFunctions
+# when sourced, sources all R functions associated with RNAseq data analysis
+
+RNAseqFunctions <- function( RfuncDir ){
+  
+  source(paste(RfuncDir, "loadTargetFile.R", sep=""))
+  source(paste(RfuncDir, "loadCountData.R", sep=""))
+# source(paste(RfuncDir, "loadStrandData.R", sep=""))
+  source(paste(RfuncDir, "HTseqClean.R", sep=""))
+  source(paste(RfuncDir, "raw2counts.R", sep=""))
+  source(paste(RfuncDir, "barplotTC.R", sep=""))
+  source(paste(RfuncDir, "barplotNul.R", sep=""))
+  source(paste(RfuncDir, "removeNul.R", sep=""))
+  source(paste(RfuncDir, "densityPlot.R", sep=""))
+  source(paste(RfuncDir, "boxplotCounts.R", sep=""))
+  source(paste(RfuncDir, "majSequence.R", sep=""))
+  source(paste(RfuncDir, "clusterPlot.R", sep=""))
+  source(paste(RfuncDir, "pairwiseSERE.R", sep=""))
+  source(paste(RfuncDir, "pairwiseScatterPlots.R", sep=""))
+#  source(paste(RfuncDir, "pairwiseScatterPlotsAll.R", sep=""))
+  source(paste(RfuncDir, "plotDispEstimates.R", sep=""))
+#  source(paste(RfuncDir, "deseqByCond.R", sep="")) 
+#  source(paste(RfuncDir, "edgeRByCond.R", sep=""))  
+#  source(paste(RfuncDir, "fisher.R", sep=""))
+  source(paste(RfuncDir, "histoRawp.R", sep=""))
+#  source(paste(RfuncDir, "histoRawpMconds.R", sep=""))
+  source(paste(RfuncDir, "MAplotDE.R", sep=""))
+#  source(paste(RfuncDir, "MAplotDEMconds.R", sep=""))
+  source(paste(RfuncDir, "exportComplete.R", sep=""))
+#  source(paste(RfuncDir, "exportCompleteEdgeR.R", sep=""))
+#  source(paste(RfuncDir, "exportCompleteFisher.R", sep=""))
+#  source(paste(RfuncDir, "exportCompleteMconds.R", sep=""))
+#  source(paste(RfuncDir, "exportCompleteByCond.R", sep=""))
+#  source(paste(RfuncDir, "exportCompletePaired.R", sep=""))
+  source(paste(RfuncDir, "exportDiff.R", sep=""))
+#  source(paste(RfuncDir, "synthese.R", sep=""))
+#  source(paste(RfuncDir, "exportDiffByCond.R", sep=""))
+}
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/DiffExpAnal/DESeqTools/anadiffGenes2conds.R
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/DiffExpAnal/DESeqTools/anadiffGenes2conds.R Mon Apr 29 03:20:15 2013 -0400
[
@@ -0,0 +1,191 @@
+# Analyse differentielle de donnees d expression par gene
+# avec DESeq
+# 2 conditions
+
+args <- commandArgs()
+#print(args[1])
+#print(args[2])
+#print(args[3])
+#print(args[4])
+#print(args[5])
+#print(args[6])
+#output file names
+#print(args[7]) # HTML file name
+#print(args[8]) # HTML file all images directory 
+#print(args[9]) # complete xls file name
+#print(args[10])# UP xls file name
+#print(args[11]) #Down xls file name
+#print(args[12]) #the executable scipt (for getting the path)
+
+library(R2HTML)
+library(R.utils)
+
+#run example: 
+projectName <- "DESeqAnalysis"
+analysisVersion <- "V1"    # fitType=local, sharingMode=fit-only, method=blind 
+rawDir <- "raw"
+targetFile <- args[4]
+header <- as.integer(args[5]) #si on a header ou pas, si on a, header=1, sinon header=0
+withOutReplicates <- as.integer(args[6])
+
+#get the directory to write the results
+tab <- splitByPattern(args[7], pattern="/")
+res_dir <- ""
+for (e in tab[1:length(tab)-1]) { res_dir <- paste(res_dir, e, sep="")}
+#get the html output file name
+OUT_HTMLname <- args[7]
+#get the images directory to write to
+OUT_imgDir <- args[8]
+#if the directory dosen't existe, we should create it first
+
+alpha <- 0.05
+adjMethod <- "BH"
+outfile <- T
+runningScriptTab <-  splitByPattern(args[12], pattern="/")
+RfuncDir <- ""
+for (r in runningScriptTab[1:length(runningScriptTab)-1]) { RfuncDir <- paste(RfuncDir, r, sep="")} #find the path of executable script  
+RfuncDir <- paste(RfuncDir, "DESeqTools/", sep="") #define the function files path
+# Dossier contenant les fonctions
+print(RfuncDir)
+source( paste(RfuncDir, "RNAseqFunctions.R", sep="/") )
+
+# Chargement des packages et des fonctions
+library(DESeq)
+RNAseqFunctions(RfuncDir)
+# Chargement du target file
+target <- loadTargetFile( targetFile, header )
+# Chargement des donnees, construction d'une table de comptages par gene
+#have changed
+rawCounts <- loadCountData( target, header )
+conds <- unique(target$group)
+cond1 <- as.character(conds[1])
+cond2 <- as.character(conds[!conds == conds[1]])
+rawCounts <- HTseqClean( rawCounts )
+
+# Transformation en matrice de comptages
+counts <- raw2counts( rawCounts )[[1]]
+
+# Nombre de reads par echantillon
+OUT_barplotTCName <- paste(OUT_imgDir, "barplotTC.png", sep="/")
+barplotTC( counts, target$group, OUT_barplotTCName, out=outfile )
+
+# Proportion comptages nuls
+OUT_barplotNulName <- paste(OUT_imgDir, "barplotNul.png", sep="/")
+barplotNul( counts, target$group, OUT_barplotNulName, out=outfile )
+
+# Suppression comptages nuls
+counts <- removeNul( counts )[[1]]
+
+# Density plot
+OUT_densityPlotName <- paste(OUT_imgDir, "densityPlot.png", sep="/")
+densityPlot( counts, target$group, OUT_densityPlotName, out=outfile )
+
+# Boxplot
+OUT_boxplotCountsName <- paste(OUT_imgDir, "boxplotCounts.png", sep="/")
+boxplotCounts( counts, target$group, type = c("raw", "norm"), OUT_boxplotCountsName, out=outfile )
+# Sequence majoritaire
+OUT_majSequenceName <- paste(OUT_imgDir, "majSequence.png", sep="/")
+majSequence( counts, target$group, OUT_majSequenceName, out=outfile )
+
+# ScatterPlot between two samples
+OUT_scatterPlot <- paste(OUT_imgDir, "scatterPlot.png", sep="/")
+pairwiseScatterPlots(counts, target, OUT_scatterPlot, out=outfile, pdffile=FALSE)
+
+# SERE coefficient calculation (Poisson hypothesis for replicates techiques), to know if the variability between the réplicates or the conditons is hight or not. 
+coef <- pairwiseSERE(counts)
+print(coef)
+coef
+# Creation structure de donnees cds, !! we use newCountDataset because that we have first column not numeric, and DESeq dosen't take non numeric values.
+cds <- newCountDataSet( counts, target$group )
+
+# Diagnostic for clustering of non-normalized samples
+OUT_clusterPlot_before <- paste(OUT_imgDir, "clusteringOfSamplesBefore.png", sep="/")
+clusterPlot(cds, OUT_clusterPlot_before, out=outfile)
+
+
+# Normalisation (calcul des lib size factors )
+cds <- estimateSizeFactors( cds )
+
+# Estimation de la dispersion
+# parametres: 
+ # method: how samples are pooled to estimate dispersion. If no replicates use "blind"
+ # sharingMode: how variance estimate is computed with respect to the fitted line. 
+ #  "Maximum" is the most conservative (max between fit and estimation), "fit-only" keeps the estimated value
+ # fitType: refers to the model. "Local" is the published model, "parametric" is glm-based (may not converge), now we use "parametric" as default value.
+#in this case, without replicates
+if(withOutReplicates!=0){
+ cds <- estimateDispersions( cds, sharingMode="fit-only", method="blind")
+} else if(withOutReplicates==0){
+ #cds <- estimateDispersions( cds, sharingMode="fit-only", fitType="local")}
+ cds <- estimateDispersions( cds)}
+# Analyse differentielle, ajustement BH par defaut
+res <- nbinomTest( cds, cond1, cond2)  
+
+# Diagnostic for clustering of normalized samples
+OUT_clusterPlot <- paste(OUT_imgDir, "clusteringOfSamples.png", sep="/")
+clusterPlot(cds, OUT_clusterPlot, out=outfile)
+
+# Control plot of dispersion estimates
+OUT_plotDispEstimatesName <- paste(OUT_imgDir, "disperssionEstimates.png", sep="/")
+plotDispEstimates( cds, OUT_plotDispEstimatesName, out=outfile )
+
+# Distribution of raw p-values
+OUT_histoRawpName <- paste(OUT_imgDir, "histoRawPvalue.png", sep="/")
+histoRawp( res, OUT_histoRawpName, out=outfile )
+
+# MAplot showing DE genes
+OUT_MAplotDEName <- paste(OUT_imgDir, "MAplotDE.png", sep="/")
+MAplotDE( res, alpha, OUT_MAplotDEName, out=outfile )
+
+# export complete data
+OUT_completeName <- args[9]
+complete <- exportComplete( counts, res, target, adjMethod, cond1, cond2, OUT_completeName, out=outfile )
+
+# export significant genes
+OUT_upName <- args[10]
+OUT_downName <- args[11]
+diff <- exportDiff( complete, alpha, adjMethod, OUT_upName, OUT_downName, out=outfile )
+
+# write all images results into an HTML file
+prefixHTMLname <- tab[length(tab)]
+#HTMLCSS(file.path(res_dir), filename=prefixHTMLname, CSSfile="R2HTML")
+HTMLInitFile(file.path(res_dir), filename=prefixHTMLname, BackGroundColor="white")
+HTML.title("<center>Differential Expression DESeq analysis.", HR=1) 
+HTML.title("<center>BarplotTC: number of RNA-seq reads per sample.", HR=2)
+     HTMLInsertGraph("barplotTC.png")
+
+HTML.title("<center>BarplotNul: number of RNA-seq reads that the count is 0 (nul).", HR=2)
+ HTMLInsertGraph("barplotNul.png")
+
+HTML.title("<center>DensityPlot: density of each sample.", HR=2)
+ HTMLInsertGraph("densityPlot.png")
+
+HTML.title("<center>Boxplot: number of RNA-seq reads distribution per sample.", HR=2)
+ HTMLInsertGraph("boxplotCounts.png")
+
+HTML.title("<center>MajorSequence: the proportion of reads associated with the most expressed sequence.", HR=2)
+ HTMLInsertGraph("majSequence.png")
+
+HTML.title("<center>ScatterPlot: Scatter plot of samples.", HR=2)
+ HTMLInsertGraph("scatterPlot.png")
+
+HTML.title("<center>Clustering Of No-Normalized Samples: Representing the no-normalized samples in Diagnostic.", HR=2)
+ HTMLInsertGraph("clusteringOfSamplesBefore.png")
+
+HTML.title("<center>Clustering Of Normalized Samples: Representing the normalized samples in Diagnostic.", HR=2)
+ HTMLInsertGraph("clusteringOfSamples.png")
+
+HTML.title("<center>DispersionEstimates: representing dispersion estimates vs mean expression.", HR=2)
+ HTMLInsertGraph("disperssionEstimates.png")
+
+HTML.title("<center>HistoRawPValue: histogram of raw p-value.", HR=2)
+ HTMLInsertGraph("histoRawPvalue.png")
+
+HTML.title("<center>MAplotDE: the differentially expressed genes (red point).", HR=2)
+ HTMLInsertGraph("MAplotDE.png")
+HTMLEndFile()
+absoluPrefixHTMLname <- paste(res_dir, prefixHTMLname, sep="")
+outName <- paste(absoluPrefixHTMLname, ".html", sep="")
+# change name is to be adapted into Galaxy
+file.rename(outName, OUT_HTMLname)
+
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/DiffExpAnal/DESeqTools/barplotNul.R
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/DiffExpAnal/DESeqTools/barplotNul.R Mon Apr 29 03:20:15 2013 -0400
b
@@ -0,0 +1,19 @@
+# barplotNul
+# barplot representing null counts per sample
+
+# input : counts, target, projectName
+# output : barplotNul (png)
+
+# created Feb 7th, 2012
+# modified April 30th, 2012 (target$group instead of target)
+
+barplotNul <- function( counts, group,  OUT_barplotNulName, out = TRUE ){
+
+  if (out) png( file=OUT_barplotNulName )
+
+  N <- apply(counts, 2, function(x){sum(x == 0)})/nrow(counts)
+  barplot(N, col=as.integer(group)+1, main = "Proportion of null counts per Sample", ylim = c(0,1))
+  legend("topright", as.character(unique(group)), lty=1, col=as.integer(unique(group))+1)
+
+  if (out) dev.off()
+}
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/DiffExpAnal/DESeqTools/barplotTC.R
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/DiffExpAnal/DESeqTools/barplotTC.R Mon Apr 29 03:20:15 2013 -0400
b
@@ -0,0 +1,20 @@
+# barplotTC
+# barplot representing total count per sample
+
+# input : counts, target, projectName
+# output : barplotTC (png)
+
+# created Feb 7th, 2012
+# modified April 30th, 2012 (group instead of target$group)
+
+barplotTC <- function( counts, group, OUT_barplotTCName, out = TRUE ){
+
+  if (out) png( file=OUT_barplotTCName )
+
+  ylim <- c(0, max(colSums(counts))*1.2)
+  barplot( colSums(counts), col=as.integer(group)+1, main = "Total Read Count per Sample",  ylim=ylim )
+  legend( "topright", as.character(unique(group)), lty=1,
+         col=as.integer(unique(group))+1 )
+
+  if (out) dev.off()
+}
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/DiffExpAnal/DESeqTools/boxplotCounts.R
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/DiffExpAnal/DESeqTools/boxplotCounts.R Mon Apr 29 03:20:15 2013 -0400
[
@@ -0,0 +1,18 @@
+# boxplotCounts
+# boxplots representing counts distribution per sample
+
+# input : counts, target, projectName, type of data (raw or norm)
+# output : boxplot (png)
+
+# created Feb 7th, 2012
+# modified April 30th, 2012
+
+boxplotCounts <- function( counts, group, type = c("raw", "norm"), OUT_boxplotCountsName, out = TRUE ){
+
+  if (out) png( file=OUT_boxplotCountsName )
+
+  boxplot( log2(counts+1), col=as.integer(group)+1, main = paste(type[1], " counts distribution", sep="" ) )
+  legend( "topright", as.character(unique(group)), lty=1, col=as.integer(unique(group))+1 )
+
+  if (out) dev.off()
+}
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/DiffExpAnal/DESeqTools/clusterPlot.R
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/DiffExpAnal/DESeqTools/clusterPlot.R Mon Apr 29 03:20:15 2013 -0400
b
@@ -0,0 +1,27 @@
+# clusterPlot
+# dendrogram of sample clustering
+
+# input : counts, outputName, type of data (raw or norm)
+# output : dendrogram (jpeg)
+
+# created Sept 13th, 2012
+# modified Oct 30th, 2012
+# Marie-Agnes Dillies
+
+
+clusterPlot <- function( cds, OUT_clusterPlot, type = "raw", out = TRUE ){
+
+  if (out) png( file=OUT_clusterPlot )
+
+  if (type == "norm"){
+    cdsblind <- estimateDispersions( cds, method="blind" )
+    vsd <- getVarianceStabilizedData( cdsblind )
+  }
+  else {
+    vsd <- counts(cds)
+  }
+  hc <- hclust( dist(t(vsd)), method="ward" )
+  plot( hc, xlab = "Euclidean distance, Ward criterion", main=paste("Cluster Dendrogram, ", type, " data", sep="") )
+
+  if (out) dev.off()
+}
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/DiffExpAnal/DESeqTools/densityPlot.R
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/DiffExpAnal/DESeqTools/densityPlot.R Mon Apr 29 03:20:15 2013 -0400
[
@@ -0,0 +1,23 @@
+# densityPlot
+# density plot of all samples
+
+# input : counts, target, projectName
+# output : densplot (png)
+
+# created Feb 7th, 2012
+# modified April 30th, 2012
+
+
+densityPlot <- function( counts, group, OUT_densityPlotName, out = TRUE ){
+
+  if (out) png( file=OUT_densityPlotName )
+
+  couleurs <- as.integer( group ) + 1
+  ylim <- c(0, max(density(log2(counts)+1)$y)*1.5)
+  plot( density(log2(counts[,1])+1), main="Density of counts distribution", col=couleurs[1], ylim = ylim )
+  for (i in 2:ncol(counts))
+   lines( density(log2(counts[,i])+1), col=couleurs[i] )
+  legend( "topright", as.character(unique(group)), lty=1, col=as.integer(unique(group))+1 )
+
+  if (out) dev.off()
+}
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/DiffExpAnal/DESeqTools/exportComplete.R
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/DiffExpAnal/DESeqTools/exportComplete.R Mon Apr 29 03:20:15 2013 -0400
[
@@ -0,0 +1,20 @@
+# exportComplete
+# export complete data and results
+
+# input : counts res, target
+# output : complete data and xls file (in text format)
+
+# created Feb 14th, 2012
+# modified March 9th, 2012 (order of cond1 and cond2)
+
+
+exportComplete <- function( counts, res, target, adjMethod, cond1, cond2, OUT_completeName, out = T ){
+
+ complete <- data.frame( res$id, counts, res[,3:ncol(res)] )
+ colnames(complete) <- c( "id", as.character(target$label), cond2, cond1, "FC", "log2FC", "rawp", 
+ paste("adjp",adjMethod,sep="") )
+
+  if (out)
+   write.table( complete, file=OUT_completeName, sep="\t", row.names=F )
+  return( complete )
+}
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/DiffExpAnal/DESeqTools/exportDiff.R
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/DiffExpAnal/DESeqTools/exportDiff.R Mon Apr 29 03:20:15 2013 -0400
[
@@ -0,0 +1,42 @@
+# exportDiff
+# export differentially expressed genes
+
+# input : complete, alpha, adjMethod, projectName
+# output : diff genes, up and down in xls files
+
+# created Feb 14th, 2012
+
+
+exportDiff <- function( complete, alpha, adjMethod, OUT_upName, OUT_downName, out = T ){
+
+ diff <- complete[which(complete[,grep("adjp",colnames(complete))] < alpha),]
+
+ gup <- up( diff )
+ gdown <- down( diff )
+
+  if (out){
+    gup[,(ncol(gup)-4):ncol(gup)] <- format( gup[,(ncol(gup)-4):ncol(gup)], digits=3, dec=",")
+    gdown[,(ncol(gdown)-4):ncol(gdown)] <- format( gdown[,(ncol(gdown)-4):ncol(gdown)], digits=3, dec=",")
+ write.table(gup, file=OUT_upName, row.names=F, sep="\t")
+ write.table(gdown, file=OUT_downName, row.names=F, sep="\t")
+  }
+  return( diff )
+}
+
+
+up <- function( diff ){
+
+ up <- diff[diff$log2FC > 0,]
+ up <- up[order(up[,grep("adjp",colnames(up))]),]
+
+ return( up )
+}
+
+
+down <- function( diff ){
+
+ down <- diff[diff$log2FC < 0,]
+ down <- down[order(down[,grep("adjp",colnames(down))]),]
+
+ return( down )
+}
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/DiffExpAnal/DESeqTools/histoRawp.R
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/DiffExpAnal/DESeqTools/histoRawp.R Mon Apr 29 03:20:15 2013 -0400
[
@@ -0,0 +1,18 @@
+# histoRawp
+# histogram of raw p-values
+
+# input : res, OUT_histoRawpName
+# output : histogram (png)
+
+
+histoRawp <- function( res, OUT_histoRawpName, out = TRUE ){
+
+  if (out) png( file=OUT_histoRawpName )
+  
+  ind <- grep("val", colnames(res))
+  hist( res[,ind], nclass=50, xlab="Raw p-values", main="", col="skyblue" )
+
+  if (out) dev.off()
+}
+
+
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/DiffExpAnal/DESeqTools/loadCountData.R
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/DiffExpAnal/DESeqTools/loadCountData.R Mon Apr 29 03:20:15 2013 -0400
[
@@ -0,0 +1,36 @@
+# loadCountData
+# loads counts, one file per lane
+# file names from target file
+
+# input : target
+# output : raw count table
+
+# created Feb 6th, 2012
+# modified May 2nd, 2012 (colnames -> target$label)
+# Marie-Agnes Dillies
+
+
+loadCountData <- function(target, header){
+
+  require(DESeq)
+  fileNames <- target$files
+
+if(header!=0){
+ #rawCounts <- read.table(as.character(paste(rawDir,target$files[1],sep="/")), sep="\t", header=TRUE)
+ rawCounts <- read.table(as.character(target$files[1],sep="/"), sep="\t", header=TRUE)
+} else if(header==0){
+ rawCounts <- read.table(as.character(target$files[1],sep="/"), sep="\t")}
+  
+  colnames(rawCounts) <- c("Id", as.character(target$label[1]))
+
+  for (i in 2:length(fileNames)){
+ if(header!=0){
+   tmp <- read.table(as.character(target$files[i],sep="/"), sep="\t", header=TRUE)
+ } else if(header==0){
+ tmp <- read.table(as.character(target$files[i],sep="/"), sep="\t")}
+   colnames(tmp) <- c("Id", as.character(target$label[i]))
+   rawCounts <- merge(rawCounts, tmp, by="Id", all=T)
+  }
+  rawCounts[is.na(rawCounts)] <- 0
+  return(rawCounts)
+}
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/DiffExpAnal/DESeqTools/loadTargetFile.R
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/DiffExpAnal/DESeqTools/loadTargetFile.R Mon Apr 29 03:20:15 2013 -0400
b
@@ -0,0 +1,17 @@
+# loadTargetFile
+# loads file containing sample info
+
+# input : targetFile Name
+# output : target
+
+# created Feb 6th, 2012
+# Marie-Agnes Dillies
+
+
+loadTargetFile <- function(targetFile, header){
+if(header!=0){
+  return(read.table(targetFile, header=T, sep="\t"))
+ }else if(header==0){
+  return(read.table(targetFile, sep="\t"))
+ }
+}
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/DiffExpAnal/DESeqTools/majSequence.R
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/DiffExpAnal/DESeqTools/majSequence.R Mon Apr 29 03:20:15 2013 -0400
[
@@ -0,0 +1,26 @@
+# majSequence
+# compute proportion of reads associated with most expressed sequence
+
+# input : counts, target, projectName
+# output : barplot, % associated with majority gene
+
+# created Feb 7th, 2012
+# modified Feb 20th, 2012
+# modified April 30th, 2012
+# Marie-Agnes Dillies
+
+
+majSequence <- function( counts, group, OUT_majSequenceName, out = T, position = "topright" ){
+
+  if (out) png( file=OUT_majSequenceName )
+
+  maj <- apply(counts, 2, function(x){x <- x[order(x, decreasing=T)]; x[1]*100/sum(x)})
+  seqname <- apply(counts, 2, function(x){x <- x[order(x, decreasing=T)]; names(x)[1]})
+
+  x <- barplot( maj, col=as.integer(group)+1, main = "Proportion of reads from most expressed gene", 
+ ylim = c(0, max(maj)*1.2), cex.main=0.8 )
+  for (i in 1:length(seqname)) text( x[i], maj[i]/2, seqname[i], cex=0.8, srt=90, adj=0)
+  legend( position, as.character(unique(group)), lty=1, col=as.integer(unique(group))+1 )
+
+  if (out) dev.off()
+}
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/DiffExpAnal/DESeqTools/pairwiseSERE.R
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/DiffExpAnal/DESeqTools/pairwiseSERE.R Mon Apr 29 03:20:15 2013 -0400
[
@@ -0,0 +1,41 @@
+# pairwiseSERE
+# compute pairwise SERE statistics
+
+# input : counts
+# output : matrix of SERE values
+
+# created october 19th, 2012
+# Marie-Agnes Dillies
+
+
+pairwiseSERE <- function( counts ){
+  
+  sere <- matrix( NA, ncol=ncol(counts), nrow=ncol(counts) )
+  for (i in 1:ncol(counts)){
+    for (j in 1:ncol(counts)){
+      sere[i,j] <- sigfun_Pearson( counts[,c(i,j)] )
+    }
+  }
+  colnames(sere) <- rownames(sere) <- colnames(counts)
+  return( formatC(sere, format="f", digits=2) )
+}
+
+sigfun_Pearson <- function(observed) {
+  #calculate lambda and expected values
+  laneTotals<- colSums(observed);
+  total <- sum(laneTotals)
+  fullObserved <- observed[rowSums(observed)>0,];
+  fullLambda <- rowSums(fullObserved)/total;
+  fullLhat <- fullLambda > 0;
+  fullExpected<- outer(fullLambda, laneTotals);
+
+  #keep values
+  fullKeep <- which(fullExpected > 0);
+  
+  #calculate degrees of freedom (nrow*(ncol -1) >> number of parameters - calculated (just lamda is calculated >> thats why minus 1)
+  #calculate pearson and deviance for all values
+  oeFull <- (fullObserved[fullKeep] - fullExpected[fullKeep])^2/ fullExpected[fullKeep] # pearson chisq test
+  dfFull <- length(fullKeep) - sum(fullLhat!=0);
+  
+  return(c(sqrt(sum(oeFull)/dfFull)));
+}
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/DiffExpAnal/DESeqTools/pairwiseScatterPlots.R
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/DiffExpAnal/DESeqTools/pairwiseScatterPlots.R Mon Apr 29 03:20:15 2013 -0400
[
@@ -0,0 +1,31 @@
+# pairwiseScatterPlots
+# scatter plots for pairwise comparaisons of log counts
+
+# input : counts, target, outputName
+# output : scatter plots (pdf: allows multiple figures in one file)
+
+# created Feb 21th, 2012
+# modified Sept 27th, 2012 (pdf output file)
+# modified Oct 30th, 2012 (png)
+# Marie-Agnes Dillies
+
+
+pairwiseScatterPlots <- function( counts, target, OUT_scatterPlot, out = TRUE, pdffile = FALSE ){
+
+  if (out & !pdffile) png( OUT_scatterPlot )
+  if (pdffile) pdf( OUT_scatterPlot )
+  
+  conds <- unique(target$group)
+  # colnames(counts) <- target$label
+  
+  for (i in 1:(length(conds)-1)){
+   for (j in (i+1):length(conds)){
+   cond1 <- conds[i]; cond2 <- conds[j]
+ pairs( log2(counts[, which(target$group %in% c(as.character(cond1), as.character(cond2)))]+1), 
+ pch=".", cex=0.5, main = paste(cond1, cond2, sep=" vs ") )
+   }
+  }
+
+  if (pdffile) dev.off()
+  if (out) dev.off()
+}
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/DiffExpAnal/DESeqTools/plotDispEstimates.R
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/DiffExpAnal/DESeqTools/plotDispEstimates.R Mon Apr 29 03:20:15 2013 -0400
b
@@ -0,0 +1,21 @@
+# plotDispEstimates
+# scatter plots representing dispersion estimates vs mean expression
+
+# input : cds, OUT_plotDispEstimatesName
+# output : scatterplot (png)
+
+plotDispEstimates <- function( cds, OUT_plotDispEstimatesName, out = TRUE ){
+
+  if (out) png( file=OUT_plotDispEstimatesName )
+  
+  plot(
+   rowMeans( counts(cds, normalized=T) ),
+   fitInfo(cds)$perGeneDispEsts,
+   pch=".", log="xy",
+   xlab = "Mean expression strength", ylab = "Dispersion estimate" )
+  
+  xg <- 10^seq(-.5, 5, length.out=300)
+  lines( xg, fitInfo(cds)$dispFun(xg), col="red" )
+
+  if (out) dev.off()
+}
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/DiffExpAnal/DESeqTools/raw/f1cond1.tsv
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/DiffExpAnal/DESeqTools/raw/f1cond1.tsv Mon Apr 29 03:20:15 2013 -0400
b
b"@@ -0,0 +1,18761 @@\n+GliNS1\tG144\n+13CDNA73\t4\n+15E1.2\t75\n+182-FIP\t118\n+2'-PDE\t39\n+3'HEXO\t18\n+3.8-1\t0\n+384D8-2\t3\n+76P\t61\n+7h3\t4\n+8D6A\t1\n+A1BG\t1\n+A2BP1\t19\n+A2M\t2724\n+A4GALT\t0\n+A4GNT\t0\n+AAA1\t2\n+AAAS\t57\n+AACS\t1904\n+AADACL1\t3\n+AADAT\t18\n+AAK1\t2\n+AAMP\t215\n+AANAT\t0\n+AARS\t157\n+AARSD1\t27\n+AARSL\t21\n+AASDH\t15\n+AASDHPPT\t162\n+AASS\t159\n+AATF\t68\n+AATK\t3\n+ABAT\t493\n+ABC1\t7\n+ABCA1\t23\n+ABCA10\t1\n+ABCA11\t10\n+ABCA12\t3\n+ABCA13\t0\n+ABCA2\t38\n+ABCA3\t95\n+ABCA4\t0\n+ABCA5\t1\n+ABCA6\t0\n+ABCA7\t23\n+ABCA8\t98\n+ABCA9\t155\n+ABCB1\t0\n+ABCB10\t64\n+ABCB11\t0\n+ABCB4\t51\n+ABCB5\t2\n+ABCB6\t26\n+ABCB7\t34\n+ABCB8\t84\n+ABCB9\t12\n+ABCC1\t24\n+ABCC10\t17\n+ABCC11\t4\n+ABCC12\t0\n+ABCC13\t4\n+ABCC2\t1\n+ABCC3\t4\n+ABCC4\t17\n+ABCC5\t41\n+ABCC6\t27\n+ABCC8\t29\n+ABCC9\t4\n+ABCD1\t9\n+ABCD2\t2\n+ABCD3\t147\n+ABCD4\t44\n+ABCE1\t490\n+ABCF1\t68\n+ABCF2\t42\n+ABCF3\t35\n+ABCG1\t1\n+ABCG2\t48\n+ABCG4\t0\n+ABHD1\t0\n+ABHD10\t6\n+ABHD11\t1804\n+ABHD14A\t44\n+ABHD14B\t18\n+ABHD2\t85\n+ABHD3\t133\n+ABHD4\t114\n+ABHD5\t34\n+ABHD6\t62\n+ABHD7\t0\n+ABHD8\t49\n+ABI1\t275\n+ABI2\t195\n+ABI3\t0\n+ABI3BP\t3\n+ABL1\t112\n+ABL2\t25\n+ABLIM1\t70\n+ABLIM2\t0\n+ABLIM3\t1\n+ABO\t0\n+ABR\t199\n+ABRA\t0\n+ABT1\t51\n+ABTB1\t11\n+ABTB2\t19\n+ACAA1\t34\n+ACAA2\t144\n+ACACA\t47\n+ACACB\t2\n+ACAD10\t36\n+ACAD11\t109\n+ACAD8\t22\n+ACAD9\t116\n+ACADL\t1\n+ACADM\t69\n+ACADS\t37\n+ACADSB\t36\n+ACADVL\t200\n+ACAS2\t9\n+ACAS2L\t3\n+ACAT1\t111\n+ACAT2\t165\n+ACATE2\t12\n+ACBD3\t213\n+ACBD4\t4\n+ACBD5\t14\n+ACBD6\t130\n+ACBD7\t6\n+ACCN2\t20\n+ACCN3\t11\n+ACCN4\t1\n+ACD\t9\n+ACDC\t2\n+ACE\t0\n+ACF\t25\n+ACHE\t199\n+ACIN1\t44\n+ACLY\t313\n+ACMSD\t6\n+ACN9\t133\n+ACO1\t70\n+ACO2\t348\n+ACOT2\t19\n+ACOT4\t1\n+ACOT7\t192\n+ACOT8\t2\n+ACOT9\t15\n+ACOX1\t97\n+ACOX2\t2\n+ACOX3\t4\n+ACOXL\t0\n+ACP1\t239\n+ACP2\t42\n+ACP5\t0\n+ACP6\t241\n+ACPL2\t55\n+ACPP\t7\n+ACR\t0\n+ACRBP\t0\n+ACRC\t3\n+ACRV1\t0\n+ACSBG1\t7\n+ACSL1\t5\n+ACSL3\t440\n+ACSL4\t63\n+ACSL5\t2\n+ACSL6\t19\n+ACSM2\t0\n+ACSM3\t1\n+ACSS1\t91\n+ACSS2\t55\n+ACTA1\t74\n+ACTA2\t0\n+ACTB\t26071\n+ACTC\t1\n+ACTG1\t2667\n+ACTG2\t26\n+ACTL6A\t58\n+ACTL6B\t0\n+ACTL8\t0\n+ACTN1\t463\n+ACTN2\t12\n+ACTN4\t3028\n+ACTR10\t77\n+ACTR1A\t234\n+ACTR1B\t18\n+ACTR2\t3044\n+ACTR3\t319\n+ACTR3B\t2\n+ACTR5\t13\n+ACTR6\t162\n+ACTR8\t64\n+ACTRT1\t0\n+ACVR1\t7\n+ACVR1B\t17\n+ACVR1C\t0\n+ACVR2\t14\n+ACVR2A\t3\n+ACVR2B\t2\n+ACVRL1\t0\n+ACY1\t10\n+ACY1L2\t46\n+ACY3\t0\n+ACYP1\t59\n+ACYP2\t58\n+AD-003\t1\n+AD-020\t9\n+AD023\t0\n+AD031\t51\n+AD7C-NTP\t3\n+ADA\t1889\n+ADAL\t0\n+ADAM10\t251\n+ADAM11\t9\n+ADAM12\t932\n+ADAM15\t74\n+ADAM17\t101\n+ADAM18\t0\n+ADAM19\t118\n+ADAM20\t0\n+ADAM21\t6\n+ADAM22\t264\n+ADAM23\t66\n+ADAM28\t0\n+ADAM32\t0\n+ADAM33\t35\n+ADAM8\t0\n+ADAM9\t581\n+ADAMDEC1\t0\n+ADAMTS1\t61\n+ADAMTS10\t58\n+ADAMTS12\t22\n+ADAMTS13\t3\n+ADAMTS15\t19\n+ADAMTS16\t16\n+ADAMTS17\t1\n+ADAMTS18\t0\n+ADAMTS19\t0\n+ADAMTS2\t2\n+ADAMTS20\t0\n+ADAMTS3\t147\n+ADAMTS4\t23\n+ADAMTS5\t43\n+ADAMTS6\t31\n+ADAMTS7\t2\n+ADAMTS8\t0\n+ADAMTS9\t321\n+ADAMTSL1\t6\n+ADAMTSL2\t0\n+ADAMTSL3\t0\n+ADAMTSL4\t1\n+ADAR\t53\n+ADARB1\t7\n+ADARB2\t0\n+ADAT1\t38\n+ADC\t0\n+ADCK1\t28\n+ADCK2\t11\n+ADCK4\t106\n+ADCK5\t4\n+ADCY1\t186\n+ADCY2\t0\n+ADCY3\t14\n+ADCY5\t9\n+ADCY6\t182\n+ADCY7\t19\n+ADCY8\t0\n+ADCY9\t21\n+ADCYAP1\t0\n+ADCYAP1R1\t3\n+ADD1\t322\n+ADD2\t48\n+ADD3\t448\n+ADFP\t31\n+ADH1B\t0\n+ADH1C\t0\n+ADH4\t3\n+ADH5\t490\n+ADHFE1\t5\n+ADI1\t181\n+ADIPOR1\t102\n+ADIPOR2\t26\n+ADK\t135\n+ADM\t78\n+ADM2\t0\n+ADMP\t0\n+ADMR\t2386\n+ADNP\t253\n+ADORA1\t3\n+ADORA2A\t1\n+ADORA2B\t7\n+ADPGK\t2019\n+ADPN\t7\n+ADPRH\t2\n+ADPRHL1\t0\n+ADPRHL2\t31\n+ADRA1A\t0\n+ADRA1B\t0\n+ADRA1D\t1\n+ADRA2A\t39\n+ADRA2B\t0\n+ADRB1\t11\n+ADRB2\t0\n+ADRB3\t17\n+ADRBK1\t51\n+ADRBK2\t4\n+ADRM1\t189\n+ADSL\t96\n+ADSS\t165\n+ADSSL1\t0\n+AE2\t6\n+AEBP1\t1856\n+AEBP2\t144\n+AEGP\t3\n+AER61\t3\n+AES\t1381\n+AF15Q14\t1\n+AF1Q\t24\n+AF5Q31\t244\n+AFAP\t139\n+AFAR3\t6\n+AFF1\t19\n+AFF2\t0\n+AFF3\t7\n+AFF4\t1\n+AFG3L1\t5\n+AFG3L2\t107\n+AFMID\t92\n+AFP\t0\n+AFTIPHILIN\t81\n+AG1\t6\n+AGA\t19\n+AGBL2\t1\n+AGBL3\t2\n+AGC1\t8\n+AGER\t4\n+AGGF1\t52\n+AGL\t71\n+AGMAT\t5\n+AGPAT1\t83\n+AGPAT2\t2\n+AGPAT3\t20\n+AGPAT4\t51\n+AGPAT5\t260\n+AGPAT6\t51\n+AGPAT7\t25\n+AGPS\t96\n+AGR2\t21\n+AGRN\t345\n+AGRP\t0\n+AGT\t948\n+AGTPBP1\t28\n+AGTR1\t0\n+AGTR2\t0\n+AGTRAP\t204\n+AGXT2L1\t0\n+AHCTF1\t69\n+AHCY\t594\n+AHCYL1\t709\n+AHDC1\t8\n+AHI1\t55\n+AHNAK\t0\n+AHR\t458\n+AHSA1\t136\n+AHSA2\t38\n+AHSG\t0\n+AICDA\t1\n+AIFL\t0\n+AIG1\t63\n+AIM1\t2\n+AIM1L\t0\n+AIP\t87\n+AIP1\t92\n+AIPL1\t8\n+AK1\t37\n+AK2\t156\n+AK3\t197\n+AK3L1\t14\n+AK5\t9\n+AK7\t1\n+AKAP1\t42\n+AKAP10\t86\n+AKAP11\t78\n+AKAP12\t72\n+AKAP13\t26\n+AKAP14\t9\n+AKAP3\t3\n+AKAP6\t29\n+AKAP7\t57\n+AKAP8\t51\n+AKAP8L\t155\n+AKAP9\t56\n+AKIP\t1\n+AKNA\t8\n+AKR1A1\t126\n+AKR1B1\t305\n+AKR1B10"..b'59\n+ZNF278\t80\n+ZNF28\t31\n+ZNF281\t139\n+ZNF282\t64\n+ZNF283\t18\n+ZNF284\t64\n+ZNF285\t9\n+ZNF286\t488\n+ZNF287\t48\n+ZNF289\t51\n+ZNF291\t49\n+ZNF292\t112\n+ZNF294\t45\n+ZNF295\t52\n+ZNF297\t45\n+ZNF297B\t84\n+ZNF3\t39\n+ZNF30\t97\n+ZNF300\t6\n+ZNF302\t170\n+ZNF304\t45\n+ZNF305\t18\n+ZNF306\t2\n+ZNF307\t24\n+ZNF31\t10\n+ZNF311\t15\n+ZNF312\t0\n+ZNF313\t199\n+ZNF317\t51\n+ZNF318\t50\n+ZNF319\t22\n+ZNF32\t66\n+ZNF322A\t6\n+ZNF323\t6\n+ZNF324\t105\n+ZNF326\t43\n+ZNF329\t32\n+ZNF330\t33\n+ZNF331\t28\n+ZNF333\t41\n+ZNF334\t11\n+ZNF335\t6\n+ZNF336\t9\n+ZNF337\t33\n+ZNF33A\t11\n+ZNF34\t13\n+ZNF341\t1\n+ZNF342\t0\n+ZNF343\t16\n+ZNF345\t9\n+ZNF346\t47\n+ZNF347\t35\n+ZNF35\t12\n+ZNF350\t14\n+ZNF354A\t62\n+ZNF354B\t22\n+ZNF354C\t1336\n+ZNF358\t70\n+ZNF364\t40\n+ZNF365\t7\n+ZNF366\t0\n+ZNF367\t66\n+ZNF37A\t74\n+ZNF37B\t102\n+ZNF38\t53\n+ZNF382\t6\n+ZNF383\t7\n+ZNF384\t90\n+ZNF385\t1\n+ZNF390\t5\n+ZNF394\t643\n+ZNF395\t80\n+ZNF396\t2\n+ZNF397\t43\n+ZNF398\t29\n+ZNF403\t106\n+ZNF404\t17\n+ZNF406\t1\n+ZNF407\t9\n+ZNF408\t18\n+ZNF41\t57\n+ZNF410\t66\n+ZNF414\t3\n+ZNF415\t132\n+ZNF416\t49\n+ZNF417\t0\n+ZNF418\t10\n+ZNF419\t30\n+ZNF42\t84\n+ZNF420\t1\n+ZNF423\t38\n+ZNF425\t9\n+ZNF426\t12\n+ZNF429\t42\n+ZNF43\t55\n+ZNF430\t59\n+ZNF431\t11\n+ZNF432\t26\n+ZNF433\t22\n+ZNF434\t48\n+ZNF435\t1\n+ZNF436\t412\n+ZNF438\t67\n+ZNF439\t35\n+ZNF44\t71\n+ZNF440\t23\n+ZNF440L\t7\n+ZNF441\t15\n+ZNF442\t3\n+ZNF443\t52\n+ZNF444\t299\n+ZNF445\t15\n+ZNF446\t34\n+ZNF447\t56\n+ZNF449\t24\n+ZNF45\t187\n+ZNF451\t43\n+ZNF452\t0\n+ZNF454\t39\n+ZNF46\t7\n+ZNF462\t70\n+ZNF467\t10\n+ZNF468\t198\n+ZNF469\t3\n+ZNF471\t41\n+ZNF473\t18\n+ZNF479\t12\n+ZNF480\t117\n+ZNF482\t37\n+ZNF483\t3\n+ZNF484\t12\n+ZNF485\t4\n+ZNF486\t630\n+ZNF488\t10\n+ZNF490\t9\n+ZNF491\t3\n+ZNF492\t0\n+ZNF493\t27\n+ZNF496\t91\n+ZNF497\t4\n+ZNF498\t38\n+ZNF499\t15\n+ZNF500\t7\n+ZNF501\t11\n+ZNF502\t11\n+ZNF503\t111\n+ZNF505\t3\n+ZNF506\t19\n+ZNF507\t101\n+ZNF509\t6\n+ZNF510\t63\n+ZNF511\t336\n+ZNF512\t67\n+ZNF513\t41\n+ZNF514\t9\n+ZNF516\t104\n+ZNF517\t14\n+ZNF518\t50\n+ZNF519\t27\n+ZNF521\t49\n+ZNF524\t79\n+ZNF525\t12\n+ZNF526\t39\n+ZNF527\t8\n+ZNF528\t51\n+ZNF529\t53\n+ZNF530\t14\n+ZNF532\t459\n+ZNF533\t0\n+ZNF536\t25\n+ZNF537\t299\n+ZNF539\t118\n+ZNF540\t13\n+ZNF542\t40\n+ZNF543\t16\n+ZNF544\t33\n+ZNF545\t0\n+ZNF546\t6\n+ZNF547\t138\n+ZNF548\t44\n+ZNF549\t29\n+ZNF550\t26\n+ZNF551\t65\n+ZNF552\t14\n+ZNF553\t89\n+ZNF554\t8\n+ZNF555\t27\n+ZNF557\t13\n+ZNF558\t60\n+ZNF559\t87\n+ZNF560\t0\n+ZNF561\t131\n+ZNF562\t10\n+ZNF563\t19\n+ZNF564\t68\n+ZNF565\t14\n+ZNF566\t14\n+ZNF567\t17\n+ZNF568\t27\n+ZNF569\t59\n+ZNF570\t6\n+ZNF571\t7\n+ZNF572\t0\n+ZNF573\t4\n+ZNF574\t32\n+ZNF575\t6\n+ZNF576\t46\n+ZNF577\t50\n+ZNF578\t8\n+ZNF579\t47\n+ZNF580\t270\n+ZNF581\t158\n+ZNF582\t7\n+ZNF583\t65\n+ZNF584\t20\n+ZNF585A\t133\n+ZNF585B\t99\n+ZNF586\t12\n+ZNF587\t70\n+ZNF588\t40\n+ZNF589\t24\n+ZNF592\t14\n+ZNF593\t21\n+ZNF594\t6\n+ZNF595\t12\n+ZNF596\t227\n+ZNF597\t0\n+ZNF598\t26\n+ZNF599\t30\n+ZNF6\t43\n+ZNF600\t17\n+ZNF605\t14\n+ZNF606\t37\n+ZNF607\t72\n+ZNF608\t84\n+ZNF609\t22\n+ZNF610\t5\n+ZNF611\t186\n+ZNF613\t17\n+ZNF614\t25\n+ZNF615\t52\n+ZNF616\t35\n+ZNF618\t1\n+ZNF619\t1\n+ZNF620\t19\n+ZNF621\t26\n+ZNF622\t36\n+ZNF623\t45\n+ZNF624\t20\n+ZNF625\t0\n+ZNF626\t37\n+ZNF627\t31\n+ZNF629\t72\n+ZNF630\t0\n+ZNF638\t261\n+ZNF639\t50\n+ZNF641\t14\n+ZNF642\t0\n+ZNF643\t0\n+ZNF644\t65\n+ZNF646\t19\n+ZNF649\t119\n+ZNF650\t33\n+ZNF651\t174\n+ZNF652\t27\n+ZNF653\t6\n+ZNF654\t20\n+ZNF655\t103\n+ZNF658\t20\n+ZNF659\t5\n+ZNF66\t0\n+ZNF660\t8\n+ZNF663\t0\n+ZNF664\t120\n+ZNF665\t15\n+ZNF667\t191\n+ZNF668\t9\n+ZNF669\t51\n+ZNF670\t3\n+ZNF671\t51\n+ZNF672\t70\n+ZNF673\t7\n+ZNF677\t0\n+ZNF678\t7\n+ZNF680\t13\n+ZNF681\t1\n+ZNF682\t11\n+ZNF684\t6\n+ZNF687\t32\n+ZNF688\t9\n+ZNF689\t55\n+ZNF69\t7\n+ZNF690\t11\n+ZNF691\t28\n+ZNF692\t12\n+ZNF694\t11\n+ZNF695\t0\n+ZNF697\t26\n+ZNF7\t49\n+ZNF70\t1\n+ZNF700\t53\n+ZNF701\t6\n+ZNF702\t0\n+ZNF703\t3\n+ZNF704\t0\n+ZNF706\t353\n+ZNF707\t13\n+ZNF708\t35\n+ZNF71\t33\n+ZNF710\t36\n+ZNF713\t2\n+ZNF714\t61\n+ZNF718\t0\n+ZNF720\t66\n+ZNF721\t15\n+ZNF722\t0\n+ZNF74\t41\n+ZNF740\t19\n+ZNF75\t36\n+ZNF75A\t86\n+ZNF76\t125\n+ZNF77\t3\n+ZNF79\t1\n+ZNF8\t1\n+ZNF80\t1\n+ZNF81\t3\n+ZNF83\t572\n+ZNF84\t23\n+ZNF85\t66\n+ZNF9\t112\n+ZNF91\t163\n+ZNF92\t68\n+ZNF93\t72\n+ZNF96\t1\n+ZNFN1A2\t0\n+ZNFN1A3\t0\n+ZNFN1A4\t21\n+ZNFN1A5\t59\n+ZNFX1\t15\n+ZNHIT1\t18\n+ZNHIT2\t9\n+ZNHIT3\t58\n+ZNHIT4\t14\n+ZNRD1\t42\n+ZNRF1\t112\n+ZNRF2\t15\n+ZNRF3\t54\n+ZP3\t21\n+ZPBP\t0\n+ZPLD1\t0\n+ZRANB1\t53\n+ZRANB3\t7\n+ZRF1\t134\n+ZSCAN1\t73\n+ZSCAN2\t8\n+ZSCAN5\t17\n+ZSWIM1\t37\n+ZSWIM3\t3\n+ZSWIM4\t28\n+ZSWIM5\t7\n+ZSWIM6\t381\n+ZW10\t19\n+ZWILCH\t4\n+ZWINT\t157\n+ZXDA\t0\n+ZXDB\t16\n+ZXDC\t42\n+ZYG11B\t1581\n+ZYG11BL\t28\n+ZYX\t1233\n+ZZANK1\t48\n+ZZEF1\t26\n+ZZZ3\t77\n'
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/DiffExpAnal/DESeqTools/raw/f1cond2.tsv
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/DiffExpAnal/DESeqTools/raw/f1cond2.tsv Mon Apr 29 03:20:15 2013 -0400
b
b"@@ -0,0 +1,18761 @@\n+GliNS1\tCB541\n+13CDNA73\t1\n+15E1.2\t458\n+182-FIP\t231\n+2'-PDE\t127\n+3'HEXO\t111\n+3.8-1\t0\n+384D8-2\t4\n+76P\t108\n+7h3\t0\n+8D6A\t0\n+A1BG\t0\n+A2BP1\t7\n+A2M\t49\n+A4GALT\t0\n+A4GNT\t0\n+AAA1\t0\n+AAAS\t49\n+AACS\t5365\n+AADACL1\t683\n+AADAT\t24\n+AAK1\t2\n+AAMP\t383\n+AANAT\t0\n+AARS\t183\n+AARSD1\t122\n+AARSL\t11\n+AASDH\t47\n+AASDHPPT\t543\n+AASS\t145\n+AATF\t36\n+AATK\t0\n+ABAT\t281\n+ABC1\t24\n+ABCA1\t27\n+ABCA10\t6\n+ABCA11\t73\n+ABCA12\t0\n+ABCA13\t30\n+ABCA2\t1\n+ABCA3\t166\n+ABCA4\t0\n+ABCA5\t51\n+ABCA6\t7\n+ABCA7\t6\n+ABCA8\t1\n+ABCA9\t317\n+ABCB1\t2\n+ABCB10\t169\n+ABCB11\t0\n+ABCB4\t0\n+ABCB5\t1\n+ABCB6\t69\n+ABCB7\t51\n+ABCB8\t28\n+ABCB9\t11\n+ABCC1\t127\n+ABCC10\t7\n+ABCC11\t27\n+ABCC12\t0\n+ABCC13\t3\n+ABCC2\t0\n+ABCC3\t301\n+ABCC4\t57\n+ABCC5\t38\n+ABCC6\t44\n+ABCC8\t0\n+ABCC9\t6\n+ABCD1\t13\n+ABCD2\t0\n+ABCD3\t86\n+ABCD4\t598\n+ABCE1\t790\n+ABCF1\t32\n+ABCF2\t36\n+ABCF3\t32\n+ABCG1\t0\n+ABCG2\t19\n+ABCG4\t0\n+ABHD1\t1\n+ABHD10\t16\n+ABHD11\t676\n+ABHD14A\t8\n+ABHD14B\t7\n+ABHD2\t35\n+ABHD3\t343\n+ABHD4\t210\n+ABHD5\t68\n+ABHD6\t394\n+ABHD7\t0\n+ABHD8\t0\n+ABI1\t257\n+ABI2\t247\n+ABI3\t0\n+ABI3BP\t145\n+ABL1\t94\n+ABL2\t45\n+ABLIM1\t13\n+ABLIM2\t8\n+ABLIM3\t15\n+ABO\t1\n+ABR\t1137\n+ABRA\t0\n+ABT1\t25\n+ABTB1\t10\n+ABTB2\t12\n+ACAA1\t104\n+ACAA2\t156\n+ACACA\t173\n+ACACB\t1\n+ACAD10\t1\n+ACAD11\t17\n+ACAD8\t56\n+ACAD9\t256\n+ACADL\t2\n+ACADM\t2\n+ACADS\t50\n+ACADSB\t82\n+ACADVL\t35\n+ACAS2\t44\n+ACAS2L\t8\n+ACAT1\t195\n+ACAT2\t25\n+ACATE2\t41\n+ACBD3\t692\n+ACBD4\t2\n+ACBD5\t5\n+ACBD6\t123\n+ACBD7\t9\n+ACCN2\t40\n+ACCN3\t28\n+ACCN4\t0\n+ACD\t117\n+ACDC\t17\n+ACE\t1\n+ACF\t45\n+ACHE\t37\n+ACIN1\t0\n+ACLY\t234\n+ACMSD\t0\n+ACN9\t399\n+ACO1\t124\n+ACO2\t1552\n+ACOT2\t28\n+ACOT4\t0\n+ACOT7\t208\n+ACOT8\t0\n+ACOT9\t16\n+ACOX1\t123\n+ACOX2\t66\n+ACOX3\t5\n+ACOXL\t1\n+ACP1\t942\n+ACP2\t25\n+ACP5\t0\n+ACP6\t361\n+ACPL2\t136\n+ACPP\t6\n+ACR\t0\n+ACRBP\t2\n+ACRC\t13\n+ACRV1\t0\n+ACSBG1\t2\n+ACSL1\t77\n+ACSL3\t1546\n+ACSL4\t126\n+ACSL5\t52\n+ACSL6\t1\n+ACSM2\t0\n+ACSM3\t0\n+ACSS1\t48\n+ACSS2\t18\n+ACTA1\t10\n+ACTA2\t182\n+ACTB\t11099\n+ACTC\t0\n+ACTG1\t1712\n+ACTG2\t29\n+ACTL6A\t78\n+ACTL6B\t0\n+ACTL8\t1\n+ACTN1\t7604\n+ACTN2\t0\n+ACTN4\t8247\n+ACTR10\t30\n+ACTR1A\t18\n+ACTR1B\t1\n+ACTR2\t3964\n+ACTR3\t830\n+ACTR3B\t1\n+ACTR5\t20\n+ACTR6\t21\n+ACTR8\t289\n+ACTRT1\t1\n+ACVR1\t31\n+ACVR1B\t6\n+ACVR1C\t0\n+ACVR2\t41\n+ACVR2A\t21\n+ACVR2B\t3\n+ACVRL1\t0\n+ACY1\t3\n+ACY1L2\t253\n+ACY3\t3\n+ACYP1\t155\n+ACYP2\t240\n+AD-003\t0\n+AD-020\t24\n+AD023\t30\n+AD031\t48\n+AD7C-NTP\t3\n+ADA\t5311\n+ADAL\t0\n+ADAM10\t403\n+ADAM11\t1\n+ADAM12\t144\n+ADAM15\t76\n+ADAM17\t560\n+ADAM18\t0\n+ADAM19\t142\n+ADAM20\t5\n+ADAM21\t0\n+ADAM22\t116\n+ADAM23\t61\n+ADAM28\t0\n+ADAM32\t0\n+ADAM33\t12\n+ADAM8\t7\n+ADAM9\t2589\n+ADAMDEC1\t0\n+ADAMTS1\t94\n+ADAMTS10\t2\n+ADAMTS12\t4\n+ADAMTS13\t32\n+ADAMTS15\t44\n+ADAMTS16\t10\n+ADAMTS17\t1\n+ADAMTS18\t3\n+ADAMTS19\t11\n+ADAMTS2\t0\n+ADAMTS20\t0\n+ADAMTS3\t0\n+ADAMTS4\t78\n+ADAMTS5\t9\n+ADAMTS6\t86\n+ADAMTS7\t0\n+ADAMTS8\t0\n+ADAMTS9\t223\n+ADAMTSL1\t37\n+ADAMTSL2\t0\n+ADAMTSL3\t0\n+ADAMTSL4\t19\n+ADAR\t96\n+ADARB1\t28\n+ADARB2\t1\n+ADAT1\t6\n+ADC\t12\n+ADCK1\t5\n+ADCK2\t23\n+ADCK4\t21\n+ADCK5\t2\n+ADCY1\t59\n+ADCY2\t0\n+ADCY3\t166\n+ADCY5\t0\n+ADCY6\t519\n+ADCY7\t98\n+ADCY8\t7\n+ADCY9\t43\n+ADCYAP1\t0\n+ADCYAP1R1\t1\n+ADD1\t808\n+ADD2\t339\n+ADD3\t400\n+ADFP\t77\n+ADH1B\t0\n+ADH1C\t0\n+ADH4\t0\n+ADH5\t612\n+ADHFE1\t26\n+ADI1\t204\n+ADIPOR1\t123\n+ADIPOR2\t40\n+ADK\t287\n+ADM\t215\n+ADM2\t0\n+ADMP\t10\n+ADMR\t8582\n+ADNP\t615\n+ADORA1\t132\n+ADORA2A\t30\n+ADORA2B\t42\n+ADPGK\t4998\n+ADPN\t4\n+ADPRH\t0\n+ADPRHL1\t0\n+ADPRHL2\t77\n+ADRA1A\t0\n+ADRA1B\t1\n+ADRA1D\t2\n+ADRA2A\t0\n+ADRA2B\t0\n+ADRB1\t12\n+ADRB2\t4\n+ADRB3\t10\n+ADRBK1\t11\n+ADRBK2\t18\n+ADRM1\t204\n+ADSL\t112\n+ADSS\t386\n+ADSSL1\t9\n+AE2\t30\n+AEBP1\t4799\n+AEBP2\t320\n+AEGP\t9\n+AER61\t11\n+AES\t292\n+AF15Q14\t0\n+AF1Q\t45\n+AF5Q31\t395\n+AFAP\t480\n+AFAR3\t11\n+AFF1\t132\n+AFF2\t0\n+AFF3\t70\n+AFF4\t6\n+AFG3L1\t19\n+AFG3L2\t88\n+AFMID\t232\n+AFP\t4\n+AFTIPHILIN\t309\n+AG1\t1\n+AGA\t159\n+AGBL2\t6\n+AGBL3\t0\n+AGC1\t0\n+AGER\t0\n+AGGF1\t130\n+AGL\t209\n+AGMAT\t1\n+AGPAT1\t12\n+AGPAT2\t0\n+AGPAT3\t54\n+AGPAT4\t45\n+AGPAT5\t1757\n+AGPAT6\t33\n+AGPAT7\t7\n+AGPS\t350\n+AGR2\t12\n+AGRN\t98\n+AGRP\t0\n+AGT\t79\n+AGTPBP1\t9\n+AGTR1\t0\n+AGTR2\t0\n+AGTRAP\t286\n+AGXT2L1\t0\n+AHCTF1\t33\n+AHCY\t463\n+AHCYL1\t745\n+AHDC1\t5\n+AHI1\t40\n+AHNAK\t7\n+AHR\t1326\n+AHSA1\t159\n+AHSA2\t185\n+AHSG\t2\n+AICDA\t0\n+AIFL\t0\n+AIG1\t289\n+AIM1\t58\n+AIM1L\t0\n+AIP\t453\n+AIP1\t142\n+AIPL1\t85\n+AK1\t138\n+AK2\t415\n+AK3\t106\n+AK3L1\t21\n+AK5\t36\n+AK7\t13\n+AKAP1\t18\n+AKAP10\t557\n+AKAP11\t3\n+AKAP12\t196\n+AKAP13\t40\n+AKAP14\t0\n+AKAP3\t9\n+AKAP6\t206\n+AKAP7\t225\n+AKAP8\t80\n+AKAP8L\t19\n+AKAP9\t36"..b'F281\t151\n+ZNF282\t100\n+ZNF283\t19\n+ZNF284\t62\n+ZNF285\t0\n+ZNF286\t562\n+ZNF287\t64\n+ZNF289\t16\n+ZNF291\t57\n+ZNF292\t245\n+ZNF294\t69\n+ZNF295\t105\n+ZNF297\t116\n+ZNF297B\t337\n+ZNF3\t27\n+ZNF30\t29\n+ZNF300\t0\n+ZNF302\t262\n+ZNF304\t29\n+ZNF305\t60\n+ZNF306\t0\n+ZNF307\t20\n+ZNF31\t13\n+ZNF311\t0\n+ZNF312\t0\n+ZNF313\t462\n+ZNF317\t176\n+ZNF318\t45\n+ZNF319\t95\n+ZNF32\t53\n+ZNF322A\t4\n+ZNF323\t20\n+ZNF324\t162\n+ZNF326\t143\n+ZNF329\t39\n+ZNF330\t105\n+ZNF331\t72\n+ZNF333\t49\n+ZNF334\t121\n+ZNF335\t9\n+ZNF336\t17\n+ZNF337\t63\n+ZNF33A\t1\n+ZNF34\t0\n+ZNF341\t0\n+ZNF342\t0\n+ZNF343\t44\n+ZNF345\t0\n+ZNF346\t39\n+ZNF347\t49\n+ZNF35\t8\n+ZNF350\t12\n+ZNF354A\t165\n+ZNF354B\t43\n+ZNF354C\t1139\n+ZNF358\t10\n+ZNF364\t45\n+ZNF365\t47\n+ZNF366\t0\n+ZNF367\t441\n+ZNF37A\t79\n+ZNF37B\t57\n+ZNF38\t78\n+ZNF382\t11\n+ZNF383\t0\n+ZNF384\t43\n+ZNF385\t1\n+ZNF390\t4\n+ZNF394\t598\n+ZNF395\t56\n+ZNF396\t11\n+ZNF397\t32\n+ZNF398\t19\n+ZNF403\t89\n+ZNF404\t0\n+ZNF406\t0\n+ZNF407\t10\n+ZNF408\t8\n+ZNF41\t192\n+ZNF410\t117\n+ZNF414\t4\n+ZNF415\t35\n+ZNF416\t2\n+ZNF417\t2\n+ZNF418\t20\n+ZNF419\t7\n+ZNF42\t27\n+ZNF420\t0\n+ZNF423\t82\n+ZNF425\t23\n+ZNF426\t27\n+ZNF429\t13\n+ZNF43\t59\n+ZNF430\t66\n+ZNF431\t4\n+ZNF432\t15\n+ZNF433\t19\n+ZNF434\t34\n+ZNF435\t0\n+ZNF436\t193\n+ZNF438\t95\n+ZNF439\t15\n+ZNF44\t96\n+ZNF440\t21\n+ZNF440L\t0\n+ZNF441\t45\n+ZNF442\t0\n+ZNF443\t63\n+ZNF444\t230\n+ZNF445\t9\n+ZNF446\t25\n+ZNF447\t775\n+ZNF449\t18\n+ZNF45\t99\n+ZNF451\t197\n+ZNF452\t0\n+ZNF454\t97\n+ZNF46\t24\n+ZNF462\t61\n+ZNF467\t0\n+ZNF468\t513\n+ZNF469\t0\n+ZNF471\t40\n+ZNF473\t8\n+ZNF479\t9\n+ZNF480\t108\n+ZNF482\t157\n+ZNF483\t0\n+ZNF484\t11\n+ZNF485\t13\n+ZNF486\t338\n+ZNF488\t0\n+ZNF490\t0\n+ZNF491\t0\n+ZNF492\t1\n+ZNF493\t21\n+ZNF496\t132\n+ZNF497\t0\n+ZNF498\t119\n+ZNF499\t2\n+ZNF500\t2\n+ZNF501\t21\n+ZNF502\t22\n+ZNF503\t0\n+ZNF505\t0\n+ZNF506\t23\n+ZNF507\t94\n+ZNF509\t76\n+ZNF510\t223\n+ZNF511\t275\n+ZNF512\t18\n+ZNF513\t110\n+ZNF514\t11\n+ZNF516\t38\n+ZNF517\t57\n+ZNF518\t98\n+ZNF519\t27\n+ZNF521\t8\n+ZNF524\t8\n+ZNF525\t37\n+ZNF526\t33\n+ZNF527\t0\n+ZNF528\t45\n+ZNF529\t4\n+ZNF530\t5\n+ZNF532\t1033\n+ZNF533\t2\n+ZNF536\t37\n+ZNF537\t238\n+ZNF539\t30\n+ZNF540\t15\n+ZNF542\t45\n+ZNF543\t5\n+ZNF544\t50\n+ZNF545\t148\n+ZNF546\t4\n+ZNF547\t225\n+ZNF548\t23\n+ZNF549\t4\n+ZNF550\t0\n+ZNF551\t50\n+ZNF552\t41\n+ZNF553\t186\n+ZNF554\t7\n+ZNF555\t49\n+ZNF557\t15\n+ZNF558\t5\n+ZNF559\t116\n+ZNF560\t13\n+ZNF561\t135\n+ZNF562\t0\n+ZNF563\t12\n+ZNF564\t79\n+ZNF565\t8\n+ZNF566\t0\n+ZNF567\t19\n+ZNF568\t39\n+ZNF569\t55\n+ZNF570\t6\n+ZNF571\t36\n+ZNF572\t1\n+ZNF573\t0\n+ZNF574\t2\n+ZNF575\t14\n+ZNF576\t36\n+ZNF577\t20\n+ZNF578\t18\n+ZNF579\t1\n+ZNF580\t131\n+ZNF581\t13\n+ZNF582\t0\n+ZNF583\t43\n+ZNF584\t42\n+ZNF585A\t147\n+ZNF585B\t23\n+ZNF586\t13\n+ZNF587\t15\n+ZNF588\t92\n+ZNF589\t9\n+ZNF592\t88\n+ZNF593\t165\n+ZNF594\t17\n+ZNF595\t9\n+ZNF596\t423\n+ZNF597\t4\n+ZNF598\t12\n+ZNF599\t17\n+ZNF6\t44\n+ZNF600\t14\n+ZNF605\t41\n+ZNF606\t26\n+ZNF607\t23\n+ZNF608\t130\n+ZNF609\t13\n+ZNF610\t16\n+ZNF611\t84\n+ZNF613\t13\n+ZNF614\t31\n+ZNF615\t20\n+ZNF616\t12\n+ZNF618\t0\n+ZNF619\t0\n+ZNF620\t33\n+ZNF621\t55\n+ZNF622\t100\n+ZNF623\t245\n+ZNF624\t19\n+ZNF625\t9\n+ZNF626\t66\n+ZNF627\t35\n+ZNF629\t117\n+ZNF630\t8\n+ZNF638\t1139\n+ZNF639\t454\n+ZNF641\t18\n+ZNF642\t41\n+ZNF643\t0\n+ZNF644\t210\n+ZNF646\t4\n+ZNF649\t60\n+ZNF650\t131\n+ZNF651\t145\n+ZNF652\t104\n+ZNF653\t10\n+ZNF654\t10\n+ZNF655\t483\n+ZNF658\t52\n+ZNF659\t11\n+ZNF66\t0\n+ZNF660\t51\n+ZNF663\t0\n+ZNF664\t352\n+ZNF665\t7\n+ZNF667\t37\n+ZNF668\t3\n+ZNF669\t12\n+ZNF670\t46\n+ZNF671\t97\n+ZNF672\t135\n+ZNF673\t50\n+ZNF677\t0\n+ZNF678\t19\n+ZNF680\t18\n+ZNF681\t0\n+ZNF682\t8\n+ZNF684\t52\n+ZNF687\t28\n+ZNF688\t36\n+ZNF689\t6\n+ZNF69\t6\n+ZNF690\t9\n+ZNF691\t54\n+ZNF692\t0\n+ZNF694\t10\n+ZNF695\t39\n+ZNF697\t11\n+ZNF7\t163\n+ZNF70\t0\n+ZNF700\t126\n+ZNF701\t7\n+ZNF702\t14\n+ZNF703\t0\n+ZNF704\t0\n+ZNF706\t1130\n+ZNF707\t2\n+ZNF708\t70\n+ZNF71\t1\n+ZNF710\t20\n+ZNF713\t0\n+ZNF714\t0\n+ZNF718\t24\n+ZNF720\t92\n+ZNF721\t88\n+ZNF722\t5\n+ZNF74\t23\n+ZNF740\t28\n+ZNF75\t191\n+ZNF75A\t381\n+ZNF76\t661\n+ZNF77\t14\n+ZNF79\t0\n+ZNF8\t0\n+ZNF80\t0\n+ZNF81\t16\n+ZNF83\t553\n+ZNF84\t72\n+ZNF85\t147\n+ZNF9\t326\n+ZNF91\t79\n+ZNF92\t618\n+ZNF93\t90\n+ZNF96\t0\n+ZNFN1A2\t0\n+ZNFN1A3\t0\n+ZNFN1A4\t32\n+ZNFN1A5\t91\n+ZNFX1\t64\n+ZNHIT1\t0\n+ZNHIT2\t18\n+ZNHIT3\t276\n+ZNHIT4\t31\n+ZNRD1\t58\n+ZNRF1\t278\n+ZNRF2\t121\n+ZNRF3\t117\n+ZP3\t144\n+ZPBP\t0\n+ZPLD1\t0\n+ZRANB1\t31\n+ZRANB3\t34\n+ZRF1\t313\n+ZSCAN1\t118\n+ZSCAN2\t5\n+ZSCAN5\t0\n+ZSWIM1\t62\n+ZSWIM3\t0\n+ZSWIM4\t26\n+ZSWIM5\t9\n+ZSWIM6\t752\n+ZW10\t14\n+ZWILCH\t22\n+ZWINT\t222\n+ZXDA\t0\n+ZXDB\t20\n+ZXDC\t44\n+ZYG11B\t4403\n+ZYG11BL\t21\n+ZYX\t1378\n+ZZANK1\t42\n+ZZEF1\t25\n+ZZZ3\t430\n'
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/DiffExpAnal/DESeqTools/raw/f2cond1.tsv
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/DiffExpAnal/DESeqTools/raw/f2cond1.tsv Mon Apr 29 03:20:15 2013 -0400
b
b"@@ -0,0 +1,18761 @@\n+GliNS1\tG166\n+13CDNA73\t0\n+15E1.2\t74\n+182-FIP\t127\n+2'-PDE\t38\n+3'HEXO\t20\n+3.8-1\t0\n+384D8-2\t3\n+76P\t51\n+7h3\t0\n+8D6A\t1\n+A1BG\t0\n+A2BP1\t18\n+A2M\t2209\n+A4GALT\t0\n+A4GNT\t0\n+AAA1\t0\n+AAAS\t29\n+AACS\t1294\n+AADACL1\t13\n+AADAT\t5\n+AAK1\t0\n+AAMP\t170\n+AANAT\t0\n+AARS\t105\n+AARSD1\t48\n+AARSL\t10\n+AASDH\t5\n+AASDHPPT\t128\n+AASS\t101\n+AATF\t40\n+AATK\t0\n+ABAT\t838\n+ABC1\t13\n+ABCA1\t13\n+ABCA10\t0\n+ABCA11\t1\n+ABCA12\t0\n+ABCA13\t0\n+ABCA2\t5\n+ABCA3\t91\n+ABCA4\t0\n+ABCA5\t2\n+ABCA6\t1\n+ABCA7\t7\n+ABCA8\t76\n+ABCA9\t133\n+ABCB1\t0\n+ABCB10\t41\n+ABCB11\t0\n+ABCB4\t28\n+ABCB5\t0\n+ABCB6\t17\n+ABCB7\t47\n+ABCB8\t53\n+ABCB9\t6\n+ABCC1\t31\n+ABCC10\t16\n+ABCC11\t0\n+ABCC12\t0\n+ABCC13\t5\n+ABCC2\t0\n+ABCC3\t3\n+ABCC4\t24\n+ABCC5\t15\n+ABCC6\t8\n+ABCC8\t13\n+ABCC9\t2\n+ABCD1\t19\n+ABCD2\t0\n+ABCD3\t147\n+ABCD4\t71\n+ABCE1\t378\n+ABCF1\t39\n+ABCF2\t42\n+ABCF3\t29\n+ABCG1\t5\n+ABCG2\t29\n+ABCG4\t0\n+ABHD1\t1\n+ABHD10\t14\n+ABHD11\t1182\n+ABHD14A\t37\n+ABHD14B\t10\n+ABHD2\t79\n+ABHD3\t95\n+ABHD4\t82\n+ABHD5\t31\n+ABHD6\t204\n+ABHD7\t0\n+ABHD8\t6\n+ABI1\t199\n+ABI2\t200\n+ABI3\t0\n+ABI3BP\t4\n+ABL1\t67\n+ABL2\t14\n+ABLIM1\t50\n+ABLIM2\t1\n+ABLIM3\t0\n+ABO\t1\n+ABR\t158\n+ABRA\t0\n+ABT1\t31\n+ABTB1\t12\n+ABTB2\t9\n+ACAA1\t52\n+ACAA2\t109\n+ACACA\t67\n+ACACB\t2\n+ACAD10\t19\n+ACAD11\t70\n+ACAD8\t43\n+ACAD9\t53\n+ACADL\t0\n+ACADM\t67\n+ACADS\t21\n+ACADSB\t51\n+ACADVL\t86\n+ACAS2\t12\n+ACAS2L\t2\n+ACAT1\t141\n+ACAT2\t153\n+ACATE2\t19\n+ACBD3\t169\n+ACBD4\t0\n+ACBD5\t21\n+ACBD6\t167\n+ACBD7\t1\n+ACCN2\t14\n+ACCN3\t6\n+ACCN4\t0\n+ACD\t3\n+ACDC\t0\n+ACE\t0\n+ACF\t12\n+ACHE\t75\n+ACIN1\t0\n+ACLY\t431\n+ACMSD\t9\n+ACN9\t128\n+ACO1\t42\n+ACO2\t309\n+ACOT2\t9\n+ACOT4\t0\n+ACOT7\t128\n+ACOT8\t0\n+ACOT9\t11\n+ACOX1\t71\n+ACOX2\t4\n+ACOX3\t4\n+ACOXL\t0\n+ACP1\t303\n+ACP2\t26\n+ACP5\t1\n+ACP6\t125\n+ACPL2\t71\n+ACPP\t5\n+ACR\t0\n+ACRBP\t0\n+ACRC\t10\n+ACRV1\t2\n+ACSBG1\t4\n+ACSL1\t3\n+ACSL3\t521\n+ACSL4\t68\n+ACSL5\t2\n+ACSL6\t46\n+ACSM2\t4\n+ACSM3\t0\n+ACSS1\t26\n+ACSS2\t30\n+ACTA1\t28\n+ACTA2\t0\n+ACTB\t16535\n+ACTC\t0\n+ACTG1\t1349\n+ACTG2\t23\n+ACTL6A\t38\n+ACTL6B\t2\n+ACTL8\t0\n+ACTN1\t669\n+ACTN2\t30\n+ACTN4\t4178\n+ACTR10\t61\n+ACTR1A\t55\n+ACTR1B\t3\n+ACTR2\t4056\n+ACTR3\t264\n+ACTR3B\t1\n+ACTR5\t16\n+ACTR6\t218\n+ACTR8\t78\n+ACTRT1\t0\n+ACVR1\t3\n+ACVR1B\t11\n+ACVR1C\t0\n+ACVR2\t21\n+ACVR2A\t4\n+ACVR2B\t0\n+ACVRL1\t2\n+ACY1\t21\n+ACY1L2\t58\n+ACY3\t0\n+ACYP1\t61\n+ACYP2\t81\n+AD-003\t2\n+AD-020\t4\n+AD023\t0\n+AD031\t36\n+AD7C-NTP\t0\n+ADA\t1274\n+ADAL\t1\n+ADAM10\t188\n+ADAM11\t7\n+ADAM12\t333\n+ADAM15\t40\n+ADAM17\t69\n+ADAM18\t0\n+ADAM19\t100\n+ADAM20\t0\n+ADAM21\t4\n+ADAM22\t238\n+ADAM23\t48\n+ADAM28\t0\n+ADAM32\t0\n+ADAM33\t11\n+ADAM8\t1\n+ADAM9\t411\n+ADAMDEC1\t0\n+ADAMTS1\t192\n+ADAMTS10\t28\n+ADAMTS12\t9\n+ADAMTS13\t2\n+ADAMTS15\t4\n+ADAMTS16\t10\n+ADAMTS17\t0\n+ADAMTS18\t0\n+ADAMTS19\t2\n+ADAMTS2\t10\n+ADAMTS20\t0\n+ADAMTS3\t122\n+ADAMTS4\t21\n+ADAMTS5\t25\n+ADAMTS6\t36\n+ADAMTS7\t0\n+ADAMTS8\t0\n+ADAMTS9\t206\n+ADAMTSL1\t2\n+ADAMTSL2\t0\n+ADAMTSL3\t0\n+ADAMTSL4\t2\n+ADAR\t42\n+ADARB1\t5\n+ADARB2\t0\n+ADAT1\t15\n+ADC\t0\n+ADCK1\t10\n+ADCK2\t2\n+ADCK4\t87\n+ADCK5\t5\n+ADCY1\t158\n+ADCY2\t0\n+ADCY3\t15\n+ADCY5\t7\n+ADCY6\t78\n+ADCY7\t9\n+ADCY8\t0\n+ADCY9\t11\n+ADCYAP1\t0\n+ADCYAP1R1\t4\n+ADD1\t196\n+ADD2\t52\n+ADD3\t581\n+ADFP\t24\n+ADH1B\t0\n+ADH1C\t0\n+ADH4\t0\n+ADH5\t389\n+ADHFE1\t5\n+ADI1\t170\n+ADIPOR1\t71\n+ADIPOR2\t12\n+ADK\t153\n+ADM\t40\n+ADM2\t0\n+ADMP\t0\n+ADMR\t2037\n+ADNP\t246\n+ADORA1\t11\n+ADORA2A\t0\n+ADORA2B\t1\n+ADPGK\t1928\n+ADPN\t2\n+ADPRH\t3\n+ADPRHL1\t4\n+ADPRHL2\t16\n+ADRA1A\t0\n+ADRA1B\t0\n+ADRA1D\t0\n+ADRA2A\t66\n+ADRA2B\t0\n+ADRB1\t6\n+ADRB2\t2\n+ADRB3\t17\n+ADRBK1\t9\n+ADRBK2\t5\n+ADRM1\t150\n+ADSL\t99\n+ADSS\t166\n+ADSSL1\t2\n+AE2\t15\n+AEBP1\t1063\n+AEBP2\t109\n+AEGP\t0\n+AER61\t14\n+AES\t864\n+AF15Q14\t0\n+AF1Q\t26\n+AF5Q31\t106\n+AFAP\t104\n+AFAR3\t6\n+AFF1\t15\n+AFF2\t1\n+AFF3\t5\n+AFF4\t1\n+AFG3L1\t7\n+AFG3L2\t74\n+AFMID\t112\n+AFP\t0\n+AFTIPHILIN\t66\n+AG1\t2\n+AGA\t17\n+AGBL2\t0\n+AGBL3\t0\n+AGC1\t2\n+AGER\t3\n+AGGF1\t35\n+AGL\t13\n+AGMAT\t5\n+AGPAT1\t31\n+AGPAT2\t1\n+AGPAT3\t14\n+AGPAT4\t41\n+AGPAT5\t280\n+AGPAT6\t24\n+AGPAT7\t11\n+AGPS\t55\n+AGR2\t7\n+AGRN\t298\n+AGRP\t0\n+AGT\t860\n+AGTPBP1\t29\n+AGTR1\t0\n+AGTR2\t0\n+AGTRAP\t152\n+AGXT2L1\t0\n+AHCTF1\t53\n+AHCY\t395\n+AHCYL1\t653\n+AHDC1\t2\n+AHI1\t69\n+AHNAK\t0\n+AHR\t252\n+AHSA1\t107\n+AHSA2\t33\n+AHSG\t0\n+AICDA\t0\n+AIFL\t0\n+AIG1\t65\n+AIM1\t0\n+AIM1L\t0\n+AIP\t115\n+AIP1\t74\n+AIPL1\t15\n+AK1\t45\n+AK2\t110\n+AK3\t101\n+AK3L1\t22\n+AK5\t4\n+AK7\t1\n+AKAP1\t39\n+AKAP10\t81\n+AKAP11\t90\n+AKAP12\t103\n+AKAP13\t45\n+AKAP14\t1\n+AKAP3\t4\n+AKAP6\t34\n+AKAP7\t59\n+AKAP8\t54\n+AKAP8L\t20\n+AKAP9\t39\n+AKIP\t0\n+AKNA\t2\n+AKR1A1\t183\n+AKR1B1\t370\n+AKR1B10\t0\n+AKR1C1\t1\n+AKR1C"..b'NF274\t20\n+ZNF275\t30\n+ZNF276\t16\n+ZNF277\t442\n+ZNF278\t43\n+ZNF28\t26\n+ZNF281\t94\n+ZNF282\t51\n+ZNF283\t23\n+ZNF284\t103\n+ZNF285\t14\n+ZNF286\t306\n+ZNF287\t35\n+ZNF289\t21\n+ZNF291\t22\n+ZNF292\t84\n+ZNF294\t37\n+ZNF295\t76\n+ZNF297\t38\n+ZNF297B\t90\n+ZNF3\t21\n+ZNF30\t128\n+ZNF300\t7\n+ZNF302\t194\n+ZNF304\t33\n+ZNF305\t27\n+ZNF306\t1\n+ZNF307\t4\n+ZNF31\t7\n+ZNF311\t24\n+ZNF312\t0\n+ZNF313\t142\n+ZNF317\t47\n+ZNF318\t59\n+ZNF319\t29\n+ZNF32\t41\n+ZNF322A\t0\n+ZNF323\t1\n+ZNF324\t112\n+ZNF326\t59\n+ZNF329\t17\n+ZNF330\t41\n+ZNF331\t27\n+ZNF333\t32\n+ZNF334\t10\n+ZNF335\t4\n+ZNF336\t3\n+ZNF337\t27\n+ZNF33A\t6\n+ZNF34\t0\n+ZNF341\t0\n+ZNF342\t1\n+ZNF343\t17\n+ZNF345\t10\n+ZNF346\t34\n+ZNF347\t14\n+ZNF35\t4\n+ZNF350\t39\n+ZNF354A\t31\n+ZNF354B\t13\n+ZNF354C\t964\n+ZNF358\t15\n+ZNF364\t29\n+ZNF365\t5\n+ZNF366\t0\n+ZNF367\t66\n+ZNF37A\t59\n+ZNF37B\t52\n+ZNF38\t37\n+ZNF382\t10\n+ZNF383\t8\n+ZNF384\t66\n+ZNF385\t2\n+ZNF390\t2\n+ZNF394\t349\n+ZNF395\t24\n+ZNF396\t0\n+ZNF397\t36\n+ZNF398\t26\n+ZNF403\t128\n+ZNF404\t5\n+ZNF406\t3\n+ZNF407\t12\n+ZNF408\t9\n+ZNF41\t72\n+ZNF410\t54\n+ZNF414\t0\n+ZNF415\t111\n+ZNF416\t37\n+ZNF417\t1\n+ZNF418\t10\n+ZNF419\t29\n+ZNF42\t73\n+ZNF420\t4\n+ZNF423\t16\n+ZNF425\t4\n+ZNF426\t17\n+ZNF429\t30\n+ZNF43\t66\n+ZNF430\t86\n+ZNF431\t1\n+ZNF432\t37\n+ZNF433\t19\n+ZNF434\t43\n+ZNF435\t2\n+ZNF436\t279\n+ZNF438\t102\n+ZNF439\t10\n+ZNF44\t103\n+ZNF440\t16\n+ZNF440L\t6\n+ZNF441\t3\n+ZNF442\t2\n+ZNF443\t50\n+ZNF444\t392\n+ZNF445\t11\n+ZNF446\t5\n+ZNF447\t52\n+ZNF449\t36\n+ZNF45\t171\n+ZNF451\t53\n+ZNF452\t0\n+ZNF454\t53\n+ZNF46\t3\n+ZNF462\t114\n+ZNF467\t6\n+ZNF468\t171\n+ZNF469\t0\n+ZNF471\t32\n+ZNF473\t22\n+ZNF479\t8\n+ZNF480\t121\n+ZNF482\t27\n+ZNF483\t2\n+ZNF484\t7\n+ZNF485\t3\n+ZNF486\t410\n+ZNF488\t5\n+ZNF490\t2\n+ZNF491\t0\n+ZNF492\t2\n+ZNF493\t29\n+ZNF496\t51\n+ZNF497\t0\n+ZNF498\t35\n+ZNF499\t9\n+ZNF500\t3\n+ZNF501\t7\n+ZNF502\t3\n+ZNF503\t32\n+ZNF505\t7\n+ZNF506\t21\n+ZNF507\t70\n+ZNF509\t5\n+ZNF510\t54\n+ZNF511\t403\n+ZNF512\t58\n+ZNF513\t77\n+ZNF514\t7\n+ZNF516\t76\n+ZNF517\t21\n+ZNF518\t72\n+ZNF519\t17\n+ZNF521\t69\n+ZNF524\t8\n+ZNF525\t9\n+ZNF526\t14\n+ZNF527\t3\n+ZNF528\t28\n+ZNF529\t51\n+ZNF530\t7\n+ZNF532\t340\n+ZNF533\t1\n+ZNF536\t48\n+ZNF537\t179\n+ZNF539\t80\n+ZNF540\t2\n+ZNF542\t31\n+ZNF543\t19\n+ZNF544\t10\n+ZNF545\t0\n+ZNF546\t6\n+ZNF547\t212\n+ZNF548\t19\n+ZNF549\t11\n+ZNF550\t20\n+ZNF551\t18\n+ZNF552\t16\n+ZNF553\t77\n+ZNF554\t11\n+ZNF555\t23\n+ZNF557\t1\n+ZNF558\t25\n+ZNF559\t59\n+ZNF560\t0\n+ZNF561\t102\n+ZNF562\t11\n+ZNF563\t23\n+ZNF564\t76\n+ZNF565\t2\n+ZNF566\t10\n+ZNF567\t7\n+ZNF568\t14\n+ZNF569\t61\n+ZNF570\t2\n+ZNF571\t7\n+ZNF572\t0\n+ZNF573\t7\n+ZNF574\t25\n+ZNF575\t1\n+ZNF576\t41\n+ZNF577\t36\n+ZNF578\t9\n+ZNF579\t36\n+ZNF580\t343\n+ZNF581\t76\n+ZNF582\t6\n+ZNF583\t41\n+ZNF584\t22\n+ZNF585A\t93\n+ZNF585B\t64\n+ZNF586\t12\n+ZNF587\t26\n+ZNF588\t26\n+ZNF589\t8\n+ZNF592\t19\n+ZNF593\t33\n+ZNF594\t3\n+ZNF595\t7\n+ZNF596\t329\n+ZNF597\t0\n+ZNF598\t43\n+ZNF599\t8\n+ZNF6\t40\n+ZNF600\t15\n+ZNF605\t12\n+ZNF606\t63\n+ZNF607\t83\n+ZNF608\t59\n+ZNF609\t12\n+ZNF610\t8\n+ZNF611\t122\n+ZNF613\t25\n+ZNF614\t20\n+ZNF615\t51\n+ZNF616\t23\n+ZNF618\t3\n+ZNF619\t0\n+ZNF620\t12\n+ZNF621\t11\n+ZNF622\t24\n+ZNF623\t43\n+ZNF624\t34\n+ZNF625\t0\n+ZNF626\t35\n+ZNF627\t29\n+ZNF629\t65\n+ZNF630\t0\n+ZNF638\t382\n+ZNF639\t74\n+ZNF641\t5\n+ZNF642\t2\n+ZNF643\t0\n+ZNF644\t44\n+ZNF646\t1\n+ZNF649\t67\n+ZNF650\t38\n+ZNF651\t115\n+ZNF652\t17\n+ZNF653\t18\n+ZNF654\t10\n+ZNF655\t99\n+ZNF658\t10\n+ZNF659\t5\n+ZNF66\t0\n+ZNF660\t12\n+ZNF663\t2\n+ZNF664\t82\n+ZNF665\t4\n+ZNF667\t231\n+ZNF668\t1\n+ZNF669\t22\n+ZNF670\t2\n+ZNF671\t57\n+ZNF672\t62\n+ZNF673\t1\n+ZNF677\t2\n+ZNF678\t7\n+ZNF680\t8\n+ZNF681\t0\n+ZNF682\t5\n+ZNF684\t12\n+ZNF687\t10\n+ZNF688\t2\n+ZNF689\t53\n+ZNF69\t6\n+ZNF690\t11\n+ZNF691\t25\n+ZNF692\t5\n+ZNF694\t15\n+ZNF695\t0\n+ZNF697\t25\n+ZNF7\t27\n+ZNF70\t0\n+ZNF700\t31\n+ZNF701\t12\n+ZNF702\t0\n+ZNF703\t0\n+ZNF704\t2\n+ZNF706\t359\n+ZNF707\t17\n+ZNF708\t26\n+ZNF71\t29\n+ZNF710\t37\n+ZNF713\t0\n+ZNF714\t29\n+ZNF718\t0\n+ZNF720\t54\n+ZNF721\t15\n+ZNF722\t0\n+ZNF74\t28\n+ZNF740\t5\n+ZNF75\t68\n+ZNF75A\t84\n+ZNF76\t110\n+ZNF77\t3\n+ZNF79\t1\n+ZNF8\t2\n+ZNF80\t0\n+ZNF81\t2\n+ZNF83\t698\n+ZNF84\t34\n+ZNF85\t80\n+ZNF9\t85\n+ZNF91\t128\n+ZNF92\t13\n+ZNF93\t51\n+ZNF96\t0\n+ZNFN1A2\t0\n+ZNFN1A3\t0\n+ZNFN1A4\t5\n+ZNFN1A5\t43\n+ZNFX1\t9\n+ZNHIT1\t5\n+ZNHIT2\t4\n+ZNHIT3\t95\n+ZNHIT4\t4\n+ZNRD1\t17\n+ZNRF1\t77\n+ZNRF2\t18\n+ZNRF3\t72\n+ZP3\t39\n+ZPBP\t0\n+ZPLD1\t0\n+ZRANB1\t54\n+ZRANB3\t9\n+ZRF1\t99\n+ZSCAN1\t99\n+ZSCAN2\t12\n+ZSCAN5\t10\n+ZSWIM1\t37\n+ZSWIM3\t0\n+ZSWIM4\t14\n+ZSWIM5\t13\n+ZSWIM6\t329\n+ZW10\t6\n+ZWILCH\t6\n+ZWINT\t152\n+ZXDA\t1\n+ZXDB\t12\n+ZXDC\t35\n+ZYG11B\t1785\n+ZYG11BL\t11\n+ZYX\t698\n+ZZANK1\t15\n+ZZEF1\t15\n+ZZZ3\t94\n'
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/DiffExpAnal/DESeqTools/raw/f2cond2.tsv
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/DiffExpAnal/DESeqTools/raw/f2cond2.tsv Mon Apr 29 03:20:15 2013 -0400
b
b"@@ -0,0 +1,18761 @@\n+GliNS1\tCB660\n+13CDNA73\t0\n+15E1.2\t215\n+182-FIP\t334\n+2'-PDE\t34\n+3'HEXO\t121\n+3.8-1\t0\n+384D8-2\t3\n+76P\t358\n+7h3\t9\n+8D6A\t0\n+A1BG\t0\n+A2BP1\t1\n+A2M\t193\n+A4GALT\t0\n+A4GNT\t0\n+AAA1\t0\n+AAAS\t202\n+AACS\t3737\n+AADACL1\t158\n+AADAT\t22\n+AAK1\t0\n+AAMP\t512\n+AANAT\t0\n+AARS\t111\n+AARSD1\t112\n+AARSL\t55\n+AASDH\t18\n+AASDHPPT\t888\n+AASS\t130\n+AATF\t100\n+AATK\t0\n+ABAT\t8467\n+ABC1\t34\n+ABCA1\t11\n+ABCA10\t6\n+ABCA11\t10\n+ABCA12\t14\n+ABCA13\t180\n+ABCA2\t20\n+ABCA3\t250\n+ABCA4\t0\n+ABCA5\t181\n+ABCA6\t30\n+ABCA7\t1\n+ABCA8\t9\n+ABCA9\t302\n+ABCB1\t1\n+ABCB10\t71\n+ABCB11\t1\n+ABCB4\t7\n+ABCB5\t1\n+ABCB6\t26\n+ABCB7\t34\n+ABCB8\t82\n+ABCB9\t36\n+ABCC1\t21\n+ABCC10\t19\n+ABCC11\t11\n+ABCC12\t1\n+ABCC13\t2\n+ABCC2\t46\n+ABCC3\t57\n+ABCC4\t73\n+ABCC5\t28\n+ABCC6\t7\n+ABCC8\t0\n+ABCC9\t25\n+ABCD1\t13\n+ABCD2\t13\n+ABCD3\t261\n+ABCD4\t208\n+ABCE1\t567\n+ABCF1\t58\n+ABCF2\t90\n+ABCF3\t21\n+ABCG1\t3\n+ABCG2\t10\n+ABCG4\t0\n+ABHD1\t3\n+ABHD10\t6\n+ABHD11\t1161\n+ABHD14A\t219\n+ABHD14B\t16\n+ABHD2\t149\n+ABHD3\t406\n+ABHD4\t253\n+ABHD5\t90\n+ABHD6\t315\n+ABHD7\t49\n+ABHD8\t32\n+ABI1\t510\n+ABI2\t413\n+ABI3\t0\n+ABI3BP\t14\n+ABL1\t223\n+ABL2\t36\n+ABLIM1\t197\n+ABLIM2\t25\n+ABLIM3\t0\n+ABO\t0\n+ABR\t538\n+ABRA\t0\n+ABT1\t48\n+ABTB1\t11\n+ABTB2\t94\n+ACAA1\t120\n+ACAA2\t134\n+ACACA\t183\n+ACACB\t9\n+ACAD10\t33\n+ACAD11\t61\n+ACAD8\t33\n+ACAD9\t228\n+ACADL\t6\n+ACADM\t55\n+ACADS\t63\n+ACADSB\t107\n+ACADVL\t179\n+ACAS2\t8\n+ACAS2L\t1\n+ACAT1\t288\n+ACAT2\t88\n+ACATE2\t74\n+ACBD3\t866\n+ACBD4\t1\n+ACBD5\t38\n+ACBD6\t112\n+ACBD7\t22\n+ACCN2\t10\n+ACCN3\t3\n+ACCN4\t0\n+ACD\t28\n+ACDC\t10\n+ACE\t0\n+ACF\t54\n+ACHE\t15\n+ACIN1\t3\n+ACLY\t497\n+ACMSD\t7\n+ACN9\t114\n+ACO1\t134\n+ACO2\t770\n+ACOT2\t0\n+ACOT4\t0\n+ACOT7\t266\n+ACOT8\t8\n+ACOT9\t19\n+ACOX1\t277\n+ACOX2\t300\n+ACOX3\t8\n+ACOXL\t0\n+ACP1\t1384\n+ACP2\t80\n+ACP5\t0\n+ACP6\t172\n+ACPL2\t101\n+ACPP\t4\n+ACR\t13\n+ACRBP\t0\n+ACRC\t14\n+ACRV1\t0\n+ACSBG1\t52\n+ACSL1\t14\n+ACSL3\t2158\n+ACSL4\t66\n+ACSL5\t21\n+ACSL6\t0\n+ACSM2\t0\n+ACSM3\t10\n+ACSS1\t15\n+ACSS2\t83\n+ACTA1\t65\n+ACTA2\t824\n+ACTB\t25909\n+ACTC\t0\n+ACTG1\t14476\n+ACTG2\t3\n+ACTL6A\t198\n+ACTL6B\t0\n+ACTL8\t1\n+ACTN1\t4575\n+ACTN2\t0\n+ACTN4\t7378\n+ACTR10\t33\n+ACTR1A\t159\n+ACTR1B\t40\n+ACTR2\t8300\n+ACTR3\t584\n+ACTR3B\t0\n+ACTR5\t17\n+ACTR6\t65\n+ACTR8\t176\n+ACTRT1\t0\n+ACVR1\t0\n+ACVR1B\t6\n+ACVR1C\t0\n+ACVR2\t43\n+ACVR2A\t22\n+ACVR2B\t6\n+ACVRL1\t0\n+ACY1\t17\n+ACY1L2\t93\n+ACY3\t0\n+ACYP1\t69\n+ACYP2\t282\n+AD-003\t0\n+AD-020\t19\n+AD023\t1\n+AD031\t32\n+AD7C-NTP\t6\n+ADA\t3713\n+ADAL\t12\n+ADAM10\t638\n+ADAM11\t1\n+ADAM12\t191\n+ADAM15\t58\n+ADAM17\t283\n+ADAM18\t2\n+ADAM19\t555\n+ADAM20\t0\n+ADAM21\t0\n+ADAM22\t254\n+ADAM23\t59\n+ADAM28\t0\n+ADAM32\t12\n+ADAM33\t22\n+ADAM8\t2\n+ADAM9\t3047\n+ADAMDEC1\t0\n+ADAMTS1\t0\n+ADAMTS10\t175\n+ADAMTS12\t89\n+ADAMTS13\t1\n+ADAMTS15\t163\n+ADAMTS16\t8\n+ADAMTS17\t0\n+ADAMTS18\t0\n+ADAMTS19\t0\n+ADAMTS2\t21\n+ADAMTS20\t0\n+ADAMTS3\t515\n+ADAMTS4\t0\n+ADAMTS5\t7\n+ADAMTS6\t46\n+ADAMTS7\t0\n+ADAMTS8\t0\n+ADAMTS9\t281\n+ADAMTSL1\t19\n+ADAMTSL2\t0\n+ADAMTSL3\t1\n+ADAMTSL4\t4\n+ADAR\t96\n+ADARB1\t44\n+ADARB2\t0\n+ADAT1\t17\n+ADC\t7\n+ADCK1\t21\n+ADCK2\t8\n+ADCK4\t84\n+ADCK5\t12\n+ADCY1\t63\n+ADCY2\t23\n+ADCY3\t27\n+ADCY5\t1\n+ADCY6\t376\n+ADCY7\t44\n+ADCY8\t0\n+ADCY9\t41\n+ADCYAP1\t0\n+ADCYAP1R1\t127\n+ADD1\t1109\n+ADD2\t0\n+ADD3\t680\n+ADFP\t85\n+ADH1B\t1\n+ADH1C\t0\n+ADH4\t6\n+ADH5\t1368\n+ADHFE1\t35\n+ADI1\t213\n+ADIPOR1\t208\n+ADIPOR2\t31\n+ADK\t195\n+ADM\t323\n+ADM2\t0\n+ADMP\t0\n+ADMR\t5108\n+ADNP\t961\n+ADORA1\t27\n+ADORA2A\t43\n+ADORA2B\t2\n+ADPGK\t3996\n+ADPN\t4\n+ADPRH\t0\n+ADPRHL1\t0\n+ADPRHL2\t86\n+ADRA1A\t0\n+ADRA1B\t0\n+ADRA1D\t0\n+ADRA2A\t0\n+ADRA2B\t1\n+ADRB1\t11\n+ADRB2\t0\n+ADRB3\t17\n+ADRBK1\t88\n+ADRBK2\t14\n+ADRM1\t405\n+ADSL\t188\n+ADSS\t526\n+ADSSL1\t10\n+AE2\t23\n+AEBP1\t3115\n+AEBP2\t468\n+AEGP\t25\n+AER61\t2\n+AES\t1972\n+AF15Q14\t1\n+AF1Q\t84\n+AF5Q31\t574\n+AFAP\t84\n+AFAR3\t15\n+AFF1\t69\n+AFF2\t8\n+AFF3\t1\n+AFF4\t0\n+AFG3L1\t25\n+AFG3L2\t94\n+AFMID\t293\n+AFP\t22\n+AFTIPHILIN\t144\n+AG1\t2\n+AGA\t133\n+AGBL2\t0\n+AGBL3\t0\n+AGC1\t0\n+AGER\t3\n+AGGF1\t184\n+AGL\t374\n+AGMAT\t6\n+AGPAT1\t84\n+AGPAT2\t1\n+AGPAT3\t101\n+AGPAT4\t64\n+AGPAT5\t1149\n+AGPAT6\t47\n+AGPAT7\t48\n+AGPS\t293\n+AGR2\t14\n+AGRN\t587\n+AGRP\t0\n+AGT\t0\n+AGTPBP1\t47\n+AGTR1\t0\n+AGTR2\t0\n+AGTRAP\t306\n+AGXT2L1\t0\n+AHCTF1\t41\n+AHCY\t489\n+AHCYL1\t767\n+AHDC1\t11\n+AHI1\t40\n+AHNAK\t0\n+AHR\t1101\n+AHSA1\t311\n+AHSA2\t67\n+AHSG\t0\n+AICDA\t0\n+AIFL\t0\n+AIG1\t243\n+AIM1\t0\n+AIM1L\t0\n+AIP\t468\n+AIP1\t59\n+AIPL1\t12\n+AK1\t112\n+AK2\t316\n+AK3\t131\n+AK3L1\t52\n+AK5\t16\n+AK7\t0\n+AKAP1\t47\n+AKAP10\t309\n+AKAP11\t76\n+AKAP12\t370\n+AKAP13\t79\n+AKAP14\t11\n+AKAP3\t3\n+AKAP6\t18\n+AKAP7\t410\n+AKAP8"..b'4\n+ZNF283\t11\n+ZNF284\t85\n+ZNF285\t20\n+ZNF286\t719\n+ZNF287\t75\n+ZNF289\t112\n+ZNF291\t83\n+ZNF292\t208\n+ZNF294\t82\n+ZNF295\t61\n+ZNF297\t128\n+ZNF297B\t261\n+ZNF3\t19\n+ZNF30\t100\n+ZNF300\t3\n+ZNF302\t493\n+ZNF304\t44\n+ZNF305\t34\n+ZNF306\t5\n+ZNF307\t21\n+ZNF31\t3\n+ZNF311\t0\n+ZNF312\t41\n+ZNF313\t247\n+ZNF317\t151\n+ZNF318\t81\n+ZNF319\t130\n+ZNF32\t70\n+ZNF322A\t18\n+ZNF323\t12\n+ZNF324\t85\n+ZNF326\t122\n+ZNF329\t85\n+ZNF330\t52\n+ZNF331\t23\n+ZNF333\t88\n+ZNF334\t78\n+ZNF335\t10\n+ZNF336\t17\n+ZNF337\t55\n+ZNF33A\t26\n+ZNF34\t5\n+ZNF341\t4\n+ZNF342\t0\n+ZNF343\t48\n+ZNF345\t0\n+ZNF346\t171\n+ZNF347\t27\n+ZNF35\t15\n+ZNF350\t24\n+ZNF354A\t59\n+ZNF354B\t46\n+ZNF354C\t1747\n+ZNF358\t61\n+ZNF364\t98\n+ZNF365\t42\n+ZNF366\t0\n+ZNF367\t134\n+ZNF37A\t74\n+ZNF37B\t94\n+ZNF38\t45\n+ZNF382\t24\n+ZNF383\t8\n+ZNF384\t95\n+ZNF385\t4\n+ZNF390\t11\n+ZNF394\t684\n+ZNF395\t62\n+ZNF396\t6\n+ZNF397\t50\n+ZNF398\t29\n+ZNF403\t89\n+ZNF404\t38\n+ZNF406\t0\n+ZNF407\t27\n+ZNF408\t16\n+ZNF41\t73\n+ZNF410\t189\n+ZNF414\t14\n+ZNF415\t171\n+ZNF416\t43\n+ZNF417\t2\n+ZNF418\t21\n+ZNF419\t16\n+ZNF42\t134\n+ZNF420\t8\n+ZNF423\t277\n+ZNF425\t5\n+ZNF426\t20\n+ZNF429\t13\n+ZNF43\t52\n+ZNF430\t51\n+ZNF431\t0\n+ZNF432\t15\n+ZNF433\t12\n+ZNF434\t30\n+ZNF435\t0\n+ZNF436\t455\n+ZNF438\t62\n+ZNF439\t80\n+ZNF44\t42\n+ZNF440\t28\n+ZNF440L\t0\n+ZNF441\t19\n+ZNF442\t0\n+ZNF443\t88\n+ZNF444\t959\n+ZNF445\t3\n+ZNF446\t27\n+ZNF447\t298\n+ZNF449\t39\n+ZNF45\t367\n+ZNF451\t138\n+ZNF452\t0\n+ZNF454\t11\n+ZNF46\t27\n+ZNF462\t376\n+ZNF467\t1\n+ZNF468\t350\n+ZNF469\t0\n+ZNF471\t51\n+ZNF473\t1\n+ZNF479\t0\n+ZNF480\t44\n+ZNF482\t175\n+ZNF483\t3\n+ZNF484\t26\n+ZNF485\t29\n+ZNF486\t648\n+ZNF488\t44\n+ZNF490\t0\n+ZNF491\t0\n+ZNF492\t1\n+ZNF493\t28\n+ZNF496\t229\n+ZNF497\t7\n+ZNF498\t69\n+ZNF499\t8\n+ZNF500\t8\n+ZNF501\t7\n+ZNF502\t6\n+ZNF503\t13\n+ZNF505\t1\n+ZNF506\t3\n+ZNF507\t291\n+ZNF509\t39\n+ZNF510\t80\n+ZNF511\t649\n+ZNF512\t56\n+ZNF513\t10\n+ZNF514\t0\n+ZNF516\t78\n+ZNF517\t120\n+ZNF518\t150\n+ZNF519\t47\n+ZNF521\t145\n+ZNF524\t38\n+ZNF525\t8\n+ZNF526\t48\n+ZNF527\t5\n+ZNF528\t35\n+ZNF529\t136\n+ZNF530\t8\n+ZNF532\t830\n+ZNF533\t0\n+ZNF536\t0\n+ZNF537\t0\n+ZNF539\t114\n+ZNF540\t32\n+ZNF542\t58\n+ZNF543\t40\n+ZNF544\t49\n+ZNF545\t71\n+ZNF546\t4\n+ZNF547\t302\n+ZNF548\t98\n+ZNF549\t1\n+ZNF550\t23\n+ZNF551\t44\n+ZNF552\t0\n+ZNF553\t300\n+ZNF554\t17\n+ZNF555\t24\n+ZNF557\t0\n+ZNF558\t22\n+ZNF559\t237\n+ZNF560\t0\n+ZNF561\t315\n+ZNF562\t11\n+ZNF563\t36\n+ZNF564\t110\n+ZNF565\t0\n+ZNF566\t11\n+ZNF567\t18\n+ZNF568\t59\n+ZNF569\t58\n+ZNF570\t0\n+ZNF571\t19\n+ZNF572\t3\n+ZNF573\t4\n+ZNF574\t47\n+ZNF575\t2\n+ZNF576\t37\n+ZNF577\t42\n+ZNF578\t3\n+ZNF579\t19\n+ZNF580\t695\n+ZNF581\t133\n+ZNF582\t3\n+ZNF583\t24\n+ZNF584\t87\n+ZNF585A\t192\n+ZNF585B\t5\n+ZNF586\t24\n+ZNF587\t47\n+ZNF588\t18\n+ZNF589\t2\n+ZNF592\t182\n+ZNF593\t98\n+ZNF594\t3\n+ZNF595\t0\n+ZNF596\t321\n+ZNF597\t9\n+ZNF598\t32\n+ZNF599\t36\n+ZNF6\t93\n+ZNF600\t7\n+ZNF605\t17\n+ZNF606\t100\n+ZNF607\t83\n+ZNF608\t45\n+ZNF609\t16\n+ZNF610\t8\n+ZNF611\t178\n+ZNF613\t44\n+ZNF614\t3\n+ZNF615\t86\n+ZNF616\t46\n+ZNF618\t1\n+ZNF619\t0\n+ZNF620\t15\n+ZNF621\t52\n+ZNF622\t128\n+ZNF623\t121\n+ZNF624\t28\n+ZNF625\t1\n+ZNF626\t14\n+ZNF627\t95\n+ZNF629\t336\n+ZNF630\t0\n+ZNF638\t1201\n+ZNF639\t225\n+ZNF641\t60\n+ZNF642\t26\n+ZNF643\t0\n+ZNF644\t151\n+ZNF646\t5\n+ZNF649\t124\n+ZNF650\t136\n+ZNF651\t263\n+ZNF652\t14\n+ZNF653\t20\n+ZNF654\t2\n+ZNF655\t416\n+ZNF658\t23\n+ZNF659\t0\n+ZNF66\t1\n+ZNF660\t44\n+ZNF663\t0\n+ZNF664\t241\n+ZNF665\t0\n+ZNF667\t120\n+ZNF668\t8\n+ZNF669\t15\n+ZNF670\t11\n+ZNF671\t312\n+ZNF672\t81\n+ZNF673\t31\n+ZNF677\t6\n+ZNF678\t4\n+ZNF680\t22\n+ZNF681\t0\n+ZNF682\t0\n+ZNF684\t0\n+ZNF687\t59\n+ZNF688\t15\n+ZNF689\t10\n+ZNF69\t48\n+ZNF690\t22\n+ZNF691\t129\n+ZNF692\t10\n+ZNF694\t86\n+ZNF695\t4\n+ZNF697\t22\n+ZNF7\t80\n+ZNF70\t0\n+ZNF700\t100\n+ZNF701\t10\n+ZNF702\t20\n+ZNF703\t22\n+ZNF704\t0\n+ZNF706\t996\n+ZNF707\t15\n+ZNF708\t67\n+ZNF71\t77\n+ZNF710\t260\n+ZNF713\t0\n+ZNF714\t0\n+ZNF718\t1\n+ZNF720\t170\n+ZNF721\t21\n+ZNF722\t0\n+ZNF74\t112\n+ZNF740\t28\n+ZNF75\t88\n+ZNF75A\t349\n+ZNF76\t407\n+ZNF77\t19\n+ZNF79\t34\n+ZNF8\t2\n+ZNF80\t0\n+ZNF81\t4\n+ZNF83\t470\n+ZNF84\t161\n+ZNF85\t113\n+ZNF9\t249\n+ZNF91\t86\n+ZNF92\t69\n+ZNF93\t53\n+ZNF96\t0\n+ZNFN1A2\t1\n+ZNFN1A3\t0\n+ZNFN1A4\t62\n+ZNFN1A5\t120\n+ZNFX1\t31\n+ZNHIT1\t6\n+ZNHIT2\t48\n+ZNHIT3\t181\n+ZNHIT4\t30\n+ZNRD1\t84\n+ZNRF1\t180\n+ZNRF2\t109\n+ZNRF3\t218\n+ZP3\t176\n+ZPBP\t0\n+ZPLD1\t0\n+ZRANB1\t144\n+ZRANB3\t55\n+ZRF1\t104\n+ZSCAN1\t208\n+ZSCAN2\t51\n+ZSCAN5\t32\n+ZSWIM1\t116\n+ZSWIM3\t0\n+ZSWIM4\t35\n+ZSWIM5\t1\n+ZSWIM6\t629\n+ZW10\t24\n+ZWILCH\t31\n+ZWINT\t371\n+ZXDA\t0\n+ZXDB\t63\n+ZXDC\t35\n+ZYG11B\t2909\n+ZYG11BL\t72\n+ZYX\t3056\n+ZZANK1\t67\n+ZZEF1\t16\n+ZZZ3\t270\n'
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/DiffExpAnal/DESeqTools/raw2counts.R
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/DiffExpAnal/DESeqTools/raw2counts.R Mon Apr 29 03:20:15 2013 -0400
[
@@ -0,0 +1,20 @@
+# raw2counts
+# extract counts only from rawCounts
+# and add rownames to counts
+
+# input : rawCounts
+# output : counts
+
+# created Feb 6th, 2012
+# modified April 12, 2012
+# Marie-Agnes Dillies
+
+
+raw2counts <- function( rawCounts, annot=1 ){
+
+  ex <- 1:annot
+  counts <- as.matrix( rawCounts[,-ex] )
+  rownames(counts) <- rawCounts[,1]
+  infoCounts <- rawCounts[,ex]
+  return( list("counts"=counts, "infoCounts"= infoCounts) )
+}
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/DiffExpAnal/DESeqTools/removeNul.R
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/DiffExpAnal/DESeqTools/removeNul.R Mon Apr 29 03:20:15 2013 -0400
[
@@ -0,0 +1,14 @@
+# removeNul
+# remove genes with null counts in all samples
+
+# input : counts
+# output : counts
+
+# created Feb 7th, 2012
+# Marie-Agnes Dillies
+
+
+removeNul <- function( counts, info = NULL ){
+
+  return( list(counts[rowSums(counts) > 0,], info[rowSums(counts) > 0,]) )
+}
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/DiffExpAnal/bam_to_sam_parallel.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/DiffExpAnal/bam_to_sam_parallel.py Mon Apr 29 03:20:15 2013 -0400
[
@@ -0,0 +1,172 @@
+#!/usr/bin/env python
+"""
+Converts BAM data to sorted SAM data.
+usage: bam_to_sam.py [options]
+   --input1: SAM file to be converted
+   --output1: output dataset in bam format
+"""
+
+import optparse, os, sys, subprocess, tempfile, shutil, tarfile, random
+#from galaxy import eggs
+#import pkg_resources; pkg_resources.require( "bx-python" )
+#from bx.cookbook import doc_optparse
+#from galaxy import util
+
+def stop_err( msg ):
+    sys.stderr.write( '%s\n' % msg )
+    sys.exit()
+    
+def toTar(tarFileName, samOutputNames):
+    dir = os.path.dirname(tarFileName)    
+    tfile = tarfile.open(tarFileName + ".tmp.tar", "w")
+    currentPath = os.getcwd()
+    os.chdir(dir)
+    for file in samOutputNames:
+        relativeFileName = os.path.basename(file)
+        tfile.add(relativeFileName)
+    os.system("mv %s %s" % (tarFileName + ".tmp.tar", tarFileName))
+    tfile.close()
+    os.chdir(currentPath)    
+
+
+def __main__():
+    #Parse Command Line
+    parser = optparse.OptionParser()
+    parser.add_option('-t', '--tar', dest='outputTar', default=None, help='output all SAM results in a tar file.' )
+    parser.add_option( '', '--input1', dest='input1', help='The input list of BAM datasets on txt format.' )
+    #parser.add_option( '', '--input1', dest='input1', help='The input BAM dataset' )
+    parser.add_option( '', '--output1', dest='output1', help='The output list of SAM datasets on txt format.' )
+    #parser.add_option( '', '--output1', dest='output1', help='The output SAM dataset' )
+    parser.add_option( '', '--header', dest='header', action='store_true', default=False, help='Write SAM Header' )
+    ( options, args ) = parser.parse_args()
+
+
+    #Parse the input txt file and read a list of BAM files.
+    file = open(options.input1, "r")
+    lines = file.readlines()
+    inputFileNames = []
+    samOutputNames = []
+    outputName = options.output1
+    resDirName = os.path.dirname(outputName) + '/'
+    #Write output txt file and define all output sam file names.
+    out = open(outputName, "w")
+    for line in lines:
+        tab = line.split()
+        inputFileNames.append(tab[1])
+        samOutName = resDirName + tab[0] + '_samOutput_%s.sam' % random.randrange(0, 10000)
+        samOutputNames.append(samOutName)
+        out.write(tab[0] + '\t' + samOutName  + '\n')
+    file.close()
+    out.close()
+
+    # output version # of tool
+    try:
+        tmp_files = []
+        tmp = tempfile.NamedTemporaryFile().name
+        tmp_files.append(tmp)
+        tmp_stdout = open( tmp, 'wb' )
+        proc = subprocess.Popen( args='samtools 2>&1', shell=True, stdout=tmp_stdout )
+        tmp_stdout.close()
+        returncode = proc.wait()
+        stdout = None
+        for line in open( tmp_stdout.name, 'rb' ):
+            if line.lower().find( 'version' ) >= 0:
+                stdout = line.strip()
+                break
+        if stdout:
+            sys.stdout.write( 'Samtools %s\n' % stdout )
+        else:
+            raise Exception
+    except:
+        sys.stdout.write( 'Could not determine Samtools version\n' )
+
+
+
+    tmp_dirs = []
+    for i in range(len(inputFileNames)):
+        try:
+            # exit if input file empty
+            if os.path.getsize( inputFileNames[i] ) == 0:
+                raise Exception, 'Initial input txt file is empty.'
+            # Sort alignments by leftmost coordinates. File <out.prefix>.bam will be created. This command
+            # may also create temporary files <out.prefix>.%d.bam when the whole alignment cannot be fitted
+            # into memory ( controlled by option -m ).
+            tmp_dir = tempfile.mkdtemp()
+            tmp_dirs.append(tmp_dir)
+            tmp_sorted_aligns_file = tempfile.NamedTemporaryFile( dir=tmp_dir )
+            tmp_sorted_aligns_file_base = tmp_sorted_aligns_file.name
+            tmp_sorted_aligns_file_name = '%s.bam' % tmp_sorted_aligns_file.name
+            tmp_files.append(tmp_sorted_aligns_file_name)
+            tmp_sorted_aligns_file.close()
+            
+            command = 'samtools sort %s %s' % ( inputFileNames[i], tmp_sorted_aligns_file_base )
+            tmp = tempfile.NamedTemporaryFile( dir=tmp_dir ).name
+            tmp_stderr = open( tmp, 'wb' )
+            proc = subprocess.Popen( args=command, shell=True, cwd=tmp_dir, stderr=tmp_stderr.fileno() )
+            returncode = proc.wait()
+            tmp_stderr.close()
+            # get stderr, allowing for case where it's very large
+            tmp_stderr = open( tmp, 'rb' )
+            stderr = ''
+            buffsize = 1048576
+            try:
+                while True:
+                    stderr += tmp_stderr.read( buffsize )
+                    if not stderr or len( stderr ) % buffsize != 0:
+                        break
+            except OverflowError:
+                pass
+            tmp_stderr.close()
+            if returncode != 0:
+                raise Exception, stderr
+            # exit if sorted BAM file empty
+            if os.path.getsize( tmp_sorted_aligns_file_name) == 0:
+                raise Exception, 'Intermediate sorted BAM file empty'
+        except Exception, e:
+            stop_err( 'Error sorting alignments from (%s), %s' % ( inputFileNames[i], str( e ) ) )
+            
+        try:
+            # Extract all alignments from the input BAM file to SAM format ( since no region is specified, all the alignments will be extracted ).
+            if options.header:
+                view_options = "-h"
+            else:
+                view_options = ""
+            command = 'samtools view %s -o %s %s' % ( view_options, samOutputNames[i], tmp_sorted_aligns_file_name )
+            tmp = tempfile.NamedTemporaryFile( dir=tmp_dir ).name
+            tmp_stderr = open( tmp, 'wb' )
+            proc = subprocess.Popen( args=command, shell=True, cwd=tmp_dir, stderr=tmp_stderr.fileno() )
+            returncode = proc.wait()
+            tmp_stderr.close()
+            # get stderr, allowing for case where it's very large
+            tmp_stderr = open( tmp, 'rb' )
+            stderr = ''
+            buffsize = 1048576
+            try:
+                while True:
+                    stderr += tmp_stderr.read( buffsize )
+                    if not stderr or len( stderr ) % buffsize != 0:
+                        break
+            except OverflowError:
+                pass
+            tmp_stderr.close()
+            if returncode != 0:
+                raise Exception, stderr
+        except Exception, e:
+            stop_err( 'Error extracting alignments from (%s), %s' % ( inputFileNames[i], str( e ) ) )
+        if os.path.getsize( samOutputNames[i] ) > 0:
+            sys.stdout.write( 'BAM file converted to SAM' )
+        else:
+            stop_err( 'The output file is empty, there may be an error with your input file.' )
+     
+    if options.outputTar != None:
+        toTar(options.outputTar, samOutputNames)       
+    #clean up temp files
+    for tmp_dir in tmp_dirs:
+        if os.path.exists( tmp_dir ):
+            shutil.rmtree( tmp_dir )
+    #print tmp_files
+    #for tmp in tmp_files:
+    #    os.remove(tmp)            
+    
+
+if __name__=="__main__": __main__()
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/DiffExpAnal/bam_to_sam_parallel.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/DiffExpAnal/bam_to_sam_parallel.xml Mon Apr 29 03:20:15 2013 -0400
b
@@ -0,0 +1,32 @@
+<tool id="bam_to_sam_parallel" name="BAM to SAM (for DEA)" version="1.0.0">
+  <description>converts a list of BAM format files to SAM format.</description>
+  <requirements>
+ <requirement type="package">samtools</requirement>
+  </requirements>
+  <command interpreter="python"> bam_to_sam_parallel.py
+      --input1=$input1
+      --output1=$output1
+      $header
+      $tar $outputTarFile
+  </command>
+  <inputs>
+    <param name="input1" type="data" format="txt" label="BAM File LIST to Convert" />
+    <param name="header" type="boolean" truevalue="--header" falsevalue="" checked="False" label="Include header in output" />
+    <param name="tar" type="boolean" truevalue="-t" falsevalue="" checked="false" label="tar option" help="This option creates a tar file for all out results." />
+  </inputs>
+  <outputs>
+   <data format="txt" name="output1" label="converted SAM LIST files " />
+   <data name="outputTarFile" format="tar">
+   <filter>tar</filter>
+   </data>
+  </outputs>
+  <help>
+
+**What it does**
+
+This tool uses the SAMTools_ toolkit to produce a SAM file from a BAM file.
+
+.. _SAMTools: http://samtools.sourceforge.net/samtools.shtml
+
+  </help>
+</tool>
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/DiffExpAnal/bam_to_sam_parallel_unSQL.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/DiffExpAnal/bam_to_sam_parallel_unSQL.py Mon Apr 29 03:20:15 2013 -0400
[
@@ -0,0 +1,145 @@
+#!/usr/bin/env python
+"""
+Converts BAM data to sorted SAM data.
+usage: bam_to_sam.py [options]
+   --input1: SAM file to be converted
+   --output1: output dataset in bam format
+"""
+
+import optparse, os, sys, subprocess, tempfile, shutil, tarfile, random
+from commons.core.launcher.Launcher import Launcher
+from commons.core.sql.TableJobAdaptatorFactory import TableJobAdaptatorFactory
+#from galaxy import eggs
+#import pkg_resources; pkg_resources.require( "bx-python" )
+#from bx.cookbook import doc_optparse
+#from galaxy import util
+
+def stop_err( msg ):
+    sys.stderr.write( '%s\n' % msg )
+    sys.exit()
+    
+def toTar(tarFileName, samOutputNames):
+    dir = os.path.dirname(tarFileName)    
+    tfile = tarfile.open(tarFileName + ".tmp.tar", "w")
+    currentPath = os.getcwd()
+    os.chdir(dir)
+    for file in samOutputNames:
+        relativeFileName = os.path.basename(file)
+        tfile.add(relativeFileName)
+    os.system("mv %s %s" % (tarFileName + ".tmp.tar", tarFileName))
+    tfile.close()
+    os.chdir(currentPath)    
+    
+def _map(iLauncher, cmd, cmdStart, cmdFinish ):
+    lCmds = []
+    lCmds.extend(cmd)
+    lCmdStart = []
+    lCmdStart.extend(cmdStart)
+    lCmdFinish = []
+    lCmdFinish.extend(cmdFinish)
+    return(iLauncher.prepareCommands_withoutIndentation(lCmds, lCmdStart, lCmdFinish))
+
+def _createSamToolsViewCmd(iLauncher, inputFile, tmp_sorted_aligns_file_name, header):
+        lArgs = []
+        lArgs.append("-o %s" %  inputFile)
+        lArgs.append("%s" % tmp_sorted_aligns_file_name)
+        if header:
+            lArgs.append("-h")
+        return iLauncher.getSystemCommand("samtools view", lArgs)
+
+def _createSamToolsSortCmd(iLauncher, inputFile, tmp_sorted_aligns_file_base):
+        lArgs = []
+        lArgs.append("%s" % inputFile)
+        lArgs.append("%s" %  tmp_sorted_aligns_file_base)
+        return iLauncher.getSystemCommand("samtools sort", lArgs)
+
+def __main__():
+    #Parse Command Line
+    parser = optparse.OptionParser()
+    parser.add_option('-t', '--tar', dest='outputTar', default=None, help='output all SAM results in a tar file.' )
+    parser.add_option( '', '--input1', dest='input1', help='The input list of BAM datasets on txt format.' )
+    #parser.add_option( '', '--input1', dest='input1', help='The input BAM dataset' )
+    parser.add_option( '', '--output1', dest='output1', help='The output list of SAM datasets on txt format.' )
+    #parser.add_option( '', '--output1', dest='output1', help='The output SAM dataset' )
+    parser.add_option( '', '--header', dest='header', action='store_true', default=False, help='Write SAM Header' )
+    ( options, args ) = parser.parse_args()
+
+
+    #Parse the input txt file and read a list of BAM files.
+    file = open(options.input1, "r")
+    lines = file.readlines()
+    inputFileNames = []
+    samOutputNames = []
+    outputName = options.output1
+    resDirName = os.path.dirname(outputName) + '/'
+    #Write output txt file and define all output sam file names.
+    out = open(outputName, "w")
+    for line in lines:
+        tab = line.split()
+        inputFileNames.append(tab[1])
+        samOutName = resDirName + tab[0] + '_samOutput_%s.sam' % random.randrange(0, 10000)
+        samOutputNames.append(samOutName)
+        out.write(tab[0] + '\t' + samOutName  + '\n')
+    file.close()
+    out.close()
+
+    # output version # of tool
+    try:
+        tmp_files = []
+        tmp = tempfile.NamedTemporaryFile().name
+        tmp_files.append(tmp)
+        tmp_stdout = open( tmp, 'wb' )
+        proc = subprocess.Popen( args='samtools 2>&1', shell=True, stdout=tmp_stdout )
+        tmp_stdout.close()
+        returncode = proc.wait()
+        stdout = None
+        for line in open( tmp_stdout.name, 'rb' ):
+            if line.lower().find( 'version' ) >= 0:
+                stdout = line.strip()
+                break
+        if stdout:
+            sys.stdout.write( 'Samtools %s\n' % stdout )
+        else:
+            raise Exception
+    except:
+        sys.stdout.write( 'Could not determine Samtools version\n' )
+
+    tmp_dirs = []
+    acronym = "bam_to_sam"
+    jobdb = TableJobAdaptatorFactory.createJobInstance()
+    iLauncher = Launcher(jobdb, os.getcwd(), "", "", os.getcwd(), os.getcwd(), "jobs", "", acronym, acronym, False, True)
+    lCmdsTuples = []
+    for i in range(len(inputFileNames)):    #Construct the lines commands
+        if os.path.getsize( inputFileNames[i] ) == 0:
+            raise Exception, 'Initial input txt file is empty.'
+        tmp_dir = tempfile.mkdtemp(dir="%s" % os.getcwd())
+        tmp_dirs.append(tmp_dir)
+        tmp_sorted_aligns_file = tempfile.NamedTemporaryFile( dir=tmp_dir )
+        tmp_sorted_aligns_file_base = tmp_sorted_aligns_file.name
+        tmp_sorted_aligns_file_name = '%s.bam' % tmp_sorted_aligns_file.name
+        tmp_files.append(tmp_sorted_aligns_file_name)
+        tmp_sorted_aligns_file.close()
+        
+        inputFile = inputFileNames[i]
+        outputFile = samOutputNames[i]
+        cmd2Launch = []
+        cmd2Launch.append(_createSamToolsSortCmd(iLauncher, inputFile, tmp_sorted_aligns_file_base))
+        cmd2Launch.append(_createSamToolsViewCmd(iLauncher, outputFile, tmp_sorted_aligns_file_name, options.header))
+        cmdStart = []
+        cmdFinish = []
+        lCmdsTuples.append(_map(iLauncher, cmd2Launch, cmdStart, cmdFinish))    
+
+    iLauncher.runLauncherForMultipleJobs(acronym, lCmdsTuples, True)
+    
+    if options.outputTar != None:
+        toTar(options.outputTar, samOutputNames)       
+    #clean up temp files
+    for tmp_dir in tmp_dirs:
+        if os.path.exists( tmp_dir ):
+            shutil.rmtree( tmp_dir )
+    #print tmp_files
+    #for tmp in tmp_files:
+    #    os.remove(tmp)            
+    
+
+if __name__=="__main__": __main__()
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/DiffExpAnal/bam_to_sam_parallel_unSQL.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/DiffExpAnal/bam_to_sam_parallel_unSQL.xml Mon Apr 29 03:20:15 2013 -0400
b
@@ -0,0 +1,32 @@
+<tool id="bam_to_sam_parallel_unSQL" name="BAM to SAM (for DEA in parallel)" version="1.0.0">
+  <description>converts a list of BAM format files to SAM format (parallelized).</description>
+  <requirements>
+ <requirement type="package">samtools</requirement>
+  </requirements>
+  <command interpreter="python"> bam_to_sam_parallel_unSQL.py
+      --input1=$input1
+      --output1=$output1
+      $header
+      $tar $outputTarFile
+  </command>
+  <inputs>
+    <param name="input1" type="data" format="txt" label="BAM File LIST to Convert" />
+    <param name="header" type="boolean" truevalue="--header" falsevalue="" checked="False" label="Include header in output" />
+    <param name="tar" type="boolean" truevalue="-t" falsevalue="" checked="false" label="tar option" help="This option creates a tar file for all out results." />
+  </inputs>
+  <outputs>
+   <data format="txt" name="output1" label="converted SAM LIST files " />
+   <data name="outputTarFile" format="tar">
+   <filter>tar</filter>
+   </data>
+  </outputs>
+  <help>
+
+**What it does**
+
+This tool uses the SAMTools_ toolkit to produce a SAM file from a BAM file.
+
+.. _SAMTools: http://samtools.sourceforge.net/samtools.shtml
+
+  </help>
+</tool>
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/DiffExpAnal/compareOverlapping_parallel.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/DiffExpAnal/compareOverlapping_parallel.py Mon Apr 29 03:20:15 2013 -0400
[
b'@@ -0,0 +1,175 @@\n+#! /usr/bin/env python\n+#This program is a wrapp for CompareOverlapping.py.\n+import optparse, os, sys, subprocess, tempfile, shutil, tarfile, glob\n+import os, struct, time, random\n+from optparse import OptionParser\n+from commons.core.parsing.ParserChooser import ParserChooser\n+from commons.core.writer.Gff3Writer import Gff3Writer\n+from SMART.Java.Python.CompareOverlapping import CompareOverlapping\n+from SMART.Java.Python.structure.Transcript import Transcript\n+from SMART.Java.Python.structure.Interval import Interval\n+from SMART.Java.Python.ncList.NCList import NCList\n+from SMART.Java.Python.ncList.NCListCursor import NCListCursor\n+from SMART.Java.Python.ncList.NCListFilePickle import NCListFilePickle, NCListFileUnpickle\n+from SMART.Java.Python.ncList.FileSorter import FileSorter\n+from SMART.Java.Python.misc.Progress import Progress\n+from SMART.Java.Python.misc.UnlimitedProgress import UnlimitedProgress\n+from SMART.Java.Python.misc import Utils\n+\n+\n+\n+def stop_err( msg ):\n+\tsys.stderr.write( "%s\\n" % msg )\n+\tsys.exit()\n+\n+def toTar(tarFileName, overlapOutputNames):\n+\tdir = os.path.dirname(tarFileName)\t\n+\ttfile = tarfile.open(tarFileName + ".tmp.tar", "w")\n+\tcurrentPath = os.getcwd()\n+\tos.chdir(dir)\n+\tfor file in overlapOutputNames:\n+\t\trelativeFileName = os.path.basename(file)\n+\t\ttfile.add(relativeFileName)\n+\tos.system("mv %s %s" % (tarFileName + ".tmp.tar", tarFileName))\n+\ttfile.close()\n+\tos.chdir(currentPath)\n+\n+def __main__():\n+\tdescription = "Compare Overlapping wrapp script: Get the a list of data which overlap with a reference set. [Category: Data Comparison]"\n+\tparser = OptionParser(description = description)\n+\tparser.add_option("-i", "--input1",\t\t   dest="inputFileName1", action="store",\t\t\t\t\t type="string", help="input file 1 (for annotation) [compulsory] [format: file in transcript format given by -f]")\n+\tparser.add_option("-f", "--format1",\t\t  dest="format1",\t\taction="store",\t\t\t\t\t type="string", help="format of file 1 [compulsory] [format: transcript file format]")\n+\tparser.add_option("", "--inputTxt", \t\tdest="inputTxt", \t\taction="store", \t\t\t\ttype="string", \thelp="input, a txt file for a list of input reads files. Should identify all reads files format, given by -g [compulsory]")\n+\t#parser.add_option("-j", "--input2",\t\t   dest="inputFileName2", action="store",\tdefault="inputRead",\t type="string", help="input file 2 [compulsory] [format: file in transcript format given by -g]")\n+\tparser.add_option("-g", "--format2",\t\t  dest="format2",\t\taction="store",\t\t\t\t type="string", help="format of file 2 [compulsory] [format: transcript file format]")\n+\t#parser.add_option("-o", "--output",\t\t   dest="output",\t\t action="store",\t  default=None,  type="string", help="output file [compulsory] [format: output file in GFF3 format]")\n+\tparser.add_option("-S", "--start1",\t\t   dest="start1",\t\t action="store",\t  default=None,  type="int",\thelp="only consider the n first nucleotides of the transcripts in file 1 (do not use it with -U) [format: int]")\n+\tparser.add_option("-s", "--start2",\t\t   dest="start2",\t\t action="store",\t  default=None,  type="int",\thelp="only consider the n first nucleotides of the transcripts in file 2 (do not use it with -u) [format: int]")\n+\tparser.add_option("-U", "--end1",\t\t\t dest="end1",\t\t   action="store",\t  default=None,  type="int",\thelp="only consider the n last nucleotides of the transcripts in file 1 (do not use it with -S) [format: int]")\n+\tparser.add_option("-u", "--end2",\t\t\t dest="end2",\t\t   action="store",\t  default=None,  type="int",\thelp="only consider the n last nucleotides of the transcripts in file 2 (do not use it with -s) [format: int]")\n+\tparser.add_option("-t", "--intron",\t\t   dest="introns",\t\taction="store_true", default=False,\t\t\t\thelp="also report introns [format: bool] [default: false]")\n+\tparser.add_option("-E", "--5primeExtension1", dest="fivePrime1",\t action="store",\t  default=None,  type="int",\thelp="extension towards 5\' in file 1 [format: int]")\n+\tparser.add_option("-e"'..b'verlapping data [format: bool] [default: false]")\n+\tparser.add_option("-x", "--exclude",\t\t  dest="exclude",\t\taction="store_true", default=False,\t\t\t\thelp="invert the match [format: bool] [default: false]")\n+\tparser.add_option("-v", "--verbosity",\t\tdest="verbosity",\t  action="store",\t  default=1,\t type="int",\thelp="trace level [format: int]")\n+\tparser.add_option(\'\', \'--tar\', dest=\'outputTar\', default=None, help=\'output all SAM results in a tar file.\' )\n+\tparser.add_option( \'\', \'--outTxt\', dest=\'outTxtFile\', help=\'The output list of results files on txt format.[compulsory]\' )\n+\t(options, args) = parser.parse_args()\n+\t\n+\t\n+\t#Parse the input txt file and read a list of BAM files.\n+\tfile = open(options.inputTxt, "r")\n+\tlines = file.readlines()\n+\tinputFileNames = []\n+\toverlapOutputNames = []\n+\toutputName = options.outTxtFile\n+\tresDirName = os.path.dirname(outputName) + "/"\n+\t#Write output txt file and define all output sam file names.\n+\tout = open(outputName, "w")\n+\tfor line in lines:\n+\t\ttab = line.split()\n+\t\tinputFileNames.append(tab[1])\n+\t\toverlapOutName = resDirName + tab[0] + \'_overlapOut_%s.gff3\' % random.randrange(0, 10000)\n+\t\toverlapOutputNames.append(overlapOutName)\n+\t\tout.write(tab[0] + \'\\t\' + overlapOutName  + \'\\n\')\n+\tfile.close()\n+\tout.close()\n+\t\n+\t#construction the commandes for each input file\n+\tcmds = []\n+\tfor i in range(len(inputFileNames)):\n+\t\tabsFile = sys.argv[0]\n+\t\tabsDir = os.path.dirname(absFile)\n+\t\tparentDir = os.path.abspath(os.path.join(absDir, os.path.pardir))\n+\t\tcmd = "python %s/Java/Python/CompareOverlappingSmallQuery.py " % parentDir\n+\t\topts = "-i %s -f %s -j %s -g %s -o %s " % (options.inputFileName1, options.format1, inputFileNames[i], options.format2, overlapOutputNames[i])\n+\t\t#if options.start1 != None:\n+\t\t#\topts += "-S %s " % options.start1\n+\t\t#if options.start2 != None:\n+\t\t#\topts += "-s %s " % options.start2\n+\t\t#if options.end1 != None:\n+\t\t#\topts += "-U %s " % options.end1\n+\t\t#if options.end2 != None:\n+\t\t#\topts += "-u %s " % options.end2\n+\t\t#if options.fivePrime1 != None:\n+\t\t#\topts += "-E %s " % options.fivePrime1\n+\t\t#if options.fivePrime2 != None:\n+\t\t#\topts += "-e %s " % options.fivePrime2\n+\t\t#if options.threePrime1 != None:\n+\t\t#\topts += "-N %s " % options.threePrime1\n+\t\t#if options.threePrime2 != None:\n+\t\t#\topts += "-n %s " % options.threePrime2\n+\t\t#if options.colinear:\n+\t\t#\topts += "-c "\n+\t\t#if options.antisense:\n+\t\t#\topts +="-a "\n+\t\t#if options.included:\n+\t\t#\topts += "-k "\n+\t\t#if options.including:\n+\t\t#\topts += "-K "\n+\t\t#if options.pcOverlap != None:\n+\t\t#\topts += "-p %s " % options.pcOverlap\n+\t\tif options.notOverlapping:\n+\t\t\topts += "-O "\n+\t\tif options.exclude:\n+\t\t\topts += "-x "\n+\t\tif options.distance != None:\n+\t\t\topts += "-d %s " % options.distance\n+\t\t#if options.minOverlap != None:\n+\t\t#\topts += "-m %s " % options.minOverlap\n+\t\tcmd += opts\n+\t\tcmds.append(cmd)\n+\n+\n+\tprint "les commandes sont %s \\n" % cmds\n+\n+\ttmp_files = []\t\n+\tfor i in range(len(cmds)):\n+\t\ttry:\n+\t\t\ttmp_out = tempfile.NamedTemporaryFile().name\n+\t\t\ttmp_files.append(tmp_out)\n+\t\t\ttmp_stdout = open( tmp_out, \'wb\' )\n+\t\t\ttmp_err = tempfile.NamedTemporaryFile().name\n+\t\t\ttmp_files.append(tmp_err)\n+\t\t\ttmp_stderr = open( tmp_err, \'wb\' )\n+\t\t\tproc = subprocess.Popen( args=cmds[i], shell=True, cwd=".", stdout=tmp_stdout, stderr=tmp_stderr )\n+\t\t\treturncode = proc.wait()\n+\t\t\ttmp_stderr.close()\n+\t\t\t# get stderr, allowing for case where it\'s very large\n+\t\t\ttmp_stderr = open( tmp_err, \'rb\' )\n+\t\t\tstderr = \'\'\n+\t\t\tbuffsize = 1048576\n+\t\t\ttry:\n+\t\t\t\twhile True:\n+\t\t\t\t\tstderr += tmp_stderr.read( buffsize )\n+\t\t\t\t\tif not stderr or len( stderr ) % buffsize != 0:\n+\t\t\t\t\t\tbreak\n+\t\t\texcept OverflowError:\n+\t\t\t\tpass\n+\t\t\ttmp_stdout.close()\n+\t\t\ttmp_stderr.close()\n+\t\t\tif returncode != 0:\n+\t\t\t\traise Exception, stderr\n+\t\texcept Exception, e:\n+\t\t\tstop_err( \'Error in :\\n\' + str( e ) )\n+\n+\tif options.outputTar != None:\n+\t\ttoTar(options.outputTar, overlapOutputNames)\t\n+\t\n+\tfor tmp_file in tmp_files:\n+\t\tos.remove(tmp_file)\n+\n+\n+if __name__=="__main__": __main__()\t\t\n+\t\t\n+\t\t\n'
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/DiffExpAnal/compareOverlapping_parallel.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/DiffExpAnal/compareOverlapping_parallel.xml Mon Apr 29 03:20:15 2013 -0400
[
b'@@ -0,0 +1,251 @@\n+<tool id="CompareOverlapping_parallel" name="CompareOverlapping (for DEA)">\n+\t<description>Shrink or extend the sets of genomic coordinates to get the information between starts of reads and starts of genes.</description>\n+\t<command interpreter="python">\n+\t\tcompareOverlapping_parallel.py -i $formatType.inputFileName1\n+\t\t#if $formatType.FormatInputFileName1 == \'bed\':\n+\t\t\t-f bed\n+\t\t#elif $formatType.FormatInputFileName1 == \'gff\':\n+\t\t\t-f gff\t\n+\t\t#elif $formatType.FormatInputFileName1 == \'gff2\':\n+\t\t\t-f gff2\n+\t\t#elif $formatType.FormatInputFileName1 == \'gff3\':\n+\t\t\t-f gff3\n+\t\t#elif $formatType.FormatInputFileName1 == \'sam\':\n+\t\t\t-f sam\n+\t\t#elif $formatType.FormatInputFileName1 == \'gtf\':\n+\t\t\t-f gtf\n+\t\t#end if\n+\t\t\t\n+\t\t--inputTxt $inputTxt \n+\t\t\n+\t\t-g $format2\n+\n+\t\t--outTxt $outTxtFile\n+\n+\t\t#if $optionNFirstFile1.NFirstForFile1 == \'Yes\':\n+\t\t\t-S $optionNFirstFile1.firstNtFile1\n+\t\t#end if\n+\t\t#if $optionNFirstFile2.NFirstForFile2 == \'Yes\':\n+\t\t\t-s $optionNFirstFile2.firstNtFile2\n+\t\t#end if\n+\t\t#if $optionNLastFile1.NLastForFile1 == \'Yes\':\n+\t\t\t-U $optionNLastFile1.lastNtFile1\n+\t\t#end if\n+\t\t#if $optionNLastFile2.NLastForFile2 == \'Yes\':\n+\t\t\t-u $optionNLastFile2.lastNtFile2\n+\t\t#end if\n+\t\n+\t\t#if $optionExtentionCinqFile1.extentionFile1 == \'Yes\':\n+\t\t\t-E $optionExtentionCinqFile1.extention51\n+\t\t#end if\n+\t\t#if $optionExtentionCinqFile2.extentionFile2 == \'Yes\':\n+\t\t\t-e $optionExtentionCinqFile2.extention52\n+\t\t#end if\n+\n+\t\t#if $optionExtentionTroisFile1.extentionFile1 == \'Yes\':\n+\t\t\t-N $optionExtentionTroisFile1.extention31\n+\t\t#end if\n+\t\t#if $optionExtentionTroisFile2.extentionFile2 == \'Yes\':\n+\t\t\t-n $optionExtentionTroisFile2.extention32\n+\t\t#end if\t\n+\n+\t\t#if $OptionColinearOrAntiSens.OptionCA == \'Colinear\':\n+\t\t\t-c \n+\t\t#elif $OptionColinearOrAntiSens.OptionCA == \'AntiSens\':\n+\t\t\t-a\n+\t\t#end if\t\n+\n+\t\t#if $OptionDistance.Dist == \'Yes\':\n+\t\t\t-d $OptionDistance.distance\n+\t\t#end if\n+\n+\t\t#if $OptionMinOverlap.MO == \'Yes\':\n+\t\t\t-m $OptionMinOverlap.minOverlap\n+\t\t#end if\n+\n+\t\t$InvertMatch\n+\t\t$ReportIntron\n+\t\t$NotOverlapping\n+\t\t$tar $outputTarFile\n+\t</command>\n+\n+\t<inputs>\n+\n+\t\t<conditional name="formatType">\n+\t\t\t<param name="FormatInputFileName1" type="select" label="Input File Format 1">\n+\t\t\t\t<option value="bed">bed</option>\n+\t\t\t\t<option value="gff">gff</option>\n+\t\t\t\t<option value="gff2">gff2</option>\n+\t\t\t\t<option value="gff3">gff3</option>\n+\t\t\t\t<option value="sam">sam</option>\n+\t\t\t\t<option value="gtf">gtf</option>\n+\t\t\t</param>\n+\t\t\t<when value="bed">\n+\t\t\t\t<param name="inputFileName1" format="bed" type="data" label="Input File 1"/>\n+\t\t\t</when>\n+\t\t\t<when value="gff">\n+\t\t\t\t<param name="inputFileName1" format="gff" type="data" label="Input File 1"/>\n+\t\t\t</when>\n+\t\t\t<when value="gff2">\n+\t\t\t\t<param name="inputFileName1" format="gff2" type="data" label="Input File 1"/>\n+\t\t\t</when>\n+\t\t\t<when value="gff3">\n+\t\t\t\t<param name="inputFileName1" format="gff3" type="data" label="Input File 1"/>\n+\t\t\t</when>\n+\t\t\t<when value="sam">\n+\t\t\t\t<param name="inputFileName1" format="sam" type="data" label="Input File 1"/>\n+\t\t\t</when>\n+\t\t\t<when value="gtf">\n+\t\t\t\t<param name="inputFileName1" format="gtf" type="data" label="Input File 1"/>\n+            </when>\n+\t\t</conditional>\n+\t\t\n+\t\t<param name="inputTxt" type="data" format="txt" label="A txt file contains a list of several input transcripts files." />\n+\t\t\n+\t\t<param name="format2" type="text" value="bed" label="format for  File 2, you can choose [bed, gff, gff2, gff3, sam, gtf]"/>\n+\t\t\n+\t\t<conditional name="optionNFirstFile1">\n+\t\t\t<param name="NFirstForFile1" type="select" label="NFirst for file 1" help="only consider the n first nucleotides of the transcripts in file 1">\n+\t\t\t\t\t<option value="Yes">Yes</option>\n+\t\t\t\t\t<option value="No" selected="true">No</option>\n+\t\t\t</param>\n+\t\t\t<when value="Yes">\n+\t\t\t\t<param name="firstNtFile1" type="integer" value="1" label="n first nucleotides for input file 1" />\n+\t\t\t</when>\n+\t\t\t<when value="No">\n+\t\t\t</when>\n+\t\t</conditional>\n+\t\t<conditional name="optionNFirstFile2">\n+\t\t\t<param name="NFirs'..b'tForFile2" type="select" label="NLast for file 2">\n+\t\t\t\t<option value="Yes">Yes</option>\n+\t\t\t\t<option value="No" selected="true">No</option>\n+\t\t\t</param>\n+\t\t\t<when value="Yes">\n+\t\t\t\t<param name="lastNtFile2" type="integer" value="1" label="n last nucleotides for input file 2" help="only consider the n last nucleotides of the transcripts in file 2"/>\n+\t\t\t</when>\n+\t\t\t<when value="No">\n+\t\t\t</when>\n+\t\t</conditional>\n+\n+\t\t<conditional name="optionExtentionCinqFile1">\n+\t\t\t<param name="extentionFile1" type="select" label="Extension towards 5 for file 1">\n+\t\t\t\t\t<option value="Yes">Yes</option>\n+\t\t\t\t\t<option value="No" selected="true">No</option>\n+\t\t\t</param>\n+\t\t\t<when value="Yes">\n+\t\t\t\t<param name="extention51" type="integer" value="1" label="in file 1" />\n+\t\t\t</when>\n+\t\t\t<when value="No">\n+\t\t\t</when>\n+\t\t</conditional>\n+\n+\t\t<conditional name="optionExtentionCinqFile2">\n+\t\t\t<param name="extentionFile2" type="select" label="Extension towards 5 for file 2">\n+\t\t\t\t<option value="Yes">Yes</option>\n+\t\t\t\t<option value="No" selected="true">No</option>\n+\t\t\t</param>\n+\t\t\t<when value="Yes">\n+\t\t\t\t<param name="extention52" type="integer" value="1" label="in file 2"/>\n+\t\t\t</when>\n+\t\t\t<when value="No">\n+\t\t\t</when>\n+\t\t</conditional>\n+\n+\t\t<conditional name="optionExtentionTroisFile1">\n+\t\t\t<param name="extentionFile1" type="select" label="Extension towards 3 for file 1">\n+\t\t\t\t\t<option value="Yes">Yes</option>\n+\t\t\t\t\t<option value="No" selected="true">No</option>\n+\t\t\t</param>\n+\t\t\t<when value="Yes">\n+\t\t\t\t<param name="extention31" type="integer" value="1" label="in file 1" />\n+\t\t\t</when>\n+\t\t\t<when value="No">\n+\t\t\t</when>\n+\t\t</conditional>\n+\n+\t\t<conditional name="optionExtentionTroisFile2">\n+\t\t\t<param name="extentionFile2" type="select" label="Extension towards 3 for file 2">\n+\t\t\t\t<option value="Yes">Yes</option>\n+\t\t\t\t<option value="No" selected="true">No</option>\n+\t\t\t</param>\n+\t\t\t<when value="Yes">\n+\t\t\t\t<param name="extention32" type="integer" value="1" label="in file 2" />\n+\t\t\t</when>\n+\t\t\t<when value="No">\n+\t\t\t</when>\n+\t\t</conditional>\n+\n+\t\t<conditional name="OptionColinearOrAntiSens">\n+\t\t\t<param name="OptionCA" type="select" label="Colinear or anti-sens">\n+\t\t\t\t<option value="Colinear">Colinear</option>\n+\t\t\t\t<option value="AntiSens">AntiSens</option>\n+\t\t\t\t<option value="NONE" selected="true">NONE</option>\n+\t\t\t</param>\n+\t\t\t<when value="Colinear">\n+\t\t\t</when>\n+\t\t\t<when value="AntiSens">\n+\t\t\t</when>\n+\t\t\t<when value="NONE">\n+\t\t\t</when>\n+\t\t</conditional>\n+\n+\t\t<conditional name="OptionDistance">\n+\t\t\t<param name="Dist" type="select" label="Maximum Distance between two reads">\n+\t\t\t\t<option value="Yes">Yes</option>\n+\t\t\t\t<option value="No" selected="true">No</option>\n+\t\t\t</param>\n+\t\t\t<when value="Yes">\n+\t\t\t\t<param name="distance" type="integer" value="0"/>\n+\t\t\t</when>\n+\t\t\t<when value="No">\n+\t\t\t</when>\n+\t\t</conditional>\n+\n+\t\t<conditional name="OptionMinOverlap">\n+\t\t\t<param name="MO" type="select" label="Minimum number of overlapping between two reads">\n+\t\t\t\t<option value="Yes">Yes</option>\n+\t\t\t\t<option value="No" selected="true">No</option>\n+\t\t\t</param>\n+\t\t\t<when value="Yes">\n+\t\t\t\t<param name="minOverlap" type="integer" value="1"/>\n+\t\t\t</when>\n+\t\t\t<when value="No">\n+\t\t\t</when>\n+\t\t</conditional>\n+\t\t<param name="InvertMatch" type="boolean" truevalue="-x" falsevalue="" checked="false" label="Invert match"/>\n+\t\t<param name="ReportIntron" type="boolean" truevalue="-t" falsevalue="" checked="false" label="Report intron"/>\n+\t\t<param name="NotOverlapping" type="boolean" truevalue="-O" falsevalue="" checked="false" label="When there is no overlapping, the number of Overlapping will be set to 0 by defalt."/>\n+\t\t<param name="tar" type="boolean" truevalue="--tar" falsevalue="" checked="false" label="tar option" help="This option creates a tar file for all out results." />\n+\t</inputs>\n+\n+\t<outputs>\n+\t\t<data name="outTxtFile" format="txt" label="overlapping output files "/>\n+\t\t<data name="outputTarFile" format="tar">\n+\t\t  <filter>tar</filter>\n+\t  </data>\n+\t</outputs> \n+\t\n+</tool>\n'
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/DiffExpAnal/compareOverlapping_parallel_unSQL.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/DiffExpAnal/compareOverlapping_parallel_unSQL.py Mon Apr 29 03:20:15 2013 -0400
[
b'@@ -0,0 +1,205 @@\n+#! /usr/bin/env python\n+#This program is a wrapp for CompareOverlapping.py.\n+import os, sys, tarfile, optparse\n+from commons.core.launcher.Launcher import Launcher\n+from commons.core.sql.TableJobAdaptatorFactory import TableJobAdaptatorFactory\n+from optparse import OptionParser\n+from commons.core.utils.FileUtils import FileUtils\n+from commons.core.parsing.ParserChooser import ParserChooser\n+from SMART.Java.Python.structure.TranscriptList import TranscriptList\n+from commons.core.writer.WriterChooser import WriterChooser\n+\n+def stop_err( msg ):\n+\tsys.stderr.write( "%s\\n" % msg )\n+\tsys.exit()\n+\n+def toTar(tarFileName, overlapOutputNames):\n+\tdir = os.path.dirname(tarFileName)\t\n+\ttfile = tarfile.open(tarFileName + ".tmp.tar", "w")\n+\tcurrentPath = os.getcwd()\n+\tos.chdir(dir)\n+\tfor file in overlapOutputNames:\n+\t\trelativeFileName = os.path.basename(file)\n+\t\ttfile.add(relativeFileName)\n+\tos.system("mv %s %s" % (tarFileName + ".tmp.tar", tarFileName))\n+\ttfile.close()\n+\tos.chdir(currentPath)\n+\n+def _createCompareOverlappingCmd(iLauncher, options, inputFileName, annotationFile, overlapOutputName):\n+\tlArgs = []\n+\tlArgs.append("-i %s" % annotationFile)\n+\tlArgs.append("-f %s" % options.format1)\n+\tlArgs.append("-j %s" % inputFileName)\n+\tlArgs.append("-g %s" % options.format2)\n+\tlArgs.append("-o %s" % overlapOutputName)\n+\tif options.notOverlapping:\n+\t\tlArgs.append("-O")\n+\tif options.exclude:\n+\t\tlArgs.append("-x")\n+\tif options.distance != None:\n+\t\tlArgs.append("-d %s" % options.distance)\n+\treturn(iLauncher.getSystemCommand("python %s/SMART/Java/Python/CompareOverlappingSmallQuery.py"  %  os.environ["REPET_PATH"], lArgs))\n+\n+def _map(iLauncher, cmd, cmdStart, cmdFinish ):\n+\tlCmds = []\n+\tlCmds.append(cmd)\n+\tlCmdStart = []\n+\tlCmdStart.append(cmdStart)\n+\tlCmdFinish = []\n+\tlCmdFinish.append(cmdFinish)\n+\treturn(iLauncher.prepareCommands_withoutIndentation(lCmds, lCmdStart, lCmdFinish))\n+\n+def split(fileName, nbOfSeqPerBatch):\n+\tfilePrefix, fileExt = os.path.splitext(os.path.basename(fileName))\n+\tresDir = os.path.dirname(fileName)\n+\tlInputName = []\n+\tfileNb = 1\n+\tSeqNb = 0\n+\toutFileName = "%s/%s-%s%s" %(resDir, filePrefix, fileNb, fileExt)\n+\tlInputName.append(outFileName)\n+\toutFile = open(outFileName, "w")\n+\tf = open(fileName, "r")\n+\tline = f.readline()\n+\tpreviousRefName = ""\n+\twhile line != "":\n+\t\tif not line.startswith(\'@SQ\'):\n+\t\t\tif SeqNb == nbOfSeqPerBatch:\n+\t\t\t\tSeqNb = 0\n+\t\t\t\tfileNb += 1\n+\t\t\t\toutFile.close()\n+\t\t\t\toutFileName = "%s/%s-%s%s" %(resDir, filePrefix, fileNb, fileExt)\n+\t\t\t\tlInputName.append(outFileName)\n+\t\t\t\toutFile = open(outFileName, "w")\n+\t\t\trefName = line.split("\\t")[2]\n+\t\t\tif previousRefName != refName:\n+\t\t\t\tSeqNb += 1\n+\t\t\t\toutFile.write(line)\n+\t\t\telse:\n+\t\t\t\tpreviousRefName = refName\n+\t\t\t\toutFile.write(line)\n+\t\tline = f.readline()\n+\treturn lInputName\t\t\n+\n+def join(dCutOut2Out, options):\n+\tchooser = ParserChooser()\n+\tchooser.findFormat("gtf")\n+\tgtfParser = chooser.getParser(options.inputFileName1)\n+\tref = {}\n+\tfor transcript in gtfParser.getIterator():\n+\t\tref[transcript.getTagValue("ID")] = transcript\n+\tfor key in dCutOut2Out.keys():\n+\t\twriterChooser = WriterChooser()\n+\t\twriterChooser.findFormat("gff3")\n+\t\tfor inputFile in dCutOut2Out[key]:\n+\t\t\tchooser = ParserChooser()\n+\t\t\tchooser.findFormat("gff")\n+\t\t\tgffParser = chooser.getParser(inputFile)\n+\t\t\tfor transcript in gffParser.getIterator():\n+\t\t\t\t\tfinalTranscript = ref[transcript.getTagValue("ID")]\n+\t\t\t\t\tif finalTranscript.getTagValue("nbOverlaps"):\n+\t\t\t\t\t\tnbOverlap = int(finalTranscript.getTagValue("nbOverlaps")) + int(transcript.getTagValue("nbOverlaps"))\n+\t\t\t\t\t\tfinalTranscript.setTagValue("nbOverlaps", nbOverlap)\n+\t\t\t\t\telse:\n+\t\t\t\t\t\tfinalTranscript.setTagValue("nbOverlaps", transcript.getTagValue("nbOverlaps"))\n+\t\t\t\t\t\n+\t\t\t\t\tif finalTranscript.getTagValue("overlapsWith") and transcript.getTagValue("overlapsWith") != None:\n+\t\t\t\t\t\toverlapName = "--".join([finalTranscript.getTagValue("overlapsWith"), transcript.getTagValue("overlapsWith")])\n+\t\t\t\t\t\tfinalTranscript.set'..b'pe="int",\thelp="extension towards 3\' in file 2 [format: int]")\n+\tparser.add_option("-c", "--colinear",\t\t dest="colinear",\t   action="store_true", default=False,\t\t\t\thelp="colinear only [format: bool] [default: false]")\n+\tparser.add_option("-a", "--antisense",\t\tdest="antisense",\t  action="store_true", default=False,\t\t\t\thelp="antisense only [format: bool] [default: false]")\n+\tparser.add_option("-d", "--distance",\t\t dest="distance",\t   action="store",\t  default=None,\t type="int",\thelp="accept some distance between query and reference [format: int]")\n+\tparser.add_option("-k", "--included",\t\t dest="included",\t   action="store_true", default=False,\t\t\t\thelp="keep only elements from file 1 which are included in an element of file 2 [format: bool] [default: false]")\n+\tparser.add_option("-K", "--including",\t\tdest="including",\t  action="store_true", default=False,\t\t\t\thelp="keep only elements from file 2 which are included in an element of file 1 [format: bool] [default: false]")\n+\tparser.add_option("-m", "--minOverlap",\t   dest="minOverlap",\t action="store",\t  default=None,\t type="int",\thelp="minimum number of nucleotides overlapping to declare an overlap [format: int] [default: 1]")\n+\tparser.add_option("-p", "--pcOverlap",\t\tdest="pcOverlap",\t  action="store",\t  default=None,  type="int",\thelp="minimum percentage of nucleotides to overlap to declare an overlap [format: int]")\n+\tparser.add_option("-O", "--notOverlapping",   dest="notOverlapping", action="store_true", default=False,\t\t\t\thelp="also output not overlapping data [format: bool] [default: false]")\n+\tparser.add_option("-x", "--exclude",\t\t  dest="exclude",\t\taction="store_true", default=False,\t\t\t\thelp="invert the match [format: bool] [default: false]")\n+\tparser.add_option("-v", "--verbosity",\t\tdest="verbosity",\t  action="store",\t  default=1,\t type="int",\thelp="trace level [format: int]")\n+\tparser.add_option(\'\', \'--tar\', dest=\'outputTar\', default=None, help=\'output all SAM results in a tar file.\' )\n+\tparser.add_option( \'\', \'--outTxt\', dest=\'outTxtFile\', help=\'The output list of results files on txt format.[compulsory]\' )\n+\t(options, args) = parser.parse_args()\n+\t\n+\t\n+\t#Parse the input txt file and read a list of BAM files.\n+\tfile = open(options.inputTxt, "r")\n+\tlines = file.readlines()\n+\tinputFileNames = []\n+\toverlapOutputNames = []\n+\toutputName = options.outTxtFile\n+\tresDirName = os.path.dirname(outputName) + "/"\n+\t#Write output txt file and define all output sam file names.\n+\tout = open(outputName, "w")\n+\tfor line in lines:\n+\t\ttab = line.split()\n+\t\tinputFileNames.append(tab[1])\n+\t\toverlapOutName = resDirName + tab[0] + \'_overlapOut.gff3\'\n+\t\toverlapOutputNames.append(overlapOutName)\n+\t\tout.write(tab[0] + \'\\t\' + overlapOutName  + \'\\n\')\n+\tfile.close()\n+\tout.close()\n+\t\n+\t#Launch on nodes\n+\tacronym = "compareOverlapping"\n+\tjobdb = TableJobAdaptatorFactory.createJobInstance()\n+\tiLauncher = Launcher(jobdb, os.getcwd(), "", "", os.getcwd(), os.getcwd(), "jobs", "test", acronym, acronym, False, True)\n+\n+\n+\t\n+\n+\t#construction the commandes for each input file\n+\tlCmdsTuples = []\n+\tdCutOut2Out = {}\n+\tlAllFile2remove = []\n+\tfor i in range(len(inputFileNames)):\n+\t\tlCutInputFile = split(inputFileNames[i], 20000)\n+\t\tlAllFile2remove.extend(lCutInputFile)\n+\t\tlCutOutput = []\n+\t\tfor cutInput in lCutInputFile:\n+\t\t\tcutOutput = "%s_out" % cutInput\n+\t\t\tlCutOutput.append(cutOutput)\n+\t\t\tlAllFile2remove.extend(lCutOutput)\n+\t\t\tcmd2Launch = _createCompareOverlappingCmd(iLauncher, options, cutInput, options.inputFileName1, cutOutput)\n+\t\t\tlCmdsTuples.append(_map(iLauncher, cmd2Launch, "", ""))\n+\t\tchooser = ParserChooser()\n+\t\tchooser.findFormat(options.format2)\n+\t\tdCutOut2Out[overlapOutputNames[i]] = lCutOutput\n+\tiLauncher.runLauncherForMultipleJobs(acronym, lCmdsTuples, True)\n+\t\n+\tjoin(dCutOut2Out, options)\n+\tFileUtils.removeFilesFromListIfExist(lAllFile2remove)\n+\n+\tif options.outputTar != None:\n+\t\ttoTar(options.outputTar, overlapOutputNames)\t\n+\n+if __name__=="__main__": __main__()\t\t\n\\ No newline at end of file\n'
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/DiffExpAnal/compareOverlapping_parallel_unSQL.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/DiffExpAnal/compareOverlapping_parallel_unSQL.xml Mon Apr 29 03:20:15 2013 -0400
[
b'@@ -0,0 +1,251 @@\n+<tool id="CompareOverlapping_parallel_unSQL" name="CompareOverlapping (for DEA in parallel)">\n+\t<description>Shrink or extend the sets of genomic coordinates to get the information between starts of reads and starts of genes (parallelized).</description>\n+\t<command interpreter="python">\n+\t\tcompareOverlapping_parallel_unSQL.py -i $formatType.inputFileName1\n+\t\t#if $formatType.FormatInputFileName1 == \'bed\':\n+\t\t\t-f bed\n+\t\t#elif $formatType.FormatInputFileName1 == \'gff\':\n+\t\t\t-f gff\t\n+\t\t#elif $formatType.FormatInputFileName1 == \'gff2\':\n+\t\t\t-f gff2\n+\t\t#elif $formatType.FormatInputFileName1 == \'gff3\':\n+\t\t\t-f gff3\n+\t\t#elif $formatType.FormatInputFileName1 == \'sam\':\n+\t\t\t-f sam\n+\t\t#elif $formatType.FormatInputFileName1 == \'gtf\':\n+\t\t\t-f gtf\n+\t\t#end if\n+\t\t\t\n+\t\t--inputTxt $inputTxt \n+\t\t\n+\t\t-g $format2\n+\n+\t\t--outTxt $outTxtFile\n+\n+\t\t#if $optionNFirstFile1.NFirstForFile1 == \'Yes\':\n+\t\t\t-S $optionNFirstFile1.firstNtFile1\n+\t\t#end if\n+\t\t#if $optionNFirstFile2.NFirstForFile2 == \'Yes\':\n+\t\t\t-s $optionNFirstFile2.firstNtFile2\n+\t\t#end if\n+\t\t#if $optionNLastFile1.NLastForFile1 == \'Yes\':\n+\t\t\t-U $optionNLastFile1.lastNtFile1\n+\t\t#end if\n+\t\t#if $optionNLastFile2.NLastForFile2 == \'Yes\':\n+\t\t\t-u $optionNLastFile2.lastNtFile2\n+\t\t#end if\n+\t\n+\t\t#if $optionExtentionCinqFile1.extentionFile1 == \'Yes\':\n+\t\t\t-E $optionExtentionCinqFile1.extention51\n+\t\t#end if\n+\t\t#if $optionExtentionCinqFile2.extentionFile2 == \'Yes\':\n+\t\t\t-e $optionExtentionCinqFile2.extention52\n+\t\t#end if\n+\n+\t\t#if $optionExtentionTroisFile1.extentionFile1 == \'Yes\':\n+\t\t\t-N $optionExtentionTroisFile1.extention31\n+\t\t#end if\n+\t\t#if $optionExtentionTroisFile2.extentionFile2 == \'Yes\':\n+\t\t\t-n $optionExtentionTroisFile2.extention32\n+\t\t#end if\t\n+\n+\t\t#if $OptionColinearOrAntiSens.OptionCA == \'Colinear\':\n+\t\t\t-c \n+\t\t#elif $OptionColinearOrAntiSens.OptionCA == \'AntiSens\':\n+\t\t\t-a\n+\t\t#end if\t\n+\n+\t\t#if $OptionDistance.Dist == \'Yes\':\n+\t\t\t-d $OptionDistance.distance\n+\t\t#end if\n+\n+\t\t#if $OptionMinOverlap.MO == \'Yes\':\n+\t\t\t-m $OptionMinOverlap.minOverlap\n+\t\t#end if\n+\n+\t\t$InvertMatch\n+\t\t$ReportIntron\n+\t\t$NotOverlapping\n+\t\t$tar $outputTarFile\n+\t</command>\n+\n+\t<inputs>\n+\n+\t\t<conditional name="formatType">\n+\t\t\t<param name="FormatInputFileName1" type="select" label="Input File Format 1">\n+\t\t\t\t<option value="bed">bed</option>\n+\t\t\t\t<option value="gff">gff</option>\n+\t\t\t\t<option value="gff2">gff2</option>\n+\t\t\t\t<option value="gff3">gff3</option>\n+\t\t\t\t<option value="sam">sam</option>\n+\t\t\t\t<option value="gtf">gtf</option>\n+\t\t\t</param>\n+\t\t\t<when value="bed">\n+\t\t\t\t<param name="inputFileName1" format="bed" type="data" label="Input File 1"/>\n+\t\t\t</when>\n+\t\t\t<when value="gff">\n+\t\t\t\t<param name="inputFileName1" format="gff" type="data" label="Input File 1"/>\n+\t\t\t</when>\n+\t\t\t<when value="gff2">\n+\t\t\t\t<param name="inputFileName1" format="gff2" type="data" label="Input File 1"/>\n+\t\t\t</when>\n+\t\t\t<when value="gff3">\n+\t\t\t\t<param name="inputFileName1" format="gff3" type="data" label="Input File 1"/>\n+\t\t\t</when>\n+\t\t\t<when value="sam">\n+\t\t\t\t<param name="inputFileName1" format="sam" type="data" label="Input File 1"/>\n+\t\t\t</when>\n+\t\t\t<when value="gtf">\n+\t\t\t\t<param name="inputFileName1" format="gtf" type="data" label="Input File 1"/>\n+            </when>\n+\t\t</conditional>\n+\t\t\n+\t\t<param name="inputTxt" type="data" format="txt" label="A txt file contains a list of several input transcripts files." />\n+\t\t\n+\t\t<param name="format2" type="text" value="bed" label="format for  File 2, you can choose [bed, gff, gff2, gff3, sam, gtf]"/>\n+\t\t\n+\t\t<conditional name="optionNFirstFile1">\n+\t\t\t<param name="NFirstForFile1" type="select" label="NFirst for file 1" help="only consider the n first nucleotides of the transcripts in file 1">\n+\t\t\t\t\t<option value="Yes">Yes</option>\n+\t\t\t\t\t<option value="No" selected="true">No</option>\n+\t\t\t</param>\n+\t\t\t<when value="Yes">\n+\t\t\t\t<param name="firstNtFile1" type="integer" value="1" label="n first nucleotides for input file 1" />\n+\t\t\t</when>\n+\t\t\t<when value="No">\n+\t\t\t</when>\n+\t\t</conditional>\n+\t\t<conditional name="opt'..b'tForFile2" type="select" label="NLast for file 2">\n+\t\t\t\t<option value="Yes">Yes</option>\n+\t\t\t\t<option value="No" selected="true">No</option>\n+\t\t\t</param>\n+\t\t\t<when value="Yes">\n+\t\t\t\t<param name="lastNtFile2" type="integer" value="1" label="n last nucleotides for input file 2" help="only consider the n last nucleotides of the transcripts in file 2"/>\n+\t\t\t</when>\n+\t\t\t<when value="No">\n+\t\t\t</when>\n+\t\t</conditional>\n+\n+\t\t<conditional name="optionExtentionCinqFile1">\n+\t\t\t<param name="extentionFile1" type="select" label="Extension towards 5 for file 1">\n+\t\t\t\t\t<option value="Yes">Yes</option>\n+\t\t\t\t\t<option value="No" selected="true">No</option>\n+\t\t\t</param>\n+\t\t\t<when value="Yes">\n+\t\t\t\t<param name="extention51" type="integer" value="1" label="in file 1" />\n+\t\t\t</when>\n+\t\t\t<when value="No">\n+\t\t\t</when>\n+\t\t</conditional>\n+\n+\t\t<conditional name="optionExtentionCinqFile2">\n+\t\t\t<param name="extentionFile2" type="select" label="Extension towards 5 for file 2">\n+\t\t\t\t<option value="Yes">Yes</option>\n+\t\t\t\t<option value="No" selected="true">No</option>\n+\t\t\t</param>\n+\t\t\t<when value="Yes">\n+\t\t\t\t<param name="extention52" type="integer" value="1" label="in file 2"/>\n+\t\t\t</when>\n+\t\t\t<when value="No">\n+\t\t\t</when>\n+\t\t</conditional>\n+\n+\t\t<conditional name="optionExtentionTroisFile1">\n+\t\t\t<param name="extentionFile1" type="select" label="Extension towards 3 for file 1">\n+\t\t\t\t\t<option value="Yes">Yes</option>\n+\t\t\t\t\t<option value="No" selected="true">No</option>\n+\t\t\t</param>\n+\t\t\t<when value="Yes">\n+\t\t\t\t<param name="extention31" type="integer" value="1" label="in file 1" />\n+\t\t\t</when>\n+\t\t\t<when value="No">\n+\t\t\t</when>\n+\t\t</conditional>\n+\n+\t\t<conditional name="optionExtentionTroisFile2">\n+\t\t\t<param name="extentionFile2" type="select" label="Extension towards 3 for file 2">\n+\t\t\t\t<option value="Yes">Yes</option>\n+\t\t\t\t<option value="No" selected="true">No</option>\n+\t\t\t</param>\n+\t\t\t<when value="Yes">\n+\t\t\t\t<param name="extention32" type="integer" value="1" label="in file 2" />\n+\t\t\t</when>\n+\t\t\t<when value="No">\n+\t\t\t</when>\n+\t\t</conditional>\n+\n+\t\t<conditional name="OptionColinearOrAntiSens">\n+\t\t\t<param name="OptionCA" type="select" label="Colinear or anti-sens">\n+\t\t\t\t<option value="Colinear">Colinear</option>\n+\t\t\t\t<option value="AntiSens">AntiSens</option>\n+\t\t\t\t<option value="NONE" selected="true">NONE</option>\n+\t\t\t</param>\n+\t\t\t<when value="Colinear">\n+\t\t\t</when>\n+\t\t\t<when value="AntiSens">\n+\t\t\t</when>\n+\t\t\t<when value="NONE">\n+\t\t\t</when>\n+\t\t</conditional>\n+\n+\t\t<conditional name="OptionDistance">\n+\t\t\t<param name="Dist" type="select" label="Maximum Distance between two reads">\n+\t\t\t\t<option value="Yes">Yes</option>\n+\t\t\t\t<option value="No" selected="true">No</option>\n+\t\t\t</param>\n+\t\t\t<when value="Yes">\n+\t\t\t\t<param name="distance" type="integer" value="0"/>\n+\t\t\t</when>\n+\t\t\t<when value="No">\n+\t\t\t</when>\n+\t\t</conditional>\n+\n+\t\t<conditional name="OptionMinOverlap">\n+\t\t\t<param name="MO" type="select" label="Minimum number of overlapping between two reads">\n+\t\t\t\t<option value="Yes">Yes</option>\n+\t\t\t\t<option value="No" selected="true">No</option>\n+\t\t\t</param>\n+\t\t\t<when value="Yes">\n+\t\t\t\t<param name="minOverlap" type="integer" value="1"/>\n+\t\t\t</when>\n+\t\t\t<when value="No">\n+\t\t\t</when>\n+\t\t</conditional>\n+\t\t<param name="InvertMatch" type="boolean" truevalue="-x" falsevalue="" checked="false" label="Invert match"/>\n+\t\t<param name="ReportIntron" type="boolean" truevalue="-t" falsevalue="" checked="false" label="Report intron"/>\n+\t\t<param name="NotOverlapping" type="boolean" truevalue="-O" falsevalue="" checked="false" label="When there is no overlapping, the number of Overlapping will be set to 0 by defalt."/>\n+\t\t<param name="tar" type="boolean" truevalue="--tar" falsevalue="" checked="false" label="tar option" help="This option creates a tar file for all out results." />\n+\t</inputs>\n+\n+\t<outputs>\n+\t\t<data name="outTxtFile" format="txt" label="overlapping output files "/>\n+\t\t<data name="outputTarFile" format="tar">\n+\t\t  <filter>tar</filter>\n+\t  </data>\n+\t</outputs> \n+\t\n+</tool>\n'
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/DiffExpAnal/countNumber.pl
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/DiffExpAnal/countNumber.pl Mon Apr 29 03:20:15 2013 -0400
[
@@ -0,0 +1,34 @@
+#!/usr/bin/perl -w
+
+use strict;
+
+my $in_file = $ARGV[0];
+my $out_file = $ARGV[1];
+my $sort_type = $ARGV[2]; # n(umeric) or a(lphanumeric)
+my ($line,$ID,$nbOverlaps,%hash);
+
+open(IN, $in_file);
+while ($line = <IN>){
+ chomp($line);
+ $line=~s/\t/|/g;
+ my @part=split(/\|/,$line);
+ my @split=split(";",$part[$#part]);
+ $split[0] =~ m/^(\w+).+$/;
+
+ foreach my $i (@split){
+ if ($i=~m/nbOverlaps=(.+)/){
+ $nbOverlaps=$1;
+ }
+ if ($i=~m/gene_id=(.+)/){
+ $ID=$1;
+ $hash{$ID}=$nbOverlaps;
+ }
+ }
+}
+close(IN);
+
+open(OUT, ">$out_file");
+foreach my $key ( sort keys %hash) {
+ print OUT "$key\t$hash{$key}\n";
+}
+close(OUT);
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/DiffExpAnal/countNumber.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/DiffExpAnal/countNumber.xml Mon Apr 29 03:20:15 2013 -0400
b
@@ -0,0 +1,16 @@
+<tool id="countNumber" name="countNumber">
+ <description>Calculate the number of reads(annotations) overlapping for each transcript.</description>
+ <command interpreter="perl"> countNumber.pl $input $outputCSV
+ </command>
+
+ <inputs>
+ <param name="input" type="data" format="gff3" label="Please choose your gff3 format file (which contains the number of overlaps)."/>
+ </inputs>
+
+ <outputs>
+ <data format="csv" name="outputCSV" label="countNumber Output"/>
+ </outputs>
+
+ <help>
+ </help>
+</tool>
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/DiffExpAnal/countNumber_parallel.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/DiffExpAnal/countNumber_parallel.py Mon Apr 29 03:20:15 2013 -0400
[
@@ -0,0 +1,96 @@
+#! /usr/bin/env python
+
+
+import optparse, os, sys, subprocess, tempfile, shutil, tarfile, random
+from optparse import OptionParser
+
+def stop_err(msg):
+ sys.stderr.write('%s\n' % msg)
+ sys.exit()
+
+def toTar(tarFileName, outCountNames):
+ dir = os.path.dirname(tarFileName)
+ tfile = tarfile.open(tarFileName + ".tmp.tar", "w")
+ currentPath = os.getcwd()
+ os.chdir(dir)
+ for file in outCountNames:
+ relativeFileName = os.path.basename(file)
+ tfile.add(relativeFileName)
+ os.system("mv %s %s" % (tarFileName + ".tmp.tar", tarFileName))
+ tfile.close()
+ os.chdir(currentPath)
+
+
+def __main__():
+ #Parse Command Line
+ parser = optparse.OptionParser()
+ parser.add_option("-i", "--input", dest="inputFile", help="input txt file, a list of overlapping results files.")
+ parser.add_option("-o", "--output", dest="outputFile", help="Out txt file.")
+ parser.add_option("-t", "--tar", dest="outputTar", default=None, help="output all count results in a tar file.")
+ (options, args) = parser.parse_args()
+
+ #Parse the input txt file and read a list of transcripts files.
+ file = open(options.inputFile, "r")
+ lines = file.readlines()
+ inputFileNames = []
+ outCountNames = []
+ outputName = options.outputFile
+ resDirName = os.path.dirname(outputName) + '/'
+
+ #Write output txt file and define all output count file names
+ out = open(outputName, "w")
+ out.write("label\tfiles\tgroup\n")
+ for line in lines:
+ tab = line.split()
+ inputFileNames.append(tab[1])
+ outCountName = resDirName + tab[0] + "_outCount_%s.csv" % random.randrange(0, 10000)
+ outCountNames.append(outCountName)
+ out.write(tab[0] + '\t' + outCountName + '\t' + tab[0][5] + '\n')
+ file.close()
+ out.close()
+
+ #Construct the lines commands
+ cmds = []
+ for i in range(len(inputFileNames)):
+ cmd = "perl %s/SMART/DiffExpAnal/countNumber.pl " %  os.environ["REPET_PATH"]
+ opts = "%s %s " % (inputFileNames[i], outCountNames[i])
+ cmd += opts
+ cmds.append(cmd)
+
+ tmp_files = []
+ for i in range(len(cmds)):
+ try:
+ tmp_out = tempfile.NamedTemporaryFile().name
+ tmp_files.append(tmp_out)
+ tmp_stdout = open(tmp_out, 'wb')
+ tmp_err = tempfile.NamedTemporaryFile().name
+ tmp_files.append(tmp_err)
+ tmp_stderr = open(tmp_err, 'wb')
+ proc = subprocess.Popen(args=cmds[i], shell=True, cwd=".", stdout=tmp_stdout, stderr=tmp_stderr)
+ returncode = proc.wait()
+ tmp_stderr.close()
+ #get stderr, allowing for case where it's very large
+ tmp_stderr = open(tmp_err, 'rb')
+ stderr = ''
+ buffsize = 1048576
+ try:
+ while True:
+ stderr += tmp_stderr.read(buffsize)
+ if not stderr or len(stderr) % buffsize != 0:
+ break
+ except OverflowError:
+ pass
+ tmp_stdout.close()
+ tmp_stderr.close()
+ if returncode != 0:
+ raise Exception, stderr
+ except Exception, e:
+ stop_err('Error in :\n' + str(e))
+
+ if options.outputTar != None:
+ toTar(options.outputTar, outCountNames)
+
+ for tmp_file in tmp_files:
+ os.remove(tmp_file)
+
+if __name__=="__main__":__main__()
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/DiffExpAnal/countNumber_parallel.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/DiffExpAnal/countNumber_parallel.xml Mon Apr 29 03:20:15 2013 -0400
b
@@ -0,0 +1,19 @@
+<tool id="countNumber_parallel" name="countNumber (for DEA)">
+
+ <description>Calculate the number of reads(annotations) overlapping for each transcript.</description>
+ <command interpreter="python"> countNumber_parallel.py -i $inputTxt -o $outputTxt $tar $outputTarFile
+ </command>
+
+ <inputs>
+ <param name="inputTxt" type="data" format="txt" label="Please choose your txt format file (which contains a list of gff3 overlapping results files)."/>
+ <param name="tar" type="boolean" truevalue="-t" falsevalue="" checked="False" label="tar option" help="This option creates a tar file for all out results" />
+ </inputs>
+
+ <outputs>
+ <data format="txt" name="outputTxt" label="countNumber Output"/>
+ <data name="outputTarFile" format="tar">
+ <filter>tar</filter>
+ </data>
+ </outputs>
+
+</tool>
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/DiffExpAnal/countNumber_parallel_unSQL.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/DiffExpAnal/countNumber_parallel_unSQL.py Mon Apr 29 03:20:15 2013 -0400
[
@@ -0,0 +1,91 @@
+#! /usr/bin/env python
+
+
+import optparse, os, sys, tarfile, random
+from optparse import OptionParser
+from commons.core.launcher.Launcher import Launcher
+from commons.core.sql.TableJobAdaptatorFactory import TableJobAdaptatorFactory
+
+def stop_err(msg):
+ sys.stderr.write('%s\n' % msg)
+ sys.exit()
+
+def toTar(tarFileName, outCountNames):
+ dir = os.path.dirname(tarFileName)
+ tfile = tarfile.open(tarFileName + ".tmp.tar", "w")
+ currentPath = os.getcwd()
+ os.chdir(dir)
+ for file in outCountNames:
+ relativeFileName = os.path.basename(file)
+ tfile.add(relativeFileName)
+ os.system("mv %s %s" % (tarFileName + ".tmp.tar", tarFileName))
+ tfile.close()
+ os.chdir(currentPath)
+
+def _map(iLauncher, cmd, cmdStart, cmdFinish ):
+ lCmds = []
+ lCmds.append(cmd)
+ lCmdStart = []
+ lCmdStart.append(cmdStart)
+ lCmdFinish = []
+ lCmdFinish.append(cmdFinish)
+ return(iLauncher.prepareCommands_withoutIndentation(lCmds, lCmdStart, lCmdFinish))
+
+def _createCountNumberCommand(iLauncher, inputFile, outputFile):
+ lArgs = []
+ lArgs.append("%s" % inputFile)
+ lArgs.append("%s" %  outputFile)
+ return iLauncher.getSystemCommand("perl %s/SMART/DiffExpAnal/countNumber.pl " %  os.environ["REPET_PATH"], lArgs)
+
+def __main__():
+ #Parse Command Line
+ parser = optparse.OptionParser()
+ parser.add_option("-i", "--input", dest="inputFile", help="input txt file, a list of overlapping results files.")
+ parser.add_option("-o", "--output", dest="outputFile", help="Out txt file.")
+ parser.add_option("-t", "--tar", dest="outputTar", default=None, help="output all count results in a tar file.")
+ (options, args) = parser.parse_args()
+
+ #Parse the input txt file and read a list of transcripts files.
+ file = open(options.inputFile, "r")
+ lines = file.readlines()
+ inputFileNames = []
+ outCountNames = []
+ outputName = options.outputFile
+ resDirName = os.path.dirname(outputName) + '/'
+
+ #Write output txt file and define all output count file names
+ out = open(outputName, "w")
+ out.write("label\tfiles\tgroup\n")
+ for line in lines:
+ tab = line.split()
+ inputFileNames.append(tab[1])
+ outCountName = resDirName + tab[0] + "_outCount_%s.csv" % random.randrange(0, 10000)
+ outCountNames.append(outCountName)
+ out.write(tab[0] + '\t' + outCountName + '\t' + tab[0][5] + '\n')
+ file.close()
+ out.close()
+
+ #Launch on nodes
+ acronym = "countNumber"
+ jobdb = TableJobAdaptatorFactory.createJobInstance()
+ iLauncher = Launcher(jobdb, os.getcwd(), "", "", os.getcwd(), os.getcwd(), "jobs", "", acronym, acronym, False, True)
+ lCmdsTuples = []
+ for i in range(len(inputFileNames)): #Construct the lines commands
+ inputFile = inputFileNames[i]
+ outputFile = outCountNames[i]
+ cmd2Launch = _createCountNumberCommand(iLauncher, inputFile, outputFile)
+ cmdStart = ""
+ cmdFinish = ""
+ lCmdsTuples.append(_map(iLauncher, cmd2Launch, cmdStart, cmdFinish))
+
+
+
+ iLauncher.runLauncherForMultipleJobs(acronym, lCmdsTuples, True)
+
+
+
+ if options.outputTar != None:
+ toTar(options.outputTar, outCountNames)
+
+
+if __name__=="__main__":__main__()
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/DiffExpAnal/countNumber_parallel_unSQL.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/DiffExpAnal/countNumber_parallel_unSQL.xml Mon Apr 29 03:20:15 2013 -0400
b
@@ -0,0 +1,19 @@
+<tool id="countNumber_parallel_unSQL" name="countNumber (for DEA in parallel)">
+
+ <description>Calculate the number of reads(annotations) overlapping for each transcript (parallelized).</description>
+ <command interpreter="python"> countNumber_parallel_unSQL.py -i $inputTxt -o $outputTxt $tar $outputTarFile
+ </command>
+
+ <inputs>
+ <param name="inputTxt" type="data" format="txt" label="Please choose your txt format file (which contains a list of gff3 overlapping results files)."/>
+ <param name="tar" type="boolean" truevalue="-t" falsevalue="" checked="False" label="tar option" help="This option creates a tar file for all out results" />
+ </inputs>
+
+ <outputs>
+ <data format="txt" name="outputTxt" label="countNumber Output"/>
+ <data name="outputTarFile" format="tar">
+ <filter>tar</filter>
+ </data>
+ </outputs>
+
+</tool>
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/DiffExpAnal/deseq.sh
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/DiffExpAnal/deseq.sh Mon Apr 29 03:20:15 2013 -0400
b
@@ -0,0 +1,21 @@
+#! /bin/sh
+
+#Arguments :
+#$1=targetFile(the list of files) 
+#$2=with or without header
+#$3=with or without replicates
+#$4=OUT_HTML.html
+#$5=OUT_HTML images directory
+#$6=OUT_complete.xls
+#$7=OUT_up.xls
+#$8=OUT_down.xls
+
+#run example: 
+#bash deseq.sh DESeqTools/targetTest.txt 1 1 testOUT_HTML.html /tmp/ testOUT_complet.xls testOUT_up.xls testOUT_down.xls
+
+#echo $5
+#mkdir -p $5 #First, create the images tmp directory given by Galaxy, -p option can create the parent directory which dosen't exist.
+
+mkdir -p $5
+MY_PATH=`dirname $0` 
+cat $MY_PATH/DESeqTools/anadiffGenes2conds.R | R --slave --args $1 $2 $3 $4 $5 $6 $7 $8 $0 < $MY_PATH/DESeqTools/anadiffGenes2conds.R
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/DiffExpAnal/deseq.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/DiffExpAnal/deseq.xml Mon Apr 29 03:20:15 2013 -0400
[
@@ -0,0 +1,22 @@
+<tool id="DESEQ" name="DESEQ for differential expression analysis">
+  <description>Differential expression analysis for reads count data</description>
+  <command interpreter="bash"> deseq.sh $inputFile $header $withOutReplicates $outHTML $outHTML.files_path $outComplete $outUP $outDown 2> $log </command>
+
+  <inputs>
+      <param name="inputFile" type="data" label="Input File list" format="txt"/>
+      <param name="header" type="boolean" truevalue="1" falsevalue="0" checked="false" label="If there is a header for your count files, please choose this case."/>
+      <param name="withOutReplicates" type="boolean" truevalue="1" falsevalue="0" checked="false" label="If your data has not replicates, please choose this case."/>
+
+  </inputs>
+
+  <outputs>
+      <data format="HTML" name="outHTML" label="[DESEQ] Output HTML File" help="This output file shows all results images by DESeq analysis"/> 
+      <data format="tabular" name="outComplete" label="[DESEQ] Output complete File"/> 
+      <data format="tabular" name="outUP" label="[DESEQ] Output up File" help="This output file shows the genes of group1 which are overexpressed than those of group2"/> 
+      <data format="tabular" name="outDown" label="[DESEQ] Output down File" help="This output file shows the  genes of group1 which are less expressed than those of group2"/>
+      <data format="txt" name="log" label="[DESEQ] Output log File"/> 
+  </outputs>
+
+  <help>
+  </help>
+</tool>
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/DiffExpAnal/fastq_groomer_parallel.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/DiffExpAnal/fastq_groomer_parallel.py Mon Apr 29 03:20:15 2013 -0400
[
@@ -0,0 +1,115 @@
+import sys, os, optparse, random
+from galaxy_utils.sequence.fastq import fastqReader, fastqVerboseErrorReader, fastqAggregator, fastqWriter
+
+def stop_err(msg):
+ sys.stderr.write("%s\n" % msg)
+ sys.exit()
+
+def main():
+
+    input_filename = sys.argv[1]  #a txt file
+    input_type = sys.argv[2]
+    output_filename = sys.argv[3] #a txt file
+    output_type = sys.argv[4]
+    force_quality_encoding = sys.argv[5]
+    summarize_input = sys.argv[6] == 'summarize_input'
+    pairedEnd_input = sys.argv[7] 
+    if pairedEnd_input == 'None':
+     pairedEnd_input = None
+    else:
+ output_pairedEndFileName = sys.argv[8]
+
+    if force_quality_encoding == 'None':
+        force_quality_encoding = None
+
+    #Parse the input txt file and read a list of fastq files
+    file = open(input_filename, "r")
+    lines = file.readlines()
+    inputFileNames = []
+    outGroomerNames = []
+    resDirName = os.path.dirname(output_filename) + "/"
+    #Write output txt file and define all output groomer file names
+    outFile = open(output_filename, "w")
+    for line in lines:
+ tab = line.split()
+ inputFileNames.append(tab[1])
+ outGroomerName = resDirName + tab[0] + '_outGroomer_%s.fastq' % random.randrange(0, 10000)
+ outGroomerNames.append(outGroomerName)
+ outFile.write(tab[0] + '\t' + outGroomerName + '\n')
+    outFile.close()
+    file.close()
+
+    if pairedEnd_input != None:
+ inPairedFile = open(pairedEnd_input, "r")
+ lines = inPairedFile.readlines()
+ inputPairedEndFileNames = []
+ outGroomerPairedEndNames = []
+ outPairedEndFile = open(output_pairedEndFileName, "w")
+ for line in lines:
+ tab = line.split()
+ inputPairedEndFileNames.append(tab[1])
+ outGroomerPairedEndName = resDirName + tab[0] + '_outGroomer_pairedEnd_%s.fastq' % random.randrange(0, 10000)
+ outGroomerPairedEndNames.append(outGroomerPairedEndName)
+ outPairedEndFile.write(tab[0] + '\t' + outGroomerPairedEndName + '\n')
+ outPairedEndFile.close()
+        inPairedFile.close()
+    
+    # Write output file
+    aggregator = fastqAggregator()
+    for i in range(len(outGroomerNames)):
+ out = fastqWriter( open( outGroomerNames[i], 'wb' ), format = output_type, force_quality_encoding = force_quality_encoding )
+ read_count = None
+ if summarize_input:
+     reader = fastqVerboseErrorReader
+ else:
+     reader = fastqReader
+ for read_count, fastq_read in enumerate( reader( open( inputFileNames[i] ), format = input_type, apply_galaxy_conventions = True ) ):
+     if summarize_input:
+         aggregator.consume_read( fastq_read )
+     out.write( fastq_read )
+ out.close()
+     
+ if read_count is not None:
+     print "Groomed %i %s reads into %s reads." % ( read_count + 1, input_type, output_type )
+     if input_type != output_type and 'solexa' in [ input_type, output_type ]:
+         print "Converted between Solexa and PHRED scores."
+     if summarize_input:
+         print "Based upon quality and sequence, the input data is valid for: %s" % ( ", ".join( aggregator.get_valid_formats() )  or "None" )
+         ascii_range = aggregator.get_ascii_range()
+         decimal_range =  aggregator.get_decimal_range()
+         print "Input ASCII range: %s(%i) - %s(%i)" % ( repr( ascii_range[0] ), ord( ascii_range[0] ), repr( ascii_range[1] ), ord( ascii_range[1] ) ) #print using repr, since \x00 (null) causes info truncation in galaxy when printed
+         print "Input decimal range: %i - %i" % ( decimal_range[0], decimal_range[1] )        
+ else:
+      print "No valid FASTQ reads were provided."
+
+
+    # Write output pairedEnd file
+    if pairedEnd_input != None:
+     aggregator = fastqAggregator()
+     for i in range(len(outGroomerPairedEndNames)):
+     outPair = fastqWriter(open(outGroomerPairedEndNames[i], 'wb'), format = output_type, force_quality_encoding = force_quality_encoding)
+     read_count = None
+     if summarize_input:
+     reader = fastqVerboseErrorReader
+     else:
+     reader = fastqReader
+     for read_count, fastq_reader in enumerate(reader(open(inputPairedEndFileNames[i]), format=input_type, apply_galaxy_conventions=True)):
+    if summarize_input:
+     aggregator.consume_read(fastq_read)
+    outPair.write(fastq_read)
+     outPair.close()
+
+     if read_count is not None:
+      print "Groomed %i %s reads into %s reads." % ( read_count + 1, input_type, output_type )
+     if input_type != output_type and 'solexa' in [ input_type, output_type ]:
+     print "Converted between Solexa and PHRED scores."
+     if summarize_input:
+     print "Based upon quality and sequence, the input data is valid for: %s" % ( ", ".join( aggregator.get_valid_formats() )  or "None" )
+ ascii_range = aggregator.get_ascii_range()
+ decimal_range =  aggregator.get_decimal_range()
+ print "Input ASCII range: %s(%i) - %s(%i)" % ( repr( ascii_range[0] ), ord( ascii_range[0] ), repr( ascii_range[1] ), ord( ascii_range[1] ) ) #print using repr, since \x00 (null) causes info truncation in galaxy when printed
+ print "Input decimal range: %i - %i" % ( decimal_range[0], decimal_range[1] )
+     else:
+      print "No valid paired-end FASTQ reads were provided."
+
+if __name__ == "__main__": main()
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/DiffExpAnal/fastq_groomer_parallel.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/DiffExpAnal/fastq_groomer_parallel.xml Mon Apr 29 03:20:15 2013 -0400
[
@@ -0,0 +1,122 @@
+<tool id="fastq_groomer_parallel" name="FASTQ Groomer (for DEA)" version="1.0.0">
+  <description>convert between various FASTQ quality formats for a list of inputs.</description>
+  <command interpreter="python">fastq_groomer_parallel.py '$input_file' '$input_type' '$output_file'
+#if str( $options_type['options_type_selector'] ) == 'basic':
+#if str( $input_type ) == 'cssanger':
+'cssanger'
+#else:
+'sanger'
+#end if
+'ascii' 'summarize_input'
+#else:
+'${options_type.output_type}' '${options_type.force_quality_encoding}' '${options_type.summarize_input}'
+#end if
+#if $OptionPairedEnd.pairedEnd == "Yes":
+'$OptionPairedEnd.pairedEnd_input' '$output_pairedEndFile'
+#else:
+'None' 'None'
+#end if
+</command>
+  <inputs>
+    <param name="input_file" type="data" format="txt" label="The File list to groom" />
+    <param name="input_type" type="select" label="Input FASTQ quality scores type">
+      <option value="solexa">Solexa</option>
+      <option value="illumina">Illumina 1.3-1.7</option>
+      <option value="sanger" selected="True">Sanger</option>
+      <option value="cssanger">Color Space Sanger</option>
+    </param>
+    <conditional name="options_type">
+    <param name="options_type_selector" type="select" label="Advanced Options">
+      <option value="basic" selected="True">Hide Advanced Options</option>
+      <option value="advanced">Show Advanced Options</option>
+    </param>
+    <when value="basic">
+      <!-- no options -->
+    </when>
+    <when value="advanced">
+      <param name="output_type" type="select" label="Output FASTQ quality scores type" help="Galaxy tools are designed to work with the Sanger Quality score format.">
+        <option value="solexa">Solexa</option>
+        <option value="illumina">Illumina 1.3+</option>
+        <option value="sanger" selected="True">Sanger (recommended)</option>
+        <option value="cssanger">Color Space Sanger</option>
+      </param>
+      <param name="force_quality_encoding" type="select" label="Force Quality Score encoding">
+        <option value="None">Use Source Encoding</option>
+        <option value="ascii" selected="True">ASCII</option>
+        <option value="decimal">Decimal</option>
+      </param>
+      <param name="summarize_input" type="select" label="Summarize input data">
+        <option value="summarize_input" selected="True">Summarize Input</option>
+        <option value="dont_summarize_input">Do not Summarize Input (faster)</option>
+      </param>
+    </when>
+  </conditional>
+
+  <conditional name="OptionPairedEnd">
+   <param name="pairedEnd" type="select" label="For paired-end analysis.">
+   <option value="Yes">Yes</option>
+   <option value="No" selected="true">No</option>
+   </param>
+   <when value="Yes">
+   <param name="pairedEnd_input" type="data" format="txt" label="input paired-end files list"/>
+   </when>
+   <when value="No">
+   </when>
+  </conditional>
+
+  </inputs>
+
+  <outputs>
+    <data name="output_file" format="txt">
+    </data>
+    <data format="txt" name="output_pairedEndFile" label="output Paired-end fastq files">
+     <filter>(OptionPairedEnd['pairedEnd']=='Yes')</filter>
+    </data>
+  </outputs>
+  <help>
+**What it does**
+
+This tool offers several conversions options relating to the FASTQ format.
+
+When using *Basic* options, the output will be *sanger* formatted or *cssanger* formatted (when the input is Color Space Sanger).
+
+When converting, if a quality score falls outside of the target score range, it will be coerced to the closest available value (i.e. the minimum or maximum). 
+
+When converting between Solexa and the other formats, quality scores are mapped between Solexa and PHRED scales using the equations found in `Cock PJ, Fields CJ, Goto N, Heuer ML, Rice PM. The Sanger FASTQ file format for sequences with quality scores, and the Solexa/Illumina FASTQ variants. Nucleic Acids Res. 2009 Dec 16.`_
+
+When converting between color space (csSanger) and base/sequence space (Sanger, Illumina, Solexa) formats, adapter bases are lost or gained; if gained, the base 'G' is used as the adapter. You cannot convert a color space read to base space if there is no adapter present in the color space sequence. Any masked or ambiguous nucleotides in base space will be converted to 'N's when determining color space encoding.
+
+-----
+
+**Quality Score Comparison**
+
+::
+
+    SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
+    ...............................IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
+    ..........................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+    !"#$%&amp;'()*+,-./0123456789:;&lt;=&gt;?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
+    |                         |    |        |                              |                     |
+   33                        59   64       73                            104                   126
+  
+   S - Sanger       Phred+33,  93 values  (0, 93) (0 to 60 expected in raw reads)
+   I - Illumina 1.3 Phred+64,  62 values  (0, 62) (0 to 40 expected in raw reads)
+   X - Solexa       Solexa+64, 67 values (-5, 62) (-5 to 40 expected in raw reads)
+
+Diagram adapted from http://en.wikipedia.org/wiki/FASTQ_format
+
+.. class:: infomark
+
+Output from Illumina 1.8+ pipelines are Sanger encoded.
+
+------
+
+**Citation**
+
+If you use this tool, please cite `Blankenberg D, Gordon A, Von Kuster G, Coraor N, Taylor J, Nekrutenko A; Galaxy Team. Manipulation of FASTQ data with Galaxy. Bioinformatics. 2010 Jul 15;26(14):1783-5. &lt;http://www.ncbi.nlm.nih.gov/pubmed/20562416&gt;`_
+
+
+.. _Cock PJ, Fields CJ, Goto N, Heuer ML, Rice PM. The Sanger FASTQ file format for sequences with quality scores, and the Solexa/Illumina FASTQ variants. Nucleic Acids Res. 2009 Dec 16.: http://www.ncbi.nlm.nih.gov/pubmed/20015970
+
+  </help>
+</tool>
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/DiffExpAnal/fastq_groomer_parallel_unSQL.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/DiffExpAnal/fastq_groomer_parallel_unSQL.py Mon Apr 29 03:20:15 2013 -0400
[
@@ -0,0 +1,168 @@
+import sys, os, optparse,shutil, random
+from commons.core.launcher.Launcher import Launcher
+from commons.core.sql.TableJobAdaptatorFactory import TableJobAdaptatorFactory
+from commons.core.utils.FileUtils import FileUtils
+
+def _map(iLauncher, cmd, cmdStart, cmdFinish ):
+ lCmds = []
+ lCmds.extend(cmd)
+ lCmdStart = []
+ lCmdStart.extend(cmdStart)
+ lCmdFinish = []
+ lCmdFinish.extend(cmdFinish)
+ return(iLauncher.prepareCommands_withoutIndentation(lCmds, lCmdStart, lCmdFinish))
+
+def splitFastQ(fileName, nbOfSeqPerBatch):
+ nbOfLinesPerFile = nbOfSeqPerBatch * 4
+ lOutput = []
+ filePrefix, fileExt = os.path.splitext(os.path.basename(fileName))
+ resDir = os.path.dirname(fileName)
+ with open(fileName) as inF:
+ fileNb = 1
+ line = inF.readline()
+ if not line or nbOfLinesPerFile == 0:
+ outFileName = "%s/%s-%s%s" %(resDir, filePrefix, fileNb, fileExt)
+ lOutput.append(outFileName)
+ f = open(outFileName, "wb")
+ shutil.copyfileobj(open(fileName, "rb"), f)
+ f.close()
+ else:
+ while line:
+ outFileName = "%s/%s-%s%s" %(resDir, filePrefix, fileNb, fileExt)
+ lOutput.append(outFileName)
+ with open(outFileName, "w") as outF:
+ lineNb = 1
+ while lineNb <= nbOfLinesPerFile and line:
+ outF.write(line)
+ line = inF.readline()
+ lineNb += 1
+ fileNb += 1
+ return lOutput
+
+def joinFastQ(dCutOut2Out):
+ for key in dCutOut2Out.keys():
+ FileUtils.catFilesFromList(dCutOut2Out[key],key, False)
+
+def _createFastqGroomerCode(outGroomerNames, inputFileNames, input_type, output_type, force_quality_encoding, summarize_input):
+ cmd2Launch = []
+ cmd2Launch.append("log = 0")
+ cmd2Launch.append("from galaxy_utils.sequence.fastq import fastqReader, fastqVerboseErrorReader, fastqAggregator, fastqWriter")
+ cmd2Launch.append("aggregator = fastqAggregator()")
+ cmd2Launch.append("out = fastqWriter( open( '%s', 'wb' ), format = '%s', force_quality_encoding = '%s')" % (outGroomerNames,output_type,force_quality_encoding))
+ cmd2Launch.append("read_count = None")
+ if summarize_input:
+ cmd2Launch.append("reader = fastqVerboseErrorReader")
+ else:
+ cmd2Launch.append("reader = fastqReader")
+ cmd2Launch.append("for read_count, fastq_read in enumerate( reader( open( '%s' ), format = '%s', apply_galaxy_conventions = True ) ):" % (inputFileNames, input_type))
+ if summarize_input:
+ cmd2Launch.append("\taggregator.consume_read( fastq_read )")
+ cmd2Launch.append("\tout.write( fastq_read )")
+ cmd2Launch.append("out.close()")
+ cmd2Launch.append("if read_count is not None:")
+ #cmd2Launch.append("\tprint 'Groomed %s %s reads into %s reads.' % ( read_count + 1, %s, %s )" % ('%i', '%s', '%s', input_type,output_type))
+ cmd2Launch.append("\tif '%s' != '%s' and 'solexa' in [ '%s', '%s' ]:" % (input_type, output_type, input_type, output_type))
+ cmd2Launch.append("\t\tprint 'Converted between Solexa and PHRED scores.'")
+ if summarize_input:
+ cmd2Launch.append("\tprint 'Based upon quality and sequence, the input data is valid for: %s' % ( ', '.join( aggregator.get_valid_formats() )  or 'None' )")
+ cmd2Launch.append("\tascii_range = aggregator.get_ascii_range()")
+ cmd2Launch.append("\tdecimal_range =  aggregator.get_decimal_range()")
+ cmd2Launch.append("\tprint 'Input ASCII range: %s(%i) - %s(%i)' % ( repr( ascii_range[0] ), ord( ascii_range[0] ), repr( ascii_range[1] ), ord( ascii_range[1] ) )")
+ cmd2Launch.append("\tprint 'Input decimal range: %i - %i' % ( decimal_range[0], decimal_range[1] ) ")
+ cmd2Launch.append("else:")
+ cmd2Launch.append("\tprint 'No valid FASTQ reads were provided.'")
+ cmd2Launch.append("\tlog = 255")
+ return cmd2Launch
+
+def stop_err(msg):
+ sys.stderr.write("%s\n" % msg)
+ sys.exit()
+
+def main():
+
+ input_filename = sys.argv[1]  #a txt file
+ input_type = sys.argv[2]
+ output_filename = sys.argv[3] #a txt file
+ output_type = sys.argv[4]
+ force_quality_encoding = sys.argv[5]
+ summarize_input = sys.argv[6] == 'summarize_input'
+ pairedEnd_input = sys.argv[7]
+ if pairedEnd_input == 'None':
+ pairedEnd_input = None
+ else:
+ output_pairedEndFileName = sys.argv[8]
+
+ if force_quality_encoding == 'None':
+ force_quality_encoding = None
+
+ #Parse the input txt file and read a list of fastq files
+ file = open(input_filename, "r")
+ lines = file.readlines()
+ inputFileNames = []
+ outGroomerNames = []
+ resDirName = os.path.dirname(output_filename) + "/"
+ #Write output txt file and define all output groomer file names
+ outFile = open(output_filename, "w")
+ for line in lines:
+ tab = line.split()
+ inputFileNames.append(tab[1])
+ outGroomerName = resDirName + tab[0] + '_outGroomer_%s.fastq' % random.randrange(0, 10000)
+ outGroomerNames.append(outGroomerName)
+ outFile.write(tab[0] + '\t' + outGroomerName + '\n')
+ outFile.close()
+ file.close()
+
+ if pairedEnd_input != None:
+ inPairedFile = open(pairedEnd_input, "r")
+ lines = inPairedFile.readlines()
+ inputPairedEndFileNames = []
+ outGroomerPairedEndNames = []
+ outPairedEndFile = open(output_pairedEndFileName, "w")
+ for line in lines:
+ tab = line.split()
+ inputPairedEndFileNames.append(tab[1])
+ outGroomerPairedEndName = resDirName + tab[0] + '_outGroomer_pairedEnd_%s.fastq' % random.randrange(0, 10000)
+ outGroomerPairedEndNames.append(outGroomerPairedEndName)
+ outPairedEndFile.write(tab[0] + '\t' + outGroomerPairedEndName + '\n')
+ outPairedEndFile.close()
+ inPairedFile.close()
+
+ acronym = "fastqGroomer"
+ jobdb = TableJobAdaptatorFactory.createJobInstance()
+ iLauncher = Launcher(jobdb, os.getcwd(), "", "", os.getcwd(), os.getcwd(), "jobs", "", acronym, acronym, False, True)
+ lCmdsTuples = []
+ dCutOut2Out = {}
+ lAllFile2remove = []
+ # Write output file
+ for i in range(len(outGroomerNames)):
+ lCutInputFile = splitFastQ(inputFileNames[i], 20000)
+ lAllFile2remove.extend(lCutInputFile)
+ lCutOutput = []
+ for cutInput in lCutInputFile:
+ cutOutput = "%s_out" % cutInput
+ lCutOutput.append(cutOutput)
+ lAllFile2remove.extend(lCutOutput)
+ cmd2Launch = _createFastqGroomerCode(cutOutput, cutInput, input_type, output_type, force_quality_encoding, summarize_input)
+ cmdStart = []
+ cmdFinish = []
+ lCmdsTuples.append(_map(iLauncher, cmd2Launch, cmdStart, cmdFinish))
+ dCutOut2Out[outGroomerNames[i]] = lCutOutput
+ if pairedEnd_input != None:
+ lCutInputFile = splitFastQ(inputPairedEndFileNames[i], 20000)
+ lAllFile2remove.extend(lCutInputFile)
+ lCutOutput = []
+ for cutInput in lCutInputFile:
+ cutOutput = "%s_out" % cutInput
+ lCutOutput.append(cutOutput)
+ lAllFile2remove.extend(lCutOutput)
+ cmd2Launch = _createFastqGroomerCode(cutOutput, cutInput, input_type, output_type, force_quality_encoding, summarize_input)
+ cmdStart = []
+ cmdFinish = []
+ lCmdsTuples.append(_map(iLauncher, cmd2Launch, cmdStart, cmdFinish))
+ dCutOut2Out[outGroomerPairedEndNames[i]] =  lCutOutput
+ iLauncher.runLauncherForMultipleJobs(acronym, lCmdsTuples, False)
+
+ joinFastQ(dCutOut2Out)
+ FileUtils.removeFilesFromListIfExist(lAllFile2remove)
+
+if __name__ == "__main__": main()
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/DiffExpAnal/fastq_groomer_parallel_unSQL.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/DiffExpAnal/fastq_groomer_parallel_unSQL.xml Mon Apr 29 03:20:15 2013 -0400
[
@@ -0,0 +1,122 @@
+<tool id="fastq_groomer_parallel_unSQL" name="FASTQ Groomer (for DEA in parallel)" version="1.0.0">
+  <description>convert between various FASTQ quality formats for a list of inputs (parallelized).</description>
+  <command interpreter="python">fastq_groomer_parallel_unSQL.py '$input_file' '$input_type' '$output_file'
+#if str( $options_type['options_type_selector'] ) == 'basic':
+#if str( $input_type ) == 'cssanger':
+'cssanger'
+#else:
+'sanger'
+#end if
+'ascii' 'summarize_input'
+#else:
+'${options_type.output_type}' '${options_type.force_quality_encoding}' '${options_type.summarize_input}'
+#end if
+#if $OptionPairedEnd.pairedEnd == "Yes":
+'$OptionPairedEnd.pairedEnd_input' '$output_pairedEndFile'
+#else:
+'None' 'None'
+#end if
+</command>
+  <inputs>
+    <param name="input_file" type="data" format="txt" label="The File list to groom" />
+    <param name="input_type" type="select" label="Input FASTQ quality scores type">
+      <option value="solexa">Solexa</option>
+      <option value="illumina">Illumina 1.3-1.7</option>
+      <option value="sanger" selected="True">Sanger</option>
+      <option value="cssanger">Color Space Sanger</option>
+    </param>
+    <conditional name="options_type">
+    <param name="options_type_selector" type="select" label="Advanced Options">
+      <option value="basic" selected="True">Hide Advanced Options</option>
+      <option value="advanced">Show Advanced Options</option>
+    </param>
+    <when value="basic">
+      <!-- no options -->
+    </when>
+    <when value="advanced">
+      <param name="output_type" type="select" label="Output FASTQ quality scores type" help="Galaxy tools are designed to work with the Sanger Quality score format.">
+        <option value="solexa">Solexa</option>
+        <option value="illumina">Illumina 1.3+</option>
+        <option value="sanger" selected="True">Sanger (recommended)</option>
+        <option value="cssanger">Color Space Sanger</option>
+      </param>
+      <param name="force_quality_encoding" type="select" label="Force Quality Score encoding">
+        <option value="None">Use Source Encoding</option>
+        <option value="ascii" selected="True">ASCII</option>
+        <option value="decimal">Decimal</option>
+      </param>
+      <param name="summarize_input" type="select" label="Summarize input data">
+        <option value="summarize_input" selected="True">Summarize Input</option>
+        <option value="dont_summarize_input">Do not Summarize Input (faster)</option>
+      </param>
+    </when>
+  </conditional>
+
+  <conditional name="OptionPairedEnd">
+   <param name="pairedEnd" type="select" label="For paired-end analysis.">
+   <option value="Yes">Yes</option>
+   <option value="No" selected="true">No</option>
+   </param>
+   <when value="Yes">
+   <param name="pairedEnd_input" type="data" format="txt" label="input paired-end files list"/>
+   </when>
+   <when value="No">
+   </when>
+  </conditional>
+
+  </inputs>
+
+  <outputs>
+    <data name="output_file" format="txt">
+    </data>
+    <data format="txt" name="output_pairedEndFile" label="output Paired-end fastq files">
+     <filter>(OptionPairedEnd['pairedEnd']=='Yes')</filter>
+    </data>
+  </outputs>
+  <help>
+**What it does**
+
+This tool offers several conversions options relating to the FASTQ format.
+
+When using *Basic* options, the output will be *sanger* formatted or *cssanger* formatted (when the input is Color Space Sanger).
+
+When converting, if a quality score falls outside of the target score range, it will be coerced to the closest available value (i.e. the minimum or maximum). 
+
+When converting between Solexa and the other formats, quality scores are mapped between Solexa and PHRED scales using the equations found in `Cock PJ, Fields CJ, Goto N, Heuer ML, Rice PM. The Sanger FASTQ file format for sequences with quality scores, and the Solexa/Illumina FASTQ variants. Nucleic Acids Res. 2009 Dec 16.`_
+
+When converting between color space (csSanger) and base/sequence space (Sanger, Illumina, Solexa) formats, adapter bases are lost or gained; if gained, the base 'G' is used as the adapter. You cannot convert a color space read to base space if there is no adapter present in the color space sequence. Any masked or ambiguous nucleotides in base space will be converted to 'N's when determining color space encoding.
+
+-----
+
+**Quality Score Comparison**
+
+::
+
+    SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
+    ...............................IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
+    ..........................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+    !"#$%&amp;'()*+,-./0123456789:;&lt;=&gt;?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
+    |                         |    |        |                              |                     |
+   33                        59   64       73                            104                   126
+  
+   S - Sanger       Phred+33,  93 values  (0, 93) (0 to 60 expected in raw reads)
+   I - Illumina 1.3 Phred+64,  62 values  (0, 62) (0 to 40 expected in raw reads)
+   X - Solexa       Solexa+64, 67 values (-5, 62) (-5 to 40 expected in raw reads)
+
+Diagram adapted from http://en.wikipedia.org/wiki/FASTQ_format
+
+.. class:: infomark
+
+Output from Illumina 1.8+ pipelines are Sanger encoded.
+
+------
+
+**Citation**
+
+If you use this tool, please cite `Blankenberg D, Gordon A, Von Kuster G, Coraor N, Taylor J, Nekrutenko A; Galaxy Team. Manipulation of FASTQ data with Galaxy. Bioinformatics. 2010 Jul 15;26(14):1783-5. &lt;http://www.ncbi.nlm.nih.gov/pubmed/20562416&gt;`_
+
+
+.. _Cock PJ, Fields CJ, Goto N, Heuer ML, Rice PM. The Sanger FASTQ file format for sequences with quality scores, and the Solexa/Illumina FASTQ variants. Nucleic Acids Res. 2009 Dec 16.: http://www.ncbi.nlm.nih.gov/pubmed/20015970
+
+  </help>
+</tool>
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/DiffExpAnal/gsnap.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/DiffExpAnal/gsnap.xml Mon Apr 29 03:20:15 2013 -0400
[
@@ -0,0 +1,42 @@
+<tool id="gsnap" name="gsnap">
+
+ <description>GSNAP version 2012-12-20. 
+              GMAP: A Genomic Mapping and Alignment Program for mRNA and EST Sequences, and
+                 GSNAP: Genomic Short-read Nucleotide Alignment Program 
+    </description>
+    
+ <command interpreter="python"> wrappGSNAP.py 
+ -d $genomeName -i $inputFasta -k $kmer -q $inputFastq -A $outputFormat -o $outputSam
+
+ #if $optionPairedEnd.paire == 'Yes':
+ -p $optionPairedEnd.pairedEndFile
+ #end if
+
+ </command>
+
+ <inputs>
+ <param name="inputFasta" type="data" format="fasta" label="Reference genome file, fasta format."/>
+ <param name="genomeName" type="text" value="Arabidopsis_Thaliana" label="Please give the reference genome a name! (Ex. Arabidopsis_Thaliana)"/>
+ <param name="kmer" type="integer" value="12" label="Choose kmer value (superior or egal at 16), a big kmer value can take more RAM(4Go)." />
+ <param name="inputFastq" type="data" format="fastq" label="Input fastq file."/>
+ <param name="outputFormat" type="text" format="sam" label="Choose an output format [sam, goby (need to re-compile with appropriate options)]."/>
+
+ <conditional name="optionPairedEnd">
+ <param name="paire" type="select" label="pairedEnd fastq file">
+ <option value="Yes">Yes</option>
+ <option value="No" selected="true">No</option>
+ </param>
+ <when value="Yes">
+ <param name="pairedEndFile" type="data" format="fastq"/>
+ </when>
+ <when value="No">
+ </when>
+ </conditional>
+
+ </inputs>
+
+ <outputs>
+ <data format="sam" name="outputSam" label="gsnap Output"/>
+ </outputs>
+
+</tool>
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/DiffExpAnal/gsnap_parallel_unSQL.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/DiffExpAnal/gsnap_parallel_unSQL.py Mon Apr 29 03:20:15 2013 -0400
[
b'@@ -0,0 +1,195 @@\n+#!/usr/bin/env python\n+\n+import optparse, os, shutil, subprocess, sys, tempfile, fileinput, tarfile, glob \n+import time\n+from commons.core.launcher.Launcher import Launcher\n+from commons.core.sql.TableJobAdaptatorFactory import TableJobAdaptatorFactory\n+from commons.core.utils.FileUtils import FileUtils\n+from optparse import OptionParser\n+\n+def stop_err( msg ):\n+    sys.stderr.write( "%s\\n" % msg )\n+    sys.exit()\n+\n+def toTar(tarFileName, accepted_hits_outputNames):\n+    tfile = tarfile.open(tarFileName + ".tmp.tar", "w")\n+    currentPath = os.getcwd()\n+    os.chdir(dir)\n+    for file in accepted_hits_outputNames:\n+        relativeFileName = os.path.basename(file)\n+        tfile.add(relativeFileName)\n+    os.system("mv %s %s" % (tarFileName + ".tmp.tar", tarFileName))\n+    tfile.close()\n+    os.chdir(currentPath)\n+    \n+def joinSAM(dCutOut2Out):\n+    for key in dCutOut2Out.keys():\n+        FileUtils.catFilesFromList(dCutOut2Out[key],key, False)\n+        \n+def _map(iLauncher, cmd, cmdStart, cmdFinish ):\n+    lCmds = []\n+    lCmds.extend(cmd)\n+    lCmdStart = []\n+    lCmdStart.extend(cmdStart)\n+    lCmdFinish = []\n+    lCmdFinish.extend(cmdFinish)\n+    return(iLauncher.prepareCommands_withoutIndentation(lCmds, lCmdStart, lCmdFinish))\n+\n+def _createGsnapSplicingOptions(options):\n+    lArgs = []\n+    lArgs.append("-N %s" % options.novelsplicing)\n+    if options.useSplicing:\n+        lArgs.append("-s %s" % options.useSplicing)\n+    lArgs.append("-w %s" % options.localsplicedist)\n+    lArgs.append("-e %s" % options.localSplicePenality)\n+    lArgs.append("-E %s" % options.distantSplicePenality)\n+    lArgs.append("-K %s" % options.distantSpliceEndlength)\n+    lArgs.append("-l %s" % options.shortendSpliceEndlength)\n+    \n+    \n+    return lArgs\n+\n+def _createGsnapPairedEndOptions(options):\n+    lArgs = []\n+    if not(options.useSplicing or options.pairedEndFile):\n+        lArgs.append("--pairmax-dna %s" % options.pairmaxRna)\n+    if options.useSplicing or options.pairedEndFile:\n+        lArgs.append("--pairmax-rna %s" % options.pairmaxRna)\n+    lArgs.append("--pairexpect=%s" % options.pairexpect)\n+    lArgs.append("--pairdev=%s" % options.pairedev)\n+    \n+    \n+\n+def _createGsnapCommand(iLauncher, options, workingDir, inputFileNames, inputRevFilesNames, outputFileName, batchNumber, numberOfBatch):\n+    lArgs = []\n+    lArgs.append("-d %s" % options.genomeName)\n+    lArgs.append("-k %s" % options.kmer)\n+    lArgs.append("-D %s" % workingDir)\n+    lArgs.append("-A %s" % options.outputFormat)\n+    lArgs.append("-q %s/%s" % (batchNumber, numberOfBatch))\n+    lArgs.append("--no-sam-headers")\n+    lArgs.append(inputFileNames)\n+    print \'N option: %s, pairedEndFile option: %s\' %(options.novelsplicing, options.pairedEndFile)\n+    if options.pairedEndFile:\n+        lArgs.append(inputRevFilesNames)\n+    if options.novelsplicing == \'1\':\n+        lArgs.extend(_createGsnapSplicingOptions(options))\n+    elif options.pairedEndFile:\n+        lArgs.extend(_createGsnapPairedEndOptions(options))\n+    \n+    lArgs.append("> %s" % outputFileName)  \n+    return iLauncher.getSystemCommand("gsnap", lArgs)   \n+\n+def __main__():\n+    #Parse Command Line\n+    description = "GMAP/GSNAP version:2012-12-20."\n+    parser = OptionParser(description = description)\n+    parser.add_option(\'-o\', \'--outputTxtFile\', dest=\'outputTxtFile\', help=\'for Differential expression analysis pipeline, new output option gives a txt output containing the list of mapping results.\')\n+    parser.add_option("-q", "--inputTxt",         dest="inputTxt",         action="store",                 type="string",     help="input, a txt file for a list of input reads files [compulsory]")\n+    parser.add_option(\'-t\', \'--tar\', dest=\'outputTar\', default=None, help=\'output all accepted hits results in a tar file.\' )\n+    parser.add_option("-d", "--genomeName", dest="genomeName", help="Define the reference genome name.[compulsory]")\n+#    parser.add_option("-o", "--outputFile", dest='..b'h for RNA-Seq paired reads, or other reads that could have a splice (default 200000).")\n+    parser.add_option("--pairexpect", dest="pairexpect", default=200, help="Expected paired-end length, used for calling splices in medial part of paired-end reads (default 200)")\n+    parser.add_option("--pairdev", dest="pairdev", default=25, help="Allowable deviation from expected paired-end length, used for calling splices in medial part of paired-end reads (default 25)")\n+    \n+    (options, args) = parser.parse_args()    \n+\n+    workingDir = os.path.dirname(options.inputFastaFile)\n+    \n+    file = open(options.inputTxt,"r")\n+    lines = file.readlines()\n+    inputFileNames = []\n+    gsnapOutputNames = []\n+    outputName = options.outputTxtFile\n+    resDirName = os.path.dirname(outputName) + \'/\'\n+    out = open(outputName, "w")\n+    for line in lines:\n+        timeId = time.strftime("%Y%m%d%H%M%S")\n+        tab = line.split()\n+        inputFileNames.append(tab[1])\n+        OutputName = resDirName + tab[0] + \'_samOutput_%s.sam\' % timeId\n+        gsnapOutputNames.append(OutputName) \n+        out.write(tab[0] + \'\\t\' + OutputName + \'\\n\')\n+    file.close()\n+    out.close()\n+    \n+    if options.pairedEndFile:\n+        revFile = open(options.pairedEndFile,"r")\n+        lines = revFile.readlines()\n+        inputRevFileNames = []\n+        for line in lines:\n+            revTab = line.split()\n+            inputRevFileNames.append(revTab[1])\n+        revFile.close()\n+\n+    #Create gsnap make \n+    lCmdsTuples =[]\n+    acronym = "gsnap_make"\n+    jobdb = TableJobAdaptatorFactory.createJobInstance()\n+    iLauncher = Launcher(jobdb, os.getcwd(), "", "", os.getcwd(), os.getcwd(), "jobs", "", acronym, acronym, False, True)\n+    cmds = []\n+    cmd_setup = "gmap_setup -d %s -D %s -k %s %s;" % (options.genomeName, workingDir, options.kmer, options.inputFastaFile)\n+    cmds.append(cmd_setup)\n+    cmd_make_coords = "make -f Makefile.%s coords;" % options.genomeName \n+    cmds.append(cmd_make_coords)\n+    cmd_make_gmapdb = "make -f Makefile.%s gmapdb;" % options.genomeName\n+    cmds.append(cmd_make_gmapdb)\n+    cmd_make_install = "make -f Makefile.%s install;" % options.genomeName\n+    cmds.append(cmd_make_install)\n+    cmd_index = iLauncher.getSystemCommand("", cmds)\n+    cmd2Launch = []\n+    cmdStart = []\n+    cmdFinish = []\n+    cmd2Launch.append(cmd_index)\n+    lCmdsTuples.append(_map(iLauncher, cmd2Launch, cmdStart, cmdFinish)) \n+    iLauncher.runLauncherForMultipleJobs(acronym, lCmdsTuples, True)    \n+    \n+    acronym = "gsnap"\n+    jobdb = TableJobAdaptatorFactory.createJobInstance()\n+    iLauncher = Launcher(jobdb, os.getcwd(), "", "", os.getcwd(), os.getcwd(), "jobs", "", acronym, acronym, False, True)\n+    lCmdsTuples = []\n+    dCutOut2Out = {}\n+    lAllFile2remove = []\n+    numberOfBatch = 20  #usually for testing, working on to find a value for default launch on galaxy\n+    for i in range(len(inputFileNames)):\n+        lCutOutput = []\n+        for j in range(numberOfBatch):\n+            cutOutput = "%s_out_%s" % (inputFileNames[i], j)\n+            lCutOutput.append(cutOutput)\n+            lAllFile2remove.extend(lCutOutput)\n+            cmd2Launch = []\n+            if options.pairedEndFile: \n+                inputRevFile = inputRevFileNames[i]\n+            else:\n+                inputRevFile = ""\n+            cmd2Launch.append(_createGsnapCommand(iLauncher, options, workingDir, inputFileNames[i], inputRevFile, cutOutput, j, numberOfBatch))\n+            cmdStart = []\n+            cmdFinish = []\n+            lCmdsTuples.append(_map(iLauncher, cmd2Launch, cmdStart, cmdFinish))    \n+            dCutOut2Out[gsnapOutputNames[i]] = lCutOutput\n+    iLauncher.runLauncherForMultipleJobs(acronym, lCmdsTuples, True)\n+    \n+    joinSAM(dCutOut2Out) \n+    FileUtils.removeFilesFromListIfExist(lAllFile2remove)   \n+                 \n+    if options.outputTar != None:\n+        toTar(options.outputTar, gsnapOutputNames)\n+\n+\n+if __name__=="__main__": __main__()\n'
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/DiffExpAnal/gsnap_parallel_unSQL.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/DiffExpAnal/gsnap_parallel_unSQL.xml Mon Apr 29 03:20:15 2013 -0400
b
@@ -0,0 +1,46 @@
+<tool id="gsnap_parallel_unSQL" name="GSNAP (for DEA in parallel)" version="1.0.0">
+  <description>Genomic Short-read Nucleotide Alignment Program in parallel for Differential Expression Analysis (DEA)</description>
+  <command interpreter="python">gsnap_parallel_unSQL.py 
+ -i $genome_file
+ -q $fastq_file_list  
+ -o $output_file_list
+ -d $genome_prefix 
+ -k $kmer_size
+ #if $OptionPairedEnd.pairedEnd == 'Yes':
+  -p $pairedEnd_input
+ #end if
+
+</command>
+  <inputs>
+    <param name="genome_file" type="data" format="fasta" label="Genome fasta file" />
+    <param name="fastq_file_list" type="data" format="txt" label="Fastq file list" />
+    <param name="genome_prefix" type="text" format="txt" label="Prefix used to name genome index " />
+    <param name="kmer_size" type="integer" value="12" label="Kmer size"/>
+    
+  <conditional name="OptionPairedEnd">
+   <param name="pairedEnd" type="select" label="For paired-end analysis.">
+   <option value="Yes">Yes</option>
+   <option value="No" selected="true">No</option>
+   </param>
+   <when value="Yes">
+   <param name="pairedEnd_input" type="data" format="txt" label="input paired-end files list"/>
+   </when>
+   <when value="No">
+   </when>
+  </conditional>
+
+  </inputs>
+
+  <outputs>
+    <data name="output_file_list" format="txt"/>
+  </outputs>
+  <help>
+**What it does**
+
+To complete
+
+**Citation**
+
+If you use this tool, please cite "Thomas D. Wu and Serban Nacu, Fast and SNP-tolerant detection of complex variants and splicing in short reads, Bioinformatics 2010 26:873-881"
+  </help>
+</tool>
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/DiffExpAnal/listInputs.pl
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/DiffExpAnal/listInputs.pl Mon Apr 29 03:20:15 2013 -0400
[
@@ -0,0 +1,13 @@
+#!/usr/bin/perl -w
+
+use strict;
+
+my $in_file1 = $ARGV[0];
+my $in_file2 = $ARGV[1];
+my $out_file = $ARGV[2];
+
+open(OUT, ">$out_file");
+print OUT "label\tfiles\tgroup\n";
+print OUT "fileID=1\t$in_file1\tgroup1\n";
+print OUT "fileID=2\t$in_file2\tgroup2\n";
+close(OUT);
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/DiffExpAnal/listInputs.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/DiffExpAnal/listInputs.xml Mon Apr 29 03:20:15 2013 -0400
b
@@ -0,0 +1,25 @@
+<tool id="listInputs" name="listInputs">
+ <description>Give a list of input files from different conditions/groups for DESeq analysis, DESeq can then charge these input files from the given list.</description>
+ <command interpreter="perl"> listInputs.pl $inputFromGroup1 $inputFromGroup2 $output
+ </command>
+
+ <inputs>
+ <param name="inputFromGroup1" type="data" format="tabular" label="Please choose your file from group1."/>
+ <param name="inputFromGroup2" type="data" format="tabular" label="Please choose your file from group2."/>
+ </inputs>
+
+ <outputs>
+ <data format="txt" name="output" label="listInputs Output"/>
+ </outputs>
+
+ <help>
+ This tool can facilate the the chargement for DESeq tool.
+ Example:
+ From group1, we have input1.
+ From group2, we have input2.
+ This tool will give us a list like:
+ fileID=1 input1 group1
+ fileID=2 input2 group2
+ Where the value of fileID is unique for each input file. 
+ </help>
+</tool>
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/DiffExpAnal/loadHTSeqResultFiles.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/DiffExpAnal/loadHTSeqResultFiles.py Mon Apr 29 03:20:15 2013 -0400
[
@@ -0,0 +1,40 @@
+#!/usr/bin/env python
+
+import optparse, sys
+
+
+def __main__():
+    #Parse Command Line
+    parser = optparse.OptionParser()
+    parser.add_option('-i', '--inputs', dest='inputFiles', default=None, help='several input files. (seperated by @ or @@' )
+    parser.add_option( '-o', '--output', dest='outputFile', default=None, help='The output list of HTSeq results files(.tabular) on txt format.' )
+    ( options, args ) = parser.parse_args()
+
+    
+    out = open(options.outputFile, 'w')
+    out.write("label\tfiles\tgroup\n")
+    if options.inputFiles == None:
+        raise Exception, 'input file name is not defined!'
+    
+    groupCount = 1
+    fileCount = 0        
+    
+    inputFiles = sys.argv[6:]
+    print '\n\nthe length of inputfiles is : %s \n' % len(inputFiles)
+    i = 0
+    while i < (len(inputFiles)-1):
+        if inputFiles[i] == "@":
+            i += 1
+            fileCount = 1
+            groupCount += 1
+            out.write("Group%s_%s\t%s\t%s\n" % (groupCount, fileCount, inputFiles[i], groupCount))
+        else:
+     fileCount += 1
+            out.write("Group%s_%s\t%s\t%s\n" % (groupCount, fileCount, inputFiles[i], groupCount))
+        i += 1
+           
+    out.close()   
+    
+        
+
+if __name__=="__main__": __main__()
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/DiffExpAnal/loadHTSeqResultFiles.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/DiffExpAnal/loadHTSeqResultFiles.xml Mon Apr 29 03:20:15 2013 -0400
b
@@ -0,0 +1,29 @@
+<tool id="load_HTSeqResultFiles" name="load HTSeqResultFiles" >
+  <description>To load several HTSeq result files from different conditions.</description>
+  <command interpreter="python"> loadHTSeqResultFiles.py -o $htseqRes_out
+ -i
+ #for $i in $condition_groups
+ #for $j in $i.replicates
+ $j.tabular_file
+ #end for
+ @
+ #end for
+
+</command>
+  <inputs>
+   <repeat name="condition_groups" title="Condition group" min="2">
+      <repeat name="replicates" title="Replicate">
+     <param name="tabular_file" format="tabular" type="data" label="TABULAR file."/>
+          </repeat>
+        </repeat>
+  </inputs>
+
+  <outputs>
+    <data format="txt" name="htseqRes_out" label="HTSeq result files" help="This program gives you a list of files you choose for the following data analysis."/>
+
+</outputs>
+<help>
+</help>
+
+</tool>
+
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/DiffExpAnal/loadMultiFastqFiles.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/DiffExpAnal/loadMultiFastqFiles.py Mon Apr 29 03:20:15 2013 -0400
[
@@ -0,0 +1,70 @@
+#!/usr/bin/env python
+
+import optparse, sys
+
+
+def __main__():
+    #Parse Command Line
+    parser = optparse.OptionParser()
+    parser.add_option('-i', '--inputs', dest='inputFiles', default=None, help='several input files. (seperated by @ or @@' )
+    parser.add_option( '-o', '--output', dest='outputSingleFile', default=None, help='The output list of fastq files on txt format.' )
+    parser.add_option( '', '--pairedEnd', dest='outputPaireFile', default=None, help='paired end option help to upload the corresponding paired end complementary fastq files' )
+    ( options, args ) = parser.parse_args()
+
+    
+
+    if options.outputSingleFile == None: 
+        raise Exception, 'OutSingleFile txt file name is not defined!'
+    else:
+        outSingle = open(options.outputSingleFile, 'w')
+    
+    if options.inputFiles == None:
+        raise Exception, 'input file name is not defined!'
+    
+    groupCount = 1
+    fileCount = 0        
+    
+    if options.outputPaireFile == None:
+        inputFiles = sys.argv[4:]
+        i = 0
+        while i < (len(inputFiles)-1):
+     if inputFiles[i] == "@":
+                i += 1
+                fileCount = 1
+                groupCount += 1
+                outSingle.write("Group%s_%s\t%s\n" % (groupCount, fileCount, inputFiles[i]))
+                
+            else:
+                fileCount += 1
+                outSingle.write("Group%s_%s\t%s\n" % (groupCount, fileCount, inputFiles[i]))
+                
+            i += 1
+    else:
+        inputFiles = sys.argv[6:]
+        print '\n\nthe length of inputfiles is : %s \n' % len(inputFiles)
+        outPaire = open(options.outputPaireFile, 'w')
+        i = 0
+        while i < (len(inputFiles)-1):
+            if inputFiles[i] == "@@":
+                i += 1
+                outPaire.write("Group%s_%s\t%s\n" % (groupCount, fileCount, inputFiles[i]))
+            elif inputFiles[i] == "@":
+                i += 1
+                fileCount = 1
+                groupCount += 1
+                outSingle.write("Group%s_%s\t%s\n" % (groupCount, fileCount, inputFiles[i]))
+            else:
+                fileCount += 1
+                outSingle.write("Group%s_%s\t%s\n" % (groupCount, fileCount, inputFiles[i]))
+                
+            i += 1
+                
+        
+        
+        outPaire.close()
+           
+    outSingle.close()   
+    
+        
+
+if __name__=="__main__": __main__()
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/DiffExpAnal/loadMultiFastqFiles.sh
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/DiffExpAnal/loadMultiFastqFiles.sh Mon Apr 29 03:20:15 2013 -0400
[
@@ -0,0 +1,24 @@
+#!/bin/bash
+
+OUTFile=${1}
+shift
+groupCount=1
+replicateNumber=1
+
+arrayZ=( $@ )
+#remove the last symble '@' given by commande line
+unset arrayZ[${#arrayZ[@]}-1]
+
+for FILE in ${arrayZ[@]}
+do
+ #if a new group of fastq, re-count the replicateNumber
+ if echo $FILE | grep -q "@" 
+ then 
+ groupCount=$(($groupCount + 1))
+ replicateNumber=1
+ else
+ echo -e "Group${groupCount}_${replicateNumber}\t${FILE}" >>${OUTFile}
+ replicateNumber=$(($replicateNumber + 1))
+   fi
+done
+
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/DiffExpAnal/loadMultiFastqFiles.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/DiffExpAnal/loadMultiFastqFiles.xml Mon Apr 29 03:20:15 2013 -0400
[
@@ -0,0 +1,75 @@
+<tool id="load_multiFASTQFiles" name="load_multiFASTQfiles" >
+  <description>To load several FASTQ files from different conditions.</description>
+  <command interpreter="python"> loadMultiFastqFiles.py -o $multiFASTQfiles_out
+#if $single_end_paired_end.mapping_mode == 'single':
+ -i
+ #for $i in $single_end_paired_end.condition_groups
+ #for $j in $i.replicates
+ $j.fastq_file
+ #end for
+ @
+ #end for
+
+#elif $single_end_paired_end.mapping_mode == 'paired':
+
+ --pairedEnd $multiFASTQfiles_paired_end_out
+ -i
+ #for $i in $single_end_paired_end.condition_groups
+ #for $j in $i.replicates
+ $j.fastq_file
+ @@
+ $j.fastq_paired_end_file
+ #end for
+ @
+ #end for
+#end if
+
+</command>
+  <inputs>
+   <conditional name="single_end_paired_end">
+    <param name="mapping_mode" type="select" label="The uploading fastq files for single-end or paired-end mapping mode.">
+ <option value="single">Single-End</option>
+ <option value="paired">Paire-End</option>
+    </param>
+            <when value="single">
+    <repeat name="condition_groups" title="Condition group" min="2">
+        <repeat name="replicates" title="Replicate">
+         <param name="fastq_file" format="fastq" type="data" label="FASTQ file. Can show the sequences quality."/>
+         </repeat>
+         </repeat>
+    </when>
+    <when value="paired">
+    <repeat name="condition_groups" title="Condition group" min="2">
+           <repeat name="replicates" title="Replicate">
+         <param name="fastq_file" format="fastq" type="data" label="FASTQ file. Can show the sequences quality."/>
+         <param name="fastq_paired_end_file" format="fastq" type="data" label="fastq paired end complementary file" help="Add the corresponding paired end file for paired end mapping"/>
+         </repeat>
+         </repeat>
+    </when>
+
+     </conditional>
+  </inputs>
+
+  <outputs>
+    <data format="txt" name="multiFASTQfiles_out" label="loadMultiFASTQFiles result" help="This program gives you a list of files you choose for the following data analysis."/>
+    <data format="txt" name="multiFASTQfiles_paired_end_out" label="loadMultiFASTQFiles for paired end result" help="This program gives you a list of files you choose for the following data analysis.">
+     <filter>(single_end_paired_end['mapping_mode']=='paired')</filter>
+
+    </data>
+</outputs>
+<help>
+ **This tool is to help upload several data for differential expression pipeline. Before click 'Execute', you should Click** Ctrl + here_ **first to open the pipeline in a new page.**
+
+ .. _here: http://127.0.0.1:8085/u/yufei-luo/w/differentialexpressiondeseq-with-replicates 
+</help>
+
+</tool>
+
+
+
+
+
+
+
+
+
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/DiffExpAnal/testR.R
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/DiffExpAnal/testR.R Mon Apr 29 03:20:15 2013 -0400
[
@@ -0,0 +1,93 @@
+#!/usr/bin
+
+library(DESeq)
+library(hexbin)
+library(latticeExtra)
+library(gplots)
+library(geneplotter)
+library(Biobase)
+
+##In a file called test_args.R
+args <- commandArgs()
+
+
+fileName <- args[4]
+colNames <- as.integer(unlist(strsplit(args[5], ",")))
+colCond1 <- as.integer(unlist(strsplit(args[6], ",")))
+colCond2 <- as.integer(unlist(strsplit(args[7], ",")))
+OUTPUTCSV <- args[8]
+OUTPUTPNG <- args[9]
+
+if(colNames[1]!=0){
+ countsTable <- read.delim(fileName, row.names=1)
+ conditions <- c((colNames[length(colNames)]+1):ncol(countsTable))
+} else if(colNames[1]==0){
+ countsTable <- read.delim(fileName)
+ conditions <- c(1:ncol(countsTable))
+ rownames(countsTable) <- paste( "Gene", 1:nrow(countsTable), sep="_" )}
+
+for(i in colCond1){conditions[i] = "A"}
+for(i in colCond2){conditions[i] = "B"}
+conditions
+#analysis with DESeq
+cds <- newCountDataSet( countsTable, conditions )
+cds <- estimateSizeFactors( cds )
+cds <- estimateVarianceFunctions( cds )
+result <- nbinomTest( cds, "A", "B" )
+#stock the result dans un .tsv as output file
+write.table(result, OUTPUTCSV, sep = " ", quote = FALSE, col.names = NA)
+
+#figures for DE analysis
+#pdf( OUTPUTPNG, width=4, height=4 )
+png( filename=OUTPUTPNG, width=700, height=700 )
+#png format is not as clear as pdf format!!!!!!!!!!!!!!!!!!!!!!!!!
+print(xyplot(
+ log2FoldChange ~ I(baseMean),
+ result,
+ pch=16, cex=.3,
+ col=ifelse(result$padj < .1, "#FF000040","#00000040" ),
+ panel = function( x, y, col, ...) {
+ above <- (y > 5.8)
+ below <- (y < -5.8)
+ inside <- !( above | below )
+ panel.xyplot( x=x[inside], y=y[inside], col=col[inside], ...)
+ panel.arrows( x[above], 5.8, x[above], 5.95, col=col[above],length=".1", unit="native" )
+ panel.arrows( x[below], -5.8, x[below], -5.95, col=col[below],length=".1", unit="native" ) },
+ axis = function(side, ...) {
+ if( side=="left") {
+ panel.axis( side, outside=TRUE, at=seq(-14,14,by=1), labels=FALSE )
+ panel.axis( side, outside=TRUE, at=seq(-10,10,by=5), labels=TRUE )
+ }
+ if( side=="bottom") {
+ panel.axis( side, outside=TRUE, at=seq(-2,10,by=1), rot=0,
+ labels = do.call( expression,
+ lapply( seq(-2,10,by=1), function(a)
+ substitute( 10^b, list(b=a) ) ) ) )
+ } },
+ xlab = "mean", ylab = "log2 fold change",
+ scales = list(x = list( log=TRUE ),y = list( log=FALSE, limits=c( -6, 6 ) ) ) ))
+dev.off()
+
+#The volcano plot 
+#pdf( "vulcano_fly.pdf", width=4, height=4 )
+#print(xyplot( -log10( pval ) ~ log2FoldChange,
+# result,
+# pch=20, cex=.2,
+# col=ifelse( result$padj<.1, "#FF000050", "#00000050" ),
+# axis = function( side, ... ) {
+# if( side=="bottom") {
+# panel.axis( side, outside=TRUE, at=seq(-14,14,by=1), labels=FALSE )
+# panel.axis( side, outside=TRUE, at=seq(-10,10,by=5), labels=TRUE )
+# }
+# if( side=="left") {
+# panel.axis( side, outside=TRUE, at=seq(0,25,by=1), labels=FALSE )
+# panel.axis( side, outside=TRUE, at=seq(0,25,by=5),
+# labels = do.call( expression,
+# lapply( seq(0,25,by=5), function(a)
+# substitute( 10^-b, list(b=a) ) ) ) )
+# } },
+# xlab = "log2 fold change", ylab = "p value",
+# scales = list(
+# x = list( limits=c( -6, 6 ) ),
+# y = list( limits=c( 0, 25 ) ) ) ))
+#dev.off()
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/DiffExpAnal/testR.sh
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/DiffExpAnal/testR.sh Mon Apr 29 03:20:15 2013 -0400
b
@@ -0,0 +1,11 @@
+#! /bin/sh
+
+#cat testR.R | R --slave --args $1 $2 $3 $4 $5 $6 < DiffExpAnal/testR.R
+
+#ex1. sh testR.sh fly_RNA_counts.tsv 0 1,3 2,4 output_fly.csv output_fly.png
+#ex2. sh testR.sh NeuralStemCellData.tab 1 2,3,4 5,6 output_modif.csv output_modif.png
+
+#cat /share/apps/galaxy-dist/tools/repet_pipe/SMART/DiffExpAnal/testR.R | R --slave --args $1 $2 $3 $4 $5 $6 < /share/apps/galaxy-dist/tools/repet_pipe/SMART/DiffExpAnal/testR.R
+
+#$1=targetFile(the list of files) $2=with or without replicate
+cat /share/apps/galaxy-dist/tools/repet_pipe/SMART/DiffExpAnal/DESeqTools/anadiffGenes2conds.R| R --slave --args $1 $2 < /share/apps/galaxy-dist/tools/repet_pipe/SMART/DiffExpAnal/DESeqTools/anadiffGenes2conds.R
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/DiffExpAnal/tophat_parallel.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/DiffExpAnal/tophat_parallel.py Mon Apr 29 03:20:15 2013 -0400
[
b'@@ -0,0 +1,325 @@\n+\n+#!/usr/bin/env python\n+\n+import optparse, os, shutil, subprocess, sys, tempfile, fileinput, tarfile,random\n+\n+def stop_err( msg ):\n+    sys.stderr.write( "%s\\n" % msg )\n+    sys.exit()\n+\n+def toTar(tarFileName, accepted_hits_outputNames):\n+    fileName = os.path.splitext(tarFileName)[0]\n+    fileNameBaseName = os.path.basename(fileName)\n+    dir = os.path.dirname(tarFileName)    \n+    tfile = tarfile.open(tarFileName + ".tmp.tar", "w")\n+    currentPath = os.getcwd()\n+    os.chdir(dir)\n+    for file in accepted_hits_outputNames:\n+        relativeFileName = os.path.basename(file)\n+        tfile.add(relativeFileName)\n+    os.system("mv %s %s" % (tarFileName + ".tmp.tar", tarFileName))\n+    tfile.close()\n+    os.chdir(currentPath)\n+    \n+\n+def __main__():\n+    #Parse Command Line\n+    parser = optparse.OptionParser()\n+    parser.add_option(\'-o\', \'--outputTxtFile\', dest=\'outputTxtFile\', help=\'for Differential expression analysis pipeline, new output option gives a txt output containing the list of mapping results.\')\n+    parser.add_option(\'-t\', \'--tar\', dest=\'outputTar\', default=None, help=\'output all accepted hits results in a tar file.\' )\n+    parser.add_option( \'-p\', \'--num-threads\', dest=\'num_threads\', help=\'Use this many threads to align reads. The default is 1.\' )\n+    parser.add_option( \'-C\', \'--color-space\', dest=\'color_space\', action=\'store_true\', help=\'This indicates color-space data\' )\n+    parser.add_option( \'-J\', \'--junctions-output\', dest=\'junctions_output_file\', default=\'junctions_output.bed\', help=\'Junctions output file; formate is BED.\' )\n+    parser.add_option( \'-H\', \'--hits-output\', dest=\'accepted_hits_output_file\', default=\'hits_output_%s.bam\' % random.randrange(0, 10000), help=\'Accepted hits output file; formate is BAM.\' )\n+    parser.add_option( \'\', \'--own-file\', dest=\'own_file\', help=\'\' )\n+    parser.add_option( \'-D\', \'--indexes-path\', dest=\'index_path\', help=\'Indexes directory; location of .ebwt and .fa files.\' )\n+    parser.add_option( \'-r\', \'--mate-inner-dist\', dest=\'mate_inner_dist\', help=\'This is the expected (mean) inner distance between mate pairs. \\\n+                                                                                For, example, for paired end runs with fragments selected at 300bp, \\\n+                                                                                where each end is 50bp, you should set -r to be 200. There is no default, \\\n+                                                                                and this parameter is required for paired end runs.\')\n+    parser.add_option( \'\', \'--mate-std-dev\', dest=\'mate_std_dev\', help=\'Standard deviation of distribution on inner distances between male pairs.\' )\n+    parser.add_option( \'-a\', \'--min-anchor-length\', dest=\'min_anchor_length\', \n+                        help=\'The "anchor length". TopHat will report junctions spanned by reads with at least this many bases on each side of the junction.\' )\n+    parser.add_option( \'-m\', \'--splice-mismatches\', dest=\'splice_mismatches\', help=\'The maximum number of mismatches that can appear in the anchor region of a spliced alignment.\' )\n+    parser.add_option( \'-i\', \'--min-intron-length\', dest=\'min_intron_length\', \n+                        help=\'The minimum intron length. TopHat will ignore donor/acceptor pairs closer than this many bases apart.\' )\n+    parser.add_option( \'-I\', \'--max-intron-length\', dest=\'max_intron_length\', \n+                        help=\'The maximum intron length. When searching for junctions ab initio, TopHat will ignore donor/acceptor pairs farther than this many bases apart, except when such a pair is supported by a split segment alignment of a long read.\' )\n+    parser.add_option( \'-F\', \'--junction_filter\', dest=\'junction_filter\', help=\'Filter out junctions supported by too few alignments (number of reads divided by average depth of coverage)\' )\n+    parser.add_option( \'-g\', \'--max_multihits\', dest=\'max_multihits\', help=\'Maximum number of alignmen'..b'overage-search --min-coverage-intron %s --max-coverage-intron %s \' % ( options.min_coverage_intron, options.max_coverage_intron )\n+                else:\n+                    opts += \'--no-coverage-search \'\n+                if options.closure_search:\n+                    opts += \'--closure-search --min-closure-exon %s --min-closure-intron %s --max-closure-intron %s \'  % ( options.min_closure_exon, options.min_closure_intron, options.max_closure_intron ) \n+                else:\n+                    opts += \'--no-closure-search \'\n+                if options.microexon_search:\n+                    opts += \'--microexon-search \'\n+                if options.single_paired == \'paired\':\n+                    opts += \'--mate-std-dev %s \' % options.mate_std_dev\n+                if options.initial_read_mismatches:\n+                    opts += \'--initial-read-mismatches %d \' % int( options.initial_read_mismatches )\n+                if options.seg_mismatches:\n+                    opts += \'--segment-mismatches %d \' % int( options.seg_mismatches )\n+                if options.seg_length:\n+                    opts += \'--segment-length %d \' % int( options.seg_length )\n+                if options.min_segment_intron:\n+                    opts += \'--min-segment-intron %d \' % int( options.min_segment_intron )\n+                if options.max_segment_intron:\n+                    opts += \'--max-segment-intron %d \' % int( options.max_segment_intron )\n+                if options.own_file:\n+                    cmd = cmd % ( opts, index_paths[0], input_files ) #here to add paired end file\n+                else:\n+                    cmd = cmd % ( opts, index_paths[i], input_files ) #here to add paired end file\n+            except Exception, e:\n+                # Clean up temp dirs\n+                if os.path.exists( tmp_index_dir ):\n+                    shutil.rmtree( tmp_index_dir )\n+                stop_err( \'Something is wrong with the alignment parameters and the alignment could not be run\\n\' + str( e ) )\n+                \n+        cmds.append(cmd)\n+\n+    # Run the command line for each file.\n+    for i in range(len(cmds)):\n+        try:\n+            tmp_out = tempfile.NamedTemporaryFile().name\n+            tmp_files.append(tmp_out)\n+            tmp_stdout = open( tmp_out, \'wb\' )\n+            tmp_err = tempfile.NamedTemporaryFile().name\n+            tmp_files.append(tmp_err)\n+            tmp_stderr = open( tmp_err, \'wb\' )\n+            proc = subprocess.Popen( args=cmds[i], shell=True, cwd=".", stdout=tmp_stdout, stderr=tmp_stderr )\n+            returncode = proc.wait()\n+            tmp_stderr.close()\n+            # get stderr, allowing for case where it\'s very large\n+            tmp_stderr = open( tmp_err, \'rb\' )\n+            stderr = \'\'\n+            buffsize = 1048576\n+            try:\n+                while True:\n+                    stderr += tmp_stderr.read( buffsize )\n+                    if not stderr or len( stderr ) % buffsize != 0:\n+                        break\n+            except OverflowError:\n+                pass\n+            tmp_stdout.close()\n+            tmp_stderr.close()\n+            if returncode != 0:\n+                raise Exception, stderr\n+                \n+            # Copy output files from tmp directory to specified files.\n+            #shutil.copyfile( os.path.join( "tophat_out", "junctions.bed" ), junctions_outputNames[i] )\n+            shutil.copyfile( os.path.join( "tophat_out", "accepted_hits.bam" ), accepted_hits_outputNames[i] )\n+            # TODO: look for errors in program output.\n+        except Exception, e:\n+            stop_err( \'Error in tophat:\\n\' + str( e ) ) \n+\n+    if options.outputTar != None:\n+        toTar(options.outputTar, accepted_hits_outputNames)\n+\n+    \n+    # Clean up temp dirs\n+    for tmp_index_dir in tmp_index_dirs:\n+        if os.path.exists( tmp_index_dir ):\n+            shutil.rmtree( tmp_index_dir )\n+\n+    for tmp in tmp_files:\n+        os.remove(tmp)\n+\n+\n+if __name__=="__main__": __main__()\n'
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/DiffExpAnal/tophat_parallel.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/DiffExpAnal/tophat_parallel.xml Mon Apr 29 03:20:15 2013 -0400
[
b'@@ -0,0 +1,577 @@\n+<tool id="tophat_parallel" name="Tophat for Illumina (for DEA)" version="1.0.0">\n+    <description>Find splice junctions using RNA-seq data, can have several input RNA-seq data.</description>\n+    <version_command>tophat --version</version_command>\n+    <requirements>\n+        <requirement type="package">tophat</requirement>\n+    </requirements>\n+    <command interpreter="python">\n+\t    tophat_parallel.py\n+            ## Change this to accommodate the number of threads you have available.\n+            --num-threads="4"\n+\n+            ## Provide outputs.\n+            -o $outputFileName\n+            ##--junctions-output=$junctions\n+            ##--hits-output=$accepted_hits\n+\n+            ## Handle reference file.\n+            #if $refGenomeSource.genomeSource == "history":\n+                --own-file=$refGenomeSource.ownFile\n+            #else:\n+                --indexes-path="${ filter( lambda x: str( x[0] ) == str( $refGenomeSource.index ), $__app__.tool_data_tables[ \'tophat_indexes\' ].get_fields() )[0][-1] }"\n+            #end if\n+\n+            ## Are reads single-end or paired?\n+            --single-paired=$singlePaired.sPaired\n+\n+            ## First input file always required.\n+            --input1=$input1\n+\n+            ## Set params based on whether reads are single-end or paired.\n+            #if $singlePaired.sPaired == "single":\n+                --settings=$singlePaired.sParams.sSettingsType\n+                #if $singlePaired.sParams.sSettingsType == "full":\n+                    -a $singlePaired.sParams.anchor_length\n+                    -m $singlePaired.sParams.splice_mismatches\n+                    -i $singlePaired.sParams.min_intron_length\n+                    -I $singlePaired.sParams.max_intron_length\n+                    -F $singlePaired.sParams.junction_filter\n+                    -g $singlePaired.sParams.max_multihits\n+                    --min-segment-intron $singlePaired.sParams.min_segment_intron\n+                    --max-segment-intron $singlePaired.sParams.max_segment_intron\n+                    --initial-read-mismatches=$singlePaired.sParams.initial_read_mismatches\n+                    --seg-mismatches=$singlePaired.sParams.seg_mismatches\n+                    --seg-length=$singlePaired.sParams.seg_length\n+                    --library-type=$singlePaired.sParams.library_type\n+                    \n+                    ## Indel search.\n+                    #if $singlePaired.sParams.indel_search.allow_indel_search == "Yes":\n+                        ## --allow-indels\n+                        --max-insertion-length $singlePaired.sParams.indel_search.max_insertion_length\n+                        --max-deletion-length $singlePaired.sParams.indel_search.max_deletion_length\n+                    #else:\n+                        --no-novel-indels\n+                    #end if\n+\n+                    ## Supplying junctions parameters.\n+                    #if $singlePaired.sParams.own_junctions.use_junctions == "Yes":\n+                        #if $singlePaired.sParams.own_junctions.gene_model_ann.use_annotations == "Yes":\n+                            -G $singlePaired.sParams.own_junctions.gene_model_ann.gene_annotation_model\n+                        #end if\n+                        #if $singlePaired.sParams.own_junctions.raw_juncs.use_juncs == "Yes":\n+                            -j $singlePaired.sParams.own_junctions.raw_juncs.raw_juncs\n+                        #end if\n+                        ## TODO: No idea why a string cast is necessary, but it is:\n+                        #if str($singlePaired.sParams.own_junctions.no_novel_juncs) == "Yes":\n+                            --no-novel-juncs\n+                        #end if\n+                    #end if\n+\n+                    #if $singlePaired.sParams.closure_search.use_search == "Yes":\n+                        --closure-search\n+                        --min-closure-exon $singlePaired.sParams.closure_search.min_closure_exon\n+                        --'..b'hen such a pair is supported by a split segment alignment of a long read. The default is 500000.\n+  -F/--min-isoform-fraction 0.0-1.0 TopHat filters out junctions supported by too few alignments. Suppose a junction spanning two exons, is supported by S reads. Let the average depth of coverage of \n+                                    exon A be D, and assume that it is higher than B. If S / D is less than the minimum isoform fraction, the junction is not reported. A value of zero disables the \n+                                    filter. The default is 0.15.\n+  -g/--max-multihits INT            Instructs TopHat to allow up to this many alignments to the reference for a given read, and suppresses all alignments for reads with more than this many \n+                                    alignments. The default is 40.\n+  -G/--GTF [GTF 2.2 file]           Supply TopHat with a list of gene model annotations. TopHat will use the exon records in this file to build a set of known splice junctions for each gene, and will attempt to align reads to these junctions even if they would not normally be covered by the initial mapping.\n+  -j/--raw-juncs [juncs file]       Supply TopHat with a list of raw junctions. Junctions are specified one per line, in a tab-delimited format. Records look like: [chrom] [left] [right] [+/-], left and right are zero-based coordinates, and specify the last character of the left sequenced to be spliced to the first character of the right sequence, inclusive.\n+  -no-novel-juncs                   Only look for junctions indicated in the supplied GFF file. (ignored without -G)\n+  --no-closure-search               Disables the mate pair closure-based search for junctions. Currently, has no effect - closure search is off by default.\n+  --closure-search                  Enables the mate pair closure-based search for junctions. Closure-based search should only be used when the expected inner distance between mates is small (about or less than 50bp)\n+  --no-coverage-search              Disables the coverage based search for junctions.\n+  --coverage-search                 Enables the coverage based search for junctions. Use when coverage search is disabled by default (such as for reads 75bp or longer), for maximum sensitivity.\n+  --microexon-search                With this option, the pipeline will attempt to find alignments incident to microexons. Works only for reads 50bp or longer.\n+  --butterfly-search                TopHat will use a slower but potentially more sensitive algorithm to find junctions in addition to its standard search. Consider using this if you expect that your experiment produced a lot of reads from pre-mRNA, that fall within the introns of your transcripts.\n+  --segment-mismatches              Read segments are mapped independently, allowing up to this many mismatches in each segment alignment. The default is 2.\n+  --segment-length                  Each read is cut up into segments, each at least this long. These segments are mapped independently. The default is 25.\n+  --min-closure-exon                During closure search for paired end reads, exonic hops in the potential splice graph must be at least this long. The default is 50.\n+  --min-closure-intron              The minimum intron length that may be found during closure search. The default is 50.\n+  --max-closure-intron              The maximum intron length that may be found during closure search. The default is 5000.\n+  --min-coverage-intron             The minimum intron length that may be found during coverage search. The default is 50.\n+  --max-coverage-intron             The maximum intron length that may be found during coverage search. The default is 20000.\n+  --min-segment-intron              The minimum intron length that may be found during split-segment search. The default is 50.\n+  --max-segment-intron              The maximum intron length that may be found during split-segment search. The default is 500000.\n+    </help>\n+</tool>\n'
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/DiffExpAnal/tophat_parallel_unSQL.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/DiffExpAnal/tophat_parallel_unSQL.py Mon Apr 29 03:20:15 2013 -0400
[
b'@@ -0,0 +1,353 @@\n+\n+#!/usr/bin/env python\n+\n+import optparse, os, shutil, subprocess, sys, tempfile, fileinput, tarfile, glob\n+from commons.core.launcher.Launcher import Launcher\n+from commons.core.sql.TableJobAdaptatorFactory import TableJobAdaptatorFactory\n+from commons.core.utils.FileUtils import FileUtils\n+\n+def stop_err( msg ):\n+    sys.stderr.write( "%s\\n" % msg )\n+    sys.exit()\n+\n+def toTar(tarFileName, accepted_hits_outputNames):\n+    tfile = tarfile.open(tarFileName + ".tmp.tar", "w")\n+    currentPath = os.getcwd()\n+    os.chdir(dir)\n+    for file in accepted_hits_outputNames:\n+        relativeFileName = os.path.basename(file)\n+        tfile.add(relativeFileName)\n+    os.system("mv %s %s" % (tarFileName + ".tmp.tar", tarFileName))\n+    tfile.close()\n+    os.chdir(currentPath)\n+    \n+def splitFastQ(fileName, nbOfSeqPerBatch):\n+    nbOfLinesPerFile = nbOfSeqPerBatch * 4\n+    lOutput = []\n+    filePrefix, fileExt = os.path.splitext(os.path.basename(fileName))\n+    resDir = os.path.dirname(fileName)\n+    with open(fileName) as inF:\n+        fileNb = 1\n+        line = inF.readline()\n+        if not line or nbOfLinesPerFile == 0:\n+            outFileName = "%s/%s-%s%s" %(resDir, filePrefix, fileNb, fileExt)\n+            lOutput.append(outFileName)\n+            f = open(outFileName, "wb")\n+            shutil.copyfileobj(open(fileName, "rb"), f)\n+            f.close()\n+        else:\n+            while line:\n+                outFileName = "%s/%s-%s%s" %(resDir, filePrefix, fileNb, fileExt)\n+                lOutput.append(outFileName)\n+                with open(outFileName, "w") as outF:\n+                    lineNb = 1\n+                    while lineNb <= nbOfLinesPerFile and line:\n+                        outF.write(line)\n+                        line = inF.readline()\n+                        lineNb += 1\n+                fileNb += 1\n+    return lOutput\n+\n+def joinBAM(dCutOut2Out):\n+    for key in dCutOut2Out.keys():\n+        fh = open(key, "w") \n+        fh.close()\n+        nbFile = 0\n+        cmd = "samtools merge -f %s" % key\n+        for fileName in dCutOut2Out[key]:\n+            nbFile = nbFile + 1\n+            if nbFile < 225:\n+                cmd += " %s" % fileName\n+            else:\n+                nbFile = 0\n+                cmd += ";mv %s tmpBAM;" % (key)\n+                cmd += "samtools merge -f %s tmpBAM %s" %  (key, fileName)\n+        proc = subprocess.Popen( args=cmd , shell=True)\n+        returncode = proc.wait()\n+\n+        \n+def _map(iLauncher, cmd, cmdStart, cmdFinish ):\n+    lCmds = []\n+    lCmds.extend(cmd)\n+    lCmdStart = []\n+    lCmdStart.extend(cmdStart)\n+    lCmdFinish = []\n+    lCmdFinish.extend(cmdFinish)\n+    return(iLauncher.prepareCommands_withoutIndentation(lCmds, lCmdStart, lCmdFinish))\n+\n+def _createTopHatCommand(iLauncher, options, index_paths, inputFileNames, inputRevFilesNames, space):\n+    lArgs = []\n+    lArgs.append(\'-p %s %s\' % ( options.num_threads, space ))\n+    if options.single_paired == \'paired\':\n+        lArgs.append(\'-r %s \' % options.mate_inner_dist)\n+    if options.settings == \'preSet\':\n+        lArgs.append(index_paths)\n+        lArgs.append(inputFileNames)\n+        if options.input2:\n+            lArgs.append(inputRevFilesNames)\n+        return iLauncher.getSystemCommand("tophat", lArgs)\n+    else:\n+        if int( options.min_anchor_length ) >= 3:\n+            lArgs.append(\'-a %s \' % options.min_anchor_length)\n+        else:\n+            raise Exception, \'Minimum anchor length must be 3 or greater\'\n+        lArgs.append(\'-m %s \' % options.splice_mismatches)\n+        lArgs.append(\'-i %s \' % options.min_intron_length)\n+        lArgs.append(\'-I %s \' % options.max_intron_length)\n+        if float( options.junction_filter ) != 0.0:\n+            lArgs.append(\'-F %s \' % options.junction_filter)\n+        lArgs.append(\'-g %s \' % options.max_multihits)\n+        # Custom junctions options.\n+        if options.gene_model_annotations:\n+            lArgs.append(\'-G %s \' % options.gene_'..b'ame + \'\\n\')\n+    file.close()\n+    out.close()\n+    \n+    if options.input2:\n+        revFile = open(options.input2,"r")\n+        lines = revFile.readlines()\n+        inputRevFileNames = []\n+        for line in lines:\n+            revTab = line.split()\n+            inputRevFileNames.append(revTab[1])\n+        revFile.close()\n+\n+    \n+    # Creat bowtie index if necessary.\n+    tmp_index_dirs = []\n+    index_paths = []\n+    tmp_index_dir = tempfile.mkdtemp(dir="%s" % os.getcwd())\n+    tmp_index_dirs.append(tmp_index_dir)\n+    if options.own_file:\n+        index_path = os.path.join( tmp_index_dir, \'.\'.join( os.path.split( options.own_file )[1].split( \'.\' )[:-1] ) )\n+        index_paths.append(index_path)\n+        try:\n+            os.link( options.own_file, index_path + \'.fa\' )\n+        except:\n+            # Tophat prefers (but doesn\'t require) fasta file to be in same directory, with .fa extension\n+            pass\n+        lCmdsTuples =[]\n+        acronym = "tophat_index"\n+        jobdb = TableJobAdaptatorFactory.createJobInstance()\n+        iLauncher = Launcher(jobdb, os.getcwd(), "", "", os.getcwd(), os.getcwd(), "jobs", "", acronym, acronym, False, True)\n+        cmd_index = iLauncher.getSystemCommand("bowtie-build", [space, "-f %s" % options.own_file, index_path])\n+        cmd2Launch = []\n+        cmdStart = []\n+        cmdFinish = []\n+        cmd2Launch.append(cmd_index)\n+        lCmdsTuples.append(_map(iLauncher, cmd2Launch, cmdStart, cmdFinish)) \n+        iLauncher.runLauncherForMultipleJobs(acronym, lCmdsTuples, True)\n+    else:\n+        for file in inputFileNames:\n+            tmp_index_dir = tempfile.mkdtemp()\n+            index_path = tmp_index_dir + \'/\' + os.path.basename(file).split(\'.\')[0]\n+            index_paths.append(index_path)\n+            tmp_index_dirs.append(tmp_index_dir)\n+\n+    \n+    \n+    acronym = "tophat"\n+    jobdb = TableJobAdaptatorFactory.createJobInstance()\n+    iLauncher = Launcher(jobdb, os.getcwd(), "", "", os.getcwd(), os.getcwd(), "jobs", "", acronym, acronym, False, True)\n+    lCmdsTuples = []\n+    dCutOut2Out = {}\n+    lAllFile2remove = []\n+    # for inputFileName in inputFileNames:\n+    for i in range(len(inputFileNames)):\n+        lCutOutput = []\n+        lCutInputFile = splitFastQ(inputFileNames[i], 20000)\n+        lAllFile2remove.extend(lCutInputFile)\n+        if options.input2:\n+            lCutPairInputFile = splitFastQ(inputRevFileNames[i], 20000)\n+            lAllFile2remove.extend(lCutPairInputFile)\n+        for j in range(len(lCutInputFile)):\n+            cutOutput = "%s_out" %  lCutInputFile[j]\n+            lCutOutput.append(cutOutput)\n+            lAllFile2remove.extend(lCutOutput)\n+            cmd2Launch = []\n+            if options.input2: \n+                inputRevFile = lCutPairInputFile[j]\n+            else:\n+                inputRevFile = ""\n+            if options.own_file:\n+                cmd2Launch.append(_createTopHatCommand(iLauncher, options, index_paths[0], lCutInputFile[j], inputRevFile, space))\n+            else:\n+                cmd2Launch.append(_createTopHatCommand(iLauncher, options, index_paths[i], lCutInputFile[j], inputRevFile, space))\n+            cmdStart = []\n+            cmdFinish = ["shutil.copyfile( os.path.join( \'tophat_out\', \'accepted_hits.bam\' ), \'%s\')" % cutOutput]\n+            lCmdsTuples.append(_map(iLauncher, cmd2Launch, cmdStart, cmdFinish))    \n+        dCutOut2Out[accepted_hits_outputNames[i]] = lCutOutput\n+    iLauncher.runLauncherForMultipleJobs(acronym, lCmdsTuples, True)\n+    \n+    joinBAM(dCutOut2Out) \n+    FileUtils.removeFilesFromListIfExist(lAllFile2remove)   \n+                 \n+    if options.outputTar != None:\n+        toTar(options.outputTar, accepted_hits_outputNames)\n+\n+    \n+    # Clean up temp dirs\n+    for tmp_index_dir in tmp_index_dirs:\n+        if os.path.exists( tmp_index_dir ):\n+            shutil.rmtree( tmp_index_dir )\n+\n+    for tmp in tmp_files:\n+        os.remove(tmp)\n+\n+\n+if __name__=="__main__": __main__()\n'
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/DiffExpAnal/tophat_parallel_unSQL.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/DiffExpAnal/tophat_parallel_unSQL.xml Mon Apr 29 03:20:15 2013 -0400
[
b'@@ -0,0 +1,577 @@\n+<tool id="tophat_parallel_unSQL" name="Tophat for Illumina (for DEA in parallel)" version="1.0.0">\n+    <description>Find splice junctions using RNA-seq data, can have several input RNA-seq data (parallelized).</description>\n+    <version_command>tophat --version</version_command>\n+    <requirements>\n+        <requirement type="package">tophat</requirement>\n+    </requirements>\n+    <command interpreter="python">\n+\t    tophat_parallel_unSQL.py\n+            ## Change this to accommodate the number of threads you have available.\n+            --num-threads="4"\n+\n+            ## Provide outputs.\n+            -o $outputFileName\n+            ##--junctions-output=$junctions\n+            ##--hits-output=$accepted_hits\n+\n+            ## Handle reference file.\n+            #if $refGenomeSource.genomeSource == "history":\n+                --own-file=$refGenomeSource.ownFile\n+            #else:\n+                --indexes-path="${ filter( lambda x: str( x[0] ) == str( $refGenomeSource.index ), $__app__.tool_data_tables[ \'tophat_indexes\' ].get_fields() )[0][-1] }"\n+            #end if\n+\n+            ## Are reads single-end or paired?\n+            --single-paired=$singlePaired.sPaired\n+\n+            ## First input file always required.\n+            --input1=$input1\n+\n+            ## Set params based on whether reads are single-end or paired.\n+            #if $singlePaired.sPaired == "single":\n+                --settings=$singlePaired.sParams.sSettingsType\n+                #if $singlePaired.sParams.sSettingsType == "full":\n+                    -a $singlePaired.sParams.anchor_length\n+                    -m $singlePaired.sParams.splice_mismatches\n+                    -i $singlePaired.sParams.min_intron_length\n+                    -I $singlePaired.sParams.max_intron_length\n+                    -F $singlePaired.sParams.junction_filter\n+                    -g $singlePaired.sParams.max_multihits\n+                    --min-segment-intron $singlePaired.sParams.min_segment_intron\n+                    --max-segment-intron $singlePaired.sParams.max_segment_intron\n+                    --initial-read-mismatches=$singlePaired.sParams.initial_read_mismatches\n+                    --seg-mismatches=$singlePaired.sParams.seg_mismatches\n+                    --seg-length=$singlePaired.sParams.seg_length\n+                    --library-type=$singlePaired.sParams.library_type\n+                    \n+                    ## Indel search.\n+                    #if $singlePaired.sParams.indel_search.allow_indel_search == "Yes":\n+                        ## --allow-indels\n+                        --max-insertion-length $singlePaired.sParams.indel_search.max_insertion_length\n+                        --max-deletion-length $singlePaired.sParams.indel_search.max_deletion_length\n+                    #else:\n+                        --no-novel-indels\n+                    #end if\n+\n+                    ## Supplying junctions parameters.\n+                    #if $singlePaired.sParams.own_junctions.use_junctions == "Yes":\n+                        #if $singlePaired.sParams.own_junctions.gene_model_ann.use_annotations == "Yes":\n+                            -G $singlePaired.sParams.own_junctions.gene_model_ann.gene_annotation_model\n+                        #end if\n+                        #if $singlePaired.sParams.own_junctions.raw_juncs.use_juncs == "Yes":\n+                            -j $singlePaired.sParams.own_junctions.raw_juncs.raw_juncs\n+                        #end if\n+                        ## TODO: No idea why a string cast is necessary, but it is:\n+                        #if str($singlePaired.sParams.own_junctions.no_novel_juncs) == "Yes":\n+                            --no-novel-juncs\n+                        #end if\n+                    #end if\n+\n+                    #if $singlePaired.sParams.closure_search.use_search == "Yes":\n+                        --closure-search\n+                        --min-closure-exon $singlePaired.sParams.closure_search.min_c'..b'hen such a pair is supported by a split segment alignment of a long read. The default is 500000.\n+  -F/--min-isoform-fraction 0.0-1.0 TopHat filters out junctions supported by too few alignments. Suppose a junction spanning two exons, is supported by S reads. Let the average depth of coverage of \n+                                    exon A be D, and assume that it is higher than B. If S / D is less than the minimum isoform fraction, the junction is not reported. A value of zero disables the \n+                                    filter. The default is 0.15.\n+  -g/--max-multihits INT            Instructs TopHat to allow up to this many alignments to the reference for a given read, and suppresses all alignments for reads with more than this many \n+                                    alignments. The default is 40.\n+  -G/--GTF [GTF 2.2 file]           Supply TopHat with a list of gene model annotations. TopHat will use the exon records in this file to build a set of known splice junctions for each gene, and will attempt to align reads to these junctions even if they would not normally be covered by the initial mapping.\n+  -j/--raw-juncs [juncs file]       Supply TopHat with a list of raw junctions. Junctions are specified one per line, in a tab-delimited format. Records look like: [chrom] [left] [right] [+/-], left and right are zero-based coordinates, and specify the last character of the left sequenced to be spliced to the first character of the right sequence, inclusive.\n+  -no-novel-juncs                   Only look for junctions indicated in the supplied GFF file. (ignored without -G)\n+  --no-closure-search               Disables the mate pair closure-based search for junctions. Currently, has no effect - closure search is off by default.\n+  --closure-search                  Enables the mate pair closure-based search for junctions. Closure-based search should only be used when the expected inner distance between mates is small (about or less than 50bp)\n+  --no-coverage-search              Disables the coverage based search for junctions.\n+  --coverage-search                 Enables the coverage based search for junctions. Use when coverage search is disabled by default (such as for reads 75bp or longer), for maximum sensitivity.\n+  --microexon-search                With this option, the pipeline will attempt to find alignments incident to microexons. Works only for reads 50bp or longer.\n+  --butterfly-search                TopHat will use a slower but potentially more sensitive algorithm to find junctions in addition to its standard search. Consider using this if you expect that your experiment produced a lot of reads from pre-mRNA, that fall within the introns of your transcripts.\n+  --segment-mismatches              Read segments are mapped independently, allowing up to this many mismatches in each segment alignment. The default is 2.\n+  --segment-length                  Each read is cut up into segments, each at least this long. These segments are mapped independently. The default is 25.\n+  --min-closure-exon                During closure search for paired end reads, exonic hops in the potential splice graph must be at least this long. The default is 50.\n+  --min-closure-intron              The minimum intron length that may be found during closure search. The default is 50.\n+  --max-closure-intron              The maximum intron length that may be found during closure search. The default is 5000.\n+  --min-coverage-intron             The minimum intron length that may be found during coverage search. The default is 50.\n+  --max-coverage-intron             The maximum intron length that may be found during coverage search. The default is 20000.\n+  --min-segment-intron              The minimum intron length that may be found during split-segment search. The default is 50.\n+  --max-segment-intron              The maximum intron length that may be found during split-segment search. The default is 500000.\n+    </help>\n+</tool>\n'
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/DiffExpAnal/wrappGSNAP.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/DiffExpAnal/wrappGSNAP.py Mon Apr 29 03:20:15 2013 -0400
[
@@ -0,0 +1,76 @@
+#! /usr/bin/env python
+
+import os, sys, subprocess,tempfile
+from optparse import OptionParser
+
+def stop_err(msg):
+    sys.stderr.write('%s\n' % msg)
+    sys.exit()
+
+def __main__():
+    #Parse Command Line
+    description = "GMAP/GSNAP version:2012-12-20."
+    parser = OptionParser(description = description)
+    parser.add_option("-d", "--genomeName", dest="genomeName", help="Define the reference genome name.[compulsory]")
+    parser.add_option("-o", "--outputFile", dest="outputfile", help="output[compulsory]")
+    #parser.add_option("-D", "--workingDir", dest="workingdir", help="Define the directory of writing reference genome index.[compulsory]")
+    parser.add_option("-k", "--kmer", dest="kmer", default=12, help="Choose kmer value (<=16), a big kmer value can take more RAM(4Go).[compulsory]")
+    parser.add_option("-i", "--inputFasta", dest="inputFastaFile", help="Reference genome file, fasta format.[compulsory]")
+    parser.add_option("-q", "--inputFastq", dest="inputFastqFile", help="Input fastq file.")
+    parser.add_option("-p", "--pairedEnd", dest="pairedEndFile", default=None, help="Input paired-end fastq file.")
+    parser.add_option("-A", "--outputFormat", dest="outputFormat", default="sam", help="Choose an output format [sam, goby (need to re-compile with appropriate options)].")
+    (options, args) = parser.parse_args()    
+
+    #If workingDir dose not exist, should create before run the job.
+    
+    workingDir = os.path.dirname(options.inputFastaFile)
+    
+    cmds = []
+    cmd_setup = "gmap_setup -d %s -D %s -k %s %s" % (options.genomeName, workingDir, options.kmer, options.inputFastaFile)
+    cmds.append(cmd_setup)
+    cmd_make_coords = "make -f Makefile.%s coords" % options.genomeName 
+    cmds.append(cmd_make_coords)
+    cmd_make_gmapdb = "make -f Makefile.%s gmapdb" % options.genomeName
+    cmds.append(cmd_make_gmapdb)
+    cmd_make_install = "make -f Makefile.%s install" % options.genomeName
+    cmds.append(cmd_make_install)
+    cmd_run = "gsnap -d %s -D %s -A %s %s " % (options.genomeName, workingDir, options.outputFormat, options.inputFastqFile)
+    if options.pairedEndFile != None:
+        cmd_run += "%s" % options.pairedEndFile
+    cmd_run += " > %s" % options.outputfile
+    cmds.append(cmd_run)
+    
+    tmp_files = []
+    for i in range(len(cmds)):
+        try:
+            tmp_out = tempfile.NamedTemporaryFile().name
+            tmp_files.append(tmp_out)
+            tmp_stdout = open(tmp_out, 'wb')
+            tmp_err = tempfile.NamedTemporaryFile().name
+            tmp_files.append(tmp_err)
+            tmp_stderr = open(tmp_err, 'wb')
+            proc = subprocess.Popen(args=cmds[i], shell=True, cwd=".", stdout=tmp_stdout, stderr=tmp_stderr)
+            returncode = proc.wait()
+            tmp_stderr.close()
+            #get stderr, allowing for case where it's very large
+            tmp_stderr = open(tmp_err, 'rb')
+            stderr = ''
+            buffsize = 1048576
+            try:
+                while True:
+                    stderr += tmp_stderr.read(buffsize)
+                    if not stderr or len(stderr) % buffsize != 0:
+                        break
+            except OverflowError:
+                pass
+            tmp_stdout.close()
+            tmp_stderr.close()
+            if returncode != 0:
+                raise Exception, stderr
+        except Exception, e:
+            stop_err('Error in :\n' + str(e))
+    
+    for tmp_file in tmp_files:
+        os.remove(tmp_file)
+    
+if __name__=="__main__":__main__()
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/File.class
b
Binary file SMART/Java/File.class has changed
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/File.java
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/Java/File.java Mon Apr 29 03:20:15 2013 -0400
b
@@ -0,0 +1,55 @@
+/**
+ *
+ * Copyright INRA-URGI 2009-2010
+ * 
+ * This software is governed by the CeCILL license under French law and
+ * abiding by the rules of distribution of free software. You can use,
+ * modify and/ or redistribute the software under the terms of the CeCILL
+ * license as circulated by CEA, CNRS and INRIA at the following URL
+ * "http://www.cecill.info".
+ * 
+ * As a counterpart to the access to the source code and rights to copy,
+ * modify and redistribute granted by the license, users are provided only
+ * with a limited warranty and the software's author, the holder of the
+ * economic rights, and the successive licensors have only limited
+ * liability.
+ * 
+ * In this respect, the user's attention is drawn to the risks associated
+ * with loading, using, modifying and/or developing or reproducing the
+ * software by the user in light of its specific status of free software,
+ * that may mean that it is complicated to manipulate, and that also
+ * therefore means that it is reserved for developers and experienced
+ * professionals having in-depth computer knowledge. Users are therefore
+ * encouraged to load and test the software's suitability as regards their
+ * requirements in conditions enabling the security of their systems and/or
+ * data to be ensured and, more generally, to use and operate it in the
+ * same conditions as regards security.
+ * 
+ * The fact that you are presently reading this means that you have had
+ * knowledge of the CeCILL license and that you accept its terms.
+ *
+ */
+public class File {
+  String name;
+  String formatType;
+  String format;
+
+
+  public File(String name, String type, String format) {
+    this.name       = name;
+    this.formatType = type;
+    this.format     = format;
+  }
+
+  public String getName() {
+    return this.name;
+  }
+
+  public String getFormatType() {
+    return this.formatType;
+  }
+
+  public String getFormat() {
+    return this.format;
+  }
+}
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Files.class
b
Binary file SMART/Java/Files.class has changed
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Files.java
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/Java/Files.java Mon Apr 29 03:20:15 2013 -0400
b
@@ -0,0 +1,75 @@
+/**
+ *
+ * Copyright INRA-URGI 2009-2010
+ * 
+ * This software is governed by the CeCILL license under French law and
+ * abiding by the rules of distribution of free software. You can use,
+ * modify and/ or redistribute the software under the terms of the CeCILL
+ * license as circulated by CEA, CNRS and INRIA at the following URL
+ * "http://www.cecill.info".
+ * 
+ * As a counterpart to the access to the source code and rights to copy,
+ * modify and redistribute granted by the license, users are provided only
+ * with a limited warranty and the software's author, the holder of the
+ * economic rights, and the successive licensors have only limited
+ * liability.
+ * 
+ * In this respect, the user's attention is drawn to the risks associated
+ * with loading, using, modifying and/or developing or reproducing the
+ * software by the user in light of its specific status of free software,
+ * that may mean that it is complicated to manipulate, and that also
+ * therefore means that it is reserved for developers and experienced
+ * professionals having in-depth computer knowledge. Users are therefore
+ * encouraged to load and test the software's suitability as regards their
+ * requirements in conditions enabling the security of their systems and/or
+ * data to be ensured and, more generally, to use and operate it in the
+ * same conditions as regards security.
+ * 
+ * The fact that you are presently reading this means that you have had
+ * knowledge of the CeCILL license and that you accept its terms.
+ *
+ */
+import java.util.*;
+
+public class Files {
+  HashMap <String, File> files;  
+
+  public Files () {
+    files = new HashMap < String, File> ();
+  }
+
+  public void addFile(String fileName, String type, String format) {
+    this.addFile(new File(fileName, type, format));
+  }
+
+  public void addFile(File file) {
+    files.put(file.name, file);
+  }
+
+  public void clear() {
+    files.clear();
+  }
+
+  public String getType(String fileName) {
+    if (fileName == null) {
+      System.out.println("Error! Looking for format of empty file name!");
+    }
+    if (! files.containsKey(fileName)) {
+      System.out.println("Oops! Format type of file " + fileName + " is not found!");
+      return null;
+    }
+    return files.get(fileName).formatType;
+  }
+
+  public String getFormat(String fileName) {
+    if (fileName == null) {
+      System.out.println("Error! Looking for format of empty file name!");
+    }
+    if (! files.containsKey(fileName)) {
+      System.out.println("Oops! Format of file " + fileName + " is not found!");
+      return null;
+    }
+    return files.get(fileName).format;
+  }
+}
+
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/FormatType.class
b
Binary file SMART/Java/FormatType.class has changed
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/FormatType.java
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/Java/FormatType.java Mon Apr 29 03:20:15 2013 -0400
b
@@ -0,0 +1,64 @@
+/**
+ *
+ * Copyright INRA-URGI 2009-2010
+ * 
+ * This software is governed by the CeCILL license under French law and
+ * abiding by the rules of distribution of free software. You can use,
+ * modify and/ or redistribute the software under the terms of the CeCILL
+ * license as circulated by CEA, CNRS and INRIA at the following URL
+ * "http://www.cecill.info".
+ * 
+ * As a counterpart to the access to the source code and rights to copy,
+ * modify and redistribute granted by the license, users are provided only
+ * with a limited warranty and the software's author, the holder of the
+ * economic rights, and the successive licensors have only limited
+ * liability.
+ * 
+ * In this respect, the user's attention is drawn to the risks associated
+ * with loading, using, modifying and/or developing or reproducing the
+ * software by the user in light of its specific status of free software,
+ * that may mean that it is complicated to manipulate, and that also
+ * therefore means that it is reserved for developers and experienced
+ * professionals having in-depth computer knowledge. Users are therefore
+ * encouraged to load and test the software's suitability as regards their
+ * requirements in conditions enabling the security of their systems and/or
+ * data to be ensured and, more generally, to use and operate it in the
+ * same conditions as regards security.
+ * 
+ * The fact that you are presently reading this means that you have had
+ * knowledge of the CeCILL license and that you accept its terms.
+ *
+ */
+import java.util.*;
+
+public class FormatType {
+  String type;
+  Vector < String > formats;
+
+  public FormatType (String type) {
+    this.type    = type;
+    this.formats = new Vector < String > ();
+  }
+
+  public String getType () {
+    return this.type;
+  }
+
+  public void addFormat (String format) {
+    formats.add(format);
+  }
+
+  public boolean containsFormat (String format) {
+    for (int i = 0; i < formats.size(); i++) {
+      if (((String) formats.get(i)).compareToIgnoreCase(format) == 0) {
+        return true;
+      }
+    }
+    return false;
+  }
+
+  public Vector < String > getFormats () {
+    return formats;
+  }
+}
+
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/FormatsContainer.class
b
Binary file SMART/Java/FormatsContainer.class has changed
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/FormatsContainer.java
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/Java/FormatsContainer.java Mon Apr 29 03:20:15 2013 -0400
b
@@ -0,0 +1,90 @@
+/**
+ *
+ * Copyright INRA-URGI 2009-2010
+ * 
+ * This software is governed by the CeCILL license under French law and
+ * abiding by the rules of distribution of free software. You can use,
+ * modify and/ or redistribute the software under the terms of the CeCILL
+ * license as circulated by CEA, CNRS and INRIA at the following URL
+ * "http://www.cecill.info".
+ * 
+ * As a counterpart to the access to the source code and rights to copy,
+ * modify and redistribute granted by the license, users are provided only
+ * with a limited warranty and the software's author, the holder of the
+ * economic rights, and the successive licensors have only limited
+ * liability.
+ * 
+ * In this respect, the user's attention is drawn to the risks associated
+ * with loading, using, modifying and/or developing or reproducing the
+ * software by the user in light of its specific status of free software,
+ * that may mean that it is complicated to manipulate, and that also
+ * therefore means that it is reserved for developers and experienced
+ * professionals having in-depth computer knowledge. Users are therefore
+ * encouraged to load and test the software's suitability as regards their
+ * requirements in conditions enabling the security of their systems and/or
+ * data to be ensured and, more generally, to use and operate it in the
+ * same conditions as regards security.
+ * 
+ * The fact that you are presently reading this means that you have had
+ * knowledge of the CeCILL license and that you accept its terms.
+ *
+ */
+import java.util.*;
+
+public class FormatsContainer {
+
+  HashMap < String, FormatType > formatTypes;
+
+
+  public FormatsContainer() {
+    this.formatTypes = new HashMap < String, FormatType > ();
+  }
+
+
+  public void addFormat(String type, String format) {
+    FormatType formatType;
+    if (formatTypes.containsKey(type)) {
+      formatType = this.formatTypes.get(type);
+    }
+    else {
+      formatType = new FormatType(type);
+      this.formatTypes.put(type, formatType);
+    }
+    formatType.addFormat(format);
+  }
+
+
+  public Vector < String > getFormatTypes () {
+    Vector < String > v = new Vector < String > ();
+    v.addAll(this.formatTypes.keySet());
+    return v;
+  }
+
+
+  public FormatType getFormats (String type) {
+    if (! formatTypes.containsKey(type)) {
+      System.out.print("Format type " + type + " is unavailable. Got: ");
+      Iterator it = formatTypes.entrySet().iterator();
+      while (it.hasNext()) {
+        Map.Entry pairs = (Map.Entry) it.next();
+        System.out.print(pairs.getKey() + " ");
+      }
+      System.out.println();
+    }
+    return formatTypes.get(type);
+  }
+
+
+  public String getFormatType (String format) {
+    for (Iterator it = formatTypes.keySet().iterator(); it.hasNext(); ) {
+      Object type       =  it.next();
+      Object formatType = formatTypes.get(type);
+      if (((FormatType) formatType).containsFormat(format)) {
+        return (String) type;
+      }
+    }
+    return null;
+  }
+}
+
+
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/FormatsReader.class
b
Binary file SMART/Java/FormatsReader.class has changed
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/FormatsReader.java
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/Java/FormatsReader.java Mon Apr 29 03:20:15 2013 -0400
[
@@ -0,0 +1,83 @@
+/**
+ *
+ * Copyright INRA-URGI 2009-2010
+ * 
+ * This software is governed by the CeCILL license under French law and
+ * abiding by the rules of distribution of free software. You can use,
+ * modify and/ or redistribute the software under the terms of the CeCILL
+ * license as circulated by CEA, CNRS and INRIA at the following URL
+ * "http://www.cecill.info".
+ * 
+ * As a counterpart to the access to the source code and rights to copy,
+ * modify and redistribute granted by the license, users are provided only
+ * with a limited warranty and the software's author, the holder of the
+ * economic rights, and the successive licensors have only limited
+ * liability.
+ * 
+ * In this respect, the user's attention is drawn to the risks associated
+ * with loading, using, modifying and/or developing or reproducing the
+ * software by the user in light of its specific status of free software,
+ * that may mean that it is complicated to manipulate, and that also
+ * therefore means that it is reserved for developers and experienced
+ * professionals having in-depth computer knowledge. Users are therefore
+ * encouraged to load and test the software's suitability as regards their
+ * requirements in conditions enabling the security of their systems and/or
+ * data to be ensured and, more generally, to use and operate it in the
+ * same conditions as regards security.
+ * 
+ * The fact that you are presently reading this means that you have had
+ * knowledge of the CeCILL license and that you accept its terms.
+ *
+ */
+import java.util.*;
+import java.io.File;
+import java.io.*;
+
+
+public class FormatsReader {
+
+  String fileName;
+  Vector < FormatType > formatTypes;
+  Vector < String > typeNames;
+
+
+  public FormatsReader(String fileName) {
+    this.fileName    = fileName;  
+    this.formatTypes = new Vector < FormatType > ();
+  }
+
+
+  public boolean read() {
+    File file = new File(this.fileName);
+
+    try {
+      BufferedReader reader = new BufferedReader(new FileReader(file));
+      String     line = null;
+      String[]   lineElements;
+      String[]   formats;
+      String     typeName;
+
+      while ((line = reader.readLine()) != null) {
+        if (line.length() > 0) {
+          lineElements = line.split(":");
+          typeName     = lineElements[0].trim();
+          formats      = lineElements[1].split(",");
+          for (int i = 0; i < formats.length; i++) {
+            Global.formats.addFormat(typeName, formats[i].trim());
+          }
+        }
+      }
+
+      reader.close();
+    }
+    catch (FileNotFoundException e) {
+      return false;
+    }
+    catch (IOException e) {
+      return false;
+    }
+
+    return true;
+  }
+}
+
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Global.class
b
Binary file SMART/Java/Global.class has changed
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Global.java
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/Java/Global.java Mon Apr 29 03:20:15 2013 -0400
b
@@ -0,0 +1,70 @@
+/**
+ *
+ * Copyright INRA-URGI 2009-2010
+ * 
+ * This software is governed by the CeCILL license under French law and
+ * abiding by the rules of distribution of free software. You can use,
+ * modify and/ or redistribute the software under the terms of the CeCILL
+ * license as circulated by CEA, CNRS and INRIA at the following URL
+ * "http://www.cecill.info".
+ * 
+ * As a counterpart to the access to the source code and rights to copy,
+ * modify and redistribute granted by the license, users are provided only
+ * with a limited warranty and the software's author, the holder of the
+ * economic rights, and the successive licensors have only limited
+ * liability.
+ * 
+ * In this respect, the user's attention is drawn to the risks associated
+ * with loading, using, modifying and/or developing or reproducing the
+ * software by the user in light of its specific status of free software,
+ * that may mean that it is complicated to manipulate, and that also
+ * therefore means that it is reserved for developers and experienced
+ * professionals having in-depth computer knowledge. Users are therefore
+ * encouraged to load and test the software's suitability as regards their
+ * requirements in conditions enabling the security of their systems and/or
+ * data to be ensured and, more generally, to use and operate it in the
+ * same conditions as regards security.
+ * 
+ * The fact that you are presently reading this means that you have had
+ * knowledge of the CeCILL license and that you accept its terms.
+ *
+ */
+import java.util.Vector;
+import java.util.HashMap;
+import javax.swing.DefaultListModel;
+import javax.swing.JButton;
+import javax.swing.JTextField;
+
+public class Global {
+
+  public static int logAreaSize = 100;
+
+  public static String smartConfFileName = "smart.conf";
+
+  public static String smartProgramsFileName = "programs.txt";
+
+  public static String smartFormatsFileName = "formats.txt";
+
+  public static String pythonPath = new String();
+
+  public static String pythonCommand = "python";
+
+  public static String mysqlCommand = "mysql";
+
+  public static String rCommand = "R";
+
+  public static Files files = new Files();
+
+  public static Vector < String > fileNames = new Vector < String >();
+
+  public static FormatsContainer formats = new FormatsContainer();
+
+  public static boolean programRunning = false;
+
+  public static HashMap < JButton, JTextField > otherFilesChooser = new HashMap < JButton, JTextField >();
+
+  public static HashMap < JButton, JTextField > otherDirectoriesChooser = new HashMap < JButton, JTextField >();
+
+  public static HashMap < JButton, JTextField > otherFileConcatenationChooser = new HashMap < JButton, JTextField >();
+
+}
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Installer/Old/PasswordAsker.java
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/Java/Installer/Old/PasswordAsker.java Mon Apr 29 03:20:15 2013 -0400
b
@@ -0,0 +1,87 @@
+import java.awt.*;
+import java.awt.event.*;
+import javax.swing.*;
+import java.util.concurrent.CountDownLatch;
+
+public class PasswordAsker {
+
+  static String password;
+  static JFrame frame;
+  static CountDownLatch latch;
+
+
+  public PasswordAsker() {
+    password = null;
+    javax.swing.SwingUtilities.invokeLater(new Runnable() {
+      public void run() {
+        createAndShowGUI();
+      }
+    });
+    latch = new CountDownLatch(1);
+  }
+
+
+  private static void createAndShowGUI() {
+    //Create and set up the window.
+    frame = new JFrame("Password");
+    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+    frame.setContentPane(setMainPane());
+
+    //Display the window.
+    frame.pack();
+    frame.setVisible(true);
+  }
+
+
+  private static JPanel setMainPane() {
+    JPanel rootPanel = new JPanel(false);
+    rootPanel.setLayout(new GridLayout(0, 1));
+
+    JPanel infoPanel = new JPanel(false);
+    JLabel infoLabel = new JLabel("Please write here the password that you entered for the mySQL root account.\r\nNo information is stored nor sent. I promise.");
+    infoPanel.add(infoLabel);
+
+    JPanel passPanel = new JPanel(false);
+    passPanel.setLayout(new GridLayout(1, 0));
+    JLabel passLabel = new JLabel("password");
+    final JTextField passText = new JTextField(20);
+    passLabel.setLabelFor(passText);
+    passPanel.add(passLabel);
+    passPanel.add(passText);
+
+    JPanel  okPanel  = new JPanel(false);
+    JButton okButton = new JButton("OK");
+    okPanel.add(okButton);
+
+    okButton.addActionListener(new ActionListener() {
+      public void actionPerformed(ActionEvent e) {
+        password = passText.getText();
+        frame.setVisible(false);
+        frame.dispose();
+        latch.countDown();
+      }
+    });
+
+    rootPanel.add(infoPanel);
+    rootPanel.add(passPanel);
+    rootPanel.add(okPanel);
+
+    return rootPanel;
+  }
+
+
+  public boolean waitForPassword() {
+    try {
+      latch.await();
+    }
+    catch (InterruptedException e) {
+      return false;
+    }
+    return true;
+  }
+
+
+  public String getPassword() {
+    return password;
+  }
+}
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Installer/Old/SmartInstaller.java
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/Java/Installer/Old/SmartInstaller.java Mon Apr 29 03:20:15 2013 -0400
[
@@ -0,0 +1,167 @@
+import java.util.*;
+import java.awt.*;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.io.*;
+import javax.swing.*;
+import javax.swing.filechooser.*;
+import javax.swing.border.*;
+import javax.swing.SwingUtilities;
+import java.net.*;
+
+public class SmartInstaller extends JPanel implements ActionListener {
+  int       BUFFER = 1024;
+
+  JFrame    mainFrame;
+  JTextArea logArea;
+
+  // configuration chooser buttons
+  String       configurations[] = {"32 bits", "64 bits"};
+  JRadioButton configurationButtons[];
+
+  // program chooser buttons
+  String    programChoosers[] = {"R", "R Color Brewer Package", "R HMisc Package", "MySQL", "MySQL account", "Python 2.6", "Python DB", "S-MART"};
+  JCheckBox programChooserButtons[];
+
+  JButton   goButton;
+
+  // install directory
+  JButton    installDirectoryChooserButton;
+  JTextField installDirectoryChooserTextField;
+
+
+  public SmartInstaller() {
+    super();
+
+    Box box = Box.createVerticalBox();
+
+    // Header
+    JPanel       headerPanel = new JPanel(false);
+    JTextArea    headerArea  = new JTextArea("This is the S-MART installation tool.\r\nIt will download and install the needed softwares, as well as S-MART itself.\r\nYou can unselect the software that you already have installed.\r\nDuring the installation, accept all the default parameters.\r\nPlease remember the root password if you install MySQL!");
+    TitledBorder headerBorder = BorderFactory.createTitledBorder("Wellcome to the S-MART installer!");
+    headerArea.setEditable(false);
+    headerArea.setBackground(headerPanel.getBackground());
+    headerPanel.add(headerArea);
+    headerPanel.setBorder(headerBorder);
+
+
+    // Configuration
+    JPanel configurationPanel = new JPanel(false);
+    configurationPanel.setLayout(new GridLayout(1, 0));
+    configurationButtons = new JRadioButton[configurations.length];
+    ButtonGroup configurationGroup = new ButtonGroup();
+    for (int i = 0; i < configurations.length; i++) {
+      JRadioButton button = new JRadioButton(configurations[i]);
+      configurationPanel.add(button);
+      configurationButtons[i] = button;
+      configurationGroup.add(button);
+    }
+    configurationButtons[0].setSelected(true);
+    TitledBorder configurationBorder = BorderFactory.createTitledBorder("Configuration");
+    configurationPanel.setBorder(configurationBorder);
+
+
+    // Program chooser panel
+    JPanel programPanel = new JPanel(false);
+    programPanel.setLayout(new GridLayout(0, 1));
+
+    JLabel programLabel = new JLabel("Choose which programs to install:");
+    programPanel.add(programLabel);
+    programChooserButtons = new JCheckBox[programChoosers.length];
+    for (int i = 0; i < programChoosers.length; i++) {
+      JCheckBox button = new JCheckBox(programChoosers[i]);
+      button.setSelected(true);
+      programPanel.add(button);
+      programChooserButtons[i] = button;
+    }
+    TitledBorder programBorder = BorderFactory.createTitledBorder("Programs");
+    programPanel.setBorder(programBorder);
+
+    // Install directory chooser
+    JPanel installDirectoryChooserPanel = new JPanel(false);
+    installDirectoryChooserPanel.setLayout(new GridLayout(1, 0));
+    JLabel installDirectoryChooserLabel = new JLabel("Choose a directory to install S-MART: ");
+    installDirectoryChooserTextField = new JTextField();
+    installDirectoryChooserButton = new JButton("Open...");
+    installDirectoryChooserButton.addActionListener(this);
+
+    installDirectoryChooserPanel.add(installDirectoryChooserLabel);
+    installDirectoryChooserPanel.add(installDirectoryChooserTextField);
+    installDirectoryChooserPanel.add(installDirectoryChooserButton);
+    TitledBorder installDirectoryChooserBorder = BorderFactory.createTitledBorder("Installation directory");
+    installDirectoryChooserPanel.setBorder(installDirectoryChooserBorder);
+
+    // GO!
+    JPanel goPanel = new JPanel(false);
+    goButton = new JButton("GO!");
+    goButton.addActionListener(this);
+    goButton.setSelected(true);
+    goPanel.add(goButton);
+    TitledBorder goBorder = BorderFactory.createTitledBorder("Start install");
+    goPanel.setBorder(goBorder);
+
+    // Log
+    logArea = new JTextArea(10, 120);
+    logArea.setFont(new Font("Monospaced", logArea.getFont().getStyle(), logArea.getFont().getSize()));
+    JScrollPane logScroll  = new JScrollPane(logArea, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
+    TitledBorder logBorder = BorderFactory.createTitledBorder("Log");
+    logScroll.setBorder(logBorder);
+
+    GridLayout horizontalLayout = new GridLayout(1, 0);
+
+    box.add(headerPanel);
+    box.add(configurationPanel);
+    box.add(programPanel);
+    box.add(installDirectoryChooserPanel);
+    box.add(goPanel);
+    box.add(logScroll);
+
+    add(box);
+  }
+
+
+  public void actionPerformed(ActionEvent e) {
+
+    // Install directories chooser
+    if (e.getSource() == goButton) {
+      boolean[] selectedPrograms = new boolean[programChoosers.length];
+      for (int i = 0; i < programChoosers.length; i++) {
+        selectedPrograms[i] = programChooserButtons[i].isSelected();
+      }
+      SmartInstallerTask task = new SmartInstallerTask(logArea, selectedPrograms, installDirectoryChooserTextField.getText(), (configurationButtons[0].isSelected())? 0: 1);
+      task.execute();
+    }
+    // Install directories chooser
+    else if (e.getSource() == installDirectoryChooserButton) {
+      JFileChooser chooser = new JFileChooser();
+      chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
+      if (chooser.showOpenDialog(mainFrame) == JFileChooser.APPROVE_OPTION) {
+        installDirectoryChooserTextField.setText(chooser.getSelectedFile().getPath());
+      }
+    }
+  }
+
+  private static void createAndShowGUI() {
+    // Create and set up the window.
+    JFrame mainFrame = new JFrame("S-Mart Installer");
+    mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+
+    //Create and set up the content pane.
+    JComponent newContentPane = new SmartInstaller();
+    newContentPane.setOpaque(true);
+    mainFrame.setContentPane(newContentPane);
+
+    // Display the window.
+    mainFrame.pack();
+    mainFrame.setVisible(true);
+  }
+
+
+  public static void main(String[] args) {
+    javax.swing.SwingUtilities.invokeLater(new Runnable() {
+      public void run() {
+        createAndShowGUI();
+      }
+    });
+  }
+}
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Installer/Old/SmartInstallerTask.java
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/Java/Installer/Old/SmartInstallerTask.java Mon Apr 29 03:20:15 2013 -0400
[
b'@@ -0,0 +1,455 @@\n+import java.util.*;\n+import java.awt.event.ActionEvent;\n+import java.awt.event.ActionListener;\n+import java.io.*;\n+import javax.swing.*;\n+import javax.swing.filechooser.*;\n+import javax.swing.border.*;\n+import javax.swing.SwingUtilities;\n+import java.net.*;\n+import java.util.Stack;\n+import java.util.zip.ZipEntry;\n+import java.util.zip.ZipInputStream;\n+\n+public class SmartInstallerTask extends SwingWorker<Boolean, String> {\n+\n+  int BUFFER = 1024;\n+\n+  int       architecture         = 0;\n+  String    installDirectoryName = null;\n+  JTextArea logArea              = null;\n+  boolean[] selectedPrograms     = null;\n+\n+  // program chooser buttons\n+  String    programChoosers[] = {"R", "R Color Brewer Package", "R HMisc Package", "MySQL", "MySQL account", "Python 2.6", "Python DB", "S-MART"};\n+\n+  // Web addresses for the tools\n+  String packageAddresses[][] = {\n+    {"http://cran.cict.fr/bin/windows/base/R-2.11.0-win32.exe", "http://cran.cict.fr/bin/windows64/base/R-2.11.0-win64.exe"},\n+    {"", ""},\n+    {"", ""},\n+    {"http://mirrors.ircam.fr/pub/mysql/Downloads/MySQL-5.1/mysql-essential-5.1.47-win32.msi", "http://mirrors.ircam.fr/pub/mysql/Downloads/MySQL-5.1/mysql-essential-5.1.47-winx64.msi"},\n+    {"", ""},\n+    {"http://www.python.org/ftp/python/2.6.5/python-2.6.5.msi", "http://www.python.org/ftp/python/2.6.5/python-2.6.5.amd64.msi"},\n+    {"http://www.technicalbard.com/files/MySQL-python-1.2.2.win32-py2.6.exe", "http://www.technicalbard.com/files/MySQL-python-1.2.2.win32-py2.6.exe"},\n+    {"http://urgi.versailles.inra.fr/download/s-mart/s-mart.zip", "http://urgi.versailles.inra.fr/download/s-mart/s-mart.zip"}\n+  };\n+\n+  // Packages to install\n+  String rPackages[] = {"RColorBrewer", "Hmisc"};\n+\n+  // Script lines\n+  String scriptLines[][] = {\n+    {"\\"<INSTALLDIR>\\\\R-2.11.0-win32.exe\\"", "\\"<INSTALLDIR>\\\\R-2.11.0-win64.exe\\""},\n+    {"\\"<RFILE>\\" CMD BATCH \\"<INSTALLDIR>\\\\installRColorBrewer.R\\"", "\\"<RFILE>\\" CMD BATCH \\"<INSTALLDIR>\\\\installRColorBrewer.R\\""},\n+    {"\\"<RFILE>\\" CMD BATCH \\"<INSTALLDIR>\\\\installHmisc.R\\"", "\\"<RFILE>\\" CMD BATCH \\"<INSTALLDIR>\\\\installHmisc.R\\""},\n+    {"msiexec /i \\"<INSTALLDIR>\\\\mysql-essential-5.1.47-win32.msi\\"", "msiexec /i \\"<INSTALLDIR>\\\\mysql-essential-5.1.47-winx64.msi\\""},\n+    {"", ""},\n+    {"msiexec /i \\"<INSTALLDIR>\\\\python-2.6.5.msi\\"", "msiexec /i \\"<INSTALLDIR>\\\\python-2.6.5.amd64.msi\\""},\n+    {"<INSTALLDIR>\\\\MySQL-python-1.2.2.win32-py2.6.exe", "<INSTALLDIR>\\\\MySQL-python-1.2.2.win32-py2.6.exe"},\n+    {"", ""}\n+  };\n+\n+  // Files to uncompress\n+  String compressedFiles[][] = {\n+    {"", ""},\n+    {"", ""},\n+    {"", ""},\n+    {"", ""},\n+    {"", ""},\n+    {"", ""},\n+    {"", ""},\n+    {"<INSTALLDIR>\\\\s-mart.zip", "<INSTALLDIR>\\\\s-mart.zip"}\n+  };\n+\n+\n+  public SmartInstallerTask(JTextArea ta, boolean[] b, String s, int a) {\n+    logArea              = ta;\n+    selectedPrograms     = b;\n+    installDirectoryName = s;\n+    architecture         = a;\n+  }\n+\n+\n+  @Override\n+  public Boolean doInBackground() {\n+    boolean installOk;\n+    publish("Starting install\\n");\n+    writeFiles();\n+    for (int i = 0; i < selectedPrograms.length; i++) {\n+      if (selectedPrograms[i]) {\n+        if (! install(i)) {\n+          return Boolean.FALSE;\n+        }\n+      }\n+    }\n+    removeFiles();\n+    setEnvironmentVariables();\n+    publish("Ending install\\n");\n+    return Boolean.TRUE;\n+  }\n+\n+\n+  @Override\n+  protected void process(List<String> chunks) {\n+    for (String chunk: chunks) {\n+      logArea.append(chunk);\n+    }\n+  }\n+\n+\n+  private boolean launch(String command) {\n+    return realLaunch(new ProcessBuilder(command), command);\n+  }\n+\n+  private boolean launch(String[] command) {\n+    return realLaunch(new ProcessBuilder(command), Arrays.toString(command));\n+  }\n+\n+  private boolean realLaunch(ProcessBuilder pb, String command) {\n+    BufferedReader outputReader;\n+    pb                          = pb.redirectErrorStream(true);\n+    Process        process   '..b' boolean uncompressPackage(int element) {\n+    String file = compressedFiles[element][architecture];\n+    if (! "".equals(file)) {\n+      file = replaceSubstring(file);\n+      publish("    Starting uncompressing file \'" + file + "\'\\n");\n+      try {\n+        FileInputStream     fis = new FileInputStream(file);\n+        BufferedInputStream bis = new BufferedInputStream(fis);\n+        ZipInputStream      zis = new ZipInputStream(bis);\n+        ZipEntry            entry;\n+        while ((entry = zis.getNextEntry()) != null) {\n+          if (! entry.isDirectory()) {\n+            File newFile = new File(installDirectoryName + File.separator + entry.getName());\n+            // create parent directories\n+            File upDirectory = newFile.getParentFile();\n+            while (upDirectory != null){\n+              if (! upDirectory.exists()) {\n+                upDirectory.mkdir();\n+                publish("      Creating directory \'" + upDirectory.getAbsolutePath() + "\'\\n");\n+              }\n+              upDirectory = upDirectory.getParentFile();\n+            }\n+            // write the files to the disk\n+            publish("      Extracting \'" + entry.getName() + "\' to \'" + newFile.getAbsolutePath() + "\'\\n");\n+            int  count;\n+            byte data[] = new byte[BUFFER];\n+            FileOutputStream     fos = new FileOutputStream(newFile);\n+            BufferedOutputStream bos = new BufferedOutputStream(fos, BUFFER);\n+            while ((count = zis.read(data, 0, BUFFER)) != -1){\n+              bos.write(data, 0, count);\n+            }\n+            bos.flush();\n+            bos.close();\n+            fos.close();\n+          }\n+        }\n+        zis.close();\n+        bis.close();\n+        fis.close();\n+      }\n+      catch(FileNotFoundException e) {\n+        publish("    !Cannot find file \'" + file + "\'!\\n");\n+        return false;\n+      }\n+      catch(Exception e){\n+        publish("    !Cannot uncompress file \'" + file + "\'!\\n");\n+        return false;\n+      }\n+      publish("    Ending uncompressing file \'" + file + "\'\\n");\n+    }\n+    return true;\n+  }\n+\n+\n+  private boolean removePackage(int element) {\n+    String packageName = packageAddresses[element][architecture];\n+    if ("".equals(packageName)) {\n+      return true;\n+    }\n+    String fileName = getLocalName(packageAddresses[element][architecture]);\n+    return removeFile(fileName);\n+  }\n+\n+\n+  private boolean postProcess(int element) {\n+    switch (element) {\n+      case 4:\n+        // Create mySQL user\n+        PasswordAsker pa = new PasswordAsker();\n+        if (! pa.waitForPassword()) {\n+          publish("Problem in the password asker!\\n");\n+          return false;\n+        }\n+        String command = "\\"<MYSQLFILE>\\" --user=root --password=" + pa.getPassword() + " -e \\"source <INSTALLDIR>\\\\createUser.sql\\"";\n+        command        = replaceSubstring(command);\n+        if (! launch(command)) {\n+          publish("    !Cannot create SQL accounts!\\n");\n+          return false;\n+        }\n+        return true;\n+      case 7:\n+        // Move S-MART files to parent directory\n+        File installDirectory = new File(installDirectoryName + File.separator + "S-Mart");\n+        for (File file: installDirectory.listFiles()) {\n+          File destinationFile = new File(file.getParentFile().getParentFile(), file.getName());\n+          if (! file.renameTo(destinationFile)) {\n+            publish("     !Cannot move \'" + file.getAbsolutePath() + "\' to \'" + destinationFile.getAbsolutePath() + "\'!\\n");\n+          }\n+        }\n+        if (! installDirectory.delete()) {\n+          publish("     !Cannot remove installation S-MART directory \'" + installDirectory.getAbsolutePath() + "\'!\\n");\n+        }\n+    }\n+    return true;\n+  }\n+\n+\n+  private boolean setEnvironmentVariables() {\n+    String[] command = {"REG", "ADD", "HKCU\\\\Environment", "/v", "PYTHONPATH", "/t", "REG_SZ", "/d", "\\"" + installDirectoryName + "\\\\Python\\"", "/f"};\n+    return launch(command);\n+  }\n+}\n+\n'
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Installer/PasswordAsker.java
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/Java/Installer/PasswordAsker.java Mon Apr 29 03:20:15 2013 -0400
b
@@ -0,0 +1,87 @@
+import java.awt.*;
+import java.awt.event.*;
+import javax.swing.*;
+import java.util.concurrent.CountDownLatch;
+
+public class PasswordAsker {
+
+  static String password;
+  static JFrame frame;
+  static CountDownLatch latch;
+
+
+  public PasswordAsker() {
+    password = null;
+    javax.swing.SwingUtilities.invokeLater(new Runnable() {
+      public void run() {
+        createAndShowGUI();
+      }
+    });
+    latch = new CountDownLatch(1);
+  }
+
+
+  private static void createAndShowGUI() {
+    //Create and set up the window.
+    frame = new JFrame("Password");
+    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+    frame.setContentPane(setMainPane());
+
+    //Display the window.
+    frame.pack();
+    frame.setVisible(true);
+  }
+
+
+  private static JPanel setMainPane() {
+    JPanel rootPanel = new JPanel(false);
+    rootPanel.setLayout(new GridLayout(0, 1));
+
+    JPanel infoPanel = new JPanel(false);
+    JLabel infoLabel = new JLabel("Please write here the password that you entered for the mySQL root account.\r\nNo information is stored nor sent. I promise.");
+    infoPanel.add(infoLabel);
+
+    JPanel passPanel = new JPanel(false);
+    passPanel.setLayout(new GridLayout(1, 0));
+    JLabel passLabel = new JLabel("password");
+    final JTextField passText = new JTextField(20);
+    passLabel.setLabelFor(passText);
+    passPanel.add(passLabel);
+    passPanel.add(passText);
+
+    JPanel  okPanel  = new JPanel(false);
+    JButton okButton = new JButton("OK");
+    okPanel.add(okButton);
+
+    okButton.addActionListener(new ActionListener() {
+      public void actionPerformed(ActionEvent e) {
+        password = passText.getText();
+        frame.setVisible(false);
+        frame.dispose();
+        latch.countDown();
+      }
+    });
+
+    rootPanel.add(infoPanel);
+    rootPanel.add(passPanel);
+    rootPanel.add(okPanel);
+
+    return rootPanel;
+  }
+
+
+  public boolean waitForPassword() {
+    try {
+      latch.await();
+    }
+    catch (InterruptedException e) {
+      return false;
+    }
+    return true;
+  }
+
+
+  public String getPassword() {
+    return password;
+  }
+}
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Installer/SmartInstaller.jar
b
Binary file SMART/Java/Installer/SmartInstaller.jar has changed
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Installer/SmartInstaller.java
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/Java/Installer/SmartInstaller.java Mon Apr 29 03:20:15 2013 -0400
[
@@ -0,0 +1,167 @@
+import java.util.*;
+import java.awt.*;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.io.*;
+import javax.swing.*;
+import javax.swing.filechooser.*;
+import javax.swing.border.*;
+import javax.swing.SwingUtilities;
+import java.net.*;
+
+public class SmartInstaller extends JPanel implements ActionListener {
+  int       BUFFER = 1024;
+
+  JFrame    mainFrame;
+  JTextArea logArea;
+
+  // configuration chooser buttons
+  String       configurations[] = {"32 bits", "64 bits"};
+  JRadioButton configurationButtons[];
+
+  // program chooser buttons
+  String    programChoosers[] = {"R", "R Color Brewer Package", "R HMisc Package", "Python 2.6", "S-MART"};
+  JCheckBox programChooserButtons[];
+
+  JButton   goButton;
+
+  // install directory
+  JButton    installDirectoryChooserButton;
+  JTextField installDirectoryChooserTextField;
+
+
+  public SmartInstaller() {
+    super();
+
+    Box box = Box.createVerticalBox();
+
+    // Header
+    JPanel       headerPanel = new JPanel(false);
+    JTextArea    headerArea  = new JTextArea("This is the S-MART installation tool.\r\nIt will download and install the needed softwares, as well as S-MART itself.\r\nYou can unselect the software that you already have installed.\r\nDuring the installation, accept all the default parameters.");
+    TitledBorder headerBorder = BorderFactory.createTitledBorder("Welcome to the S-MART installer!");
+    headerArea.setEditable(false);
+    headerArea.setBackground(headerPanel.getBackground());
+    headerPanel.add(headerArea);
+    headerPanel.setBorder(headerBorder);
+
+
+    // Configuration
+    JPanel configurationPanel = new JPanel(false);
+    configurationPanel.setLayout(new GridLayout(1, 0));
+    configurationButtons = new JRadioButton[configurations.length];
+    ButtonGroup configurationGroup = new ButtonGroup();
+    for (int i = 0; i < configurations.length; i++) {
+      JRadioButton button = new JRadioButton(configurations[i]);
+      configurationPanel.add(button);
+      configurationButtons[i] = button;
+      configurationGroup.add(button);
+    }
+    configurationButtons[0].setSelected(true);
+    TitledBorder configurationBorder = BorderFactory.createTitledBorder("Configuration");
+    configurationPanel.setBorder(configurationBorder);
+
+
+    // Program chooser panel
+    JPanel programPanel = new JPanel(false);
+    programPanel.setLayout(new GridLayout(0, 1));
+
+    JLabel programLabel = new JLabel("Choose which programs to install:");
+    programPanel.add(programLabel);
+    programChooserButtons = new JCheckBox[programChoosers.length];
+    for (int i = 0; i < programChoosers.length; i++) {
+      JCheckBox button = new JCheckBox(programChoosers[i]);
+      button.setSelected(true);
+      programPanel.add(button);
+      programChooserButtons[i] = button;
+    }
+    TitledBorder programBorder = BorderFactory.createTitledBorder("Programs");
+    programPanel.setBorder(programBorder);
+
+    // Install directory chooser
+    JPanel installDirectoryChooserPanel = new JPanel(false);
+    installDirectoryChooserPanel.setLayout(new GridLayout(1, 0));
+    JLabel installDirectoryChooserLabel = new JLabel("Choose a directory to install S-MART: ");
+    installDirectoryChooserTextField = new JTextField();
+    installDirectoryChooserButton = new JButton("Open...");
+    installDirectoryChooserButton.addActionListener(this);
+
+    installDirectoryChooserPanel.add(installDirectoryChooserLabel);
+    installDirectoryChooserPanel.add(installDirectoryChooserTextField);
+    installDirectoryChooserPanel.add(installDirectoryChooserButton);
+    TitledBorder installDirectoryChooserBorder = BorderFactory.createTitledBorder("Installation directory");
+    installDirectoryChooserPanel.setBorder(installDirectoryChooserBorder);
+
+    // GO!
+    JPanel goPanel = new JPanel(false);
+    goButton = new JButton("GO!");
+    goButton.addActionListener(this);
+    goButton.setSelected(true);
+    goPanel.add(goButton);
+    TitledBorder goBorder = BorderFactory.createTitledBorder("Start install");
+    goPanel.setBorder(goBorder);
+
+    // Log
+    logArea = new JTextArea(10, 120);
+    logArea.setFont(new Font("Monospaced", logArea.getFont().getStyle(), logArea.getFont().getSize()));
+    JScrollPane logScroll  = new JScrollPane(logArea, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
+    TitledBorder logBorder = BorderFactory.createTitledBorder("Log");
+    logScroll.setBorder(logBorder);
+
+    GridLayout horizontalLayout = new GridLayout(1, 0);
+
+    box.add(headerPanel);
+    box.add(configurationPanel);
+    box.add(programPanel);
+    box.add(installDirectoryChooserPanel);
+    box.add(goPanel);
+    box.add(logScroll);
+
+    add(box);
+  }
+
+
+  public void actionPerformed(ActionEvent e) {
+
+    // Install directories chooser
+    if (e.getSource() == goButton) {
+      boolean[] selectedPrograms = new boolean[programChoosers.length];
+      for (int i = 0; i < programChoosers.length; i++) {
+        selectedPrograms[i] = programChooserButtons[i].isSelected();
+      }
+      SmartInstallerTask task = new SmartInstallerTask(logArea, selectedPrograms, installDirectoryChooserTextField.getText(), (configurationButtons[0].isSelected())? 0: 1);
+      task.execute();
+    }
+    // Install directories chooser
+    else if (e.getSource() == installDirectoryChooserButton) {
+      JFileChooser chooser = new JFileChooser();
+      chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
+      if (chooser.showOpenDialog(mainFrame) == JFileChooser.APPROVE_OPTION) {
+        installDirectoryChooserTextField.setText(chooser.getSelectedFile().getPath());
+      }
+    }
+  }
+
+  private static void createAndShowGUI() {
+    // Create and set up the window.
+    JFrame mainFrame = new JFrame("S-Mart Installer");
+    mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+
+    //Create and set up the content pane.
+    JComponent newContentPane = new SmartInstaller();
+    newContentPane.setOpaque(true);
+    mainFrame.setContentPane(newContentPane);
+
+    // Display the window.
+    mainFrame.pack();
+    mainFrame.setVisible(true);
+  }
+
+
+  public static void main(String[] args) {
+    javax.swing.SwingUtilities.invokeLater(new Runnable() {
+      public void run() {
+        createAndShowGUI();
+      }
+    });
+  }
+}
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Installer/SmartInstallerTask.java
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/Java/Installer/SmartInstallerTask.java Mon Apr 29 03:20:15 2013 -0400
[
b'@@ -0,0 +1,419 @@\n+import java.util.*;\n+import java.awt.event.ActionEvent;\n+import java.awt.event.ActionListener;\n+import java.io.*;\n+import javax.swing.*;\n+import javax.swing.filechooser.*;\n+import javax.swing.border.*;\n+import javax.swing.SwingUtilities;\n+import java.net.*;\n+import java.util.Stack;\n+import java.util.zip.ZipEntry;\n+import java.util.zip.ZipInputStream;\n+\n+public class SmartInstallerTask extends SwingWorker<Boolean, String> {\n+\n+  int BUFFER = 1024;\n+\n+  int       architecture         = 0;\n+  String    installDirectoryName = null;\n+  JTextArea logArea              = null;\n+  boolean[] selectedPrograms     = null;\n+\n+  // program chooser buttons\n+  String    programChoosers[] = {"R", "R Color Brewer Package", "R HMisc Package", "Python 2.6", "S-MART"};\n+\n+  // Web addresses for the tools\n+  String packageAddresses[][] = {\n+    {"http://cran.cict.fr/bin/windows/base/R-2.11.0-win32.exe", "http://cran.cict.fr/bin/windows64/base/R-2.11.0-win64.exe"},\n+    {"", ""},\n+    {"", ""},\n+    {"http://www.python.org/ftp/python/2.6.5/python-2.6.5.msi", "http://www.python.org/ftp/python/2.6.5/python-2.6.5.amd64.msi"},\n+    {"http://urgi.versailles.inra.fr/content/download/1929/17848/file/s-mart-1.0.15.zip", "http://urgi.versailles.inra.fr/content/download/1929/17848/file/s-mart-1.0.15.zip"}\n+  };\n+\n+  // Packages to install\n+  String rPackages[] = {"RColorBrewer", "Hmisc"};\n+\n+  // Script lines\n+  String scriptLines[][] = {\n+    {"\\"<INSTALLDIR>\\\\R-2.11.0-win32.exe\\"", "\\"<INSTALLDIR>\\\\R-2.11.0-win64.exe\\""},\n+    {"\\"<RFILE>\\" CMD BATCH \\"<INSTALLDIR>\\\\installRColorBrewer.R\\"", "\\"<RFILE>\\" CMD BATCH \\"<INSTALLDIR>\\\\installRColorBrewer.R\\""},\n+    {"\\"<RFILE>\\" CMD BATCH \\"<INSTALLDIR>\\\\installHmisc.R\\"", "\\"<RFILE>\\" CMD BATCH \\"<INSTALLDIR>\\\\installHmisc.R\\""},\n+    {"msiexec /i \\"<INSTALLDIR>\\\\python-2.6.5.msi\\"", "msiexec /i \\"<INSTALLDIR>\\\\python-2.6.5.amd64.msi\\""},\n+    {"", ""}\n+  };\n+\n+  // Files to uncompress\n+  String compressedFiles[][] = {\n+    {"", ""},\n+    {"", ""},\n+    {"", ""},\n+    {"", ""},\n+    {"<INSTALLDIR>\\\\s-mart-1.0.15.zip", "<INSTALLDIR>\\\\s-mart-1.0.15.zip"}\n+  };\n+\n+\n+  public SmartInstallerTask(JTextArea ta, boolean[] b, String s, int a) {\n+    logArea              = ta;\n+    selectedPrograms     = b;\n+    installDirectoryName = s;\n+    architecture         = a;\n+  }\n+\n+\n+  @Override\n+  public Boolean doInBackground() {\n+    boolean installOk;\n+    publish("Starting install\\n");\n+    writeFiles();\n+    for (int i = 0; i < selectedPrograms.length; i++) {\n+      if (selectedPrograms[i]) {\n+        if (! install(i)) {\n+          return Boolean.FALSE;\n+        }\n+      }\n+    }\n+    removeFiles();\n+    setEnvironmentVariables();\n+    publish("Ending install\\n");\n+    return Boolean.TRUE;\n+  }\n+\n+\n+  @Override\n+  protected void process(List<String> chunks) {\n+    for (String chunk: chunks) {\n+      logArea.append(chunk);\n+    }\n+  }\n+\n+\n+  private boolean launch(String command) {\n+    return realLaunch(new ProcessBuilder(command), command);\n+  }\n+\n+  private boolean launch(String[] command) {\n+    return realLaunch(new ProcessBuilder(command), Arrays.toString(command));\n+  }\n+\n+  private boolean realLaunch(ProcessBuilder pb, String command) {\n+    BufferedReader outputReader;\n+    pb                          = pb.redirectErrorStream(true);\n+    Process        process      = null;\n+    publish("      Starting command \'" + command + "\'\\n");\n+    try {\n+      process = pb.start();\n+      BufferedInputStream outputStream = new BufferedInputStream(process.getInputStream());\n+      InputStream is        = process.getInputStream();\n+      InputStreamReader isr = new InputStreamReader(is);\n+      outputReader          = new BufferedReader(isr);\n+    }\n+    catch (Exception exception) {\n+      publish("      !Process cannot be started (command is \'" + command + "\')!\\n");\n+      exception.printStackTrace();\n+      return false;\n+    }\n+    if (outputReader == null) {\n+      publish("      !Problem in the outp'..b'turn false;\n+        }\n+        try {\n+          process.waitFor();\n+        }\n+        catch (InterruptedException e) {\n+          publish("    !Cannot wait for the end of the command \'" + command + "\'!\\n");\n+          return false;\n+        }\n+        int exitValue = process.exitValue();\n+        if (exitValue != 0) {\n+          publish("    !Problem during the execution of the command \'" + command + "\'!\\n");\n+          return false;\n+        }\n+        publish("    Ending command \'" + command + "\'\\n");\n+      }\n+    }\n+    return true;\n+  }\n+\n+\n+  private boolean uncompressPackage(int element) {\n+    String file = compressedFiles[element][architecture];\n+    if (! "".equals(file)) {\n+      file = replaceSubstring(file);\n+      publish("    Starting uncompressing file \'" + file + "\'\\n");\n+      try {\n+        FileInputStream     fis = new FileInputStream(file);\n+        BufferedInputStream bis = new BufferedInputStream(fis);\n+        ZipInputStream      zis = new ZipInputStream(bis);\n+        ZipEntry            entry;\n+        while ((entry = zis.getNextEntry()) != null) {\n+          if (! entry.isDirectory()) {\n+            File newFile = new File(installDirectoryName + File.separator + entry.getName());\n+            // create parent directories\n+            File upDirectory = newFile.getParentFile();\n+            while (upDirectory != null){\n+              if (! upDirectory.exists()) {\n+                upDirectory.mkdir();\n+                publish("      Creating directory \'" + upDirectory.getAbsolutePath() + "\'\\n");\n+              }\n+              upDirectory = upDirectory.getParentFile();\n+            }\n+            // write the files to the disk\n+            publish("      Extracting \'" + entry.getName() + "\' to \'" + newFile.getAbsolutePath() + "\'\\n");\n+            int  count;\n+            byte data[] = new byte[BUFFER];\n+            FileOutputStream     fos = new FileOutputStream(newFile);\n+            BufferedOutputStream bos = new BufferedOutputStream(fos, BUFFER);\n+            while ((count = zis.read(data, 0, BUFFER)) != -1){\n+              bos.write(data, 0, count);\n+            }\n+            bos.flush();\n+            bos.close();\n+            fos.close();\n+          }\n+        }\n+        zis.close();\n+        bis.close();\n+        fis.close();\n+      }\n+      catch(FileNotFoundException e) {\n+        publish("    !Cannot find file \'" + file + "\'!\\n");\n+        return false;\n+      }\n+      catch(Exception e){\n+        publish("    !Cannot uncompress file \'" + file + "\'!\\n");\n+        return false;\n+      }\n+      publish("    Ending uncompressing file \'" + file + "\'\\n");\n+    }\n+    return true;\n+  }\n+\n+\n+  private boolean removePackage(int element) {\n+    String packageName = packageAddresses[element][architecture];\n+    if ("".equals(packageName)) {\n+      return true;\n+    }\n+    String fileName = getLocalName(packageAddresses[element][architecture]);\n+    return removeFile(fileName);\n+  }\n+\n+\n+  private boolean postProcess(int element) {\n+    switch (element) {\n+      case 4:\n+        // Move S-MART files to parent directory\n+        File installDirectory = new File(installDirectoryName + File.separator + "S-Mart");\n+        for (File file: installDirectory.listFiles()) {\n+          File destinationFile = new File(file.getParentFile().getParentFile(), file.getName());\n+          if (! file.renameTo(destinationFile)) {\n+            publish("     !Cannot move \'" + file.getAbsolutePath() + "\' to \'" + destinationFile.getAbsolutePath() + "\'!\\n");\n+          }\n+        }\n+        if (! installDirectory.delete()) {\n+          publish("     !Cannot remove installation S-MART directory \'" + installDirectory.getAbsolutePath() + "\'!\\n");\n+        }\n+    }\n+    return true;\n+  }\n+\n+\n+  private boolean setEnvironmentVariables() {\n+    String[] command = {"REG", "ADD", "HKCU\\\\Environment", "/v", "PYTHONPATH", "/t", "REG_SZ", "/d", "\\"" + installDirectoryName + "\\\\Python\\"", "/f"};\n+    return launch(command);\n+  }\n+}\n+\n'
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Installer/build.sh
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/Java/Installer/build.sh Mon Apr 29 03:20:15 2013 -0400
b
@@ -0,0 +1,5 @@
+#! /bin/sh
+
+rm -rf SmartInstaller.jar
+javac *.java
+jar cvfm SmartInstaller.jar manifest.txt *.class
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Installer/manifest.txt
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/Java/Installer/manifest.txt Mon Apr 29 03:20:15 2013 -0400
b
@@ -0,0 +1,3 @@
+Manifest-Version: 1.0
+Created-By: Matthias Zytnicki
+Main-Class: SmartInstaller
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Installer/s-mart.zip
b
Binary file SMART/Java/Installer/s-mart.zip has changed
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Program.class
b
Binary file SMART/Java/Program.class has changed
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Program.java
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/Java/Program.java Mon Apr 29 03:20:15 2013 -0400
b
@@ -0,0 +1,175 @@
+/**
+ *
+ * Copyright INRA-URGI 2009-2010
+ * 
+ * This software is governed by the CeCILL license under French law and
+ * abiding by the rules of distribution of free software. You can use,
+ * modify and/ or redistribute the software under the terms of the CeCILL
+ * license as circulated by CEA, CNRS and INRIA at the following URL
+ * "http://www.cecill.info".
+ * 
+ * As a counterpart to the access to the source code and rights to copy,
+ * modify and redistribute granted by the license, users are provided only
+ * with a limited warranty and the software's author, the holder of the
+ * economic rights, and the successive licensors have only limited
+ * liability.
+ * 
+ * In this respect, the user's attention is drawn to the risks associated
+ * with loading, using, modifying and/or developing or reproducing the
+ * software by the user in light of its specific status of free software,
+ * that may mean that it is complicated to manipulate, and that also
+ * therefore means that it is reserved for developers and experienced
+ * professionals having in-depth computer knowledge. Users are therefore
+ * encouraged to load and test the software's suitability as regards their
+ * requirements in conditions enabling the security of their systems and/or
+ * data to be ensured and, more generally, to use and operate it in the
+ * same conditions as regards security.
+ * 
+ * The fact that you are presently reading this means that you have had
+ * knowledge of the CeCILL license and that you accept its terms.
+ *
+ */
+import java.util.*;
+import java.awt.*;
+import javax.swing.*;
+
+
+public class Program {
+  String                 shortName;
+  String                 name;
+  String                 section;
+  String                 description;
+  Vector <ProgramOption> options;
+  JPanel                 panel;
+  JButton                button;
+
+
+  public Program() {
+    this.shortName = null;  
+    this.name      = null;  
+    this.options   = new Vector <ProgramOption> ();  
+  }
+
+
+  public void setShortName(String shortName) {
+    this.shortName = shortName;
+  }
+
+
+  public void setName(String name) {
+    this.name = name;
+  }
+
+
+  public void setSection(String section) {
+    this.section = section;
+  }
+
+  public void setDescription(String description) {
+    this.description = description;
+  }
+
+
+  public void addOption(ProgramOption option) {
+    options.add(option);
+  }
+
+
+  public String getShortName() {
+    return this.shortName;
+  }
+
+
+  public String getName() {
+    return this.name;
+  }
+
+
+  public String getSection() {
+    return this.section;
+  }
+
+  public String getDescription() {
+    return this.description;
+  }
+
+
+  public String checkValues() {
+    for (int i = 0; i < options.size(); i++) {
+      String comment = options.get(i).checkValue();
+      if (comment != null) {
+        return comment;
+      }
+    }
+    return null;
+  }
+
+
+  public LinkedList<String> getCommand() {
+    LinkedList<String> parameterList = new LinkedList<String>();
+    parameterList.add(Global.pythonCommand);
+    parameterList.add("Python" + java.io.File.separator + this.shortName);
+    for (int i = 0; i < options.size(); i++) {
+      ProgramOption option = options.get(i);
+      parameterList.addAll(option.getCommand());
+    }
+    return parameterList;
+  }
+
+
+  public JPanel getPanel() {
+    if (this.panel != null) {
+      return this.panel;
+    }
+    
+    this.panel = new JPanel(false);
+    this.panel.setLayout(new FlowLayout());
+    Box box = Box.createVerticalBox();
+
+    JPanel descriptionPanel = new JPanel(false);
+    JLabel descriptionLabel = new JLabel(this.description);
+    descriptionPanel.add(descriptionLabel);
+    box.add(descriptionPanel);
+
+    for (int i = 0; i < options.size(); i++) {
+      ProgramOption option = options.get(i);
+      JPanel        panel  = option.getPanel();
+      if (panel == null) {
+        System.out.println("Problem with Python program '" + this.shortName + "'.");
+        return null;
+      }
+      box.add(option.getPanel());
+    }
+
+    JPanel buttonPanel = new JPanel(false);
+    this.button = new JButton("GO!");
+
+    buttonPanel.add(button);
+
+    box.add(buttonPanel);
+
+    this.panel.add(box);
+
+    return this.panel;
+  }
+
+
+  public JButton getButton() {
+    if (this.button == null) {
+      this.getPanel();
+    }
+    return this.button;
+  }
+
+  
+  public Vector < File > getOutputFiles() {
+    Vector < File > files = new Vector < File > ();
+    for (int i = 0; i < options.size(); i++) {
+      ProgramOption option = options.get(i);
+      if (! option.isInput()) {
+        files.add(option.getOutputFile());
+      }
+    }
+    return files;
+  }
+}
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/ProgramFileReader.class
b
Binary file SMART/Java/ProgramFileReader.class has changed
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/ProgramFileReader.java
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/Java/ProgramFileReader.java Mon Apr 29 03:20:15 2013 -0400
[
@@ -0,0 +1,174 @@
+/**
+ *
+ * Copyright INRA-URGI 2009-2010
+ * 
+ * This software is governed by the CeCILL license under French law and
+ * abiding by the rules of distribution of free software. You can use,
+ * modify and/ or redistribute the software under the terms of the CeCILL
+ * license as circulated by CEA, CNRS and INRIA at the following URL
+ * "http://www.cecill.info".
+ * 
+ * As a counterpart to the access to the source code and rights to copy,
+ * modify and redistribute granted by the license, users are provided only
+ * with a limited warranty and the software's author, the holder of the
+ * economic rights, and the successive licensors have only limited
+ * liability.
+ * 
+ * In this respect, the user's attention is drawn to the risks associated
+ * with loading, using, modifying and/or developing or reproducing the
+ * software by the user in light of its specific status of free software,
+ * that may mean that it is complicated to manipulate, and that also
+ * therefore means that it is reserved for developers and experienced
+ * professionals having in-depth computer knowledge. Users are therefore
+ * encouraged to load and test the software's suitability as regards their
+ * requirements in conditions enabling the security of their systems and/or
+ * data to be ensured and, more generally, to use and operate it in the
+ * same conditions as regards security.
+ * 
+ * The fact that you are presently reading this means that you have had
+ * knowledge of the CeCILL license and that you accept its terms.
+ *
+ */
+import java.util.*;
+import java.io.File;
+import java.io.*;
+
+
+public class ProgramFileReader {
+  String fileName;
+  Vector <Program> programs;
+
+
+  public ProgramFileReader(String fileName) {
+    this.fileName = fileName;  
+    this.programs = new Vector <Program> ();
+  }
+
+
+  public boolean read() {
+//  File    file    = new File(this.fileName);
+//  Program program = null;
+//  int     step    = 0;
+//  TreeMap <String, ProgramOption> options = new TreeMap <String, ProgramOption> ();
+
+//  try {
+//    BufferedReader reader = new BufferedReader(new FileReader(file));
+//    String line    = null;
+//    String section = null;
+
+//    while ((line = reader.readLine()) != null) {
+
+//      line = line.trim();
+
+//      if (line.length() == 0) {
+//        if (program != null) {
+//          programs.add(program);
+//        }
+//        program = null;
+//        step = 0;
+//        continue;
+//      }
+
+//      if ((line.charAt(0) == '[') && (line.charAt(line.length() - 1) == ']')) {
+//        section = line.substring(1, line.length() - 1).trim();
+//        continue;
+//      }
+//      switch (step) {
+//        case 0:
+//        program = new Program();
+//          program.setName(line);
+//          if (section == null) {
+//            System.out.println("Error! Section of program '" + line + "' is not set!");
+//          }
+//          program.setSection(section);
+//          step = 1;
+//          break;
+//        case 1:
+//          program.setShortName(line);
+//          step = 2;
+//          break;
+//        case 2:
+//          ProgramOption option = new ProgramOption();
+
+//          String[] elements    = line.split(":");
+//          boolean  input       = elements[0].trim().equalsIgnoreCase("input")? true: false;
+//          String[] subElements = elements[1].split(";");
+//          String   identifier = subElements[0].trim();
+
+//          option.setInput(input);
+
+//          if (input) {
+
+//            if (subElements.length < 4) {
+//              System.out.println("Line '" + line + "' is weird...");
+//            }
+
+//            String   type       = subElements[1].trim();
+//            String   comment    = subElements[2].trim();
+//            boolean  compulsory = subElements[3].trim().equalsIgnoreCase("0")? false: true;
+
+//            option.setIdentifier(identifier);
+//            option.setType(type);
+//            option.setComment(comment);
+//            option.setCompulsory(compulsory);
+
+//            if ("file".compareToIgnoreCase(type) == 0) {
+//              if (subElements.length < 5) {
+//                System.out.println("Line '" + line + "' is weird...");
+//              }
+
+//              String formatIdentifier = subElements[4].trim();
+//              option.setFormatIdentifier(formatIdentifier);
+//            }
+//            else if ("choice".compareToIgnoreCase(type) == 0) {
+//              if (subElements.length < 5) {
+//                System.out.println("Line '" + line + "' is weird...");
+//              }
+
+//              String[] choices = subElements[4].trim().split(",");
+//              for (int i = 0; i < choices.length; i++) {
+//                choices[i] = choices[i].trim();
+//              }
+//              option.setChoices(choices);
+//            }
+//            options.put(identifier, option);
+//          }
+//          else {
+//            String format = subElements[1].trim();
+
+//            option.setFormat(format);
+//            option.setAssociatedOption(options.get(identifier));
+//          }
+
+//          program.addOption(option);
+
+//          break;
+//        default:
+//          return false;
+//      }
+//    }
+
+//    reader.close();
+//  }
+//  catch (FileNotFoundException e) {
+//    return false;
+//  }
+//  catch (IOException e) {
+//    return false;
+//  }
+
+//  if (program != null) {
+//    programs.add(program);
+//  }
+
+    return true;
+  }
+
+  public int getNbPrograms() {
+    return programs.size();
+  }
+
+  public Program getProgram(int i) {
+    return programs.get(i);
+  }
+}
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/ProgramLauncher.class
b
Binary file SMART/Java/ProgramLauncher.class has changed
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/ProgramLauncher.java
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/Java/ProgramLauncher.java Mon Apr 29 03:20:15 2013 -0400
[
@@ -0,0 +1,209 @@
+/**
+ *
+ * Copyright INRA-URGI 2009-2010
+ * 
+ * This software is governed by the CeCILL license under French law and
+ * abiding by the rules of distribution of free software. You can use,
+ * modify and/ or redistribute the software under the terms of the CeCILL
+ * license as circulated by CEA, CNRS and INRIA at the following URL
+ * "http://www.cecill.info".
+ * 
+ * As a counterpart to the access to the source code and rights to copy,
+ * modify and redistribute granted by the license, users are provided only
+ * with a limited warranty and the software's author, the holder of the
+ * economic rights, and the successive licensors have only limited
+ * liability.
+ * 
+ * In this respect, the user's attention is drawn to the risks associated
+ * with loading, using, modifying and/or developing or reproducing the
+ * software by the user in light of its specific status of free software,
+ * that may mean that it is complicated to manipulate, and that also
+ * therefore means that it is reserved for developers and experienced
+ * professionals having in-depth computer knowledge. Users are therefore
+ * encouraged to load and test the software's suitability as regards their
+ * requirements in conditions enabling the security of their systems and/or
+ * data to be ensured and, more generally, to use and operate it in the
+ * same conditions as regards security.
+ * 
+ * The fact that you are presently reading this means that you have had
+ * knowledge of the CeCILL license and that you accept its terms.
+ *
+ */
+import java.util.*;
+import java.io.*;
+import javax.swing.SwingUtilities;
+import javax.swing.*;
+import java.util.concurrent.CountDownLatch;
+
+public class ProgramLauncher extends SwingWorker<Boolean, String>  {
+
+  String[]     command;
+  JTextArea    logArea;
+  JLabel       messageField;
+  JProgressBar progressBar;
+  JLabel       etaField;
+  int          exitValue;
+  CountDownLatch latch;
+
+  
+
+  public ProgramLauncher (LinkedList <String> c, JTextArea la, JLabel mf, JProgressBar pb, JLabel ef) {
+    command       = new String[c.size()];
+    logArea       = la;
+    messageField  = mf;
+    progressBar   = pb;
+    etaField      = ef;
+    exitValue     = -1;
+    c.toArray(command);
+    latch = new CountDownLatch(1);
+  }
+
+
+  public ProgramLauncher (String[] c, JTextArea la, JLabel mf, JProgressBar pb, JLabel ef) {
+    command       = c;
+    logArea       = la;
+    messageField  = mf;
+    progressBar   = pb;
+    etaField      = ef;
+    exitValue     = -1;
+    latch = new CountDownLatch(1);
+  }
+
+
+  @Override
+  public Boolean doInBackground() {
+    ProcessBuilder pb           = new ProcessBuilder(command);
+    Process process             = null;
+    BufferedReader outputReader = null;
+    pb                          = pb.redirectErrorStream(true);
+    Map<String, String> env     = pb.environment();
+    env.put("PYTHONPATH", System.getProperty("user.dir"));
+    env.put("SMARTPATH", System.getProperty("user.dir") + java.io.File.separator + "SMART" + java.io.File.separator + "Java" + java.io.File.separator + "Python");
+    env.put("SMARTMYSQLPATH", Global.mysqlCommand);
+    env.put("SMARTRPATH", Global.rCommand);
+    String commandJoined = Arrays.toString(command);
+
+    try {
+      publish("=== Starting command '" + commandJoined.trim() + "' ===\n");
+      process = pb.start();
+
+      BufferedInputStream outputStream = new BufferedInputStream(process.getInputStream());
+      InputStream is                   = process.getInputStream();
+      InputStreamReader isr            = new InputStreamReader(is);
+      outputReader                     = new BufferedReader(isr);
+    }
+    catch (Exception exception) {
+      publish("!Process cannot be started (command is '" + commandJoined + "')!\n");
+      exception.printStackTrace();
+      latch.countDown();
+      return Boolean.FALSE;
+    }
+    if (outputReader == null) {
+      publish("!Problem in the output of the command!\n");
+      latch.countDown();
+      return Boolean.FALSE;
+    }
+    else {
+      try {
+        String line;
+        while ((line = outputReader.readLine()) != null) {
+          publish(line + "\n");
+        }
+      }
+      catch (IOException e) {
+        e.printStackTrace();
+        publish("!Cannot get the output of the command!\n");
+        latch.countDown();
+        return Boolean.FALSE;
+      }
+    }
+    try {
+      process.waitFor();
+    }
+    catch (InterruptedException e) {
+      e.printStackTrace();
+      publish("!Cannot wait for the end of the command!\n");
+      latch.countDown();
+      return Boolean.FALSE;
+    }
+    try {
+      exitValue = process.exitValue();
+    }
+    catch (IllegalThreadStateException e) {
+      e.printStackTrace();
+      publish("!Cannot get the exit value of the command!\n");
+      latch.countDown();
+      return Boolean.FALSE;
+    }
+    if (exitValue != 0) {
+      publish("!Problem during the execution of the command '" + commandJoined + "'!\n");
+      latch.countDown();
+      return Boolean.FALSE;
+    }
+    publish("=== Ending command '" + commandJoined.trim() + "' ===\n");
+    latch.countDown();
+    return Boolean.TRUE;
+  }
+
+
+  @Override
+  protected void process(List<String> chunks) {
+    String message = "";
+    String text    = logArea.getText();
+    for (String chunk: chunks) {
+      text += chunk;
+    }
+    for (String lineSeparatedByCarriageReturn: text.split("\n")) {
+      for (String line: lineSeparatedByCarriageReturn.split("\r")) {
+        boolean progressLine = false;
+        if (line.matches(".*\\[=*\\s*\\]\\s*\\d*/\\d*\\s*")) {
+          String[] ratioElements = line.split("\\]")[1].trim().split("/");
+          int      current       = Integer.parseInt(ratioElements[0].trim());
+          int      aim           = Integer.parseInt(ratioElements[1].trim());
+          messageField.setText(line.split("\\[")[0].trim());
+          progressBar.setValue(current * 100 / aim);
+          etaField.setText("");
+          progressLine = true;
+        }
+        else if (line.matches(".*\\[=*\\s*\\]\\s*\\d*/\\d*\\s*ETA:\\s*.*")) {
+          String[] ratioElements = line.split("\\]")[1].split("E")[0].trim().split("/");
+          int      current       = Integer.parseInt(ratioElements[0].trim());
+          int      aim           = Integer.parseInt(ratioElements[1].trim());
+          String   eta           = line.split("ETA:")[1].trim();
+          messageField.setText(line.split("\\[")[0].trim());
+          progressBar.setValue(current * 100 / aim);
+          etaField.setText("ETA: " + eta);
+          progressLine = true;
+        }
+        else if (line.matches(".*\\[=*\\s*\\]\\s*\\d*\\s*completed in.*")) {
+          String nbElements = line.split("\\]")[1].split("completed")[0].trim();
+          String timeSpent  = line.split("completed in")[1].trim();
+          message          += line.split("\\[")[0].trim() + ": " + nbElements + " elements completed in " + timeSpent + "\n";
+          messageField.setText(line.split("\\[")[0].trim());
+          progressLine = true;
+        }
+        if (! progressLine) {
+          message += line + "\n";
+        }
+      }
+    }
+    String lines[]     = message.split("\n");
+    String toBeWritten = "";
+    for (int i = Math.max(0, lines.length - Global.logAreaSize); i < lines.length; i++) {
+      toBeWritten += lines[i] + "\n";
+    }
+    logArea.setText(toBeWritten);
+  }
+
+  public int getExitValue() {
+    try {
+      latch.await();
+    }
+    catch (InterruptedException e) {
+      logArea.append("Cannot wait for the end of the process!\n");
+      e.printStackTrace();
+      return -1;
+    }
+    return exitValue;
+  }
+}
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/ProgramOption.class
b
Binary file SMART/Java/ProgramOption.class has changed
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/ProgramOption.java
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/Java/ProgramOption.java Mon Apr 29 03:20:15 2013 -0400
[
b'@@ -0,0 +1,358 @@\n+/**\n+ *\n+ * Copyright INRA-URGI 2009-2010\n+ * \n+ * This software is governed by the CeCILL license under French law and\n+ * abiding by the rules of distribution of free software. You can use,\n+ * modify and/ or redistribute the software under the terms of the CeCILL\n+ * license as circulated by CEA, CNRS and INRIA at the following URL\n+ * "http://www.cecill.info".\n+ * \n+ * As a counterpart to the access to the source code and rights to copy,\n+ * modify and redistribute granted by the license, users are provided only\n+ * with a limited warranty and the software\'s author, the holder of the\n+ * economic rights, and the successive licensors have only limited\n+ * liability.\n+ * \n+ * In this respect, the user\'s attention is drawn to the risks associated\n+ * with loading, using, modifying and/or developing or reproducing the\n+ * software by the user in light of its specific status of free software,\n+ * that may mean that it is complicated to manipulate, and that also\n+ * therefore means that it is reserved for developers and experienced\n+ * professionals having in-depth computer knowledge. Users are therefore\n+ * encouraged to load and test the software\'s suitability as regards their\n+ * requirements in conditions enabling the security of their systems and/or\n+ * data to be ensured and, more generally, to use and operate it in the\n+ * same conditions as regards security.\n+ * \n+ * The fact that you are presently reading this means that you have had\n+ * knowledge of the CeCILL license and that you accept its terms.\n+ *\n+ */\n+import java.util.*;\n+import java.awt.*;\n+import java.awt.event.ActionEvent;\n+import java.awt.event.ActionListener;\n+import java.io.*;\n+import javax.swing.*;\n+import javax.swing.filechooser.*;\n+import javax.swing.border.*;\n+import javax.swing.SwingUtilities;\n+\n+\n+public class ProgramOption {\n+  boolean       input;\n+  String        identifier;\n+  String        type;\n+  String        comment;\n+  boolean       compulsory;\n+  String[]      format;\n+  String        formatIdentifier;\n+  ProgramOption associatedOption;\n+  String        defaultValue;\n+  String[]      choices;\n+  JComponent    component;\n+  JPanel        panel;\n+\n+\n+  public ProgramOption() {\n+    this.input            = true;\n+    this.identifier       = null;\n+    this.type             = null;\n+    this.comment          = null;\n+    this.compulsory       = false;\n+    this.format           = null;\n+    this.formatIdentifier = null;\n+    this.associatedOption = null;\n+    this.defaultValue     = "";\n+    this.choices          = null;\n+    this.component        = null;\n+    this.panel            = null;\n+  }\n+\n+\n+  public void setInput(boolean input) {\n+    this.input = input;\n+  }\n+\n+\n+  public void setIdentifier(String identifier) {\n+    this.identifier = identifier;\n+  }\n+\n+\n+  public void setType(String type) {\n+    this.type = type;\n+  }\n+\n+\n+  public void setComment(String comment) {\n+    this.comment = comment;\n+  }\n+\n+\n+  public void setCompulsory(boolean compulsory) {\n+    this.compulsory = compulsory;\n+  }\n+\n+\n+  public void setFormat(String[] format) {\n+    this.format = format;\n+  }\n+\n+\n+  public void setFormat(String format) {\n+    this.format    = new String[1];\n+    this.format[0] = format;\n+  }\n+\n+\n+  public void setFormatIdentifier(String formatIdentifier) {\n+    this.formatIdentifier = formatIdentifier;\n+  }\n+\n+\n+  public void setAssociatedOption(ProgramOption option) {\n+    this.associatedOption = option;\n+  }\n+\n+\n+  public void setChoices(String[] choices) {\n+    this.choices = new String[choices.length+1];\n+    this.choices[0] = "---";\n+    for (int i = 0; i < choices.length; i++) {\n+      this.choices[i+1] = choices[i];\n+    }\n+  }\n+\n+\n+  public void setDefault(String defaultValue) {\n+    this.defaultValue = defaultValue;\n+  }\n+\n+\n+  public boolean isInput() {\n+    return this.input;\n+  }\n+\n+\n+  public boolean checkSettings() {\n+    if (this.identifier == null) {\n+      return false;\n+    }\n+    if (this.type == nul'..b'{\n+      this.component = new JComboBox(this.choices);\n+      label.setLabelFor(this.component);\n+      this.panel.add(label);\n+      this.panel.add(this.component);\n+    }\n+    else {\n+      System.out.println("Do not know how to read type " + this.type);\n+    }\n+\n+    return this.panel;\n+  }\n+\n+\n+  public JComponent getComponent() {\n+    if (component == null) {\n+      this.getPanel();\n+    }\n+    return this.component;\n+  }\n+\n+\n+  private String getValue() {\n+    if (("int".equals(this.type)) || ("float".equals(this.type)) || ("string".equals(this.type)) || (("file".equals(this.type)) && (! this.input)) || ("directory".equals(this.type)) || ("files".equals(this.type)))  {\n+      String s = ((JTextField) this.component).getText();\n+      if ("None".equals(s)) {\n+        return "";\n+      }\n+      return s;\n+    }\n+    if ("file".equals(this.type)) {\n+      return (String) ((JComboBox) this.component).getSelectedItem();\n+    }\n+    if ("boolean".equals(this.type)) {\n+      return ((JCheckBox) this.component).isSelected()? "true": "false";\n+    }\n+    if ("format".equals(this.type)) {\n+      return (String) ((JComboBox) this.component).getSelectedItem();\n+    }\n+    if ("choice".equals(this.type)) {\n+      String s = (String) ((JComboBox) this.component).getSelectedItem();\n+      if ("---".equals(s)) {\n+        return "";\n+      }\n+      return s;\n+    }\n+    System.out.println("Do not know how to get value of \'" + this.type + "\' (" + this.identifier + ").");\n+    return null;\n+  }\n+\n+\n+  public String checkValue() {\n+    String value = this.getValue();\n+    if ((this.compulsory) && ((value == null) || ("".equals(value)))) {\n+      return "Option \'" + this.comment + "\' has no value... Please specify it.\\n";\n+    }\n+    if ("int".equals(this.type)) {\n+      if ((value != null) && (! "".equals(value)) && (! "None".equals(value))) {\n+        try {\n+          int i = Integer.parseInt(value);\n+        }\n+        catch (NumberFormatException e) {\n+          return "Option \'" + this.comment + "\' should be an integer... Please correct it.\\n";\n+        }\n+      }\n+    }\n+    else if ("float".equals(this.type)) {\n+      if ((value != null) && (! "".equals(value))) {\n+        try {\n+          float i = Float.parseFloat(value);\n+        }\n+        catch (NumberFormatException e) {\n+          return "Option \'" + this.comment + "\' should be a float... Please correct it.\\n";\n+        }\n+      }\n+    }\n+    return null;\n+  }\n+\n+\n+  public LinkedList <String> getCommand() {\n+    LinkedList <String> list = new LinkedList <String> ();\n+\n+    if (("int".equals(this.type)) || ("float".equals(this.type)) || ("string".equals(this.type)) || (("file".equals(this.type)) && (! this.input)) || ("format".equals(this.type)) || ("directory".equals(this.type)) || ("files".equals(this.type)) || ("choice".equals(this.type))) {\n+      String value = this.getValue();\n+      if (value.length() == 0) {\n+        return list;\n+      }\n+      list.add(this.identifier);\n+      list.add(value);\n+      return list;\n+    }\n+    if ("file".equals(this.type)) {\n+      String fileName = (String) ((JComboBox) this.component).getSelectedItem();\n+      if (fileName == null) {\n+        return list;\n+      }\n+      list.add(this.identifier);\n+      list.add(this.getValue());\n+      return list;\n+    }\n+    if (("boolean".equals(this.type)) || ("bool".equals(this.type))) {\n+      if ("true".equals(this.getValue())) {\n+        list.add(this.identifier);\n+      }\n+      return list;\n+    }\n+    System.out.println("Cannot get type of option " + this.type + " (" + this.identifier + "): " + this.getValue());\n+    return null;\n+  }\n+\n+\n+  public File getOutputFile() {\n+    if (this.input) return null;\n+    String format = "";\n+    if (this.format != null) {\n+      format = this.format[0];\n+    }\n+    if (this.associatedOption != null) {\n+      format = this.associatedOption.getValue();\n+    }\n+    return new File(this.getValue(), Global.formats.getFormatType(format), format);\n+  }\n+}\n'
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Python/.RData
b
Binary file SMART/Java/Python/.RData has changed
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Python/.Rhistory
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/Java/Python/.Rhistory Mon Apr 29 03:20:15 2013 -0400
b
@@ -0,0 +1,1 @@
+install.packages("ggplot2")
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Python/CollapseReads.py
--- a/SMART/Java/Python/CollapseReads.py Mon Apr 22 11:11:10 2013 -0400
+++ b/SMART/Java/Python/CollapseReads.py Mon Apr 29 03:20:15 2013 -0400
[
@@ -62,7 +62,7 @@
         
     def setInputFile(self, fileName, format):
         parserChooser = ParserChooser(self.verbosity)
-        parserChooser.findFormat(format, "transcript")
+        parserChooser.findFormat(format)
         self.parser = parserChooser.getParser(fileName)
         self.sortedFileName = "%s_sorted.pkl" % (os.path.splitext(fileName)[0])
 
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Python/CompareOverlapping.pyc
b
Binary file SMART/Java/Python/CompareOverlapping.pyc has changed
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Python/CompareOverlappingSmallQuery.pyc
b
Binary file SMART/Java/Python/CompareOverlappingSmallQuery.pyc has changed
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Python/CompareOverlappingSmallRef.pyc
b
Binary file SMART/Java/Python/CompareOverlappingSmallRef.pyc has changed
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Python/ComputeCoverage.py
--- a/SMART/Java/Python/ComputeCoverage.py Mon Apr 22 11:11:10 2013 -0400
+++ b/SMART/Java/Python/ComputeCoverage.py Mon Apr 29 03:20:15 2013 -0400
[
@@ -130,7 +130,7 @@
  parser.add_option("-g", "--format2",   dest="format2",        action="store",                     type="string", help="format of the second file [compulsory] [format: transcript file format]")
  parser.add_option("-t", "--introns",   dest="introns",        action="store_true", default=False,                help="also include introns [format: boolean] [default: false]")
  parser.add_option("-o", "--output",    dest="outputFileName", action="store",    default=None,  type="string", help="output file [format: output file in GFF3 format]")
- parser.add_option("-v", "--verbosity", dest="verbosity",   action="store",                     type="int",    help="trace level [default: 1] [format: int]")
+ parser.add_option("-v", "--verbosity", dest="verbosity",   action="store",      default=1,     type="int",    help="trace level [default: 1] [format: int]")
  (options, args) = parser.parse_args()
 
  computer = CoverageComputer(options.verbosity)
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Python/CountLoci.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/Java/Python/CountLoci.py Mon Apr 29 03:20:15 2013 -0400
[
b'@@ -0,0 +1,230 @@\n+#! /usr/bin/env python\n+#\n+# Copyright INRA-URGI 2009-2012\n+# \n+# This software is governed by the CeCILL license under French law and\n+# abiding by the rules of distribution of free software. You can use,\n+# modify and/ or redistribute the software under the terms of the CeCILL\n+# license as circulated by CEA, CNRS and INRIA at the following URL\n+# "http://www.cecill.info".\n+# \n+# As a counterpart to the access to the source code and rights to copy,\n+# modify and redistribute granted by the license, users are provided only\n+# with a limited warranty and the software\'s author, the holder of the\n+# economic rights, and the successive licensors have only limited\n+# liability.\n+# \n+# In this respect, the user\'s attention is drawn to the risks associated\n+# with loading, using, modifying and/or developing or reproducing the\n+# software by the user in light of its specific status of free software,\n+# that may mean that it is complicated to manipulate, and that also\n+# therefore means that it is reserved for developers and experienced\n+# professionals having in-depth computer knowledge. Users are therefore\n+# encouraged to load and test the software\'s suitability as regards their\n+# requirements in conditions enabling the security of their systems and/or\n+# data to be ensured and, more generally, to use and operate it in the\n+# same conditions as regards security.\n+# \n+# The fact that you are presently reading this means that you have had\n+# knowledge of the CeCILL license and that you accept its terms.\n+#\n+import os, os.path, random\n+from optparse import OptionParser\n+from SMART.Java.Python.structure.TranscriptContainer import TranscriptContainer\n+from commons.core.parsing.GffParser import GffParser\n+from commons.core.writer.Gff3Writer import Gff3Writer\n+from commons.core.writer.TranscriptWriter import TranscriptWriter\n+from SMART.Java.Python.misc.Progress import Progress\n+from SMART.Java.Python.misc.RPlotter import RPlotter\n+from SMART.Java.Python.cleanGff import CleanGff\n+from SMART.Java.Python.CompareOverlappingSmallRef import CompareOverlappingSmallRef\n+from SMART.Java.Python.structure.TranscriptListsComparator import TranscriptListsComparator\n+from SMART.Java.Python.GetUpDownStream import GetUpDownStream\n+\n+REFERENCE = 0\n+QUERY = 1\n+\n+class CountLoci(object):\n+    \n+    def __init__(self, verbosity = 1):\n+        self.verbosity = verbosity\n+        self.tmpFileNames = []\n+\n+    def __del__(self):\n+        for fileName in self.tmpFileNames:\n+            if os.path.exists(fileName):\n+                os.remove(fileName)\n+    \n+    def setInputFile(self, fileName, format):\n+        self.inputFileName = fileName\n+        self.inputFormat = format\n+        self.parser = TranscriptContainer(fileName, format, self.verbosity-1)\n+        if self.verbosity > 0:\n+            print "%d elements in input" % (self.parser.getNbTranscripts())\n+\n+    def setReference(self, fileName):\n+        self.referenceFileName = fileName\n+\n+    def setDistance(self, distance):\n+        self.distance = distance\n+\n+    def setOutputFileName(self, fileName):\n+        self.outputFileName = fileName\n+        self.writer         = Gff3Writer(fileName, self.verbosity-1)\n+        self.outputBase     = "%s_%d_" % (os.path.splitext(fileName)[0], random.randint(0, 10000))\n+\n+    def _writeTmpRef(self, tags, outputFileName):\n+        cleanGff = CleanGff(self.verbosity-1)\n+        cleanGff.setInputFileName(self.referenceFileName)\n+        cleanGff.setOutputFileName(outputFileName)\n+        cleanGff.setAcceptedTypes(tags)\n+        cleanGff.run()\n+\n+    def _getReferenceFiles(self):\n+        self.referenceFiles = {"CDS":                       "%scds.gff3"      % (self.outputBase), \\\n+                               "five_prime_UTR":            "%sfive.gff3"     % (self.outputBase), \\\n+                               "three_prime_UTR":           "%sthree.gff3"    % (self.outputBase), \\\n+                               "mRNA":                      "%smrna.'..b', "gff3", self.referenceFiles["transposable_element_gene"], "gff3", outputNoFileName, True)\n+        self._copy(outputFileName, "TE")\n+        if self.verbosity > 0:\n+            print "%d overlaps in TE" % (nbOverlaps)\n+        return outputNoFileName\n+    \n+    def _getIntron(self, inputFileName):\n+        outputFileName   = "%sin_intron.gff3" % (self.outputBase)\n+        outputNoFileName = "%sin_nointron.gff3" % (self.outputBase)\n+        self.tmpFileNames.extend([outputFileName, outputNoFileName])\n+        nbOverlaps = self._compare(inputFileName, "gff3", self.referenceFiles["mRNA"], "gff3", outputFileName)\n+        self._compare(inputFileName, "gff3", self.referenceFiles["mRNA"], "gff3", outputNoFileName, True)\n+        self._copy(outputFileName, "intron")\n+        if self.verbosity > 0:\n+            print "%d overlaps in introns" % (nbOverlaps)\n+        return outputNoFileName\n+    \n+    def _getVicinity(self, inputFileName):\n+        guds = GetUpDownStream(self.verbosity-1)\n+        guds.setInputFile(self.referenceFiles["mRNA"], "gff3")\n+        guds.setOutputFile(self.referenceFiles["vic"])\n+        guds.setDistances(self.distance, self.distance)\n+        guds.run()\n+        outputFileName = "%sout_vicinity.gff3" % (self.outputBase)\n+        outputNoFileName = "%sout_novicinity.gff3" % (self.outputBase)\n+        self.tmpFileNames.extend([outputFileName, outputNoFileName])\n+        nbOverlaps = self._compare(inputFileName, "gff3", self.referenceFiles["vic"], "gff3", outputFileName)\n+        nbNoOverlaps = self._compare(inputFileName, "gff3", self.referenceFiles["vic"], "gff3", outputNoFileName, True)\n+        self._copy(outputFileName, "vicinity")\n+        self._copy(outputNoFileName, "intergenic")\n+        if self.verbosity > 0:\n+            print "%d overlaps in vicinity" % (nbOverlaps)\n+            print "%d elsewhere" % (nbNoOverlaps)\n+    \n+    def run(self):\n+        self._getReferenceFiles()\n+        outputFileName = self._getCds()\n+        outputFileName = self._getFivePrime(outputFileName)\n+        outputFileName = self._getThreePrime(outputFileName)\n+        outputFileName = self._getNcRna(outputFileName)\n+        outputFileName = self._getTe(outputFileName)\n+        outputFileName = self._getIntron(outputFileName)\n+        self._getVicinity(outputFileName)\n+\n+\n+\n+if __name__ == "__main__":\n+    \n+    # parse command line\n+    description = "Count Loci v1.0.0: Count input elements with respect to CDS, 5\' UTR, 3\' UTR, intron, downstream, upstream. [Category: Personal]"\n+\n+    parser = OptionParser(description = description)\n+    parser.add_option("-i", "--input",     dest="inputFileName",  action="store",            type="string", help="input file              [compulsory] [format: file in transcript format given by -f]")\n+    parser.add_option("-f", "--format",    dest="format",         action="store",            type="string", help="format of the input     [compulsory] [format: transcript file format]")\n+    parser.add_option("-r", "--reference", dest="reference",      action="store",            type="string", help="reference file          [compulsory] [format: file in GFF format]")     \n+    parser.add_option("-o", "--output",    dest="outputFileName", action="store",            type="string", help="output file             [compulsory] [format: output file in GFF3 format]")\n+    parser.add_option("-d", "--distance",  dest="distance",       action="store",            type="int",    help="distance up/down stream [compulsory] [format: output file in GFF3 format]")\n+    parser.add_option("-v", "--verbosity", dest="verbosity",      action="store", default=1, type="int",    help="trace level                          [format: int]")\n+    (options, args) = parser.parse_args()\n+\n+    cl = CountLoci(options.verbosity)\n+    cl.setInputFile(options.inputFileName, options.format)\n+    cl.setDistance(options.distance)\n+    cl.setReference(options.reference)\n+    cl.setOutputFileName(options.outputFileName)\n+    cl.run()\n'
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Python/Cpp/Makefile
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/Java/Python/Cpp/Makefile Mon Apr 29 03:20:15 2013 -0400
b
@@ -0,0 +1,18 @@
+#------------------------------------------------------------------------------
+OBJS=inputFileParser.o ncListCreator.o findOverlaps.o
+PROGRAM=findOverlaps
+CC=g++
+CFLAGS = -Wall -g
+#------------------------------------------------------------------------------
+
+
+all: $(PROGRAM)
+
+$(PROGRAM): $(OBJS)
+ $(CC) $(OBJS) -o $(PROGRAM)
+
+%.o: %.cpp
+ $(CC) $(CFLAGS) -c $<
+
+clean:
+ rm -rf $(OBJS) $(PROGRAM)
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Python/Cpp/findOverlaps.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/Java/Python/Cpp/findOverlaps.cpp Mon Apr 29 03:20:15 2013 -0400
[
@@ -0,0 +1,19 @@
+#include <string>
+#include "inputFileParser.hpp"
+#include "ncListCreator.hpp"
+using namespace std;
+
+int main (int argc, char* argv[]) {
+    if (argc < 4) {
+        cout << "Usage: findOverlaps input1 output\n";
+        exit(0);
+    }
+    string inputFileName1 = string(argv[1]);
+    string inputFileName2 = string(argv[2]);
+    string outputFileName = string(argv[3]);
+    NCListCreator creator = NCListCreator(inputFileName1);
+//  InputFileParser ifp(inputFileName1, outputFileName);
+//  ifp.parse();
+    return 0;
+}
+
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Python/Cpp/genomicInterval.hpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/Java/Python/Cpp/genomicInterval.hpp Mon Apr 29 03:20:15 2013 -0400
b
@@ -0,0 +1,47 @@
+#ifndef GENOMIC_INTERVAL_HPP
+#define GENOMIC_INTERVAL_HPP
+
+#include "interval.hpp"
+#include <stdio.h>
+#include <stdlib.h>
+#include <string>
+#include <sstream>
+
+class GenomicInterval: public Interval {
+
+    public:
+        string chromosome;
+
+        GenomicInterval(string chromosome = "", unsigned int start = 0, unsigned int end = 0): Interval(start, end), chromosome(chromosome) { }
+
+        bool onSameChromosome(const GenomicInterval &i) const {
+            return (chromosome == i.chromosome);
+        }
+
+//      friend bool operator==(const GenomicInterval &i1, const GenomicInterval &i2) {
+//          return ((i1.onSameChromosome(i2)) && (Interval::i1 == Interval::i2));
+//      }
+
+//      friend bool operator<(const GenomicInterval &i1, const GenomicInterval &i2) {
+//          return ((i1.onSameChromosome(i2)) && (Interval::i1 < Interval::i2));
+//      }
+
+        friend ofstream& operator<<(ofstream &stream, const GenomicInterval &i) {
+            stream << i.chromosome << '\t' << i.start << '\t' << i.end << '\n';
+            return stream;
+        }
+        
+        void parseFromLine(string &line) {
+            string strStart, strEnd;
+            istringstream iss(line);
+            getline(iss, chromosome, '\t');
+            getline(iss, strStart,   '\t');
+            getline(iss, strEnd,     '\t');
+            start = atoi(strStart.c_str());
+            end   = atoi(strEnd.c_str());
+            //cout << "read " << chromosome << ":" << start << ".." << end << endl;
+        }
+
+};
+
+#endif
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Python/Cpp/inputFileParser.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/Java/Python/Cpp/inputFileParser.cpp Mon Apr 29 03:20:15 2013 -0400
[
@@ -0,0 +1,134 @@
+#include <algorithm>
+#include <set>
+#include <vector>
+#include <sstream>
+#include "inputFileParser.hpp"
+
+static const unsigned int MAX_SIZE = 10000;
+
+InputFileParser::InputFileParser(string inputFileName, string outputFileName): inputFileName(inputFileName), outputFileName(outputFileName) {
+    outputFilePrefix = outputFileName.substr(0, outputFileName.find_last_of('.'));
+}
+
+
+void InputFileParser::parse() {
+    ifstream file;
+    string line;
+    file.open(inputFileName.c_str());
+    if (file.is_open()) {
+        GenomicInterval genomicInterval;
+        while (file.good()) {
+            getline(file, line);
+            if (line.size() > 0) {
+                genomicInterval.parseFromLine(line);
+                addToList(genomicInterval);
+            }
+        }
+        syncFiles();
+        file.close();
+    }
+    else {
+        cout << "Unable to open file" << inputFileName;
+    }
+    merge();
+}
+
+
+void InputFileParser::addToList(GenomicInterval &genomicInterval) {
+    Interval interval (genomicInterval);
+    IntervalsType *intervals;
+    SortedIntervalsTypes::iterator iter = sortedIntervals.find(genomicInterval.chromosome);
+    if (iter == sortedIntervals.end()) {
+        intervals = new IntervalsType;
+        sortedIntervals[genomicInterval.chromosome] = intervals;
+    }
+    else {
+        intervals = iter->second;
+    }
+    //cout << "pushing " << interval.start << "-" << interval.end << endl;
+    intervals->push_back(&interval);
+    if (intervals->size() >= MAX_SIZE) {
+        writeTmpFile(genomicInterval.chromosome);
+    }
+}
+
+
+void InputFileParser::writeTmpFile(string &chromosome) {
+    SortedIntervalsTypes::iterator iter = sortedIntervals.find(chromosome);
+    IntervalsType *intervals = iter->second;
+
+    sort(intervals->begin(), intervals->end());
+    string fileName = getTmpName(chromosome);
+    ofstream file(fileName.c_str(), ios::out | ios::binary);
+    for (unsigned i = 0; i < intervals->size(); i++) {
+        cout << "writing " << (*intervals)[i]->start << "-" << (*intervals)[i]->end << endl;
+        (*intervals)[i]->writeBinary(file);
+    }
+    file.close();
+    ++counter[chromosome];
+    
+    sortedIntervals[chromosome] = NULL;
+    delete intervals;
+}
+
+
+void InputFileParser::syncFiles() {
+    for (SortedIntervalsTypes::iterator iter = sortedIntervals.begin(); iter != sortedIntervals.end(); iter++) {
+        string chromosome = iter->first;
+        writeTmpFile(chromosome);
+    }
+}
+
+
+string InputFileParser::getTmpName(const string &chromosome, unsigned int i) {
+    stringstream s;
+    s << outputFilePrefix << outputFilePrefix << "_tmp_" << chromosome << "_" << i << ".tmp";
+    return s.str();
+}
+
+
+string InputFileParser::getTmpName(const string &chromosome) {
+    return getTmpName(chromosome, counter[chromosome]);
+}
+
+
+void InputFileParser::merge() {
+    ofstream outputFile(outputFileName.c_str());
+    for (SortedIntervalsTypes::iterator iter = sortedIntervals.begin(); iter != sortedIntervals.end(); iter++) {
+        merge(iter->first, outputFile);
+    }
+}
+
+
+void InputFileParser::merge(const string &chromosome, ofstream &outputFile) {
+    ifstream *files = new ifstream[counter[chromosome]];
+    set<NumberIntervalType *> intervals;
+    for (unsigned int i = 0; i < counter[chromosome]; i++) {
+        string fileName = getTmpName(chromosome, i);
+        files[i].open(fileName.c_str());
+    }
+    for (unsigned int i = 0; i < counter[chromosome]; i++) {
+        if (files[i].good()) {
+            Interval interval;
+            interval.parseBinary(files[i]);
+            NumberIntervalType ni = NumberIntervalType(&interval, i);
+            intervals.insert(&ni);
+        }
+    }
+    while (! intervals.empty()) {
+        NumberIntervalType *ni = *intervals.begin();
+        GenomicInterval gi(chromosome, ni->first->start, ni->first->end);
+        outputFile << gi;
+        intervals.erase(intervals.begin());
+        if (files[ni->second].good()) {
+            Interval interval;
+            interval.parseBinary(files[ni->second]);
+            NumberIntervalType nni = NumberIntervalType(&interval, ni->second);
+            intervals.insert(&nni);
+        }
+    }
+    for (unsigned int i = 0; i < counter[chromosome]; i++) {
+        files[i].close();
+    }
+    delete[] files;
+}
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Python/Cpp/inputFileParser.hpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/Java/Python/Cpp/inputFileParser.hpp Mon Apr 29 03:20:15 2013 -0400
b
@@ -0,0 +1,45 @@
+#ifndef INPUT_FILE_PARSER_HPP
+#define INPUT_FILE_PARSER_HPP
+
+#include <string>
+#include <vector>
+#include <map>
+#include "genomicInterval.hpp"
+
+typedef vector<Interval *> IntervalsType;
+typedef map<string, IntervalsType *> SortedIntervalsTypes;
+typedef map<string, unsigned int> CounterType;
+typedef pair<Interval *, unsigned int> NumberIntervalType;
+
+static bool operator<(const NumberIntervalType &i1, const NumberIntervalType &i2) {
+    if (i1.first < i2.first) return true;
+    return ((i1.first == i2.first) && (i1.second < i2.second));
+}
+
+class InputFileParser {
+
+    private:
+        SortedIntervalsTypes sortedIntervals;
+        CounterType counter;
+
+        void addToList(GenomicInterval &genomicInterval);
+        void writeTmpFile(string &chromosome);
+        void syncFiles();
+        string getTmpName(const string &chromosome, unsigned int i);
+        string getTmpName(const string &chromosome);
+        void merge();
+        void merge(const string &chromosome, ofstream &outputFile);
+
+    public:
+        string inputFileName;
+        string outputFileName;
+        string outputFilePrefix;
+
+        InputFileParser(string inputFileName, string outputFileName);
+
+        void parse(); 
+
+};
+
+#endif
+
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Python/Cpp/inputFileParser.o
b
Binary file SMART/Java/Python/Cpp/inputFileParser.o has changed
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Python/Cpp/interval.hpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/Java/Python/Cpp/interval.hpp Mon Apr 29 03:20:15 2013 -0400
b
@@ -0,0 +1,45 @@
+#ifndef INTERVAL_HPP
+#define INTERVAL_HPP
+#include <iostream>
+#include <fstream>
+using namespace std;
+
+typedef unsigned int Position;
+
+class Interval {
+
+    public:
+        Position start;
+        Position end;
+
+        Interval(unsigned int start = 0, unsigned int end = 0): start(start), end(end) { }
+
+        Interval(Interval &i): start(i.start), end(i.end) { }
+
+        bool include(Interval &interval) {
+            return ((start <= interval.start) && (end >= interval.end));
+        }
+
+        void writeBinary(ofstream &stream) {
+            stream.write(reinterpret_cast<const char*>(&start), sizeof(Position));
+            stream.write(reinterpret_cast<const char*>(&end),   sizeof(Position));
+        }
+
+        bool parseBinary(ifstream &stream) {
+            stream.read(reinterpret_cast<char*>(&start), sizeof(Position));
+            stream.read(reinterpret_cast<char*>(&end),   sizeof(Position));
+            return (! stream.eof());
+        }
+
+        friend bool operator==(const Interval &i1, const Interval &i2) {
+            return ((i1.start == i2.start) && (i1.start == i2.end));
+        }
+
+        friend bool operator<(const Interval &i1, const Interval &i2) {
+            if (i1.start < i2.start) return true;
+            return ((i1.start == i2.start) && (i1.end > i2.end));
+        }
+
+};
+
+#endif
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Python/Cpp/ncList.hpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/Java/Python/Cpp/ncList.hpp Mon Apr 29 03:20:15 2013 -0400
b
@@ -0,0 +1,20 @@
+#ifndef NC_LIST_HPP
+#define NC_LIST_HPP
+
+#include "table.hpp"
+
+class NCList {
+
+    private:
+        Table *h, *l;
+
+
+    public:
+
+        NCList (Table *h, Table *l): h(h), l(l) {}
+
+
+};
+
+#endif
+
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Python/Cpp/ncListCreator.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/Java/Python/Cpp/ncListCreator.cpp Mon Apr 29 03:20:15 2013 -0400
[
@@ -0,0 +1,179 @@
+#include "ncListCreator.hpp"
+
+NCListCreator::NCListCreator(string inputFileName): inputFileName(inputFileName) {}
+
+string NCListCreator::getFileName(string chromosome) {
+    return inputFileName.substr(0, inputFileName.find_last_of('.')) + "_" + chromosome + ".bed";
+}
+
+void NCListCreator::splitFile () {
+    Chromosomes chromosomes;
+    GenomicInterval interval;
+    map <string, ofstream> splittedFiles;
+    map <string, ofstream>::iterator it;
+    ifstream file;
+    string line, fileName;
+    string chromosome;
+    file.open(inputFileName.c_str());
+    if (file.is_open()) {
+        while (file.good()) {
+            getline(file, line);
+            if (line.size() > 0) {
+                interval.parseFromLine(line);
+                chromosomes.insert(interval.chromosome);
+                fileName = getFileName(interval.chromosome);
+                it = splittedFiles.find(interval.chromosome);
+                if (it == splittedFiles.end()) {
+                    ofstream outputFile;
+                    outputFile.open(fileName.c_str(), ios::out | ios::binary);
+                    interval.writeBinary(outputFile);
+                    splittedFiles[chromosome] = outputFile;
+                }
+                else {
+                    it->second << line << "\n";
+                }
+            }
+        }
+        file.close();
+        for (it = splittedFiles.begin(); it != splittedFiles.end(); it++) {
+            it->second.close();
+        }
+    }
+    else {
+        cout << "Unable to open file" << inputFileName;
+    }
+}
+
+void NCListCreator::run() {
+    for (Chromosomes::iterator it = chromosomes.begin(); splittedFiles != chromosomes.end(); splittedFiles++) {
+        buildLists(*it);
+    }
+}
+
+void NCListCreator::buildLists(string chromosome) {
+    createTables(chromosome);
+    labelLists();
+    computeSubStart();
+    computeAbsPosition();
+    cleanFiles();
+    transfer(chromosome);
+}
+
+void NCListCreator::createTables(string chromosome) {
+    initLists(chromosome);
+    h = new Table(H_CELL_SIZE, nbLists);
+    t = new Table(T_CELL_SIZE, nbLines);
+    l = new Table(L_CELL_SIZE, nbLines);
+    fillTables(chromosome);
+}

+void NCListCreator::initLists (string chromosome) {
+    nbLists = 0;
+    nbLines = 0;
+    ifstream file;
+    file.open(getFileName(chromosome).c_str(), ios::in | ios::binary);
+    Interval currentInterval, previousInterval;
+    if (file.is_open()) {
+        while (file.good()) {
+            if (currentInterval.parseBinary(file)) {
+                nbLines++;
+                if (previousInterval.include(currentInterval)) {
+                    nbLists++;
+                }
+            }
+            previousInterval = currentInterval;
+        }
+    }
+    file.close();
+}
+
+void NCListCreator::fillTables (string chromosome) {
+    ifstream file;
+    file.open(getFileName(chromosome).c_str(), ios::in | ios::binary);
+    Interval currentInterval, previousInterval;
+    unsigned int i = 0;
+    if (file.is_open()) {
+        while (file.good()) {
+            if (currentInterval.parseBinary(file)) {
+                t->write(currentInterval.start, i, 0);
+                t->writeHere(currentInterval.end);
+                t->writeHere(-1);
+                t->writeHere(-1);
+            }
+            i++;
+        }
+        file.close();
+    }
+    t->write(SENTINEL, LIST, -1);
+    l->write(SENTINEL, LIST,  0);
+    t->write(SENTINEL, NEW,  -1);
+}
+
+void NCListCreator::labelLists () {
+    unsigned int nextL = 0, thisL, length;
+    unsigned int p;
+    Interval current, parent;
+    for (unsigned int i = 0; i < nbLines; i++) {
+        p = i - 1;
+        t->moveTo(p, 0);
+        parent.readBinary(t->file);
+        t->moveTo(i, 0);
+        current.readBinary(t->file);
+        while ((p != SENTINEL) && (! parent.include(current))) {
+            p = t->read(p, PARENT);
+            t->moveTo(p, 0);
+            parent.readBinary(t->file);
+        }
+        thisL = t->read(p, LIST);
+        if (thisL == SENTINEL) {
+            thisL = nextL;
+            nextL++;
+            length = 0;
+            t->write(p, LIST, thisL);
+        }
+        else {
+            length = h->read(thisL, LENGTH);
+        }
+        t->write(i, PARENT, p);
+        h->write(thisL, LENGTH, length+1);
+    }
+}
+
+void NCListCreator::computeSubStart () {
+    unsigned int total = 0;
+    for (unsigned int i = 0; i < nbLists; i++) {
+        h->write(i, START, total);
+        total += h->read(i, LENGTH);
+        h->write(i, LENGTH, 0);
+    }
+}
+
+void NCListCreator::computeAbsPosition () {
+    Value s, e, pt, hp, pl, nb, lp;
+    for (unsigned int i = 0; i < nbLines; i++) {
+        s = t->read(i,   START);
+        e  = t->read(i,  END);
+        pt = t->read(i,  PARENT);
+        hp = t->read(pt, LIST);
+        pl = t->read(pt, NEW);
+        nb = h->read(hp, LENGTH);
+        lp = h->read(hp, START) + nb;
+        t->write(i,  NEW,    lp);
+        l->write(lp, START,  s);
+        l->write(lp, END,    e);
+        l->write(lp, LIST,   SENTINEL);
+        l->write(lp, PARENT, pl);
+        h->write(lp, LENGTH, nb+1);
+        if (nb == 0) {
+            l->write(pl, LIST, hp);   
+        }
+    }
+}
+
+void NCListCreator::cleanFiles () {
+    t->destroy();
+}
+
+void NCListCreator::transfer (string chromosome) {
+    ncLists[chromosome] = NCList(h, l);
+}
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Python/Cpp/ncListCreator.hpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/Java/Python/Cpp/ncListCreator.hpp Mon Apr 29 03:20:15 2013 -0400
b
@@ -0,0 +1,57 @@
+#ifndef NC_LIST_CREATOR_HPP
+#define NC_LIST_CREATOR_HPP
+
+#include "ncList.hpp"
+#include "table.hpp"
+#include "genomicInterval.hpp"
+#include <set>
+#include <map>
+
+typedef set<string> Chromosomes;
+typedef map<string, NCList *> NCLists;
+
+static const unsigned int H_CELL_SIZE = 2;
+static const unsigned int L_CELL_SIZE = 4;
+static const unsigned int T_CELL_SIZE = 5;
+
+static const unsigned int START   = 0;
+static const unsigned int END     = 1;
+static const unsigned int LIST    = 2;
+static const unsigned int PARENT  = 3;
+static const unsigned int NEW     = 4;
+static const unsigned int LENGTH  = 1;
+
+
+class NCListCreator {
+
+    private:
+        string inputFileName;
+        Table  *h, *l, *t;
+
+        string getFileName(string chromosome);
+        void buildLists(string chromosome);
+        void createTables(string chromosome);
+        void initLists(string chromosome);
+        void fillTables(string chromosome);
+        void labelLists();
+        void computeSubStart();
+        void computeAbsPosition();
+        void cleanFiles();
+        void transfer(string chromosome);
+        unsigned int nbLists, nbLines;
+
+
+    public:
+        Chromosomes chromosomes;
+        NCLists ncLists;
+
+        NCListCreator (string inputFileName);
+
+        void splitFile ();
+        void run ();
+
+};
+
+#endif
+
+
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Python/Cpp/table.hpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/Java/Python/Cpp/table.hpp Mon Apr 29 03:20:15 2013 -0400
[
@@ -0,0 +1,84 @@
+#ifndef TABLE_HPP
+#define TABLE_HPP
+
+#include <iostream>
+#include <fstream>
+#include <string>
+#include <stdio.h>
+using namespace std;
+
+typedef unsigned int Value;
+static const unsigned int SENTINEL = -1;
+
+class Table {
+    private:
+        int sentinel;
+        Value *values;
+
+    public:
+        string fileName;
+        unsigned int width;
+        unsigned int height;
+        fstream file;
+
+        Table (string fileName, unsigned int width, unsigned int height): sentinel(-1), fileName(fileName), width(width), height(height) {
+            file.open(fileName.c_str(), ios::out | ios::in | ios::binary);
+            Value v = 0;
+            for (unsigned int i = 0; i < width * height; i++) {
+                writeHere(v);
+            }
+            file.flush();
+            values = new Value[width];
+        }
+
+        ~Table () {
+            delete[] values;
+        }
+
+        void moveTo (unsigned int col, unsigned int line) {
+            if (col == SENTINEL) {
+                sentinel = line;
+            }
+            else {
+                sentinel = -1;
+                file.seekp((col * width + line) * sizeof(Value));
+            }
+        }
+
+        void write (Value v, unsigned int col, unsigned int line) {
+            moveTo(col, line);
+            writeHere(v);
+        }
+
+        void writeHere(Value v) {
+            if (sentinel >= 0)
+                values[sentinel] = v;
+            else
+                file.write(reinterpret_cast<const char*>(&v), sizeof(Value));
+        }
+
+        
+        Value read (unsigned int col, unsigned int line) {
+            moveTo(col, line);
+            return readHere();
+        }
+
+        Value readHere () {
+            if (sentinel >= 0) {
+                return values[sentinel];
+            }
+            else {
+                Value v;
+                file.read(reinterpret_cast<char*>(&v), sizeof(Value));
+                return v;
+            }
+        }
+
+        void destroy () {
+            file.close();
+            remove(fileName.c_str());
+        }
+
+};
+
+#endif
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Python/Cpp/testIn.bed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/Java/Python/Cpp/testIn.bed Mon Apr 29 03:20:15 2013 -0400
b
@@ -0,0 +1,25 @@
+arm_2R 15844993 15845110
+arm_2R 15845130 15845145
+arm_2R 15845456 15845471
+arm_2R 15845688 15845696
+arm_2R 15846253 15846278
+arm_2R 15847272 15847281
+arm_2R 15847296 15847324
+arm_2R 15847709 15847717
+arm_2R 15848021 15848030
+arm_2R 15848720 15848728
+arm_2R 15848918 15848963
+arm_2R 15849011 15849050
+arm_2R 15849065 15849104
+arm_2R 15849151 15849164
+arm_2R 15849748 15849756
+arm_2R 15849785 15849827
+arm_2R 15849861 15849978
+arm_2R 15849998 15850013
+arm_2R 15850181 15850209
+arm_2R 15850295 15850322
+arm_2R 15850357 15850376
+arm_2R 15850673 15850690
+arm_2R 15850717 15850760
+arm_2R 15850788 15850816
+arm_2R 15850961 15850974
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Python/Cpp/testOut.bed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/Java/Python/Cpp/testOut.bed Mon Apr 29 03:20:15 2013 -0400
b
@@ -0,0 +1,26 @@
+arm_2R 15850961 15850974
+arm_2R 15850961 15850974
+arm_2R 15850961 15850974
+arm_2R 15850961 15850974
+arm_2R 15850961 15850974
+arm_2R 15850961 15850974
+arm_2R 15850961 15850974
+arm_2R 15850961 15850974
+arm_2R 15850961 15850974
+arm_2R 15850961 15850974
+arm_2R 15850961 15850974
+arm_2R 15850961 15850974
+arm_2R 15850961 15850974
+arm_2R 15850961 15850974
+arm_2R 15850961 15850974
+arm_2R 15850961 15850974
+arm_2R 15850961 15850974
+arm_2R 15850961 15850974
+arm_2R 15850961 15850974
+arm_2R 15850961 15850974
+arm_2R 15850961 15850974
+arm_2R 15850961 15850974
+arm_2R 15850961 15850974
+arm_2R 15850961 15850974
+arm_2R 15850961 15850974
+arm_2R 0 0
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Python/GetDistribution.py
--- a/SMART/Java/Python/GetDistribution.py Mon Apr 22 11:11:10 2013 -0400
+++ b/SMART/Java/Python/GetDistribution.py Mon Apr 29 03:20:15 2013 -0400
b
@@ -288,7 +288,7 @@
  if self.nbBins > 0:
  transcript.setEnd(bin + self.sliceSize)
  else:
- transcript.setEnd(start)
+ transcript.setEnd(self.start)
  transcript.setDirection(1 if strand == 0 else strand)
  transcript.setTagValue("ID", "region%d" % (cpt))
  cpt += 1
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Python/GetFlanking.py
--- a/SMART/Java/Python/GetFlanking.py Mon Apr 22 11:11:10 2013 -0400
+++ b/SMART/Java/Python/GetFlanking.py Mon Apr 29 03:20:15 2013 -0400
[
b'@@ -44,188 +44,190 @@\n TAG_REGION   = "_region"\n TAGS_REGION  = {-1: "_upstream", 0: "", 1: "_downstream"}\n TAGS_RREGION = {-1: "upstream", 0: "overlapping", 1: "downstream"}\n-TAGS_SENSE   = {-1: "antisense", 0: "", 1: "colinear"}\n+TAGS_SENSE   = {-1: "antisense", 0: "", 1: "collinear"}\n STRANDSTOSTR = {-1: "(-)", 0: "", 1: "(+)"}\n \n \n-def getOrderKey(transcript, direction):\n-    if direction == 1:\n-        return transcript.getEnd()\n-    return - transcript.getStart()\n-\n-def isInGoodRegion(transcriptRef, transcriptQuery, direction):\n-    if direction == 1:\n-        return transcriptQuery.getEnd() > transcriptRef.getEnd()\n-    return transcriptQuery.getStart() < transcriptRef.getStart()\n+def getOrderKey(transcript, direction, input):\n+\tif direction == 1:\n+\t\tif input == QUERY:\n+\t\t\treturn (transcript.getEnd(), -transcript.getStart())\n+\t\treturn (transcript.getStart(), -transcript.getEnd())\n+\tif input == QUERY:\n+\t\treturn (-transcript.getStart(), transcript.getEnd())\n+\treturn (-transcript.getEnd(), transcript.getStart())\n \n \n class GetFlanking(object):\n \n-    def __init__(self, verbosity):\n-        self.verbosity   = verbosity\n-        self.transcripts = dict([id, {}] for id in INPUTS)\n-        self.directions  = []\n-        self.noOverlap   = False\n-        self.colinear    = False\n-        self.antisense   = False\n-        self.distance    = None\n-        self.minDistance = None\n-        self.maxDistance = None\n-        self.tagName     = "flanking"\n+\tdef __init__(self, verbosity):\n+\t\tself.verbosity   = verbosity\n+\t\tself.transcripts = dict([id, {}] for id in INPUTS)\n+\t\tself.directions  = []\n+\t\tself.noOverlap   = False\n+\t\tself.colinear    = False\n+\t\tself.antisense   = False\n+\t\tself.distance    = None\n+\t\tself.minDistance = None\n+\t\tself.maxDistance = None\n+\t\tself.tagName     = "flanking"\n \n-    def setInputFile(self, fileName, format, id):\n-        chooser = ParserChooser(self.verbosity)\n-        chooser.findFormat(format)\n-        parser = chooser.getParser(fileName)\n-        for transcript in parser.getIterator():\n-            chromosome = transcript.getChromosome()\n-            if chromosome not in self.transcripts[id]:\n-                self.transcripts[id][chromosome] = []\n-            self.transcripts[id][chromosome].append(transcript)\n+\tdef setInputFile(self, fileName, format, id):\n+\t\tchooser = ParserChooser(self.verbosity)\n+\t\tchooser.findFormat(format)\n+\t\tparser = chooser.getParser(fileName)\n+\t\tfor transcript in parser.getIterator():\n+\t\t\tchromosome = transcript.getChromosome()\n+\t\t\tif chromosome not in self.transcripts[id]:\n+\t\t\t\tself.transcripts[id][chromosome] = []\n+\t\t\tself.transcripts[id][chromosome].append(transcript)\n \n-    def setOutputFile(self, fileName):\n-        self.writer = TranscriptWriter(fileName, "gff3", self.verbosity)\n-\n-    def addUpstreamDirection(self, upstream):\n-        if upstream:\n-            self.directions.append(-1)\n-\n-    def addDownstreamDirection(self, downstream):\n-        if downstream:\n-            self.directions.append(1)\n+\tdef setOutputFile(self, fileName):\n+\t\tself.writer = TranscriptWriter(fileName, "gff3", self.verbosity)\n \n-    def setColinear(self, colinear):\n-        self.colinear = colinear\n-\n-    def setAntisense(self, antisense):\n-        self.antisense = antisense\n+\tdef addUpstreamDirection(self, upstream):\n+\t\tif upstream:\n+\t\t\tself.directions.append(-1)\n \n-    def setNoOverlap(self, noOverlap):\n-        self.noOverlap = noOverlap\n+\tdef addDownstreamDirection(self, downstream):\n+\t\tif downstream:\n+\t\t\tself.directions.append(1)\n \n-    def setMinDistance(self, distance):\n-        self.minDistance = distance\n-\n-    def setMaxDistance(self, distance):\n-        self.maxDistance = distance\n+\tdef setColinear(self, colinear):\n+\t\tself.colinear = colinear\n \n-    def setNewTagName(self, tagName):\n-        self.tagName = tagName\n+\tdef setAntisense(self, antisense):\n+\t\tself.antisense = antisense\n+\n+\tdef setNoOverlap(self, noOverlap):\n+\t\tself.noOverlap = noOverlap\n \n-    def match(self, transcript'..b'race level [format: int]")\n-    (options, args) = parser.parse_args()\n+\tparser = OptionParser(description = description)\n+\tparser.add_option("-i", "--input1",      dest="inputFileName1", action="store",                          type="string", help="query input file [compulsory] [format: file in transcript format given by -f]")\n+\tparser.add_option("-f", "--format1",     dest="format1",        action="store",                          type="string", help="format of previous file [compulsory] [format: transcript file format]")\n+\tparser.add_option("-j", "--input2",      dest="inputFileName2", action="store",                          type="string", help="reference input file [compulsory] [format: file in transcript format given by -g]")\n+\tparser.add_option("-g", "--format2",     dest="format2",        action="store",                          type="string", help="format of previous file [compulsory] [format: transcript file format]")\n+\tparser.add_option("-5", "--upstream",    dest="upstream",       action="store_true", default=False,                     help="output upstream elements [format: boolean] [default: False]")\n+\tparser.add_option("-3", "--downstream",  dest="downstream",     action="store_true", default=False,                     help="output downstream elements [format: boolean] [default: False]")\n+\tparser.add_option("-c", "--colinear",    dest="colinear",       action="store_true", default=False,                     help="find first colinear element [format: boolean] [default: False]")\n+\tparser.add_option("-a", "--antisense",   dest="antisense",      action="store_true", default=False,                     help="find first anti-sense element [format: boolean] [default: False]")\n+\tparser.add_option("-e", "--noOverlap",   dest="noOverlap",      action="store_true", default=False,                     help="do not consider elements which are overlapping reference elements [format: boolean] [default: False]")\n+\tparser.add_option("-d", "--minDistance", dest="minDistance",    action="store",      default=None,       type="int",    help="minimum distance between 2 elements [format: int]")\n+\tparser.add_option("-D", "--maxDistance", dest="maxDistance",    action="store",      default=None,       type="int",    help="maximum distance between 2 elements [format: int]")\n+\tparser.add_option("-t", "--tag",         dest="tagName",        action="store",      default="flanking", type="string", help="name of the new tag [format: string] [default: flanking]")\n+\tparser.add_option("-o", "--output",      dest="outputFileName", action="store",                          type="string", help="output file [format: output file in GFF3 format]")\n+\tparser.add_option("-v", "--verbosity",   dest="verbosity",      action="store",      default=1,          type="int",    help="trace level [format: int]")\n+\t(options, args) = parser.parse_args()\n \n-    gf = GetFlanking(options.verbosity)\n-    gf.setInputFile(options.inputFileName1, options.format1, QUERY)\n-    gf.setInputFile(options.inputFileName2, options.format2, REFERENCE)\n-    gf.setOutputFile(options.outputFileName)\n-    gf.addUpstreamDirection(options.upstream)\n-    gf.addDownstreamDirection(options.downstream)\n-    gf.setColinear(options.colinear)\n-    gf.setAntisense(options.antisense)\n-    gf.setNoOverlap(options.noOverlap)\n-    gf.setMinDistance(options.minDistance)\n-    gf.setMaxDistance(options.maxDistance)\n-    gf.setNewTagName(options.tagName)\n-    gf.run()\n+\tgf = GetFlanking(options.verbosity)\n+\tgf.setInputFile(options.inputFileName1, options.format1, QUERY)\n+\tgf.setInputFile(options.inputFileName2, options.format2, REFERENCE)\n+\tgf.setOutputFile(options.outputFileName)\n+\tgf.addUpstreamDirection(options.upstream)\n+\tgf.addDownstreamDirection(options.downstream)\n+\tgf.setColinear(options.colinear)\n+\tgf.setAntisense(options.antisense)\n+\tgf.setNoOverlap(options.noOverlap)\n+\tgf.setMinDistance(options.minDistance)\n+\tgf.setMaxDistance(options.maxDistance)\n+\tgf.setNewTagName(options.tagName)\n+\tgf.run()\n'
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Python/GetIntersection.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/Java/Python/GetIntersection.py Mon Apr 29 03:20:15 2013 -0400
[
@@ -0,0 +1,164 @@
+#! /usr/bin/env python
+#
+# Copyright INRA-URGI 2009-2011
+# 
+# This software is governed by the CeCILL license under French law and
+# abiding by the rules of distribution of free software. You can use,
+# modify and/ or redistribute the software under the terms of the CeCILL
+# license as circulated by CEA, CNRS and INRIA at the following URL
+# "http://www.cecill.info".
+# 
+# As a counterpart to the access to the source code and rights to copy,
+# modify and redistribute granted by the license, users are provided only
+# with a limited warranty and the software's author, the holder of the
+# economic rights, and the successive licensors have only limited
+# liability.
+# 
+# In this respect, the user's attention is drawn to the risks associated
+# with loading, using, modifying and/or developing or reproducing the
+# software by the user in light of its specific status of free software,
+# that may mean that it is complicated to manipulate, and that also
+# therefore means that it is reserved for developers and experienced
+# professionals having in-depth computer knowledge. Users are therefore
+# encouraged to load and test the software's suitability as regards their
+# requirements in conditions enabling the security of their systems and/or
+# data to be ensured and, more generally, to use and operate it in the
+# same conditions as regards security.
+# 
+# The fact that you are presently reading this means that you have had
+# knowledge of the CeCILL license and that you accept its terms.
+#
+from optparse import OptionParser
+from commons.core.parsing.ParserChooser import ParserChooser
+from commons.core.writer.TranscriptWriter import TranscriptWriter
+from SMART.Java.Python.structure.Interval import Interval
+from SMART.Java.Python.structure.Transcript import Transcript
+from SMART.Java.Python.structure.Mapping import Mapping
+from SMART.Java.Python.misc.Progress import Progress
+from SMART.Java.Python.misc.UnlimitedProgress import UnlimitedProgress
+
+MINBIN = 3
+MAXBIN = 7
+REFERENCE = 0
+QUERY = 1
+
+def getBin(start, end):
+ for i in range(MINBIN, MAXBIN + 1):
+ binLevel = 10 ** i
+ if int(start / binLevel) == int(end / binLevel):
+ return int(i * 10 ** (MAXBIN + 1) + int(start / binLevel))
+ return int((MAXBIN + 1) * 10 ** (MAXBIN + 1))
+
+def getOverlappingBins(start, end):
+ array = []
+ bigBin = int((MAXBIN + 1) * 10 ** (MAXBIN + 1))
+ for i in range(MINBIN, MAXBIN + 1):
+ binLevel = 10 ** i
+ array.append((int(i * 10 ** (MAXBIN + 1) + int(start / binLevel)), int(i * 10 ** (MAXBIN + 1) + int(end / binLevel))))
+ array.append((bigBin, bigBin))
+ return array
+
+
+class GetIntersection(object):
+
+ def __init__(self, verbosity):
+ self.verbosity              = verbosity
+ self.nbQueries              = 0
+ self.nbRefs                 = 0
+ self.nbWritten              = 0
+ self.bins                 = {}
+
+ def setReferenceFile(self, fileName, format):
+ chooser = ParserChooser(self.verbosity)
+ chooser.findFormat(format)
+ self.refParser = chooser.getParser(fileName)
+
+ def setQueryFile(self, fileName, format):
+ chooser = ParserChooser(self.verbosity)
+ chooser.findFormat(format)
+ self.queryParser = chooser.getParser(fileName)
+
+ def setOutputFile(self, fileName):
+ self.writer = TranscriptWriter(fileName, "gff3", self.verbosity)
+
+ def loadRef(self):
+ progress = UnlimitedProgress(10000, "Reading references", self.verbosity)
+ for transcript in self.refParser.getIterator():
+ if transcript.__class__.__name__ == "Mapping":
+ transcript = transcript.getTranscript()
+ chromosome = transcript.getChromosome()
+ bin    = getBin(transcript.getStart(), transcript.getEnd())
+ if chromosome not in self.bins:
+ self.bins[chromosome] = {}
+ if bin not in self.bins[chromosome]:
+ self.bins[chromosome][bin] = []
+ self.bins[chromosome][bin].append(transcript)
+ self.nbRefs += 1
+ progress.inc()
+ progress.done()
+
+ def _compareTranscript(self, queryTranscript):
+ queryChromosome = queryTranscript.getChromosome()
+ if queryChromosome not in self.bins:
+ return None
+ queryStart = queryTranscript.getStart()
+ queryEnd   = queryTranscript.getEnd()
+ bins    = getOverlappingBins(queryStart, queryEnd)
+ overlaps   = []
+ for binRange in bins:
+ for bin in range(binRange[0], binRange[1]+1):
+ if bin not in self.bins[queryChromosome]:
+ continue
+ for refTranscript in self.bins[queryChromosome][bin]:
+ newTranscript = queryTranscript.getIntersection(refTranscript)
+ if newTranscript != None:
+ overlaps.append(newTranscript)
+ if not overlaps:
+ return None
+ newTranscript = overlaps[0]
+ for transcript in overlaps[1:]:
+ newTranscript.merge(transcript)
+ return newTranscript
+
+ def compare(self):
+ progress = UnlimitedProgress(10000, "Comparing queries", self.verbosity)
+ for queryTranscript in self.queryParser.getIterator():
+ if queryTranscript.__class__.__name__ == "Mapping":
+ queryTranscript = queryTranscript.getTranscript()
+ progress.inc()
+ self.nbQueries += 1
+ newTranscript = self._compareTranscript(queryTranscript)
+ if newTranscript != None:
+ self.writer.addTranscript(queryTranscript)
+ self.nbWritten += 1
+ progress.done()
+ self.writer.close()
+
+ def displayResults(self):
+ print "# queries:  %d" % (self.nbQueries)
+ print "# refs:     %d" % (self.nbRefs)
+ print "# written:  %d" % (self.nbWritten)
+
+ def run(self):
+ self.loadRef()
+ self.compare()
+ self.displayResults()
+
+if __name__ == "__main__":
+
+ description = "Get Intersection v1.0.0: Shrink the first data set so that all bases covered by the first data set is also covered by the second data set. [Category: Data Comparison]"
+
+ parser = OptionParser(description = description)
+ parser.add_option("-i", "--input1",         dest="inputFileName1", action="store",            type="string", help="query input file [compulsory] [format: file in transcript format given by -f]")
+ parser.add_option("-f", "--format1",        dest="format1",   action="store",            type="string", help="format of previous file [compulsory] [format: transcript file format]")
+ parser.add_option("-j", "--input2",         dest="inputFileName2", action="store",            type="string", help="reference input file [compulsory] [format: file in transcript format given by -g]")
+ parser.add_option("-g", "--format2",        dest="format2",   action="store",            type="string", help="format of previous file [compulsory] [format: transcript file format]")
+ parser.add_option("-o", "--output",         dest="outputFileName", action="store",            type="string", help="output file [format: output file in GFF3 format]")
+ parser.add_option("-v", "--verbosity",      dest="verbosity",    action="store",      default=1,     type="int",  help="trace level [format: int]")
+ (options, args) = parser.parse_args()
+
+ gi = GetIntersection(options.verbosity)
+ gi.setQueryFile(options.inputFileName1, options.format1)
+ gi.setReferenceFile(options.inputFileName2, options.format2)
+ gi.setOutputFile(options.outputFileName)
+ gi.run()
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Python/GetReadDistribution.py
--- a/SMART/Java/Python/GetReadDistribution.py Mon Apr 22 11:11:10 2013 -0400
+++ b/SMART/Java/Python/GetReadDistribution.py Mon Apr 29 03:20:15 2013 -0400
[
b'@@ -39,7 +39,7 @@\n \n LOG_DEPTH      = "smart"\n DEFAULT_REGION = "_all_"\n-MULTIPLE_STR   = {1: "", 1000: " (in kpb)", 1000000: " (in Gbp)"}\n+MULTIPLE_STR   = {1: "", 1000: " (in kbp)", 1000000: " (in Gbp)"}\n \n class GetReadDistribution(object):\n \n@@ -56,8 +56,10 @@\n \t\tself.tmpDatName   = None\n \t\tself.tmpRName     = None\n \t\tself.quorum       = 1\n+\t\tself.strands      = False\n \t\tself.width        = 800\n \t\tself.height       = 300\n+\t\tself.arial        = False\n \n \tdef setNames(self, names):\n \t\tself.names = names\n@@ -82,7 +84,10 @@\n \t\tself.colors = colors\n \n \tdef setFactors(self, factors):\n-\t\tself.factors = dict(zip(self.names, factors))\n+\t\tif factors == None:\n+\t\t\tself.factors = dict([name, 1.0] for name in self.names)\n+\t\telse:\n+\t\t\tself.factors = dict(zip(self.names, factors))\n \n \tdef setMultiple(self, boolean):\n \t\tself.multiple = boolean\n@@ -100,6 +105,12 @@\n \t\tif fileName != None:\n \t\t\tself._loadRegions(fileName)\n \n+\tdef setBothStrands(self, strands):\n+\t\tself.strands = strands\n+\n+\tdef setArial(self, arial):\n+\t\tself.arial = arial\n+\n \tdef _checkOptions(self):\n \t\tif not self.parsers:\n \t\t\tself.logAndRaise("ERROR: Missing input file names")\n@@ -156,14 +167,17 @@\n \t\t\t\tchromosome  = transcript.getChromosome()\n \t\t\t\tnbElements  = float(transcript.getTagValue("nbElements")) if "nbElements" in transcript.getTagNames() else 1\n \t\t\t\tnbElements *= self.factors.get(name, 1)\n+\t\t\t\tstrand      = transcript.getDirection() if self.strands else 1\n \t\t\t\tif chromosome not in self.distribution[region][name]:\n \t\t\t\t\tself.distribution[region][name][chromosome] = {}\n+\t\t\t\tif strand not in self.distribution[region][name][chromosome]:\n+\t\t\t\t\tself.distribution[region][name][chromosome][strand] = {}\n \t\t\t\tpreviousBin = None\n \t\t\t\tfor exon in transcript.getExons():\n \t\t\t\t\tfor pos in range(exon.getStart(), exon.getEnd()+1):\n \t\t\t\t\t\tbin = pos / self.binSize\n \t\t\t\t\t\tif bin != previousBin:\n-\t\t\t\t\t\t\tself.distribution[region][name][chromosome][bin] = self.distribution[region][name][chromosome].get(bin, 0) + nbElements\n+\t\t\t\t\t\t\tself.distribution[region][name][chromosome][strand][bin] = self.distribution[region][name][chromosome][strand].get(bin, 0) + nbElements\n \t\t\t\t\t\t\tpreviousBin = bin\n \t\t\tprogress.inc()\n \t\tprogress.done()\n@@ -171,22 +185,23 @@\n \tdef _checkQuorum(self, region):\n \t\tif self.quorum == None:\n \t\t\treturn True\n-\t\treturn max([max([max(self.distribution[region][name][chromosome].values()) for chromosome in self.distribution[region][name]]) for name in self.distribution[region]]) >= self.quorum\n+\t\treturn max([max([max([max(self.distribution[region][name][chromosome][strand].values()) for strand in self.distribution[region][name][chromosome]]) for chromosome in self.distribution[region][name]]) for name in self.distribution[region]])\n \n \tdef _writeData(self, region):\n \t\tself.tmpDatName = "tmpFile%d.dat" % (self.number)\n \t\thandle          = open(self.tmpDatName, "w")\n-\t\thandle.write("Chr\\tPos\\tCount\\tSample\\n")\n+\t\thandle.write("Chr\\tPos\\tStrand\\tCount\\tSample\\n")\n \t\tfor name in self.distribution[region]:\n \t\t\tfor chromosome in sorted(self.distribution[region][name].keys()):\n-\t\t\t\tfor pos in sorted(self.distribution[region][name][chromosome].keys()):\n-\t\t\t\t\thandle.write("%s\\t%d\\t%d\\t\\"%s\\"\\n" % (chromosome, pos * self.binSize, self.distribution[region][name][chromosome].get(pos, 0), name))\n+\t\t\t\tfor strand in sorted(self.distribution[region][name][chromosome].keys()):\n+\t\t\t\t\tfor pos in sorted(self.distribution[region][name][chromosome][strand].keys()):\n+\t\t\t\t\t\thandle.write("%s\\t%d\\t%d\\t%d\\t\\"%s\\"\\n" % (chromosome, pos * self.binSize, strand, self.distribution[region][name][chromosome][strand].get(pos, 0) * strand, name))\n \t\thandle.close()\n \n \tdef _findMultiple(self, region):\n \t\tif not self.multiple:\n \t\t\treturn 1\n-\t\tmaxPosition = max([self.distribution[region][name][chromosome].keys() for name in self.distribution[region] for chromosome in self.distribution[region][name]])\n+\t\tmaxPosition = max([max([max([max(self.distribution[region][name][chromosome][strand].keys()) for strand in sel'..b'(fileName, self.width, self.height))\n-\t\thandle.write("ggplot(data, aes(x = Pos/%d, y = Count, fill = Sample, color = Sample)) + opts(title = \\"Distribution%s\\") + geom_bar(stat = \\"identity\\") + facet_grid(%s, space=\\"free\\") + xlab(\\"%s%s\\") + ylab(\\"%s\\") + %s + opts(legend.position = \\"none\\", panel.grid.major = theme_blank(), panel.grid.minor = theme_blank(), panel.background = theme_blank())\\n" % (multiple, title, facet, self.xLab, MULTIPLE_STR[multiple], self.yLab, colors))\n+\t\thandle.write("ggplot(data, aes(x = Pos/%d, y = Count, fill = Sample, color = Sample)) %s + geom_bar(stat = \\"identity\\") + facet_grid(%s, space=\\"free\\") + xlab(\\"%s%s\\") + ylab(\\"%s\\") + %s + theme(legend.position = \\"none\\", panel.grid.major = element_blank(), panel.grid.minor = element_blank(), panel.background = element_blank()%s)\\n" % (multiple, title, facet, self.xLab, MULTIPLE_STR[multiple], self.yLab, colors, arial))\n \t\thandle.write("dev.off()\\n")\n \n \tdef _runR(self):\n-\t\trCommand = "R"\n-\t\tif "SMARTRPATH" in os.environ:\n-\t\t\trCommand = os.environ["SMARTRPATH"]\n-\t\tcommand = "\\"%s\\" CMD BATCH %s" % (rCommand, self.tmpRName)\n-\t\tstatus = subprocess.call(command, shell=True)\n+\t\trCommand = os.environ["SMARTRPATH"] if "SMARTRPATH" in os.environ else "R"\n+\t\tcommand  = "\\"%s\\" CMD BATCH %s" % (rCommand, self.tmpRName)\n+\t\tstatus   = subprocess.call(command, shell=True)\n \t\tif status != 0:\n \t\t\traise Exception("Problem with the execution of script file %s, status is: %s" % (self.tmpRName, status))\n \n@@ -261,10 +277,12 @@\n \tparser.add_option("-c", "--colors",    dest="colors",          action="store",      default=None,      type="string", help="colors of the bars, separated by commas  [format: string]")\n \tparser.add_option("-a", "--factors",   dest="factors",         action="store",      default=None,      type="string", help="normalization factors, separated by commas  [format: string]")\n \tparser.add_option("-r", "--regions",   dest="regionsFileName", action="store",      default=None,      type="string", help="regions to plot [format: transcript file in GFF format]")\n-\tparser.add_option("-m", "--multiple",  dest="multiple",        action="store_true", default=False,                    help="print position using multiples (k, G) [format: boolean] [default: False]")\n+\tparser.add_option("-2", "--strands",   dest="strands",         action="store_true", default=False,                    help="plot negative strands on the negative x-axis [format: boolean] [default: False]")\n+\tparser.add_option("-m", "--multiple",  dest="multiple",        action="store_true", default=False,                    help="use human readable genomic positions (k, G) [format: boolean] [default: False]")\n \tparser.add_option("-q", "--quorum",    dest="quorum",          action="store",      default=1,         type="int",    help="minimum number of intervals to plot a region [format: int] [default: 1]")\n \tparser.add_option("-z", "--width",     dest="width",           action="store",      default=800,       type="int",    help="width of the image [format: int] [default: 800]")\n \tparser.add_option("-Z", "--height",    dest="height",          action="store",      default=300,       type="int",    help="height of the image [format: int] [default: 300]")\n+\tparser.add_option("-A", "--arial",     dest="arial",           action="store_true", default=False,                    help="use Arial font [format: boolean] [default: false]")\n \tparser.add_option("-v", "--verbosity", dest="verbosity",       action="store",      default=1,         type="int",    help="trace level [format: int]")\n \toptions = parser.parse_args()[0]\n \tiGetReadDistribution = GetReadDistribution(options.verbosity)\n@@ -279,5 +297,7 @@\n \tiGetReadDistribution.setMultiple(options.multiple)\n \tiGetReadDistribution.setQuorum(options.quorum)\n \tiGetReadDistribution.setImageSize(options.width, options.height)\n+\tiGetReadDistribution.setBothStrands(options.strands)\n+\tiGetReadDistribution.setArial(options.arial)\n \tiGetReadDistribution.run()\n \n'
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Python/GetReadSizes.py
--- a/SMART/Java/Python/GetReadSizes.py Mon Apr 22 11:11:10 2013 -0400
+++ b/SMART/Java/Python/GetReadSizes.py Mon Apr 29 03:20:15 2013 -0400
[
@@ -48,7 +48,7 @@
  self.verbosity  = verbosity
  self.number     = random.randint(0, 100000)
  self.log        = LoggerFactory.createLogger("%s.%s" % (LOG_DEPTH, self.__class__.__name__), self.verbosity)
- self.parsers      = {}
+ self.parsers    = {}
  self.sizes      = {}
  self.factors    = {}
  self.regions    = None
@@ -56,6 +56,7 @@
  self.tmpRName   = None
  self.width      = 800
  self.height     = 300
+ self.arial      = False
 
  def setNames(self, names):
  self.names = names
@@ -93,6 +94,9 @@
  if height != None:
  self.height = height
 
+ def setArial(self, arial):
+ self.arial = arial
+
  def _checkOptions(self):
  if not self.parsers:
  self.logAndRaise("ERROR: Missing input file names")
@@ -174,22 +178,23 @@
  self.tmpRName = "tmpFile%d.R" % (self.number)
  fileName      = self.outputFileName if region == DEFAULT_REGION else "%s_%s.png" % (os.path.splitext(self.outputFileName)[0], region)
  colors        = "scale_fill_brewer(palette=\"Set1\")" if self.colors == None else "scale_fill_manual(values = c(%s))" % (", ".join(["\"%s\"" % (color) for color in self.colors]))
- title         = "" if region == DEFAULT_REGION else " of %s" % (region)
+ title         = "" if region == DEFAULT_REGION else " + labs(title = \"Sizes of %s\")" % (region)
  handle        = open(self.tmpRName, "w")
+ arial         = ", text = element_text(family=\"Arial\", size=20)" if self.arial else ""
+ if self.arial:
+ handle.write("library(extrafont)\nloadfonts()\n")
  handle.write("library(ggplot2)\n")
  handle.write("data <- read.table(\"%s\", header = T)\n" % (self.tmpDatName))
  handle.write("data$Sample <- factor(data$Sample, levels=c(%s))\n" % (", ".join(["\"%s\"" % (name) for name in self.names])))
  handle.write("data$Size <- factor(data$Size, levels=c(%s))\n" % (", ".join(["%d" % (size) for size in range(self.minSize, self.maxSize+1)])))
  handle.write("png(\"%s\", width = %d, height = %d)\n" % (fileName, self.width, self.height))
- handle.write("ggplot(data, aes(x = Size, y = Count, fill = Size)) + opts(title = \"Size distribution%s\") + geom_bar(stat = \"identity\") + facet_grid(. ~ Sample, space=\"free_x\") + xlab(\"%s\") + ylab(\"%s\") + %s + opts(legend.position = \"none\", panel.grid.major = theme_blank(), panel.grid.minor = theme_blank(), panel.background = theme_blank())\n" % (title, self.xLab, self.yLab, colors))
+ handle.write("ggplot(data, aes(x = Size, y = Count, fill = Size)) %s + geom_bar(stat = \"identity\") + facet_grid(. ~ Sample, space=\"free_x\") + xlab(\"%s\") + ylab(\"%s\") + %s + theme(legend.position = \"none\", panel.grid.major = element_blank(), panel.grid.minor = element_blank(), panel.background = element_blank()%s)\n" % (title, self.xLab, self.yLab, colors, arial))
  handle.write("dev.off()\n")
 
  def _runR(self):
- rCommand = "R"
- if "SMARTRPATH" in os.environ:
- rCommand = os.environ["SMARTRPATH"]
- command = "\"%s\" CMD BATCH %s" % (rCommand, self.tmpRName)
- status = subprocess.call(command, shell=True)
+ rCommand = os.environ["SMARTRPATH"] if "SMARTRPATH" in os.environ else "R"
+ command  = "\"%s\" CMD BATCH %s" % (rCommand, self.tmpRName)
+ status   = subprocess.call(command, shell=True)
  if status != 0:
  raise Exception("Problem with the execution of script file %s, status is: %s" % (self.tmpRName, status))
 
@@ -240,6 +245,7 @@
  parser.add_option("-r", "--regions",   dest="regionsFileName", action="store",      default=None,      type="string", help="regions to plot [format: transcript file in GFF format]")
  parser.add_option("-z", "--width",     dest="width",           action="store",      default=800,       type="int",    help="width of the image [format: int] [default: 800]")
  parser.add_option("-Z", "--height",    dest="height",          action="store",      default=300,       type="int",    help="height of the image [format: int] [default: 300]")
+ parser.add_option("-A", "--arial",     dest="arial",           action="store_true", default=False,                    help="use Arial font [format: boolean] [default: false]")
  parser.add_option("-v", "--verbosity", dest="verbosity",       action="store",      default=1,         type="int",    help="trace level [format: int]")
  options = parser.parse_args()[0]
  iGetReadSizes = GetReadSizes(options.verbosity)
@@ -252,4 +258,5 @@
  iGetReadSizes.setFactors(None if options.factors == None else map(float, options.factors.split(",")))
  iGetReadSizes.setRegionsFile(options.regionsFileName)
  iGetReadSizes.setImageSize(options.width, options.height)
+ iGetReadSizes.setArial(options.arial)
  iGetReadSizes.run()
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Python/GetUpDownStream.pyc
b
Binary file SMART/Java/Python/GetUpDownStream.pyc has changed
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Python/TestFiles/SR1.fastq
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/Java/Python/TestFiles/SR1.fastq Mon Apr 29 03:20:15 2013 -0400
b
b'@@ -0,0 +1,5000 @@\n+@HWI-EAS337_3:7:1:415:1217/1\n+GATGTGCAGACTTTTCACGCAGGACTACATCACTGT\n++HWI-EAS337_3:7:1:415:1217/1\n+WWWVVVWPWWWVWWWWVVVVKVPWWVVWVWUUQUTQ\n+@HWI-EAS337_3:7:1:208:1489/1\n+GGAAACATATGCACATAAACGTTGAAATCATGCTTA\n++HWI-EAS337_3:7:1:208:1489/1\n+WWWWWWWWWWWWWWWWWVWWVWWVWWWWWWUUUUUU\n+@HWI-EAS337_3:7:1:278:1153/1\n+GAGAAAACCTGTAATAAATACTGAGAGAAAGTAGGG\n++HWI-EAS337_3:7:1:278:1153/1\n+WWWWWWWWWWWWWWWWWWWWWWVWVVVWWVUUUUUR\n+@HWI-EAS337_3:7:1:1178:755/1\n+GGTGAGAGTGGTTGGTTGATGGTAAAACCATTGAAT\n++HWI-EAS337_3:7:1:1178:755/1\n+WWWWWWWWWVWWWVVWWVVWVVVVWVWVVVUUUUUU\n+@HWI-EAS337_3:7:1:277:1259/1\n+GGGTGACAAAGAAAACAAAAGGGACATGGTACTTGG\n++HWI-EAS337_3:7:1:277:1259/1\n+WWWWWWWWWWWWWWWWWWWWWWVWWWWWWVUUUUUU\n+@HWI-EAS337_3:7:1:447:1231/1\n+GACTTGTGGAAGAGTTGGAATGGAAAGCTGGAGCCT\n++HWI-EAS337_3:7:1:447:1231/1\n+WWWWWWWWWWWVWVWWWVWWWVVVVVVVVVURUSUU\n+@HWI-EAS337_3:7:1:300:1199/1\n+GTTTTTGCATATAGATCTCTTTGTAAAGATATCCAT\n++HWI-EAS337_3:7:1:300:1199/1\n+WVWWWWWWWWWWWVWWWWWWWWQWVVVTWWUUUURU\n+@HWI-EAS337_3:7:1:247:1210/1\n+GATAGCTTTGACTATAGGACTTTTATGTATGTGTTG\n++HWI-EAS337_3:7:1:247:1210/1\n+WWWWWWWWWWWWVWWWVVWWWWWWWWTVVWRULUUR\n+@HWI-EAS337_3:7:1:1154:1517/1\n+GAATGTTGCAGACCTTACTCCTACCTATGAAGCACA\n++HWI-EAS337_3:7:1:1154:1517/1\n+WWWWWWWVWWVWWWWWWWWWWWWWVWVWVWUSUUUU\n+@HWI-EAS337_3:7:1:164:1869/1\n+GTTTGATAGGAATTTATTTCTTCTTCGACATCCACC\n++HWI-EAS337_3:7:1:164:1869/1\n+WWWWWWWWVVWWWWWWWWWWWWWWWWQWWWUUUUUU\n+@HWI-EAS337_3:7:1:415:1194/1\n+GATGGTTGACACATTAAGAACATTCTCACCGGTCTC\n++HWI-EAS337_3:7:1:415:1194/1\n+WWWWWWWWWWWWWWWWWVWVWVWWWWWWWVSUUUUU\n+@HWI-EAS337_3:7:1:645:1892/1\n+GATAGTAAGCACCCCTCACTTCCAACCCAAAGATTG\n++HWI-EAS337_3:7:1:645:1892/1\n+WWWWWWWWWWWWWWWWWVWWWWWVVWVWWVUUUUUU\n+@HWI-EAS337_3:7:1:33:1446/1\n+GTTATTCTTTCTTTCTCAAATGGATGCAGTAATGCA\n++HWI-EAS337_3:7:1:33:1446/1\n+WWWWWWWWWWWWWWWWWWWWWUQWWVVWQWUUUSUU\n+@HWI-EAS337_3:7:1:1194:1427/1\n+GAAAAATCACATTTTTTTGTTTGATAAAAACCCAGA\n++HWI-EAS337_3:7:1:1194:1427/1\n+WWWWWWWWVWVWWWWWWWVWWWUWWWWWWWUUUUSU\n+@HWI-EAS337_3:7:1:624:1913/1\n+GACATCTTCAACTCCGGAGTTTTGAGTAACATTATA\n++HWI-EAS337_3:7:1:624:1913/1\n+WWWWWWWWWWVWWWWVVVVWWWWVVVWWVWUUUUUU\n+@HWI-EAS337_3:7:1:437:1202/1\n+GTACTTATGATGAAACTGAGATCAACTACCACCTCC\n++HWI-EAS337_3:7:1:437:1202/1\n+WWWWWVWWWVWVWWWWWWWWVWWWWVWVVVUUUUUU\n+@HWI-EAS337_3:7:1:1386:1787/1\n+GTTTAGCTAGTATTAAGGCTAGAAATGGATATGATG\n++HWI-EAS337_3:7:1:1386:1787/1\n+WWWWWWWWWWWWWWWWVVWWWVWVVWVVVWUUSUUO\n+@HWI-EAS337_3:7:1:227:1155/1\n+GATAGCAGCAAGGTTATTGGAATCTAAGCAATCTAC\n++HWI-EAS337_3:7:1:227:1155/1\n+WWVWWVWWVVWVVIWVWVVUWVVVVWVTVVUUUUSU\n+@HWI-EAS337_3:7:1:472:1025/1\n+GAAGTGATACTCATAAAACTATTTAGAAAGTTAATT\n++HWI-EAS337_3:7:1:472:1025/1\n+WWWWWWWWWWWWWWWVWVWWWWWWVVWWWVUUUUUU\n+@HWI-EAS337_3:7:1:220:1482/1\n+GCTATATGAGAATTCAGGCCACTTGTAGTTCGATAA\n++HWI-EAS337_3:7:1:220:1482/1\n+WWWWWWWWWVWWWWWWWVWWWWWWWWVVWWURUUUU\n+@HWI-EAS337_3:7:1:1699:1966/1\n+GATGAAGGATACTACAAAAAAAAGGGTTATTTTGTG\n++HWI-EAS337_3:7:1:1699:1966/1\n+WWWWWWWWWWWWWWWWVWVWWWWWWWVWWWUUUSUR\n+@HWI-EAS337_3:7:1:547:1084/1\n+GTGGTCAGGTCCTCTTCAAGTGATACAATGTTCCCC\n++HWI-EAS337_3:7:1:547:1084/1\n+WWWWWWWWWWWWWWWWWWVVWVWWWWWWWVUUUUSU\n+@HWI-EAS337_3:7:1:464:1097/1\n+GAAATTGAAGCTAGTTATTGACAGTTTACCAAGTTA\n++HWI-EAS337_3:7:1:464:1097/1\n+WWWWWWWWWWWVWWVWWWWWWWWVVWWWWVUUUUUR\n+@HWI-EAS337_3:7:1:171:1480/1\n+GATAATACTATTAGCACATCAGCCTCTAGATGAGAC\n++HWI-EAS337_3:7:1:171:1480/1\n+WWWWWWWWWWWWWVWWWWWWWVWWWWWWTVUUUUUU\n+@HWI-EAS337_3:7:1:293:1251/1\n+GTGGTAGTGAGCTCCGTGGTGAACAAGATGACGGAA\n++HWI-EAS337_3:7:1:293:1251/1\n+WWWWWWWVWVWWWWVVWWVVVVVVWVVVVVRPUURR\n+@HWI-EAS337_3:7:1:647:1863/1\n+GGGTTTCAGATTAGTAAGTTATAGTGAAAAAATATA\n++HWI-EAS337_3:7:1:647:1863/1\n+WWVWWWWWVWWWWVWWVVWWWWWWWVWVVWUUUUUU\n+@HWI-EAS337_3:7:1:263:1275/1\n+GCTACGTCTGCTCTAACTCCTAATATGATCCTGTAT\n++HWI-EAS337_3:7:1:263:1275/1\n+WWWWWWWWWWWWWWWWWWWWWVWWWWQVWWUUOUUU\n+@HWI-EAS337_3:7:1:1112:215/1\n+GGTGTTGATTTCACAAGGAGGAATACTCATCTAAAA\n++HWI-EAS337_3:7:1:1112:215/1\n+WWVWWVVWVVWWWVWWVUWVVVWWWVWTVWUUUUUU\n+@HWI-EAS337_3:7:1:319:1275/1\n+GTTATAGTTCTTGACAACAAAGTACAGAGGTGGTCC\n++HWI-EAS337_3:7:1:319:1275/1\n+WWWWWWWWWWWWVWWWWWWWWWWWWWVWVWUUSUUU\n+@HWI-EAS337_3:7:1:1310:1480/1'..b'A\n++HWI-EAS337_3:7:1:986:591/1\n+WWWWWWWWWVWWWWWWWWWWWWWVWVVWVVUUUUUR\n+@HWI-EAS337_3:7:1:181:1099/1\n+GGTCGACGTAAGAGATCTGCAGGGCTATTACTCATT\n++HWI-EAS337_3:7:1:181:1099/1\n+WWWWWWWWWWWWWVWWWWWWWVVWWWVWWVUUUUUU\n+@HWI-EAS337_3:7:1:509:832/1\n+GTGAAGTATGGGTGGAAATGCTTGCGTATGCTGCTA\n++HWI-EAS337_3:7:1:509:832/1\n+WWWWVWWWWVVWWWWWWVWVWWWVVVVVWVSUUUUR\n+@HWI-EAS337_3:7:1:510:597/1\n+GGGTCTGGAATAGTAATGCGCTGATTCTAGTAAAGT\n++HWI-EAS337_3:7:1:510:597/1\n+VWWWVWWWWWWWWWWWWVWWWWWVWWWWVVUUUUUU\n+@HWI-EAS337_3:7:1:1765:1489/1\n+GTCAATTTTTTCTTTGTTTAAATCCGGGGAGGCTAG\n++HWI-EAS337_3:7:1:1765:1489/1\n+WVWWVWWWWWWWWWWVWWWWWWWWWQQVTVUSUUUR\n+@HWI-EAS337_3:7:1:417:1560/1\n+GTAACCTTCCCAGTGTCTCCTTAAGAAAGACTTGGA\n++HWI-EAS337_3:7:1:417:1560/1\n+WWWWVWWSWSVWVVVVWWWWWWWWVSWWWWUQUUQU\n+@HWI-EAS337_3:7:1:1047:854/1\n+GTTGAAATTCCTGATTTTCCATGTGCATCATAAGCC\n++HWI-EAS337_3:7:1:1047:854/1\n+WWWWWVWWWWWWWWUWWWWWVWVWVVVWVVUUUUUU\n+@HWI-EAS337_3:7:1:1296:202/1\n+GGTGTTGGAGTTGGATTTGTTTCTGCTTTGATATCC\n++HWI-EAS337_3:7:1:1296:202/1\n+WWWWWWWVWVWWWVVWWWWWWWWWVVWWWTUUUUUF\n+@HWI-EAS337_3:7:1:502:642/1\n+GATGATTCTTGCTGGTTAAGTTGAGATGGGTTATAA\n++HWI-EAS337_3:7:1:502:642/1\n+WWWWWVPVVVWWWVVVWWWVWWSVVVWVVVUUUUUR\n+@HWI-EAS337_3:7:1:82:1651/1\n+GGCATCCTGTTCATCCTTCTCTTCATTTTTAGGCGT\n++HWI-EAS337_3:7:1:82:1651/1\n+WWWWWWWWVWWWWWWWWVWWWWWWVWWWWWUKJUQU\n+@HWI-EAS337_3:7:1:1505:1274/1\n+GAAACTTTTCAAAAAAAAAGTTGCATGAGAAATAAG\n++HWI-EAS337_3:7:1:1505:1274/1\n+WWWWWWWWWWWWVWWWWWWWVWWWWWWVWWSUUUUR\n+@HWI-EAS337_3:7:1:5:1770/1\n+GTGTGAAAAAGTATTTCATTCACATATTGAGTTGTT\n++HWI-EAS337_3:7:1:5:1770/1\n+WWWWWWWWWWVWWWWWWWWWWWWWWWWWVVSUUQUU\n+@HWI-EAS337_3:7:1:115:1005/1\n+GATTTTACTGGAATGGGGAAGGGTGAGGCATGGGTG\n++HWI-EAS337_3:7:1:115:1005/1\n+WWWWWWWWWVVWWWVVVVWWVVVWWWVVWVUUUUUU\n+@HWI-EAS337_3:7:1:354:1708/1\n+GCATCCGACAGTGACTTAGACGATGAGGAATACGAG\n++HWI-EAS337_3:7:1:354:1708/1\n+WWWWWWWWWWWWVWWWWWVWWVWWVWWVWWUUUUUR\n+@HWI-EAS337_3:7:1:1639:1500/1\n+GTGATTATTATCTAACTCTGCAACAGCATCCAGGGA\n++HWI-EAS337_3:7:1:1639:1500/1\n+WWWWWWVVWWWWWVVWVVWUVVVVVVVVWVUUUUUR\n+@HWI-EAS337_3:7:1:766:243/1\n+GTGGCATCTATGGAAGATAAATTGGAGATTGTTGCT\n++HWI-EAS337_3:7:1:766:243/1\n+WWVWWWWWWWWVVWWVWWWWWWWVVVTVWWRUUJSU\n+@HWI-EAS337_3:7:1:920:144/1\n+GTGCGATCACACTGTTTATGTTGTTGTTGATCATTG\n++HWI-EAS337_3:7:1:920:144/1\n+WWVVWWWWWVWPWVWWVWWSWVSWWHWWLVUCPUUH\n+@HWI-EAS337_3:7:1:389:268/1\n+GGTCAATTAGAGAGGGCAACCACCCTCAAAGAATTT\n++HWI-EAS337_3:7:1:389:268/1\n+WWWWWWWWWVWWWWVVWWWWWWWWWWWWVVSUUUUU\n+@HWI-EAS337_3:7:1:294:1868/1\n+GAAAAAAAATTGTTTGTCTTGAATTAATGTTTCAAT\n++HWI-EAS337_3:7:1:294:1868/1\n+VWVWWWWWWWWVQWWWWOWVVWWVWVVWQWUURULU\n+@HWI-EAS337_3:7:1:1147:62/1\n+GAATTCCCCTCAGGTTGGAGTTGTGCACTTGGCACT\n++HWI-EAS337_3:7:1:1147:62/1\n+WWWWWWWWWWWWVWWWWWWVWWVWVVWVVWUUUUUU\n+@HWI-EAS337_3:7:1:787:1759/1\n+GGTTTTATTAGAATTGGTAGCTGTTCTGATTTTCTG\n++HWI-EAS337_3:7:1:787:1759/1\n+WVVWWWWVWWWWWWWVUWWUWWUVWVVTVVUUUUUH\n+@HWI-EAS337_3:7:1:425:1939/1\n+GCTAATTGTGGTGTCTGGGTCTATGTGGCTAAACTT\n++HWI-EAS337_3:7:1:425:1939/1\n+WWWWVWWVWWWWVWWWVVVVWWWVVWVVVWUUUUUU\n+@HWI-EAS337_3:7:1:187:1132/1\n+GTGGGAGAGGCAAGGGGCTTGGCTCATATCCTCTTC\n++HWI-EAS337_3:7:1:187:1132/1\n+WVWWWWWWWWWWWWWWWWWWWTVWVWWWVVUUUUUU\n+@HWI-EAS337_3:7:1:1739:1840/1\n+GGAGGGGTGAAATCGTTTCTGAAAAATAATGAAATG\n++HWI-EAS337_3:7:1:1739:1840/1\n+WWVWWWWWWWWWWWWWWVTWWWVVVWWWWWUUUUUU\n+@HWI-EAS337_3:7:1:1505:1876/1\n+GAAAGATCAAGTGTTGTCAAGTTCACTAGTTTAGAG\n++HWI-EAS337_3:7:1:1505:1876/1\n+WWWWWWWWWWWWWWWWWWWWVWWVWWWVVVUUUSUR\n+@HWI-EAS337_3:7:1:447:192/1\n+GACTATGCCTAGCAGCTGAAATCACCACAACAAGTT\n++HWI-EAS337_3:7:1:447:192/1\n+WWWWWWWWWWWWWWWTWWWVVWWVWWWWWVUUUUUU\n+@HWI-EAS337_3:7:1:21:2019/1\n+GTATGAGGTAAAAGATGATAACCTGTCTTCCAGCCC\n++HWI-EAS337_3:7:1:21:2019/1\n+VWWVVWWVVWWWWWWWWWWWWWWWQVVWWWUURUUU\n+@HWI-EAS337_3:7:1:1593:652/1\n+GTGATGAGTAAAACATCATCATATGAACTTGAAGAG\n++HWI-EAS337_3:7:1:1593:652/1\n+WWWVWVWWVWVWWVWWWWWWVVWWVWWVWWUUUSUU\n+@HWI-EAS337_3:7:1:1254:1660/1\n+GAAGTTTGTAATTCCTTTTAGGATTGTGGTTAACAT\n++HWI-EAS337_3:7:1:1254:1660/1\n+WWWVVWWWWWWWWWWWVWVWVUWWWTWVQWUUUUMU\n+@HWI-EAS337_3:7:1:291:629/1\n+GTAGAGGAGGTAGGCTTGGTGGTCCCTCTATGGTAA\n++HWI-EAS337_3:7:1:291:629/1\n+WWWWWWWWWWVVVWVWVVWTWWKOVVTRVSUSSMFR\n'
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Python/TestFiles/Wig/chr1.wig
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/Java/Python/TestFiles/Wig/chr1.wig Mon Apr 29 03:20:15 2013 -0400
b
@@ -0,0 +1,9 @@
+fixedStep  chrom=chr1  start=11  step=1
+1.1
+1.2
+fixedStep  chrom=chr1  start=14  step=1
+1.4
+1.5
+variableStep chrom=chr1
+17  1.7
+19  1.9
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Python/TestFiles/adress.txt
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/Java/Python/TestFiles/adress.txt Mon Apr 29 03:20:15 2013 -0400
b
@@ -0,0 +1,7 @@
+0
+58
+115
+173
+231
+289
+347
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Python/TestFiles/clusterize_default_expected.gff3
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/Java/Python/TestFiles/clusterize_default_expected.gff3 Mon Apr 29 03:20:15 2013 -0400
b
b'@@ -0,0 +1,1790 @@\n+chr4\tS-MART\ttranscript\t1\t50000\t.\t+\t.\tnbElements=0;ID=region1;Name=region1\n+chr4\tS-MART\ttranscript\t49951\t99950\t.\t+\t.\tnbElements=0;ID=region2;Name=region2\n+chr4\tS-MART\ttranscript\t99901\t149900\t.\t+\t.\tnbElements=0;ID=region3;Name=region3\n+chr4\tS-MART\ttranscript\t149851\t199850\t.\t+\t.\tnbElements=0;ID=region4;Name=region4\n+chr4\tS-MART\ttranscript\t199801\t249800\t.\t+\t.\tnbElements=0;ID=region5;Name=region5\n+chr4\tS-MART\ttranscript\t249751\t299750\t.\t+\t.\tnbElements=0;ID=region6;Name=region6\n+chr4\tS-MART\ttranscript\t299701\t349700\t.\t+\t.\tnbElements=0;ID=region7;Name=region7\n+chr4\tS-MART\ttranscript\t349651\t399650\t.\t+\t.\tnbElements=0;ID=region8;Name=region8\n+chr4\tS-MART\ttranscript\t399601\t449600\t.\t+\t.\tnbElements=0;ID=region9;Name=region9\n+chr4\tS-MART\ttranscript\t449551\t499550\t.\t+\t.\tnbElements=0;ID=region10;Name=region10\n+chr4\tS-MART\ttranscript\t499501\t549500\t.\t+\t.\tnbElements=0;ID=region11;Name=region11\n+chr4\tS-MART\ttranscript\t549451\t599450\t.\t+\t.\tnbElements=0;ID=region12;Name=region12\n+chr4\tS-MART\ttranscript\t599401\t649400\t.\t+\t.\tnbElements=0;ID=region13;Name=region13\n+chr4\tS-MART\ttranscript\t649351\t699350\t.\t+\t.\tnbElements=0;ID=region14;Name=region14\n+chr4\tS-MART\ttranscript\t699301\t749300\t.\t+\t.\tnbElements=0;ID=region15;Name=region15\n+chr4\tS-MART\ttranscript\t749251\t799250\t.\t+\t.\tnbElements=0;ID=region16;Name=region16\n+chr4\tS-MART\ttranscript\t799201\t849200\t.\t+\t.\tnbElements=0;ID=region17;Name=region17\n+chr4\tS-MART\ttranscript\t849151\t899150\t.\t+\t.\tnbElements=0;ID=region18;Name=region18\n+chr4\tS-MART\ttranscript\t899101\t949100\t.\t+\t.\tnbElements=0;ID=region19;Name=region19\n+chr4\tS-MART\ttranscript\t949051\t999050\t.\t+\t.\tnbElements=0;ID=region20;Name=region20\n+chr4\tS-MART\ttranscript\t999001\t1049000\t.\t+\t.\tnbElements=0;ID=region21;Name=region21\n+chr4\tS-MART\ttranscript\t1048951\t1098950\t.\t+\t.\tnbElements=0;ID=region22;Name=region22\n+chr4\tS-MART\ttranscript\t1098901\t1148900\t.\t+\t.\tnbElements=0;ID=region23;Name=region23\n+chr4\tS-MART\ttranscript\t1148851\t1198850\t.\t+\t.\tnbElements=0;ID=region24;Name=region24\n+chr4\tS-MART\ttranscript\t1198801\t1248800\t.\t+\t.\tnbElements=0;ID=region25;Name=region25\n+chr4\tS-MART\ttranscript\t1248751\t1298750\t.\t+\t.\tnbElements=0;ID=region26;Name=region26\n+chr4\tS-MART\ttranscript\t1298701\t1348700\t.\t+\t.\tnbElements=0;ID=region27;Name=region27\n+chr4\tS-MART\ttranscript\t1348651\t1398650\t.\t+\t.\tnbElements=0;ID=region28;Name=region28\n+chr4\tS-MART\ttranscript\t1398601\t1448600\t.\t+\t.\tnbElements=0;ID=region29;Name=region29\n+chr4\tS-MART\ttranscript\t1448551\t1498550\t.\t+\t.\tnbElements=0;ID=region30;Name=region30\n+chr4\tS-MART\ttranscript\t1498501\t1548500\t.\t+\t.\tnbElements=0;ID=region31;Name=region31\n+chr4\tS-MART\ttranscript\t1548451\t1598450\t.\t+\t.\tnbElements=0;ID=region32;Name=region32\n+chr4\tS-MART\ttranscript\t1598401\t1648400\t.\t+\t.\tnbElements=0;ID=region33;Name=region33\n+chr4\tS-MART\ttranscript\t1648351\t1698350\t.\t+\t.\tnbElements=0;ID=region34;Name=region34\n+chr4\tS-MART\ttranscript\t1698301\t1748300\t.\t+\t.\tnbElements=0;ID=region35;Name=region35\n+chr4\tS-MART\ttranscript\t1748251\t1798250\t.\t+\t.\tnbElements=0;ID=region36;Name=region36\n+chr4\tS-MART\ttranscript\t1798201\t1848200\t.\t+\t.\tnbElements=0;ID=region37;Name=region37\n+chr4\tS-MART\ttranscript\t1848151\t1898150\t.\t+\t.\tnbElements=0;ID=region38;Name=region38\n+chr4\tS-MART\ttranscript\t1898101\t1948100\t.\t+\t.\tnbElements=0;ID=region39;Name=region39\n+chr4\tS-MART\ttranscript\t1948051\t1998050\t.\t+\t.\tnbElements=0;ID=region40;Name=region40\n+chr4\tS-MART\ttranscript\t1998001\t2048000\t.\t+\t.\tnbElements=0;ID=region41;Name=region41\n+chr4\tS-MART\ttranscript\t2047951\t2097950\t.\t+\t.\tnbElements=0;ID=region42;Name=region42\n+chr4\tS-MART\ttranscript\t2097901\t2147900\t.\t+\t.\tnbElements=0;ID=region43;Name=region43\n+chr4\tS-MART\ttranscript\t2147851\t2197850\t.\t+\t.\tnbElements=0;ID=region44;Name=region44\n+chr4\tS-MART\ttranscript\t2197801\t2247800\t.\t+\t.\tnbElements=0;ID=region45;Name=region45\n+chr4\tS-MART\ttranscript\t2247751\t2297750\t.\t+\t.\tnbElements=0;ID=region46;Name=region46\n+chr4\tS-MART\ttranscript\t2297701\t2347700\t.\t+\t.\tnbElements=0;ID=region47;Name=region47\n+chr4\tS-MART\ttranscript\t2347651\t2397650\t.\t+\t.\tnbEleme'..b'MART\ttranscript\t3946051\t3996050\t.\t+\t.\tnbElements=0;ID=region1746;Name=region1746\n+chr1\tS-MART\ttranscript\t3996001\t4046000\t.\t+\t.\tnbElements=0;ID=region1747;Name=region1747\n+chr1\tS-MART\ttranscript\t4045951\t4095950\t.\t+\t.\tnbElements=0;ID=region1748;Name=region1748\n+chr1\tS-MART\ttranscript\t4095901\t4145900\t.\t+\t.\tnbElements=0;ID=region1749;Name=region1749\n+chr1\tS-MART\ttranscript\t4145851\t4195850\t.\t+\t.\tnbElements=0;ID=region1750;Name=region1750\n+chr1\tS-MART\ttranscript\t4195801\t4245800\t.\t+\t.\tnbElements=0;ID=region1751;Name=region1751\n+chr1\tS-MART\ttranscript\t4245751\t4295750\t.\t+\t.\tnbElements=0;ID=region1752;Name=region1752\n+chr1\tS-MART\ttranscript\t4295701\t4345700\t.\t+\t.\tnbElements=0;ID=region1753;Name=region1753\n+chr1\tS-MART\ttranscript\t4345651\t4395650\t.\t+\t.\tnbElements=0;ID=region1754;Name=region1754\n+chr1\tS-MART\ttranscript\t4395601\t4445600\t.\t+\t.\tnbElements=0;ID=region1755;Name=region1755\n+chr1\tS-MART\ttranscript\t4445551\t4495550\t.\t+\t.\tnbElements=0;ID=region1756;Name=region1756\n+chr1\tS-MART\ttranscript\t4495501\t4545500\t.\t+\t.\tnbElements=0;ID=region1757;Name=region1757\n+chr1\tS-MART\ttranscript\t4545451\t4595450\t.\t+\t.\tnbElements=0;ID=region1758;Name=region1758\n+chr1\tS-MART\ttranscript\t4595401\t4645400\t.\t+\t.\tnbElements=0;ID=region1759;Name=region1759\n+chr1\tS-MART\ttranscript\t4645351\t4695350\t.\t+\t.\tnbElements=0;ID=region1760;Name=region1760\n+chr1\tS-MART\ttranscript\t4695301\t4745300\t.\t+\t.\tnbElements=0;ID=region1761;Name=region1761\n+chr1\tS-MART\ttranscript\t4745251\t4795250\t.\t+\t.\tnbElements=0;ID=region1762;Name=region1762\n+chr1\tS-MART\ttranscript\t4795201\t4845200\t.\t+\t.\tnbElements=0;ID=region1763;Name=region1763\n+chr1\tS-MART\ttranscript\t4845151\t4895150\t.\t+\t.\tnbElements=0;ID=region1764;Name=region1764\n+chr1\tS-MART\ttranscript\t4895101\t4945100\t.\t+\t.\tnbElements=0;ID=region1765;Name=region1765\n+chr1\tS-MART\ttranscript\t4945051\t4995050\t.\t+\t.\tnbElements=0;ID=region1766;Name=region1766\n+chr1\tS-MART\ttranscript\t4995001\t5045000\t.\t+\t.\tnbElements=0;ID=region1767;Name=region1767\n+chr1\tS-MART\ttranscript\t5044951\t5094950\t.\t+\t.\tnbElements=0;ID=region1768;Name=region1768\n+chr1\tS-MART\ttranscript\t5094901\t5144900\t.\t+\t.\tnbElements=0;ID=region1769;Name=region1769\n+chr1\tS-MART\ttranscript\t5144851\t5194850\t.\t+\t.\tnbElements=0;ID=region1770;Name=region1770\n+chr1\tS-MART\ttranscript\t5194801\t5244800\t.\t+\t.\tnbElements=0;ID=region1771;Name=region1771\n+chr1\tS-MART\ttranscript\t5244751\t5294750\t.\t+\t.\tnbElements=0;ID=region1772;Name=region1772\n+chr1\tS-MART\ttranscript\t5294701\t5344700\t.\t+\t.\tnbElements=0;ID=region1773;Name=region1773\n+chr1\tS-MART\ttranscript\t5344651\t5394650\t.\t+\t.\tnbElements=0;ID=region1774;Name=region1774\n+chr1\tS-MART\ttranscript\t5394601\t5444600\t.\t+\t.\tnbElements=0;ID=region1775;Name=region1775\n+chr1\tS-MART\ttranscript\t5444551\t5494550\t.\t+\t.\tnbElements=0;ID=region1776;Name=region1776\n+chr1\tS-MART\ttranscript\t5494501\t5544500\t.\t+\t.\tnbElements=0;ID=region1777;Name=region1777\n+chr1\tS-MART\ttranscript\t5544451\t5594450\t.\t+\t.\tnbElements=0;ID=region1778;Name=region1778\n+chr1\tS-MART\ttranscript\t5594401\t5644400\t.\t+\t.\tnbElements=0;ID=region1779;Name=region1779\n+chr1\tS-MART\ttranscript\t5644351\t5694350\t.\t+\t.\tnbElements=0;ID=region1780;Name=region1780\n+chr1\tS-MART\ttranscript\t5694301\t5744300\t.\t+\t.\tnbElements=0;ID=region1781;Name=region1781\n+chr1\tS-MART\ttranscript\t5744251\t5794250\t.\t+\t.\tnbElements=0;ID=region1782;Name=region1782\n+chr1\tS-MART\ttranscript\t5794201\t5844200\t.\t+\t.\tnbElements=0;ID=region1783;Name=region1783\n+chr1\tS-MART\ttranscript\t5844151\t5894150\t.\t+\t.\tnbElements=0;ID=region1784;Name=region1784\n+chr1\tS-MART\ttranscript\t5894101\t5944100\t.\t+\t.\tnbElements=0;ID=region1785;Name=region1785\n+chr1\tS-MART\ttranscript\t5944051\t5994050\t.\t+\t.\tnbElements=0;ID=region1786;Name=region1786\n+chr1\tS-MART\ttranscript\t5994001\t6044000\t.\t+\t.\tnbElements=0;ID=region1787;Name=region1787\n+chr1\tS-MART\ttranscript\t6043951\t6093950\t.\t+\t.\tnbElements=0;ID=region1788;Name=region1788\n+chr1\tS-MART\ttranscript\t6093901\t6143900\t.\t+\t.\tnbElements=0;ID=region1789;Name=region1789\n+chr1\tS-MART\ttranscript\t6143851\t6193850\t.\t+\t.\tnbElements=1.0;ID=region1790;Name=region1790\n'
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Python/TestFiles/clusterize_default_expected.map
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/Java/Python/TestFiles/clusterize_default_expected.map Mon Apr 29 03:20:15 2013 -0400
b
b'@@ -0,0 +1,1790 @@\n+region1\tchr4\t1\t50001\n+region2\tchr4\t49951\t99951\n+region3\tchr4\t99901\t149901\n+region4\tchr4\t149851\t199851\n+region5\tchr4\t199801\t249801\n+region6\tchr4\t249751\t299751\n+region7\tchr4\t299701\t349701\n+region8\tchr4\t349651\t399651\n+region9\tchr4\t399601\t449601\n+region10\tchr4\t449551\t499551\n+region11\tchr4\t499501\t549501\n+region12\tchr4\t549451\t599451\n+region13\tchr4\t599401\t649401\n+region14\tchr4\t649351\t699351\n+region15\tchr4\t699301\t749301\n+region16\tchr4\t749251\t799251\n+region17\tchr4\t799201\t849201\n+region18\tchr4\t849151\t899151\n+region19\tchr4\t899101\t949101\n+region20\tchr4\t949051\t999051\n+region21\tchr4\t999001\t1049001\n+region22\tchr4\t1048951\t1098951\n+region23\tchr4\t1098901\t1148901\n+region24\tchr4\t1148851\t1198851\n+region25\tchr4\t1198801\t1248801\n+region26\tchr4\t1248751\t1298751\n+region27\tchr4\t1298701\t1348701\n+region28\tchr4\t1348651\t1398651\n+region29\tchr4\t1398601\t1448601\n+region30\tchr4\t1448551\t1498551\n+region31\tchr4\t1498501\t1548501\n+region32\tchr4\t1548451\t1598451\n+region33\tchr4\t1598401\t1648401\n+region34\tchr4\t1648351\t1698351\n+region35\tchr4\t1698301\t1748301\n+region36\tchr4\t1748251\t1798251\n+region37\tchr4\t1798201\t1848201\n+region38\tchr4\t1848151\t1898151\n+region39\tchr4\t1898101\t1948101\n+region40\tchr4\t1948051\t1998051\n+region41\tchr4\t1998001\t2048001\n+region42\tchr4\t2047951\t2097951\n+region43\tchr4\t2097901\t2147901\n+region44\tchr4\t2147851\t2197851\n+region45\tchr4\t2197801\t2247801\n+region46\tchr4\t2247751\t2297751\n+region47\tchr4\t2297701\t2347701\n+region48\tchr4\t2347651\t2397651\n+region49\tchr4\t2397601\t2447601\n+region50\tchr4\t2447551\t2497551\n+region51\tchr4\t2497501\t2547501\n+region52\tchr4\t2547451\t2597451\n+region53\tchr4\t2597401\t2647401\n+region54\tchr4\t2647351\t2697351\n+region55\tchr4\t2697301\t2747301\n+region56\tchr4\t2747251\t2797251\n+region57\tchr4\t2797201\t2847201\n+region58\tchr4\t2847151\t2897151\n+region59\tchr4\t2897101\t2947101\n+region60\tchr4\t2947051\t2997051\n+region61\tchr4\t2997001\t3047001\n+region62\tchr4\t3046951\t3096951\n+region63\tchr4\t3096901\t3146901\n+region64\tchr4\t3146851\t3196851\n+region65\tchr4\t3196801\t3246801\n+region66\tchr4\t3246751\t3296751\n+region67\tchr4\t3296701\t3346701\n+region68\tchr4\t3346651\t3396651\n+region69\tchr4\t3396601\t3446601\n+region70\tchr4\t3446551\t3496551\n+region71\tchr4\t3496501\t3546501\n+region72\tchr4\t3546451\t3596451\n+region73\tchr4\t3596401\t3646401\n+region74\tchr4\t3646351\t3696351\n+region75\tchr4\t3696301\t3746301\n+region76\tchr4\t3746251\t3796251\n+region77\tchr4\t3796201\t3846201\n+region78\tchr4\t3846151\t3896151\n+region79\tchr4\t3896101\t3946101\n+region80\tchr4\t3946051\t3996051\n+region81\tchr4\t3996001\t4046001\n+region82\tchr4\t4045951\t4095951\n+region83\tchr4\t4095901\t4145901\n+region84\tchr4\t4145851\t4195851\n+region85\tchr4\t4195801\t4245801\n+region86\tchr4\t4245751\t4295751\n+region87\tchr4\t4295701\t4345701\n+region88\tchr4\t4345651\t4395651\n+region89\tchr4\t4395601\t4445601\n+region90\tchr4\t4445551\t4495551\n+region91\tchr4\t4495501\t4545501\n+region92\tchr4\t4545451\t4595451\n+region93\tchr4\t4595401\t4645401\n+region94\tchr4\t4645351\t4695351\n+region95\tchr4\t4695301\t4745301\n+region96\tchr4\t4745251\t4795251\n+region97\tchr4\t4795201\t4845201\n+region98\tchr4\t4845151\t4895151\n+region99\tchr4\t4895101\t4945101\n+region100\tchr4\t4945051\t4995051\n+region101\tchr4\t4995001\t5045001\n+region102\tchr4\t5044951\t5094951\n+region103\tchr4\t5094901\t5144901\n+region104\tchr4\t5144851\t5194851\n+region105\tchr4\t5194801\t5244801\n+region106\tchr4\t5244751\t5294751\n+region107\tchr4\t5294701\t5344701\n+region108\tchr4\t5344651\t5394651\n+region109\tchr4\t5394601\t5444601\n+region110\tchr4\t5444551\t5494551\n+region111\tchr4\t5494501\t5544501\n+region112\tchr4\t5544451\t5594451\n+region113\tchr4\t5594401\t5644401\n+region114\tchr4\t5644351\t5694351\n+region115\tchr4\t5694301\t5744301\n+region116\tchr4\t5744251\t5794251\n+region117\tchr4\t5794201\t5844201\n+region118\tchr4\t5844151\t5894151\n+region119\tchr4\t5894101\t5944101\n+region120\tchr4\t5944051\t5994051\n+region121\tchr4\t5994001\t6044001\n+region122\tchr4\t6043951\t6093951\n+region123\tchr4\t6093901\t6143901\n+region124\tchr4\t6143851\t6193851\n+region125\tchr4\t6193801\t6243801\n+region126\tchr4\t6243751\t6293751\n+region127\tchr4\t6293701\t6343701\n+region128\tchr4\t6343651\t6393651\n+region129\tchr4\t6393601\t6443601\n+region130'..b'9951\t99951\n+region1669\tchr1\t99901\t149901\n+region1670\tchr1\t149851\t199851\n+region1671\tchr1\t199801\t249801\n+region1672\tchr1\t249751\t299751\n+region1673\tchr1\t299701\t349701\n+region1674\tchr1\t349651\t399651\n+region1675\tchr1\t399601\t449601\n+region1676\tchr1\t449551\t499551\n+region1677\tchr1\t499501\t549501\n+region1678\tchr1\t549451\t599451\n+region1679\tchr1\t599401\t649401\n+region1680\tchr1\t649351\t699351\n+region1681\tchr1\t699301\t749301\n+region1682\tchr1\t749251\t799251\n+region1683\tchr1\t799201\t849201\n+region1684\tchr1\t849151\t899151\n+region1685\tchr1\t899101\t949101\n+region1686\tchr1\t949051\t999051\n+region1687\tchr1\t999001\t1049001\n+region1688\tchr1\t1048951\t1098951\n+region1689\tchr1\t1098901\t1148901\n+region1690\tchr1\t1148851\t1198851\n+region1691\tchr1\t1198801\t1248801\n+region1692\tchr1\t1248751\t1298751\n+region1693\tchr1\t1298701\t1348701\n+region1694\tchr1\t1348651\t1398651\n+region1695\tchr1\t1398601\t1448601\n+region1696\tchr1\t1448551\t1498551\n+region1697\tchr1\t1498501\t1548501\n+region1698\tchr1\t1548451\t1598451\n+region1699\tchr1\t1598401\t1648401\n+region1700\tchr1\t1648351\t1698351\n+region1701\tchr1\t1698301\t1748301\n+region1702\tchr1\t1748251\t1798251\n+region1703\tchr1\t1798201\t1848201\n+region1704\tchr1\t1848151\t1898151\n+region1705\tchr1\t1898101\t1948101\n+region1706\tchr1\t1948051\t1998051\n+region1707\tchr1\t1998001\t2048001\n+region1708\tchr1\t2047951\t2097951\n+region1709\tchr1\t2097901\t2147901\n+region1710\tchr1\t2147851\t2197851\n+region1711\tchr1\t2197801\t2247801\n+region1712\tchr1\t2247751\t2297751\n+region1713\tchr1\t2297701\t2347701\n+region1714\tchr1\t2347651\t2397651\n+region1715\tchr1\t2397601\t2447601\n+region1716\tchr1\t2447551\t2497551\n+region1717\tchr1\t2497501\t2547501\n+region1718\tchr1\t2547451\t2597451\n+region1719\tchr1\t2597401\t2647401\n+region1720\tchr1\t2647351\t2697351\n+region1721\tchr1\t2697301\t2747301\n+region1722\tchr1\t2747251\t2797251\n+region1723\tchr1\t2797201\t2847201\n+region1724\tchr1\t2847151\t2897151\n+region1725\tchr1\t2897101\t2947101\n+region1726\tchr1\t2947051\t2997051\n+region1727\tchr1\t2997001\t3047001\n+region1728\tchr1\t3046951\t3096951\n+region1729\tchr1\t3096901\t3146901\n+region1730\tchr1\t3146851\t3196851\n+region1731\tchr1\t3196801\t3246801\n+region1732\tchr1\t3246751\t3296751\n+region1733\tchr1\t3296701\t3346701\n+region1734\tchr1\t3346651\t3396651\n+region1735\tchr1\t3396601\t3446601\n+region1736\tchr1\t3446551\t3496551\n+region1737\tchr1\t3496501\t3546501\n+region1738\tchr1\t3546451\t3596451\n+region1739\tchr1\t3596401\t3646401\n+region1740\tchr1\t3646351\t3696351\n+region1741\tchr1\t3696301\t3746301\n+region1742\tchr1\t3746251\t3796251\n+region1743\tchr1\t3796201\t3846201\n+region1744\tchr1\t3846151\t3896151\n+region1745\tchr1\t3896101\t3946101\n+region1746\tchr1\t3946051\t3996051\n+region1747\tchr1\t3996001\t4046001\n+region1748\tchr1\t4045951\t4095951\n+region1749\tchr1\t4095901\t4145901\n+region1750\tchr1\t4145851\t4195851\n+region1751\tchr1\t4195801\t4245801\n+region1752\tchr1\t4245751\t4295751\n+region1753\tchr1\t4295701\t4345701\n+region1754\tchr1\t4345651\t4395651\n+region1755\tchr1\t4395601\t4445601\n+region1756\tchr1\t4445551\t4495551\n+region1757\tchr1\t4495501\t4545501\n+region1758\tchr1\t4545451\t4595451\n+region1759\tchr1\t4595401\t4645401\n+region1760\tchr1\t4645351\t4695351\n+region1761\tchr1\t4695301\t4745301\n+region1762\tchr1\t4745251\t4795251\n+region1763\tchr1\t4795201\t4845201\n+region1764\tchr1\t4845151\t4895151\n+region1765\tchr1\t4895101\t4945101\n+region1766\tchr1\t4945051\t4995051\n+region1767\tchr1\t4995001\t5045001\n+region1768\tchr1\t5044951\t5094951\n+region1769\tchr1\t5094901\t5144901\n+region1770\tchr1\t5144851\t5194851\n+region1771\tchr1\t5194801\t5244801\n+region1772\tchr1\t5244751\t5294751\n+region1773\tchr1\t5294701\t5344701\n+region1774\tchr1\t5344651\t5394651\n+region1775\tchr1\t5394601\t5444601\n+region1776\tchr1\t5444551\t5494551\n+region1777\tchr1\t5494501\t5544501\n+region1778\tchr1\t5544451\t5594451\n+region1779\tchr1\t5594401\t5644401\n+region1780\tchr1\t5644351\t5694351\n+region1781\tchr1\t5694301\t5744301\n+region1782\tchr1\t5744251\t5794251\n+region1783\tchr1\t5794201\t5844201\n+region1784\tchr1\t5844151\t5894151\n+region1785\tchr1\t5894101\t5944101\n+region1786\tchr1\t5944051\t5994051\n+region1787\tchr1\t5994001\t6044001\n+region1788\tchr1\t6043951\t6093951\n+region1789\tchr1\t6093901\t6143901\n+region1790\tchr1\t6143851\t6193851\n'
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Python/TestFiles/clusterize_normalize_expected.gff3
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/Java/Python/TestFiles/clusterize_normalize_expected.gff3 Mon Apr 29 03:20:15 2013 -0400
b
b'@@ -0,0 +1,1790 @@\n+chr4\tS-MART\ttranscript\t1\t50000\t.\t+\t.\tnbElements=0;ID=region1;Name=region1\n+chr4\tS-MART\ttranscript\t49951\t99950\t.\t+\t.\tnbElements=0;ID=region2;Name=region2\n+chr4\tS-MART\ttranscript\t99901\t149900\t.\t+\t.\tnbElements=0;ID=region3;Name=region3\n+chr4\tS-MART\ttranscript\t149851\t199850\t.\t+\t.\tnbElements=0;ID=region4;Name=region4\n+chr4\tS-MART\ttranscript\t199801\t249800\t.\t+\t.\tnbElements=0;ID=region5;Name=region5\n+chr4\tS-MART\ttranscript\t249751\t299750\t.\t+\t.\tnbElements=0;ID=region6;Name=region6\n+chr4\tS-MART\ttranscript\t299701\t349700\t.\t+\t.\tnbElements=0;ID=region7;Name=region7\n+chr4\tS-MART\ttranscript\t349651\t399650\t.\t+\t.\tnbElements=0;ID=region8;Name=region8\n+chr4\tS-MART\ttranscript\t399601\t449600\t.\t+\t.\tnbElements=0;ID=region9;Name=region9\n+chr4\tS-MART\ttranscript\t449551\t499550\t.\t+\t.\tnbElements=0;ID=region10;Name=region10\n+chr4\tS-MART\ttranscript\t499501\t549500\t.\t+\t.\tnbElements=0;ID=region11;Name=region11\n+chr4\tS-MART\ttranscript\t549451\t599450\t.\t+\t.\tnbElements=0;ID=region12;Name=region12\n+chr4\tS-MART\ttranscript\t599401\t649400\t.\t+\t.\tnbElements=0;ID=region13;Name=region13\n+chr4\tS-MART\ttranscript\t649351\t699350\t.\t+\t.\tnbElements=0;ID=region14;Name=region14\n+chr4\tS-MART\ttranscript\t699301\t749300\t.\t+\t.\tnbElements=0;ID=region15;Name=region15\n+chr4\tS-MART\ttranscript\t749251\t799250\t.\t+\t.\tnbElements=0;ID=region16;Name=region16\n+chr4\tS-MART\ttranscript\t799201\t849200\t.\t+\t.\tnbElements=0;ID=region17;Name=region17\n+chr4\tS-MART\ttranscript\t849151\t899150\t.\t+\t.\tnbElements=0;ID=region18;Name=region18\n+chr4\tS-MART\ttranscript\t899101\t949100\t.\t+\t.\tnbElements=0;ID=region19;Name=region19\n+chr4\tS-MART\ttranscript\t949051\t999050\t.\t+\t.\tnbElements=0;ID=region20;Name=region20\n+chr4\tS-MART\ttranscript\t999001\t1049000\t.\t+\t.\tnbElements=0;ID=region21;Name=region21\n+chr4\tS-MART\ttranscript\t1048951\t1098950\t.\t+\t.\tnbElements=0;ID=region22;Name=region22\n+chr4\tS-MART\ttranscript\t1098901\t1148900\t.\t+\t.\tnbElements=0;ID=region23;Name=region23\n+chr4\tS-MART\ttranscript\t1148851\t1198850\t.\t+\t.\tnbElements=0;ID=region24;Name=region24\n+chr4\tS-MART\ttranscript\t1198801\t1248800\t.\t+\t.\tnbElements=0;ID=region25;Name=region25\n+chr4\tS-MART\ttranscript\t1248751\t1298750\t.\t+\t.\tnbElements=0;ID=region26;Name=region26\n+chr4\tS-MART\ttranscript\t1298701\t1348700\t.\t+\t.\tnbElements=0;ID=region27;Name=region27\n+chr4\tS-MART\ttranscript\t1348651\t1398650\t.\t+\t.\tnbElements=0;ID=region28;Name=region28\n+chr4\tS-MART\ttranscript\t1398601\t1448600\t.\t+\t.\tnbElements=0;ID=region29;Name=region29\n+chr4\tS-MART\ttranscript\t1448551\t1498550\t.\t+\t.\tnbElements=0;ID=region30;Name=region30\n+chr4\tS-MART\ttranscript\t1498501\t1548500\t.\t+\t.\tnbElements=0;ID=region31;Name=region31\n+chr4\tS-MART\ttranscript\t1548451\t1598450\t.\t+\t.\tnbElements=0;ID=region32;Name=region32\n+chr4\tS-MART\ttranscript\t1598401\t1648400\t.\t+\t.\tnbElements=0;ID=region33;Name=region33\n+chr4\tS-MART\ttranscript\t1648351\t1698350\t.\t+\t.\tnbElements=0;ID=region34;Name=region34\n+chr4\tS-MART\ttranscript\t1698301\t1748300\t.\t+\t.\tnbElements=0;ID=region35;Name=region35\n+chr4\tS-MART\ttranscript\t1748251\t1798250\t.\t+\t.\tnbElements=0;ID=region36;Name=region36\n+chr4\tS-MART\ttranscript\t1798201\t1848200\t.\t+\t.\tnbElements=0;ID=region37;Name=region37\n+chr4\tS-MART\ttranscript\t1848151\t1898150\t.\t+\t.\tnbElements=0;ID=region38;Name=region38\n+chr4\tS-MART\ttranscript\t1898101\t1948100\t.\t+\t.\tnbElements=0;ID=region39;Name=region39\n+chr4\tS-MART\ttranscript\t1948051\t1998050\t.\t+\t.\tnbElements=0;ID=region40;Name=region40\n+chr4\tS-MART\ttranscript\t1998001\t2048000\t.\t+\t.\tnbElements=0;ID=region41;Name=region41\n+chr4\tS-MART\ttranscript\t2047951\t2097950\t.\t+\t.\tnbElements=0;ID=region42;Name=region42\n+chr4\tS-MART\ttranscript\t2097901\t2147900\t.\t+\t.\tnbElements=0;ID=region43;Name=region43\n+chr4\tS-MART\ttranscript\t2147851\t2197850\t.\t+\t.\tnbElements=0;ID=region44;Name=region44\n+chr4\tS-MART\ttranscript\t2197801\t2247800\t.\t+\t.\tnbElements=0;ID=region45;Name=region45\n+chr4\tS-MART\ttranscript\t2247751\t2297750\t.\t+\t.\tnbElements=0;ID=region46;Name=region46\n+chr4\tS-MART\ttranscript\t2297701\t2347700\t.\t+\t.\tnbElements=0;ID=region47;Name=region47\n+chr4\tS-MART\ttranscript\t2347651\t2397650\t.\t+\t.\tnbEleme'..b'MART\ttranscript\t3946051\t3996050\t.\t+\t.\tnbElements=0;ID=region1746;Name=region1746\n+chr1\tS-MART\ttranscript\t3996001\t4046000\t.\t+\t.\tnbElements=0;ID=region1747;Name=region1747\n+chr1\tS-MART\ttranscript\t4045951\t4095950\t.\t+\t.\tnbElements=0;ID=region1748;Name=region1748\n+chr1\tS-MART\ttranscript\t4095901\t4145900\t.\t+\t.\tnbElements=0;ID=region1749;Name=region1749\n+chr1\tS-MART\ttranscript\t4145851\t4195850\t.\t+\t.\tnbElements=0;ID=region1750;Name=region1750\n+chr1\tS-MART\ttranscript\t4195801\t4245800\t.\t+\t.\tnbElements=0;ID=region1751;Name=region1751\n+chr1\tS-MART\ttranscript\t4245751\t4295750\t.\t+\t.\tnbElements=0;ID=region1752;Name=region1752\n+chr1\tS-MART\ttranscript\t4295701\t4345700\t.\t+\t.\tnbElements=0;ID=region1753;Name=region1753\n+chr1\tS-MART\ttranscript\t4345651\t4395650\t.\t+\t.\tnbElements=0;ID=region1754;Name=region1754\n+chr1\tS-MART\ttranscript\t4395601\t4445600\t.\t+\t.\tnbElements=0;ID=region1755;Name=region1755\n+chr1\tS-MART\ttranscript\t4445551\t4495550\t.\t+\t.\tnbElements=0;ID=region1756;Name=region1756\n+chr1\tS-MART\ttranscript\t4495501\t4545500\t.\t+\t.\tnbElements=0;ID=region1757;Name=region1757\n+chr1\tS-MART\ttranscript\t4545451\t4595450\t.\t+\t.\tnbElements=0;ID=region1758;Name=region1758\n+chr1\tS-MART\ttranscript\t4595401\t4645400\t.\t+\t.\tnbElements=0;ID=region1759;Name=region1759\n+chr1\tS-MART\ttranscript\t4645351\t4695350\t.\t+\t.\tnbElements=0;ID=region1760;Name=region1760\n+chr1\tS-MART\ttranscript\t4695301\t4745300\t.\t+\t.\tnbElements=0;ID=region1761;Name=region1761\n+chr1\tS-MART\ttranscript\t4745251\t4795250\t.\t+\t.\tnbElements=0;ID=region1762;Name=region1762\n+chr1\tS-MART\ttranscript\t4795201\t4845200\t.\t+\t.\tnbElements=0;ID=region1763;Name=region1763\n+chr1\tS-MART\ttranscript\t4845151\t4895150\t.\t+\t.\tnbElements=0;ID=region1764;Name=region1764\n+chr1\tS-MART\ttranscript\t4895101\t4945100\t.\t+\t.\tnbElements=0;ID=region1765;Name=region1765\n+chr1\tS-MART\ttranscript\t4945051\t4995050\t.\t+\t.\tnbElements=0;ID=region1766;Name=region1766\n+chr1\tS-MART\ttranscript\t4995001\t5045000\t.\t+\t.\tnbElements=0;ID=region1767;Name=region1767\n+chr1\tS-MART\ttranscript\t5044951\t5094950\t.\t+\t.\tnbElements=0;ID=region1768;Name=region1768\n+chr1\tS-MART\ttranscript\t5094901\t5144900\t.\t+\t.\tnbElements=0;ID=region1769;Name=region1769\n+chr1\tS-MART\ttranscript\t5144851\t5194850\t.\t+\t.\tnbElements=0;ID=region1770;Name=region1770\n+chr1\tS-MART\ttranscript\t5194801\t5244800\t.\t+\t.\tnbElements=0;ID=region1771;Name=region1771\n+chr1\tS-MART\ttranscript\t5244751\t5294750\t.\t+\t.\tnbElements=0;ID=region1772;Name=region1772\n+chr1\tS-MART\ttranscript\t5294701\t5344700\t.\t+\t.\tnbElements=0;ID=region1773;Name=region1773\n+chr1\tS-MART\ttranscript\t5344651\t5394650\t.\t+\t.\tnbElements=0;ID=region1774;Name=region1774\n+chr1\tS-MART\ttranscript\t5394601\t5444600\t.\t+\t.\tnbElements=0;ID=region1775;Name=region1775\n+chr1\tS-MART\ttranscript\t5444551\t5494550\t.\t+\t.\tnbElements=0;ID=region1776;Name=region1776\n+chr1\tS-MART\ttranscript\t5494501\t5544500\t.\t+\t.\tnbElements=0;ID=region1777;Name=region1777\n+chr1\tS-MART\ttranscript\t5544451\t5594450\t.\t+\t.\tnbElements=0;ID=region1778;Name=region1778\n+chr1\tS-MART\ttranscript\t5594401\t5644400\t.\t+\t.\tnbElements=0;ID=region1779;Name=region1779\n+chr1\tS-MART\ttranscript\t5644351\t5694350\t.\t+\t.\tnbElements=0;ID=region1780;Name=region1780\n+chr1\tS-MART\ttranscript\t5694301\t5744300\t.\t+\t.\tnbElements=0;ID=region1781;Name=region1781\n+chr1\tS-MART\ttranscript\t5744251\t5794250\t.\t+\t.\tnbElements=0;ID=region1782;Name=region1782\n+chr1\tS-MART\ttranscript\t5794201\t5844200\t.\t+\t.\tnbElements=0;ID=region1783;Name=region1783\n+chr1\tS-MART\ttranscript\t5844151\t5894150\t.\t+\t.\tnbElements=0;ID=region1784;Name=region1784\n+chr1\tS-MART\ttranscript\t5894101\t5944100\t.\t+\t.\tnbElements=0;ID=region1785;Name=region1785\n+chr1\tS-MART\ttranscript\t5944051\t5994050\t.\t+\t.\tnbElements=0;ID=region1786;Name=region1786\n+chr1\tS-MART\ttranscript\t5994001\t6044000\t.\t+\t.\tnbElements=0;ID=region1787;Name=region1787\n+chr1\tS-MART\ttranscript\t6043951\t6093950\t.\t+\t.\tnbElements=0;ID=region1788;Name=region1788\n+chr1\tS-MART\ttranscript\t6093901\t6143900\t.\t+\t.\tnbElements=0;ID=region1789;Name=region1789\n+chr1\tS-MART\ttranscript\t6143851\t6193850\t.\t+\t.\tnbElements=1.0;ID=region1790;Name=region1790\n'
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Python/TestFiles/clusterize_output_tag_expected.gff3
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/Java/Python/TestFiles/clusterize_output_tag_expected.gff3 Mon Apr 29 03:20:15 2013 -0400
b
b'@@ -0,0 +1,1790 @@\n+chr4\tS-MART\ttranscript\t1\t50000\t.\t+\t.\tnbElements=0;newTag=0;ID=region1;Name=region1\n+chr4\tS-MART\ttranscript\t49951\t99950\t.\t+\t.\tnbElements=0;newTag=0;ID=region2;Name=region2\n+chr4\tS-MART\ttranscript\t99901\t149900\t.\t+\t.\tnbElements=0;newTag=0;ID=region3;Name=region3\n+chr4\tS-MART\ttranscript\t149851\t199850\t.\t+\t.\tnbElements=0;newTag=0;ID=region4;Name=region4\n+chr4\tS-MART\ttranscript\t199801\t249800\t.\t+\t.\tnbElements=0;newTag=0;ID=region5;Name=region5\n+chr4\tS-MART\ttranscript\t249751\t299750\t.\t+\t.\tnbElements=0;newTag=0;ID=region6;Name=region6\n+chr4\tS-MART\ttranscript\t299701\t349700\t.\t+\t.\tnbElements=0;newTag=0;ID=region7;Name=region7\n+chr4\tS-MART\ttranscript\t349651\t399650\t.\t+\t.\tnbElements=0;newTag=0;ID=region8;Name=region8\n+chr4\tS-MART\ttranscript\t399601\t449600\t.\t+\t.\tnbElements=0;newTag=0;ID=region9;Name=region9\n+chr4\tS-MART\ttranscript\t449551\t499550\t.\t+\t.\tnbElements=0;newTag=0;ID=region10;Name=region10\n+chr4\tS-MART\ttranscript\t499501\t549500\t.\t+\t.\tnbElements=0;newTag=0;ID=region11;Name=region11\n+chr4\tS-MART\ttranscript\t549451\t599450\t.\t+\t.\tnbElements=0;newTag=0;ID=region12;Name=region12\n+chr4\tS-MART\ttranscript\t599401\t649400\t.\t+\t.\tnbElements=0;newTag=0;ID=region13;Name=region13\n+chr4\tS-MART\ttranscript\t649351\t699350\t.\t+\t.\tnbElements=0;newTag=0;ID=region14;Name=region14\n+chr4\tS-MART\ttranscript\t699301\t749300\t.\t+\t.\tnbElements=0;newTag=0;ID=region15;Name=region15\n+chr4\tS-MART\ttranscript\t749251\t799250\t.\t+\t.\tnbElements=0;newTag=0;ID=region16;Name=region16\n+chr4\tS-MART\ttranscript\t799201\t849200\t.\t+\t.\tnbElements=0;newTag=0;ID=region17;Name=region17\n+chr4\tS-MART\ttranscript\t849151\t899150\t.\t+\t.\tnbElements=0;newTag=0;ID=region18;Name=region18\n+chr4\tS-MART\ttranscript\t899101\t949100\t.\t+\t.\tnbElements=0;newTag=0;ID=region19;Name=region19\n+chr4\tS-MART\ttranscript\t949051\t999050\t.\t+\t.\tnbElements=0;newTag=0;ID=region20;Name=region20\n+chr4\tS-MART\ttranscript\t999001\t1049000\t.\t+\t.\tnbElements=0;newTag=0;ID=region21;Name=region21\n+chr4\tS-MART\ttranscript\t1048951\t1098950\t.\t+\t.\tnbElements=0;newTag=0;ID=region22;Name=region22\n+chr4\tS-MART\ttranscript\t1098901\t1148900\t.\t+\t.\tnbElements=0;newTag=0;ID=region23;Name=region23\n+chr4\tS-MART\ttranscript\t1148851\t1198850\t.\t+\t.\tnbElements=0;newTag=0;ID=region24;Name=region24\n+chr4\tS-MART\ttranscript\t1198801\t1248800\t.\t+\t.\tnbElements=0;newTag=0;ID=region25;Name=region25\n+chr4\tS-MART\ttranscript\t1248751\t1298750\t.\t+\t.\tnbElements=0;newTag=0;ID=region26;Name=region26\n+chr4\tS-MART\ttranscript\t1298701\t1348700\t.\t+\t.\tnbElements=0;newTag=0;ID=region27;Name=region27\n+chr4\tS-MART\ttranscript\t1348651\t1398650\t.\t+\t.\tnbElements=0;newTag=0;ID=region28;Name=region28\n+chr4\tS-MART\ttranscript\t1398601\t1448600\t.\t+\t.\tnbElements=0;newTag=0;ID=region29;Name=region29\n+chr4\tS-MART\ttranscript\t1448551\t1498550\t.\t+\t.\tnbElements=0;newTag=0;ID=region30;Name=region30\n+chr4\tS-MART\ttranscript\t1498501\t1548500\t.\t+\t.\tnbElements=0;newTag=0;ID=region31;Name=region31\n+chr4\tS-MART\ttranscript\t1548451\t1598450\t.\t+\t.\tnbElements=0;newTag=0;ID=region32;Name=region32\n+chr4\tS-MART\ttranscript\t1598401\t1648400\t.\t+\t.\tnbElements=0;newTag=0;ID=region33;Name=region33\n+chr4\tS-MART\ttranscript\t1648351\t1698350\t.\t+\t.\tnbElements=0;newTag=0;ID=region34;Name=region34\n+chr4\tS-MART\ttranscript\t1698301\t1748300\t.\t+\t.\tnbElements=0;newTag=0;ID=region35;Name=region35\n+chr4\tS-MART\ttranscript\t1748251\t1798250\t.\t+\t.\tnbElements=0;newTag=0;ID=region36;Name=region36\n+chr4\tS-MART\ttranscript\t1798201\t1848200\t.\t+\t.\tnbElements=0;newTag=0;ID=region37;Name=region37\n+chr4\tS-MART\ttranscript\t1848151\t1898150\t.\t+\t.\tnbElements=0;newTag=0;ID=region38;Name=region38\n+chr4\tS-MART\ttranscript\t1898101\t1948100\t.\t+\t.\tnbElements=0;newTag=0;ID=region39;Name=region39\n+chr4\tS-MART\ttranscript\t1948051\t1998050\t.\t+\t.\tnbElements=0;newTag=0;ID=region40;Name=region40\n+chr4\tS-MART\ttranscript\t1998001\t2048000\t.\t+\t.\tnbElements=0;newTag=0;ID=region41;Name=region41\n+chr4\tS-MART\ttranscript\t2047951\t2097950\t.\t+\t.\tnbElements=0;newTag=0;ID=region42;Name=region42\n+chr4\tS-MART\ttranscript\t2097901\t2147900\t.\t+\t.\tnbElements=0;newTag=0;ID=region43;Name=region43\n+chr4\t'..b'851\t4195850\t.\t+\t.\tnbElements=0;newTag=0;ID=region1750;Name=region1750\n+chr1\tS-MART\ttranscript\t4195801\t4245800\t.\t+\t.\tnbElements=0;newTag=0;ID=region1751;Name=region1751\n+chr1\tS-MART\ttranscript\t4245751\t4295750\t.\t+\t.\tnbElements=0;newTag=0;ID=region1752;Name=region1752\n+chr1\tS-MART\ttranscript\t4295701\t4345700\t.\t+\t.\tnbElements=0;newTag=0;ID=region1753;Name=region1753\n+chr1\tS-MART\ttranscript\t4345651\t4395650\t.\t+\t.\tnbElements=0;newTag=0;ID=region1754;Name=region1754\n+chr1\tS-MART\ttranscript\t4395601\t4445600\t.\t+\t.\tnbElements=0;newTag=0;ID=region1755;Name=region1755\n+chr1\tS-MART\ttranscript\t4445551\t4495550\t.\t+\t.\tnbElements=0;newTag=0;ID=region1756;Name=region1756\n+chr1\tS-MART\ttranscript\t4495501\t4545500\t.\t+\t.\tnbElements=0;newTag=0;ID=region1757;Name=region1757\n+chr1\tS-MART\ttranscript\t4545451\t4595450\t.\t+\t.\tnbElements=0;newTag=0;ID=region1758;Name=region1758\n+chr1\tS-MART\ttranscript\t4595401\t4645400\t.\t+\t.\tnbElements=0;newTag=0;ID=region1759;Name=region1759\n+chr1\tS-MART\ttranscript\t4645351\t4695350\t.\t+\t.\tnbElements=0;newTag=0;ID=region1760;Name=region1760\n+chr1\tS-MART\ttranscript\t4695301\t4745300\t.\t+\t.\tnbElements=0;newTag=0;ID=region1761;Name=region1761\n+chr1\tS-MART\ttranscript\t4745251\t4795250\t.\t+\t.\tnbElements=0;newTag=0;ID=region1762;Name=region1762\n+chr1\tS-MART\ttranscript\t4795201\t4845200\t.\t+\t.\tnbElements=0;newTag=0;ID=region1763;Name=region1763\n+chr1\tS-MART\ttranscript\t4845151\t4895150\t.\t+\t.\tnbElements=0;newTag=0;ID=region1764;Name=region1764\n+chr1\tS-MART\ttranscript\t4895101\t4945100\t.\t+\t.\tnbElements=0;newTag=0;ID=region1765;Name=region1765\n+chr1\tS-MART\ttranscript\t4945051\t4995050\t.\t+\t.\tnbElements=0;newTag=0;ID=region1766;Name=region1766\n+chr1\tS-MART\ttranscript\t4995001\t5045000\t.\t+\t.\tnbElements=0;newTag=0;ID=region1767;Name=region1767\n+chr1\tS-MART\ttranscript\t5044951\t5094950\t.\t+\t.\tnbElements=0;newTag=0;ID=region1768;Name=region1768\n+chr1\tS-MART\ttranscript\t5094901\t5144900\t.\t+\t.\tnbElements=0;newTag=0;ID=region1769;Name=region1769\n+chr1\tS-MART\ttranscript\t5144851\t5194850\t.\t+\t.\tnbElements=0;newTag=0;ID=region1770;Name=region1770\n+chr1\tS-MART\ttranscript\t5194801\t5244800\t.\t+\t.\tnbElements=0;newTag=0;ID=region1771;Name=region1771\n+chr1\tS-MART\ttranscript\t5244751\t5294750\t.\t+\t.\tnbElements=0;newTag=0;ID=region1772;Name=region1772\n+chr1\tS-MART\ttranscript\t5294701\t5344700\t.\t+\t.\tnbElements=0;newTag=0;ID=region1773;Name=region1773\n+chr1\tS-MART\ttranscript\t5344651\t5394650\t.\t+\t.\tnbElements=0;newTag=0;ID=region1774;Name=region1774\n+chr1\tS-MART\ttranscript\t5394601\t5444600\t.\t+\t.\tnbElements=0;newTag=0;ID=region1775;Name=region1775\n+chr1\tS-MART\ttranscript\t5444551\t5494550\t.\t+\t.\tnbElements=0;newTag=0;ID=region1776;Name=region1776\n+chr1\tS-MART\ttranscript\t5494501\t5544500\t.\t+\t.\tnbElements=0;newTag=0;ID=region1777;Name=region1777\n+chr1\tS-MART\ttranscript\t5544451\t5594450\t.\t+\t.\tnbElements=0;newTag=0;ID=region1778;Name=region1778\n+chr1\tS-MART\ttranscript\t5594401\t5644400\t.\t+\t.\tnbElements=0;newTag=0;ID=region1779;Name=region1779\n+chr1\tS-MART\ttranscript\t5644351\t5694350\t.\t+\t.\tnbElements=0;newTag=0;ID=region1780;Name=region1780\n+chr1\tS-MART\ttranscript\t5694301\t5744300\t.\t+\t.\tnbElements=0;newTag=0;ID=region1781;Name=region1781\n+chr1\tS-MART\ttranscript\t5744251\t5794250\t.\t+\t.\tnbElements=0;newTag=0;ID=region1782;Name=region1782\n+chr1\tS-MART\ttranscript\t5794201\t5844200\t.\t+\t.\tnbElements=0;newTag=0;ID=region1783;Name=region1783\n+chr1\tS-MART\ttranscript\t5844151\t5894150\t.\t+\t.\tnbElements=0;newTag=0;ID=region1784;Name=region1784\n+chr1\tS-MART\ttranscript\t5894101\t5944100\t.\t+\t.\tnbElements=0;newTag=0;ID=region1785;Name=region1785\n+chr1\tS-MART\ttranscript\t5944051\t5994050\t.\t+\t.\tnbElements=0;newTag=0;ID=region1786;Name=region1786\n+chr1\tS-MART\ttranscript\t5994001\t6044000\t.\t+\t.\tnbElements=0;newTag=0;ID=region1787;Name=region1787\n+chr1\tS-MART\ttranscript\t6043951\t6093950\t.\t+\t.\tnbElements=0;newTag=0;ID=region1788;Name=region1788\n+chr1\tS-MART\ttranscript\t6093901\t6143900\t.\t+\t.\tnbElements=0;newTag=0;ID=region1789;Name=region1789\n+chr1\tS-MART\ttranscript\t6143851\t6193850\t.\t+\t.\tnbElements=1.0;newTag=1.000000;ID=region1790;Name=region1790\n'
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Python/TestFiles/clusterize_strands_expected.gff3
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/Java/Python/TestFiles/clusterize_strands_expected.gff3 Mon Apr 29 03:20:15 2013 -0400
b
b'@@ -0,0 +1,3580 @@\n+chr4\tS-MART\ttranscript\t1\t50000\t.\t-\t.\tnbElements=0;ID=region1;Name=region1\n+chr4\tS-MART\ttranscript\t49951\t99950\t.\t-\t.\tnbElements=0;ID=region2;Name=region2\n+chr4\tS-MART\ttranscript\t99901\t149900\t.\t-\t.\tnbElements=0;ID=region3;Name=region3\n+chr4\tS-MART\ttranscript\t149851\t199850\t.\t-\t.\tnbElements=0;ID=region4;Name=region4\n+chr4\tS-MART\ttranscript\t199801\t249800\t.\t-\t.\tnbElements=0;ID=region5;Name=region5\n+chr4\tS-MART\ttranscript\t249751\t299750\t.\t-\t.\tnbElements=0;ID=region6;Name=region6\n+chr4\tS-MART\ttranscript\t299701\t349700\t.\t-\t.\tnbElements=0;ID=region7;Name=region7\n+chr4\tS-MART\ttranscript\t349651\t399650\t.\t-\t.\tnbElements=0;ID=region8;Name=region8\n+chr4\tS-MART\ttranscript\t399601\t449600\t.\t-\t.\tnbElements=0;ID=region9;Name=region9\n+chr4\tS-MART\ttranscript\t449551\t499550\t.\t-\t.\tnbElements=0;ID=region10;Name=region10\n+chr4\tS-MART\ttranscript\t499501\t549500\t.\t-\t.\tnbElements=0;ID=region11;Name=region11\n+chr4\tS-MART\ttranscript\t549451\t599450\t.\t-\t.\tnbElements=0;ID=region12;Name=region12\n+chr4\tS-MART\ttranscript\t599401\t649400\t.\t-\t.\tnbElements=0;ID=region13;Name=region13\n+chr4\tS-MART\ttranscript\t649351\t699350\t.\t-\t.\tnbElements=0;ID=region14;Name=region14\n+chr4\tS-MART\ttranscript\t699301\t749300\t.\t-\t.\tnbElements=0;ID=region15;Name=region15\n+chr4\tS-MART\ttranscript\t749251\t799250\t.\t-\t.\tnbElements=0;ID=region16;Name=region16\n+chr4\tS-MART\ttranscript\t799201\t849200\t.\t-\t.\tnbElements=0;ID=region17;Name=region17\n+chr4\tS-MART\ttranscript\t849151\t899150\t.\t-\t.\tnbElements=0;ID=region18;Name=region18\n+chr4\tS-MART\ttranscript\t899101\t949100\t.\t-\t.\tnbElements=0;ID=region19;Name=region19\n+chr4\tS-MART\ttranscript\t949051\t999050\t.\t-\t.\tnbElements=0;ID=region20;Name=region20\n+chr4\tS-MART\ttranscript\t999001\t1049000\t.\t-\t.\tnbElements=0;ID=region21;Name=region21\n+chr4\tS-MART\ttranscript\t1048951\t1098950\t.\t-\t.\tnbElements=0;ID=region22;Name=region22\n+chr4\tS-MART\ttranscript\t1098901\t1148900\t.\t-\t.\tnbElements=0;ID=region23;Name=region23\n+chr4\tS-MART\ttranscript\t1148851\t1198850\t.\t-\t.\tnbElements=0;ID=region24;Name=region24\n+chr4\tS-MART\ttranscript\t1198801\t1248800\t.\t-\t.\tnbElements=0;ID=region25;Name=region25\n+chr4\tS-MART\ttranscript\t1248751\t1298750\t.\t-\t.\tnbElements=0;ID=region26;Name=region26\n+chr4\tS-MART\ttranscript\t1298701\t1348700\t.\t-\t.\tnbElements=0;ID=region27;Name=region27\n+chr4\tS-MART\ttranscript\t1348651\t1398650\t.\t-\t.\tnbElements=0;ID=region28;Name=region28\n+chr4\tS-MART\ttranscript\t1398601\t1448600\t.\t-\t.\tnbElements=0;ID=region29;Name=region29\n+chr4\tS-MART\ttranscript\t1448551\t1498550\t.\t-\t.\tnbElements=0;ID=region30;Name=region30\n+chr4\tS-MART\ttranscript\t1498501\t1548500\t.\t-\t.\tnbElements=0;ID=region31;Name=region31\n+chr4\tS-MART\ttranscript\t1548451\t1598450\t.\t-\t.\tnbElements=0;ID=region32;Name=region32\n+chr4\tS-MART\ttranscript\t1598401\t1648400\t.\t-\t.\tnbElements=0;ID=region33;Name=region33\n+chr4\tS-MART\ttranscript\t1648351\t1698350\t.\t-\t.\tnbElements=0;ID=region34;Name=region34\n+chr4\tS-MART\ttranscript\t1698301\t1748300\t.\t-\t.\tnbElements=0;ID=region35;Name=region35\n+chr4\tS-MART\ttranscript\t1748251\t1798250\t.\t-\t.\tnbElements=0;ID=region36;Name=region36\n+chr4\tS-MART\ttranscript\t1798201\t1848200\t.\t-\t.\tnbElements=0;ID=region37;Name=region37\n+chr4\tS-MART\ttranscript\t1848151\t1898150\t.\t-\t.\tnbElements=0;ID=region38;Name=region38\n+chr4\tS-MART\ttranscript\t1898101\t1948100\t.\t-\t.\tnbElements=0;ID=region39;Name=region39\n+chr4\tS-MART\ttranscript\t1948051\t1998050\t.\t-\t.\tnbElements=0;ID=region40;Name=region40\n+chr4\tS-MART\ttranscript\t1998001\t2048000\t.\t-\t.\tnbElements=0;ID=region41;Name=region41\n+chr4\tS-MART\ttranscript\t2047951\t2097950\t.\t-\t.\tnbElements=0;ID=region42;Name=region42\n+chr4\tS-MART\ttranscript\t2097901\t2147900\t.\t-\t.\tnbElements=0;ID=region43;Name=region43\n+chr4\tS-MART\ttranscript\t2147851\t2197850\t.\t-\t.\tnbElements=0;ID=region44;Name=region44\n+chr4\tS-MART\ttranscript\t2197801\t2247800\t.\t-\t.\tnbElements=0;ID=region45;Name=region45\n+chr4\tS-MART\ttranscript\t2247751\t2297750\t.\t-\t.\tnbElements=0;ID=region46;Name=region46\n+chr4\tS-MART\ttranscript\t2297701\t2347700\t.\t-\t.\tnbElements=0;ID=region47;Name=region47\n+chr4\tS-MART\ttranscript\t2347651\t2397650\t.\t-\t.\tnbEleme'..b'MART\ttranscript\t3946051\t3996050\t.\t+\t.\tnbElements=0;ID=region3536;Name=region3536\n+chr1\tS-MART\ttranscript\t3996001\t4046000\t.\t+\t.\tnbElements=0;ID=region3537;Name=region3537\n+chr1\tS-MART\ttranscript\t4045951\t4095950\t.\t+\t.\tnbElements=0;ID=region3538;Name=region3538\n+chr1\tS-MART\ttranscript\t4095901\t4145900\t.\t+\t.\tnbElements=0;ID=region3539;Name=region3539\n+chr1\tS-MART\ttranscript\t4145851\t4195850\t.\t+\t.\tnbElements=0;ID=region3540;Name=region3540\n+chr1\tS-MART\ttranscript\t4195801\t4245800\t.\t+\t.\tnbElements=0;ID=region3541;Name=region3541\n+chr1\tS-MART\ttranscript\t4245751\t4295750\t.\t+\t.\tnbElements=0;ID=region3542;Name=region3542\n+chr1\tS-MART\ttranscript\t4295701\t4345700\t.\t+\t.\tnbElements=0;ID=region3543;Name=region3543\n+chr1\tS-MART\ttranscript\t4345651\t4395650\t.\t+\t.\tnbElements=0;ID=region3544;Name=region3544\n+chr1\tS-MART\ttranscript\t4395601\t4445600\t.\t+\t.\tnbElements=0;ID=region3545;Name=region3545\n+chr1\tS-MART\ttranscript\t4445551\t4495550\t.\t+\t.\tnbElements=0;ID=region3546;Name=region3546\n+chr1\tS-MART\ttranscript\t4495501\t4545500\t.\t+\t.\tnbElements=0;ID=region3547;Name=region3547\n+chr1\tS-MART\ttranscript\t4545451\t4595450\t.\t+\t.\tnbElements=0;ID=region3548;Name=region3548\n+chr1\tS-MART\ttranscript\t4595401\t4645400\t.\t+\t.\tnbElements=0;ID=region3549;Name=region3549\n+chr1\tS-MART\ttranscript\t4645351\t4695350\t.\t+\t.\tnbElements=0;ID=region3550;Name=region3550\n+chr1\tS-MART\ttranscript\t4695301\t4745300\t.\t+\t.\tnbElements=0;ID=region3551;Name=region3551\n+chr1\tS-MART\ttranscript\t4745251\t4795250\t.\t+\t.\tnbElements=0;ID=region3552;Name=region3552\n+chr1\tS-MART\ttranscript\t4795201\t4845200\t.\t+\t.\tnbElements=0;ID=region3553;Name=region3553\n+chr1\tS-MART\ttranscript\t4845151\t4895150\t.\t+\t.\tnbElements=0;ID=region3554;Name=region3554\n+chr1\tS-MART\ttranscript\t4895101\t4945100\t.\t+\t.\tnbElements=0;ID=region3555;Name=region3555\n+chr1\tS-MART\ttranscript\t4945051\t4995050\t.\t+\t.\tnbElements=0;ID=region3556;Name=region3556\n+chr1\tS-MART\ttranscript\t4995001\t5045000\t.\t+\t.\tnbElements=0;ID=region3557;Name=region3557\n+chr1\tS-MART\ttranscript\t5044951\t5094950\t.\t+\t.\tnbElements=0;ID=region3558;Name=region3558\n+chr1\tS-MART\ttranscript\t5094901\t5144900\t.\t+\t.\tnbElements=0;ID=region3559;Name=region3559\n+chr1\tS-MART\ttranscript\t5144851\t5194850\t.\t+\t.\tnbElements=0;ID=region3560;Name=region3560\n+chr1\tS-MART\ttranscript\t5194801\t5244800\t.\t+\t.\tnbElements=0;ID=region3561;Name=region3561\n+chr1\tS-MART\ttranscript\t5244751\t5294750\t.\t+\t.\tnbElements=0;ID=region3562;Name=region3562\n+chr1\tS-MART\ttranscript\t5294701\t5344700\t.\t+\t.\tnbElements=0;ID=region3563;Name=region3563\n+chr1\tS-MART\ttranscript\t5344651\t5394650\t.\t+\t.\tnbElements=0;ID=region3564;Name=region3564\n+chr1\tS-MART\ttranscript\t5394601\t5444600\t.\t+\t.\tnbElements=0;ID=region3565;Name=region3565\n+chr1\tS-MART\ttranscript\t5444551\t5494550\t.\t+\t.\tnbElements=0;ID=region3566;Name=region3566\n+chr1\tS-MART\ttranscript\t5494501\t5544500\t.\t+\t.\tnbElements=0;ID=region3567;Name=region3567\n+chr1\tS-MART\ttranscript\t5544451\t5594450\t.\t+\t.\tnbElements=0;ID=region3568;Name=region3568\n+chr1\tS-MART\ttranscript\t5594401\t5644400\t.\t+\t.\tnbElements=0;ID=region3569;Name=region3569\n+chr1\tS-MART\ttranscript\t5644351\t5694350\t.\t+\t.\tnbElements=0;ID=region3570;Name=region3570\n+chr1\tS-MART\ttranscript\t5694301\t5744300\t.\t+\t.\tnbElements=0;ID=region3571;Name=region3571\n+chr1\tS-MART\ttranscript\t5744251\t5794250\t.\t+\t.\tnbElements=0;ID=region3572;Name=region3572\n+chr1\tS-MART\ttranscript\t5794201\t5844200\t.\t+\t.\tnbElements=0;ID=region3573;Name=region3573\n+chr1\tS-MART\ttranscript\t5844151\t5894150\t.\t+\t.\tnbElements=0;ID=region3574;Name=region3574\n+chr1\tS-MART\ttranscript\t5894101\t5944100\t.\t+\t.\tnbElements=0;ID=region3575;Name=region3575\n+chr1\tS-MART\ttranscript\t5944051\t5994050\t.\t+\t.\tnbElements=0;ID=region3576;Name=region3576\n+chr1\tS-MART\ttranscript\t5994001\t6044000\t.\t+\t.\tnbElements=0;ID=region3577;Name=region3577\n+chr1\tS-MART\ttranscript\t6043951\t6093950\t.\t+\t.\tnbElements=0;ID=region3578;Name=region3578\n+chr1\tS-MART\ttranscript\t6093901\t6143900\t.\t+\t.\tnbElements=0;ID=region3579;Name=region3579\n+chr1\tS-MART\ttranscript\t6143851\t6193850\t.\t+\t.\tnbElements=1.0;ID=region3580;Name=region3580\n'
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Python/TestFiles/expOutputGff.gff3
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/Java/Python/TestFiles/expOutputGff.gff3 Mon Apr 29 03:20:15 2013 -0400
b
b'@@ -0,0 +1,2292 @@\n+C02HBa0185P07_LR40\tS-MART\ttranscript\t3889\t3924\t.\t-\t.\tquality=60;bestRegion=(self);nbGaps=0;nbOccurrences=1;nbMismatches=0.000000;ID=HWI-EAS337_3:7:1:415:1217;identity=100.000000;Name=HWI-EAS337_3:7:1:415:1217\n+C02HBa0185P07_LR40\tS-MART\ttranscript\t3830\t3865\t.\t+\t.\tquality=60;bestRegion=(self);nbGaps=0;nbOccurrences=1;nbMismatches=0.000000;ID=HWI-EAS337_3:7:1:415:1217;identity=100.000000;Name=HWI-EAS337_3:7:1:415:1217\n+C11SLe0053P22_LR298\tS-MART\ttranscript\t2130\t2165\t.\t-\t.\tquality=60;bestRegion=(self);nbGaps=0;nbOccurrences=1;nbMismatches=0.000000;ID=HWI-EAS337_3:7:1:1178:755;identity=100.000000;Name=HWI-EAS337_3:7:1:1178:755\n+C11SLe0053P22_LR298\tS-MART\ttranscript\t1980\t2015\t.\t+\t.\tquality=60;bestRegion=(self);nbGaps=0;nbOccurrences=1;nbMismatches=0.000000;ID=HWI-EAS337_3:7:1:1178:755;identity=100.000000;Name=HWI-EAS337_3:7:1:1178:755\n+C06HBa0144J05_LR355\tS-MART\ttranscript\t1\t36\t.\t+\t.\tquality=60;bestRegion=(self);nbGaps=0;nbOccurrences=1;nbMismatches=0.000000;ID=HWI-EAS337_3:7:1:277:1259;identity=100.000000;Name=HWI-EAS337_3:7:1:277:1259\n+C06HBa0144J05_LR355\tS-MART\ttranscript\t101\t136\t.\t-\t.\tquality=60;bestRegion=(self);nbGaps=0;nbOccurrences=1;nbMismatches=0.000000;ID=HWI-EAS337_3:7:1:277:1259;identity=100.000000;Name=HWI-EAS337_3:7:1:277:1259\n+C08HBa0165B06_LR218\tS-MART\ttranscript\t3619\t3654\t.\t-\t.\tquality=60;bestRegion=(self);nbGaps=0;nbOccurrences=1;nbMismatches=0.000000;ID=HWI-EAS337_3:7:1:447:1231;identity=100.000000;Name=HWI-EAS337_3:7:1:447:1231\n+C08HBa0165B06_LR218\tS-MART\ttranscript\t3575\t3610\t.\t+\t.\tquality=60;bestRegion=(self);nbGaps=0;nbOccurrences=1;nbMismatches=0.000000;ID=HWI-EAS337_3:7:1:447:1231;identity=100.000000;Name=HWI-EAS337_3:7:1:447:1231\n+C02HBa0329G05_LR52\tS-MART\ttranscript\t4746\t4781\t.\t-\t.\tquality=60;bestRegion=(self);nbGaps=0;nbOccurrences=1;nbMismatches=0.000000;ID=HWI-EAS337_3:7:1:1154:1517;identity=100.000000;Name=HWI-EAS337_3:7:1:1154:1517\n+C02HBa0329G05_LR52\tS-MART\ttranscript\t4680\t4715\t.\t+\t.\tquality=60;bestRegion=(self);nbGaps=0;nbOccurrences=1;nbMismatches=0.000000;ID=HWI-EAS337_3:7:1:1154:1517;identity=100.000000;Name=HWI-EAS337_3:7:1:1154:1517\n+C04HBa80D3_LR100\tS-MART\ttranscript\t423\t458\t.\t-\t.\tquality=60;bestRegion=(self);nbGaps=0;nbOccurrences=1;nbMismatches=0.000000;ID=HWI-EAS337_3:7:1:164:1869;identity=100.000000;Name=HWI-EAS337_3:7:1:164:1869\n+C04HBa80D3_LR100\tS-MART\ttranscript\t397\t432\t.\t+\t.\tquality=60;bestRegion=(self);nbGaps=0;nbOccurrences=1;nbMismatches=0.000000;ID=HWI-EAS337_3:7:1:164:1869;identity=100.000000;Name=HWI-EAS337_3:7:1:164:1869\n+C01HBa0216G16_LR11\tS-MART\ttranscript\t648\t683\t.\t-\t.\tquality=60;bestRegion=(self);nbGaps=0;nbOccurrences=1;nbMismatches=0.000000;ID=HWI-EAS337_3:7:1:415:1194;identity=100.000000;Name=HWI-EAS337_3:7:1:415:1194\n+C01HBa0216G16_LR11\tS-MART\ttranscript\t511\t546\t.\t+\t.\tquality=60;bestRegion=(self);nbGaps=0;nbOccurrences=1;nbMismatches=1.000000;ID=HWI-EAS337_3:7:1:415:1194;identity=97.222222;Name=HWI-EAS337_3:7:1:415:1194\n+C05HBa0145P19_LR136\tS-MART\ttranscript\t3686\t3721\t.\t-\t.\tquality=60;bestRegion=(self);nbGaps=0;nbOccurrences=1;nbMismatches=2.000000;ID=HWI-EAS337_3:7:1:645:1892;identity=94.444444;Name=HWI-EAS337_3:7:1:645:1892\n+C05HBa0145P19_LR136\tS-MART\ttranscript\t3573\t3608\t.\t+\t.\tquality=60;bestRegion=(self);nbGaps=0;nbOccurrences=1;nbMismatches=0.000000;ID=HWI-EAS337_3:7:1:645:1892;identity=100.000000;Name=HWI-EAS337_3:7:1:645:1892\n+C08HBa0012O06_LR211\tS-MART\ttranscript\t1768\t1803\t.\t-\t.\tquality=60;bestRegion=(self);nbGaps=0;nbOccurrences=1;nbMismatches=1.000000;ID=HWI-EAS337_3:7:1:33:1446;identity=97.222222;Name=HWI-EAS337_3:7:1:33:1446\n+C08HBa0012O06_LR211\tS-MART\ttranscript\t1649\t1684\t.\t+\t.\tquality=60;bestRegion=(self);nbGaps=0;nbOccurrences=1;nbMismatches=0.000000;ID=HWI-EAS337_3:7:1:33:1446;identity=100.000000;Name=HWI-EAS337_3:7:1:33:1446\n+C09HBa0194K19_LR362\tS-MART\ttranscript\t9168\t9203\t.\t+\t.\tquality=60;bestRegion=(self);nbGaps=0;nbOccurrences=1;nbMismatches=0.000000;ID=HWI-EAS337_3:7:1:1194:1427;identity=100.000000;Name=HWI-EAS337_3:7:1:1194:1427'..b':1:1147:62\n+C02HBa0204D01_LR334\tS-MART\ttranscript\t6704\t6739\t.\t-\t.\tquality=60;bestRegion=(self);nbGaps=0;nbOccurrences=1;nbMismatches=0.000000;ID=HWI-EAS337_3:7:1:1147:62;identity=100.000000;Name=HWI-EAS337_3:7:1:1147:62\n+C02SLe0018B07_LR335\tS-MART\ttranscript\t8378\t8413\t.\t-\t.\tquality=0;bestRegion=(self);nbGaps=0;nbOccurrences=2;nbMismatches=0.000000;ID=HWI-EAS337_3:7:1:787:1759;identity=100.000000;Name=HWI-EAS337_3:7:1:787:1759\n+C02SLe0018B07_LR335\tS-MART\ttranscript\t8208\t8243\t.\t+\t.\tquality=0;bestRegion=(self);nbGaps=0;nbOccurrences=2;nbMismatches=0.000000;ID=HWI-EAS337_3:7:1:787:1759;identity=100.000000;Name=HWI-EAS337_3:7:1:787:1759\n+C09SLm0143I09_LR365\tS-MART\ttranscript\t1546\t1581\t.\t-\t.\tquality=0;bestRegion=(self);nbGaps=0;nbOccurrences=2;nbMismatches=0.000000;ID=HWI-EAS337_3:7:1:425:1939;identity=100.000000;Name=HWI-EAS337_3:7:1:425:1939\n+C09SLm0143I09_LR365\tS-MART\ttranscript\t1490\t1525\t.\t+\t.\tquality=0;bestRegion=(self);nbGaps=0;nbOccurrences=2;nbMismatches=0.000000;ID=HWI-EAS337_3:7:1:425:1939;identity=100.000000;Name=HWI-EAS337_3:7:1:425:1939\n+C02SLe0018B07_LR335\tS-MART\ttranscript\t9178\t9213\t.\t-\t.\tquality=0;bestRegion=(self);nbGaps=0;nbOccurrences=2;nbMismatches=1.000000;ID=HWI-EAS337_3:7:1:187:1132;identity=97.222222;Name=HWI-EAS337_3:7:1:187:1132\n+C02SLe0018B07_LR335\tS-MART\ttranscript\t9065\t9100\t.\t+\t.\tquality=0;bestRegion=(self);nbGaps=0;nbOccurrences=2;nbMismatches=0.000000;ID=HWI-EAS337_3:7:1:187:1132;identity=100.000000;Name=HWI-EAS337_3:7:1:187:1132\n+C02HBa0072A04_LR26\tS-MART\ttranscript\t2868\t2903\t.\t+\t.\tquality=60;bestRegion=(self);nbGaps=0;nbOccurrences=1;nbMismatches=0.000000;ID=HWI-EAS337_3:7:1:1739:1840;identity=100.000000;Name=HWI-EAS337_3:7:1:1739:1840\n+C02HBa0072A04_LR26\tS-MART\ttranscript\t3189\t3224\t.\t-\t.\tquality=60;bestRegion=(self);nbGaps=0;nbOccurrences=1;nbMismatches=1.000000;ID=HWI-EAS337_3:7:1:1739:1840;identity=97.222222;Name=HWI-EAS337_3:7:1:1739:1840\n+C07SLe0111B06_LR194\tS-MART\ttranscript\t8673\t8708\t.\t+\t.\tquality=60;bestRegion=(self);nbGaps=0;nbOccurrences=1;nbMismatches=0.000000;ID=HWI-EAS337_3:7:1:1505:1876;identity=100.000000;Name=HWI-EAS337_3:7:1:1505:1876\n+C07SLe0111B06_LR194\tS-MART\ttranscript\t8677\t8712\t.\t-\t.\tquality=60;bestRegion=(self);nbGaps=0;nbOccurrences=1;nbMismatches=0.000000;ID=HWI-EAS337_3:7:1:1505:1876;identity=100.000000;Name=HWI-EAS337_3:7:1:1505:1876\n+C09SLm0143I09_LR365\tS-MART\ttranscript\t6957\t6992\t.\t+\t.\tquality=0;bestRegion=(self);nbGaps=0;nbOccurrences=2;nbMismatches=0.000000;ID=HWI-EAS337_3:7:1:447:192;identity=100.000000;Name=HWI-EAS337_3:7:1:447:192\n+C09SLm0143I09_LR365\tS-MART\ttranscript\t7039\t7074\t.\t-\t.\tquality=0;bestRegion=(self);nbGaps=0;nbOccurrences=2;nbMismatches=0.000000;ID=HWI-EAS337_3:7:1:447:192;identity=100.000000;Name=HWI-EAS337_3:7:1:447:192\n+C09SLm0037I08_LR367\tS-MART\ttranscript\t1298\t1333\t.\t-\t.\tquality=60;bestRegion=(self);nbGaps=0;nbOccurrences=1;nbMismatches=0.000000;ID=HWI-EAS337_3:7:1:21:2019;identity=100.000000;Name=HWI-EAS337_3:7:1:21:2019\n+C09SLm0037I08_LR367\tS-MART\ttranscript\t955\t990\t.\t+\t.\tquality=60;bestRegion=(self);nbGaps=0;nbOccurrences=1;nbMismatches=0.000000;ID=HWI-EAS337_3:7:1:21:2019;identity=100.000000;Name=HWI-EAS337_3:7:1:21:2019\n+C04HBa8K13_LR338\tS-MART\ttranscript\t2175\t2210\t.\t+\t.\tquality=60;bestRegion=(self);nbGaps=0;nbOccurrences=1;nbMismatches=1.000000;ID=HWI-EAS337_3:7:1:1593:652;identity=97.222222;Name=HWI-EAS337_3:7:1:1593:652\n+C04HBa8K13_LR338\tS-MART\ttranscript\t2226\t2261\t.\t-\t.\tquality=60;bestRegion=(self);nbGaps=0;nbOccurrences=1;nbMismatches=0.000000;ID=HWI-EAS337_3:7:1:1593:652;identity=100.000000;Name=HWI-EAS337_3:7:1:1593:652\n+C12HBa326K10_LR306\tS-MART\ttranscript\t8100\t8135\t.\t+\t.\tquality=60;bestRegion=(self);nbGaps=0;nbOccurrences=1;nbMismatches=0.000000;ID=HWI-EAS337_3:7:1:1254:1660;identity=100.000000;Name=HWI-EAS337_3:7:1:1254:1660\n+C12HBa326K10_LR306\tS-MART\ttranscript\t8243\t8278\t.\t-\t.\tquality=60;bestRegion=(self);nbGaps=0;nbOccurrences=1;nbMismatches=0.000000;ID=HWI-EAS337_3:7:1:1254:1660;identity=100.000000;Name=HWI-EAS337_3:7:1:1254:1660\n'
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Python/TestFiles/expRef.fasta
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/Java/Python/TestFiles/expRef.fasta Mon Apr 29 03:20:15 2013 -0400
b
b'@@ -0,0 +1,33148 @@\n+>C10HBa0111D09_LR276\n+GAACAAACAACCCCTTTTTGGAGGTGTTGGCGCGTCGTGCAGCTTACACTCAAAAGTTAA\n+AAAGTTGCCTTGCGATGCGGTCATGTTACAAACCTCTCTGCCTTAAATTAAATTCCATAA\n+CCAAGATTTGGAGGTGCCTCAACGATGCGCAGCCATGTCCCATATTTGGTCGCCTCGTTT\n+AAAAGTCAAGTTAGACTTAATTAAGAGGTCCAACTAGTGTAGGGGCGTTTTGAGTACTTG\n+TGGGATTTATTATAAACGGTTTTGAGTCACTTTAAACCCACTTCACCAATTAAAACAAAA\n+TCCTCAAGTTAAAACTCAATATCTTTCCATTCTCTCTCTCTAAAACCTTCATTGGAGATA\n+TTTGAAGCTCCACGGAAGAAGGTTAATTTTCCAAGGTTTCAATGAAAATTTCGTGTATAG\n+GTCTTCAATAAGGTATGGTGATTTCATCCTTGATTCTTCTATCATTCAAGGATCCAATTC\n+AAAGGTTTTTCAAAAGATCTCAAAAATCCTATTTCGAATTCTAAGTATGGGTTCTTCCAT\n+TTAAAGGTTTAAATGGATGAATTATGATGTTTTCAATGTTAGTTGATGTTTTTATGATAA\n+AAAAACTCCATGAACCCATGAGCATCCTAATTCTCTAATTTTGTCTTGTAAATTGAGTTT\n+GATAATTGTGATTGGTTATGGATGGAATTGTATTTAGATTGCTCTATATTGTTGATTCTT\n+ATTGTTAACCTATCTCTATATATGTAGAATTGAGATTGTAAGGATGAGTTAGTAATCTTG\n+GCTTTATGGGCTTTCGAATCCGGGTTTACCCCCTGGATGTAACCGGCATCCTCGCCCTTT\n+TTCAAGGACTAAGACCAACCTTTTAGTCTCATGTCATTACATTCATAGGTTGACAAATGC\n+GGAAAAATTTAAAACTTTCATTATCACTACTTGGAGGTTTACATAGACCTCTACATACAC\n+ATAAGATATATTCATATAGAGTATACATAGACCCTTCGTATAGGAAGGTTACATAGCCAT\n+CTACTTTTATTACACATACATATATATAAAATATAAAAATAGTCTAACGATTGTCTCATC\n+TCATACCCTCTAAACGATTATCACAATATGGGCATAACCCTTACATCAATCAAACAAGAG\n+CACATATAGGTCATACAAAAGTATAGTACTCAATTAAAAAGGAAAGAAATGAAAGAGTCT\n+TTAAGCTCATAACAAGTCCATAAGCTAGATTATGGCATTGACCTCAAAAGTTGAGGACCT\n+TATGTGCGTACACAAGCAAAACATGCTAAAAAGGGACTTTTTAGTCAAAACATGCCCATT\n+TATCCCTTTAAGAACCTACTACAAAGCCAACAAGTCATACCAACCAACCAAACATGCTTA\n+CTATCTCAACAAGTAATACTTATCCCAACATACTTGAAACCATGATTTACTACAACCCTA\n+TCACCAAGGAAAAATATCACAAGAATGAATAAGAGTCAATCATATCATGATAGAGAGACA\n+ACTATTCATGAATCCTTATCAACTCAACAAGTGCAATAACCAAGCAAAGCCTCATAACCT\n+TACTCAATCAAGTATCCTCAAAAAGAAACCATGACCAATGTCCAACTTTACCTAACATAG\n+CATTTAGGTTTACATTTTATCATATATTAACATTATGACCCAAGGCATACTCATTAGTAA\n+ACTAATTAATATATAATATCAACAATGTGCCATAGTAATCATATATACATAATATATCAT\n+CATAACATAAACATATATAAAAACCTCCTTCTAAGACTCCCCTCAAGGCTAACTAGTGAA\n+ATGTTTAGGTAGAGCCCCATACCCCTACCTAGATTAAGCTAGACCCCTTAGGTTATCCAA\n+GTTAGAGTTCAAGTCCTTTAATTCGTTTTACCTTTTGGGAACATCTTGCCCTAACCGACA\n+TAGACCACATGAGCTAGTGTGGGATACGGTTCCAAAAAACCCTACACAGAAAGAAGGCGG\n+ACTACTTGCCAAAGTATTACCAAAACATGAAACATAGCAACTACGTTGATCCACTAGCAA\n+GTATTTCTATAGGGGCAACATAGTTCAAGAACTCTGAGATATACTTGAGACCCTCTTTAT\n+GCGCCATGCATTATAGTCTCCAACCTCAAGAGTAATGTAGTGTTCCTACCTTCCCCATGT\n+GAGAAAGGACACTCCTCAATCTAGTTCACTCGGTGCTAAGCTAGAGACCCTTTTTGAAAT\n+GTCTTTAAGCCTTTAATTATCAATCATAGCTTAGCTTAGGTCATAGGGTATATCTCTTGT\n+ATAATCATCATCATCAATAGCTCAATAATAATTGTATGAGTATAAGTCCTTTCATCACAA\n+TTCATATAAGTGAGGTTAACATGTTAGCATTTCATTGCATATCAAGAAACATTGATGATT\n+CTTACCATCCTTGTATCACATACACCTTAATCAATCTCACAACATAGTCAGGACATATCA\n+ATTCAACATCATACCACCCTATAATCCTAATATAAGGCATACTCCAATATAACTTCACGT\n+CTTAACAAAAATTTATCACAATTGGAATTAAAGATAGAGATTCTAAGACTTAACAAGTCT\n+TCCTTGTAGTTCATCATCAAGGTCTTACCATCAACCCATAACTCAACCAAGTTTGGGGAG\n+TAACATCATCACACAATGATAATCAATAGGATAACAAGGCTAATTTCATCTCTATAACAC\n+AATTCAACACTAGATCATAACTTAAGACAAGATACATAGGCTAATTTCACACTATAATTC\n+ATAACCTAAATCACATCTCAAGAAATAGCATTATAGTCCTATAATTCATATTAATTTGTT\n+CATAATAACACAATAGGATAGTAATTTAATCAATAACCAAGTCAATTGAATGATCACAAT\n+ACAATATACATCAATATCACAAGCTAGGGTTAGGGATGAAGGATCATATTCTTCAATTTA\n+GACCAAACCACTAACAATTACCATAATAAAGTTTAAATTCATGTAAATGTATTCAATATA\n+ACCTAAATAAATCATTAACAACTCAATCCATAACTTCAATTTCGTAATTGAATGAAACCC\n+ATAAGAAAATTCACCTTTTGAAATCCATTTTAAAGAAACCCTTTGAGGAAAGAGCCTCAA\n+AGGTGAATTAGATCCCATATATTAATGTTTGATGATGAATTCGCCCCTTTCCATCCCCCA\n+AACCCTTATCCTTGCTAGTTTTTAATGGTGAGTTCAAGTAGAGAGAGAAATAAGAGAGAA\n+GGAAGAGAGTTTTTGTCTTAGAGTTCTAATTAATTTAATTGGGGTTGGGGATTTTATATG\n+CGTTTTAAGTTAGTTAATTAGTCACCCCTCAATACCTAACTAACCCCTGAACCACCTAAT\n+TAATTAAATGAATCAATATAAAAACATACAGGAAATTTGACCTTCACAGACGAGACCCCG\n+AACGACGGGCCATCTGTGAGTCAACGGTCCCTCACCCCTCCGTCCTGCACTCTATCGATC\n+AGTTCATAGACTGTGCAGGCAGATCAATTCTTCAACTTGTCTAAGTATGGGATGACGGTG\n+GTATCGACTCCCCGTCAGTCCACACACGGACCGTAGGTGGTCCCATCGATGCGCATTGTC\n+TAGTCCTTGTTTGTTCAAACACAAGGGCCTCAAGGGCCCTTGGTTGGTGCTTGGGGAGTC\n+GTACCCATACGTTTCAATCATGAAACAACTCAAAAACCTATAATCTATCCTTCCACCAAT\n+TTTTGTACCTTTCCGACTCTTAAAAGGTAGTCAAATAGGCTAAGGCACGCTAACACCCCT\n+TTGAACCAACTTCCTGGACGTTCTTATACATTTTGGTTCTTAAACTTCCT'..b'CAATATTCCATATTGATCGCCAGCTTCCATTGCTACAAAAGA\n+TGCATATAGTATCAGCTTCTTTAGACAAAGCTATAAGAAGTATCAGTTGACCCAATTGAC\n+AAGTCACACGTGCTATAACAAGATATCACTTGACGCAAGTGACAAGTGTGAAGCTGACAG\n+GAAAATAGGCAATAGAATCCCTCATTCTTTGTTTATATATAGCAACCTATTACTTCAGTA\n+TCTGTTTACAAGTTCTGCACCACGATAAGTATAACTATTTAGAAATTATGAAGGGAGTGT\n+TGCACAAATTAGTCAGGGTTAGAATTTTAATAATCCAACACACCAGAAATTCTGAGGACT\n+ATGCCTAGCAGCTGAAATCACCACAACAAGTTCAAAGTCAAATCCTGGCTCTTCCACATC\n+CTTTCCCTTCGTACAGTAAACTGAACAGATGCCTTTTGGATATGTTTCACTCACATACTT\n+CATAATTTCAGCATCCATGGCAGACCTACACAAGAATTACCATGAATAGGAGAATTTGGC\n+AAGCAACGGTAATCACAAAGTCAGTACTCATAAACCAAGCCTCTGATGAGAAGAACTAAC\n+CATGTTAAGAAGGGAACTACTCACATAAAACAAAAACATGATTTTTATAATCTGCATGCC\n+AAGCATTAGGAACTATTGAAGAATTCACTGCGATCTCAGAATATAATCCTTTCATACTCT\n+TAATGCCTCCCAATTATACCAAATTTAGGTGTCTTACTACCATTTTAGTATCTGACATTG\n+ATGTCATTACCCATTAATTTGGAGACACTGGTTCCTCACCGATAAAGATGAACAAAAAGG\n+TAAACCAGTGTATTATGAATCAGATCTCTTTATGGAATAAAAACACACATGAATCATGAT\n+GTAGGATCTTATTAACACTTGAGGACTGAGGCGAAGATTACTAAGAATATCCCGAAAGAT\n+AAGACATAGAATGTAATATAGAAGGACAGAGAACAAATGATACTGATTAAGAAGAAGAGC\n+ATCTATATAGGAGAGATTAGCCTAAACTATTTATTTTCAGACTGATTTCGGTGAGCGCAG\n+ACCAAAACATGCAGCTTTTTTTTCAATTAAGCCGGAAAGACAATTTCCACAAGAAATGCA\n+ACTGTTCTAGCATATCTTAAACTATAATCTGAGTGCTGTCTGAGAACTGAGGTTGAATTT\n+GCAAGTCTTGTTGAGCATGGTTAAAAAATAAGTCCAATTAGGCAAAATAATTGTGAATGT\n+CATAATATAGAAGAACTTCAACATCTCAATGGGAAAAACAGAAAGTGAGTAGCTAAAAAG\n+GGGAGCAATACCAAAGATATTAAACTGAGAAATATATCTCATACCCTACAGATGCATACC\n+TATACTCTTCCACGAAAGCAGATGGAAGTTCTTCATCTCTTGCTGGCCTAACGTCTTTAC\n+AAACCTAGAATGCAGACATACCATGAGCTTACAAGAAGGGAGCATAAATTATTACACGGC\n+AACAATAACTAGGAAAAAAAGAGAGAGAGGAAATACATTTAATTTCACAGCCCTTGAATT\n+ATGAATAAAACCATGCACTTGTTATATTAAGCAGAGACTACTTCCACTTTTCCAATCTAT\n+TTACATCTACTTCATCACATTAACAAGAATAGAAAAGAAATGCATGTTATGTGACATTCA\n+GCACTGTAGACTAATGAGGATTAATTTACAACCATGGACCAGCTATAGCAGAAGAGACCT\n+TATTTTACTTTTCCAAAATTGGTATTTACTCCATCACCATTAACAAGAATAAAAAATGCA\n+TCTTATGTGAAGTTCATAACTATTGAATAATGAGGTTAATCAAGAGCTTGCTATATCAAA\n+GCACATTTTTCAAGTTTACAATTTCTTCATTCTTGGTATCCACTTCTATCATGAAAACCA\n+ACCTAACAGTTAACACAATTCACTCTGGTGTTTTGTTCTTTATCCCTAATGCCTGAGTGT\n+GTTTAACTAATCAAGTTCCAATCAGCCAGAAGATGTCTAAACATACTAAACTATAGATAA\n+ACAACATGAGCATAAAACCAGTTTATGTAGAGATTTTTAATTGCACAGCATAAAAAGGAG\n+TACCCCCGGCACTATATGTGCTTCTCTTTCTTTTTTTCTTACTTCGTCCTGATCTTTTTA\n+CTTTTCTTTTCCTTTCTTTCAGAATAAGCACATTTTTGGATATAGTCCCACCATCTCTAC\n+CAGGTTTATGTCTGTCCATATTATTGCTTTTTTGAATTACCTTCTAAACAAAATACTCAT\n+CCTTACAAACCTGCTTCCTCTTCTATGGATCCCACCACTCCATGCCCCGAAAAAAAAGAA\n+AGAAAAAGATAAGTTTTTCATAGTCACTTTAGATTATCATTTATTAAATTCTGTCGGCTC\n+AACTGATAGGAACAGTGAAATGGACTTTTCAATCATAAAAAGATAATAGAAGTTATTAAA\n+TGATTCCCTTCAAGATTATGAGCTTTTAAACTTACATATCATGCAACTATTGGGGAATTA\n+AGGGACTGGGGATTTGATGATAAATTCCAGCACCATTTTTGGTGCTTTTGTGTTTTTGCA\n+AGGTAGTTTGTTAGTGGCACATGGAAGGAGGTGCCTCATCCAATGAAATTATTAATCTTA\n+TCAACAAGAAGAAAGTCAAAACACCAAACTGTAAAAAATCCAAAAATAGCATTTTGCATT\n+GTGTACTAACTGAACAACGTACTTGCTTGACATGGTCAACTCTGGCAACCTGCGCAGTCC\n+GGGGATCAAGATACTCATCCTTATGAACCTCACTAAATGATGTAATCAGTACCTACAAAT\n+TAGTGAACAGCAACTTTACACAGCTAGATCATGAAAAATAGCTTCCAAGTGTCCATTACT\n+ACATAAATGAAAAGCATTATACTTTCTTTTTAGAAGAGGGGAACAAAATCTTAGACTTCA\n+TAAGGAACAGTTCTCCGGAAAGTTTTCTTTTCTATATTGAAGAAGTAATCATTTATTGAA\n+GTGGTGGAAATTCCCTAAGCTTTAAACAGATGTAGAGAACTTGTCCATAAACATGGTGCT\n+CAACAAACAACACCCAACTCATTCATATATAGTAGCGCCAGCATCCAAGTACCATGAAGT\n+ATATCTCTATCCTAAAAGCTTTACTTGAAGACTTATTAGATTAATCTTACTTATTTCTCA\n+TGCAACTTTTTTTTTGAAAAGTTTCTCAAGCATAACTTTTATCCTTTGTTTTCATTCAGT\n+CTTTGAGCTCTAAAGGATGCCTAGAGAGGTCATGAACCAAGTAAGGAAATTGCAACATCA\n+TATTGCTTCCAATTTACCTCATTTTTTATCTTCAACTACCGAAAACTACCAAATCTGAAA\n+TTATCAACTAAGGAAAATTACAACATCAGTACAATAAGTATTGCTTACAGTTCACTTAAT\n+ATTTCAATCTTCGACTACGGAAAACTGTCAAATCTGAAATTATCAATTTGAATGACACGA\n+TTAGTCTAACTTACATTTTCAAAGATCTAACTTACCCAATGAAAAAAGAAAACAAGAGAG\n+AGACTTACATCGCCACTTCTGTTTGGGAATTCGAGACAAATCAAGTGAGATTTGTTGTAC\n+GAAGGAAATGACTCCTCGGCCGCTTTCTTATATATATTTTCGTCCTTTAAAATAGCTCTA\n+ACATCTGCAAATCCAACCAAATGACGCTCAAAACCAAAAATGTAAAAAATAAACTGCCGA\n+TCGCAAATGAACACCAATGCGGTCACATTTTCAAGCACGAAAAAAGCTTCAAAATACAAA\n+AAACTTTAGCGCAGAAAATAAACGAAAGAGAAGAAGAAGAAGACCTTTGGCGACGTACTG\n+AATTTCGCCGGCTGGGGCATTAAGAAGGAACCATTTGGCAATCTCAAT\n'
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Python/TestFiles/inputCR.gff3
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/Java/Python/TestFiles/inputCR.gff3 Mon Apr 29 03:20:15 2013 -0400
b
@@ -0,0 +1,6 @@
+chr1 test match 6155418 6155441 24 + . Name=test1/1;occurrence=1;rank=1;bestRegion=(self);nbGaps=0;nbOccurrences=1;nbMismatches=0;ID=test1/1;identity=100
+chr2 test match 26303950 26303981 32 + . Name=test2/1;occurrence=1;rank=1;bestRegion=(self);nbGaps=0;nbOccurrences=3;nbMismatches=2;ID=test2/1-1;identity=93
+chr3 test match 28320540 28320574 35 + . Name=test2/1;occurrence=2;bestRegion=chr2:26303950-26303981;nbGaps=0;nbOccurrences=3;nbMismatches=2;ID=test2/1-2;identity=94
+chr4 test match 28565007 28565041 35 + . Name=test2/1;occurrence=3;rank=3;bestRegion=chr2:26303950-26303981;nbGaps=0;nbOccurrences=3;nbMismatches=4;ID=test2/1-3;identity=88
+chr1 test match 6155418 6155441 24 + . Name=test3/1;occurrence=2;rank=2;bestRegion=(self);nbGaps=0;nbOccurrences=1;nbMismatches=1;ID=test3/1;identity=50
+chr1 test match 6155418 6155441 24 - . Name=test3/1;occurrence=2;rank=2;bestRegion=(self);nbGaps=0;nbOccurrences=1;nbMismatches=1;ID=test3/1;identity=50
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Python/TestFiles/inputFileTest1.bed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/Java/Python/TestFiles/inputFileTest1.bed Mon Apr 29 03:20:15 2013 -0400
b
@@ -0,0 +1,5 @@
+track name=reads description="Reads" useScore=0 visibility=full offset=0
+arm_X 1000 2000 test1.1 1000 + 1000 2000 0 1 1000, 0,
+arm_X 1000 2000 test1.2 1000 - 1000 2000 0 1 1000, 0,
+arm_X 100 200 test1.3 1000 + 100 200 0 1 100, 0,
+arm_X 100 3200 test1.4 1000 + 100 3200 0 1 3100, 0,
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Python/TestFiles/inputFileTest2.bed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/Java/Python/TestFiles/inputFileTest2.bed Mon Apr 29 03:20:15 2013 -0400
b
@@ -0,0 +1,2 @@
+track name=reads454Relaxed description="reads454Relaxed" useScore=0 visibility=full offset=0
+arm_X 1000 2000 test2.1 1000 + 1000 2000 0 1 1000, 0,
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Python/TestFiles/inputMSWC1.gff3
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/Java/Python/TestFiles/inputMSWC1.gff3 Mon Apr 29 03:20:15 2013 -0400
b
@@ -0,0 +1,5 @@
+chr1 test match 6155418 6155441 24 + . Name=test1/1;occurrence=1;rank=1;bestRegion=(self);nbGaps=0;nbOccurrences=1;nbMismatches=0;ID=test1/1;identity=100
+chr2 test match 26303950 26303981 32 + . Name=test2/1;occurrence=1;rank=1;bestRegion=(self);nbGaps=0;nbOccurrences=3;nbMismatches=2;ID=test2/1-1;identity=93
+chr3 test match 28320540 28320574 35 + . Name=test2/1;occurrence=2;bestRegion=chr2:26303950-26303981;nbGaps=0;nbOccurrences=3;nbMismatches=2;ID=test2/1-2;identity=94
+chr4 test match 28565007 28565041 35 + . Name=test2/1;occurrence=3;rank=3;bestRegion=chr2:26303950-26303981;nbGaps=0;nbOccurrences=3;nbMismatches=4;ID=test2/1-3;identity=88
+chr6 test match 48565007 48565041 35 + . Name=test2/1;occurrence=3;rank=3;bestRegion=chr2:26303950-26303981;nbGaps=0;nbOccurrences=3;nbMismatches=3;ID=test2/1-4;identity=80
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Python/TestFiles/inputMSWC2.gff3
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/Java/Python/TestFiles/inputMSWC2.gff3 Mon Apr 29 03:20:15 2013 -0400
b
@@ -0,0 +1,5 @@
+chr1 test match 6155418 6155441 24 + . Name=test1/1;occurrence=1;rank=1;bestRegion=(self);nbGaps=0;nbOccurrences=1;nbMismatches=0;ID=test1/1;identity=100
+chr2 test match 26303990 26304021 32 + . Name=test2/1;occurrence=1;rank=1;bestRegion=(self);nbGaps=0;nbOccurrences=3;nbMismatches=2;ID=test2/1-1;identity=93
+chr3 test match 28320540 28320574 35 + . Name=test2/1;occurrence=2;bestRegion=chr2:26303950-26303981;nbGaps=0;nbOccurrences=3;nbMismatches=2;ID=test2/1-2;identity=94
+chr4 test match 28565017 28565051 35 + . Name=test2/1;occurrence=3;rank=3;bestRegion=chr2:26303950-26303981;nbGaps=0;nbOccurrences=3;nbMismatches=4;ID=test2/1-3;identity=88
+chr5 test match 30000000 30000050 50 + . Name=test3/1;occurrence=3;rank=3;bestRegion=chr2:26303950-26303981;nbGaps=0;nbOccurrences=3;nbMismatches=1;ID=test3/1-4;identity=50
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Python/TestFiles/inputMTC.sam
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/Java/Python/TestFiles/inputMTC.sam Mon Apr 29 03:20:15 2013 -0400
b
b'@@ -0,0 +1,2698 @@\n+@SQ\tSN:C10HBa0111D09_LR276\tLN:9300\n+@SQ\tSN:C11HBa0029C01_LR281\tLN:10969\n+@SQ\tSN:C11HBa0034I10_LR282\tLN:9056\n+@SQ\tSN:C11HBa0054I23_LR283\tLN:10301\n+@SQ\tSN:C11HBa0062I24_LR284\tLN:10050\n+@SQ\tSN:C11HBa0064J13_LR285\tLN:9385\n+@SQ\tSN:C11HBa0072I13_LR286\tLN:9556\n+@SQ\tSN:C11HBa0089M02_LR287\tLN:9244\n+@SQ\tSN:C11HBa0096D22_LR288\tLN:9184\n+@SQ\tSN:C11HBa0107K14_LR289\tLN:9115\n+@SQ\tSN:C11HBa0139J14_LR291\tLN:10002\n+@SQ\tSN:C11HBa0143O06_LR374\tLN:10785\n+@SQ\tSN:C11HBa0161D01_LR292\tLN:9057\n+@SQ\tSN:C11HBa0168B23_LR293\tLN:9826\n+@SQ\tSN:C11HBa0190J03_LR294\tLN:10992\n+@SQ\tSN:C11HBa0249E07_LR279\tLN:10008\n+@SQ\tSN:C11HBa0303G16_LR296\tLN:9430\n+@SQ\tSN:C11HBa0323E19_LR297\tLN:9657\n+@SQ\tSN:C11SLe0053P22_LR298\tLN:9827\n+@SQ\tSN:C11SLm0052K14_LR376\tLN:10013\n+@SQ\tSN:C12HBa115G22_LR301\tLN:10021\n+@SQ\tSN:C12HBa120K4_LR313\tLN:10271\n+@SQ\tSN:C12HBa144B17_LR302\tLN:9247\n+@SQ\tSN:C12HBa149G24_LR381\tLN:9271\n+@SQ\tSN:C12HBa165B12_LR303\tLN:9257\n+@SQ\tSN:C12HBa183M6_LR379\tLN:9473\n+@SQ\tSN:C12HBa221M9_LR377\tLN:10755\n+@SQ\tSN:C12HBa224N6_LR382\tLN:9130\n+@SQ\tSN:C12HBa26C13_LR299\tLN:9139\n+@SQ\tSN:C12HBa326K10_LR306\tLN:10414\n+@SQ\tSN:C12HBa90D9_LR311\tLN:9638\n+@SQ\tSN:C12HBa93P12_LR312\tLN:9510\n+@SQ\tSN:C12SLe124D18_LR385\tLN:10545\n+@SQ\tSN:C12SLeRI72J6_LR378\tLN:9337\n+@SQ\tSN:C12SLm103K8_LR380\tLN:10118\n+@SQ\tSN:C01HBa0003D15_LR7\tLN:10776\n+@SQ\tSN:C01HBa0163B20_LR10\tLN:9321\n+@SQ\tSN:C01HBa0216G16_LR11\tLN:10332\n+@SQ\tSN:C01HBa0256E08_LR13\tLN:9024\n+@SQ\tSN:C01HBa0329A12_LR14\tLN:9536\n+@SQ\tSN:BAC19_LR16\tLN:9760\n+@SQ\tSN:C02HBa0008G02_LR67\tLN:9205\n+@SQ\tSN:C02HBa0011O23_LR68\tLN:9399\n+@SQ\tSN:C02HBa0016A12_LR19\tLN:9822\n+@SQ\tSN:C02HBa0027B01_LR21\tLN:9222\n+@SQ\tSN:C02HBa0030A21_LR22\tLN:9147\n+@SQ\tSN:C02HBa0046M08_LR23\tLN:10763\n+@SQ\tSN:C02HBa0072A04_LR26\tLN:9766\n+@SQ\tSN:C02HBa0075D08_LR28\tLN:10744\n+@SQ\tSN:C02HBa0124N09_LR31\tLN:9335\n+@SQ\tSN:C02HBa0155D20_LR36\tLN:10743\n+@SQ\tSN:C02HBa0155E05_LR37\tLN:10417\n+@SQ\tSN:C02HBa0164H08_LR38\tLN:10279\n+@SQ\tSN:C02HBa0167J21_LR39\tLN:9925\n+@SQ\tSN:C02HBa0185P07_LR40\tLN:9818\n+@SQ\tSN:C02HBa0190N21_LR41\tLN:10835\n+@SQ\tSN:C02HBa0190P16_LR331\tLN:10808\n+@SQ\tSN:C02HBa0194L19_LR42\tLN:10280\n+@SQ\tSN:C02HBa0204A09_LR332\tLN:10029\n+@SQ\tSN:C02HBa0204D01_LR334\tLN:9746\n+@SQ\tSN:C02HBa0214B22_LR325\tLN:9581\n+@SQ\tSN:C02HBa0215M12_LR319\tLN:9918\n+@SQ\tSN:C02HBa0228I09_LR329\tLN:10933\n+@SQ\tSN:C02HBa0236E02_LR326\tLN:9822\n+@SQ\tSN:C02HBa0284G15_LR47\tLN:9034\n+@SQ\tSN:C02HBa0291P19_LR48\tLN:9826\n+@SQ\tSN:C02HBa0329G05_LR52\tLN:9637\n+@SQ\tSN:C02SLe0010H16_LR53\tLN:10744\n+@SQ\tSN:C02SLe0018B07_LR335\tLN:9222\n+@SQ\tSN:C02SLe0034H10_LR327\tLN:10833\n+@SQ\tSN:C02SLe0127J16_LR59\tLN:10965\n+@SQ\tSN:C02SLe0132D01_LR60\tLN:10524\n+@SQ\tSN:C02SLm0057H03_LR336\tLN:9514\n+@SQ\tSN:C02SLm0057H03_LR64\tLN:9170\n+@SQ\tSN:C02SLm0057H03_LR65\tLN:9532\n+@SQ\tSN:C03HBa0012D06_LR72\tLN:10645\n+@SQ\tSN:C03HBa0030O03_LR74\tLN:10569\n+@SQ\tSN:C03HBa0034B23_LR76\tLN:10005\n+@SQ\tSN:C03HBa0040F22_LR77\tLN:10227\n+@SQ\tSN:C03HBa0054O21_LR78\tLN:9044\n+@SQ\tSN:C03HBa0076J13_LR79\tLN:10097\n+@SQ\tSN:C03HBa0233O20_LR82\tLN:9753\n+@SQ\tSN:C03HBa0295I12_LR83\tLN:10258\n+@SQ\tSN:C03HBa0318C22_LR84\tLN:10004\n+@SQ\tSN:C03HBa0323D22_LR85\tLN:9222\n+@SQ\tSN:C04HBa127N12_LR346\tLN:10533\n+@SQ\tSN:C04HBa132O11_LR104\tLN:10306\n+@SQ\tSN:C04HBa164O3_LR344\tLN:9345\n+@SQ\tSN:C04HBa190C13_LR106\tLN:10719\n+@SQ\tSN:C04HBa198I15_LR107\tLN:10673\n+@SQ\tSN:C04HBa219H8_LR109\tLN:10174\n+@SQ\tSN:C04HBa239P14_LR111\tLN:10483\n+@SQ\tSN:C04HBa255I2_LR112\tLN:10650\n+@SQ\tSN:C04HBa27G19_LR337\tLN:9788\n+@SQ\tSN:C04HBa2G1_LR120\tLN:9322\n+@SQ\tSN:C04HBa331L22_LR115\tLN:10697\n+@SQ\tSN:C04HBa35C16_LR339\tLN:9494\n+@SQ\tSN:C04HBa36C23_LR91\tLN:10103\n+@SQ\tSN:C04HBa50I18_LR341\tLN:10825\n+@SQ\tSN:C04HBa58E11_LR93\tLN:9927\n+@SQ\tSN:C04HBa66O12_LR94\tLN:9355\n+@SQ\tSN:C04HBa68N5_LR343\tLN:9886\n+@SQ\tSN:C04HBa6E18_LR87\tLN:9265\n+@SQ\tSN:C04HBa6O16_LR123\tLN:10386\n+@SQ\tSN:C04HBa78E4_LR98\tLN:9994\n+@SQ\tSN:C04HBa78J4_LR99\tLN:9165\n+@SQ\tSN:C04HBa80D3_LR100\tLN:9781\n+@SQ\tSN:C04HBa8K13_LR338\tLN:9345\n+@SQ\tSN:C04HBa96I8_LR101\tLN:9693\n+@SQ\tSN:C04SLm14G22_LR116\tLN:10306\n+@SQ\tSN:C04SLm39E17_LR117\tLN:9105\n+@SQ\tSN:C05HBa0003C20_LR126\tLN:9460\n+@SQ\tSN:C05HBa0006N20_LR128\tLN:101'..b'018B07_LR335,+8208,36M,0;\n+HWI-EAS337_3:7:1:425:1939\t83\tC09SLm0143I09_LR365\t1546\t0\t36M\t=\t1490\t-92\tAAGTTTAGCCACATAGACCCAGACACCACAATTAGC\tUUUUUUWVVVWVVWWWVVVVWWWVWWWWVWWVWWWW\tXT:A:R\tNM:i:0\tSM:i:0\tAM:i:0\tX0:i:2\tX1:i:0\tXM:i:0\tXO:i:0\tXG:i:0\tMD:Z:36\tXA:Z:C09SLe0076N09_LR363,-1546,36M,0;\n+HWI-EAS337_3:7:1:425:1939\t163\tC09SLm0143I09_LR365\t1490\t0\t36M\t=\t1546\t92\tTAACTTTTCTATCTGGTTTCTATGTTTTCCAGCTCT\tWVWWWWWWWWWWWWVVVWWWWWWUVWVWVVTQTTTS\tXT:A:R\tNM:i:0\tSM:i:0\tAM:i:0\tX0:i:2\tX1:i:0\tXM:i:0\tXO:i:0\tXG:i:0\tMD:Z:36\tXA:Z:C09SLm0143I09_LR365,+1490,36M,0;\n+HWI-EAS337_3:7:1:187:1132\t83\tC02SLe0018B07_LR335\t9178\t0\t36M\t=\t9065\t-149\tGAAGAGGATATGAGCCAAGCCCCTTGCCTCTCCCAC\tUUUUUUVVWWWVWVTWWWWWWWWWWWWWWWWWWWVW\tXT:A:R\tNM:i:1\tSM:i:0\tAM:i:0\tX0:i:2\tX1:i:0\tXM:i:1\tXO:i:0\tXG:i:0\tMD:Z:14A21\tXA:Z:C02SLe0018B07_LR335,-9178,36M,1;\n+HWI-EAS337_3:7:1:187:1132\t163\tC02SLe0018B07_LR335\t9065\t0\t36M\t=\t9178\t149\tGAATAAAAAAAGACAACAACATATCAAGATACAAAG\tWWWVWVWWWWWVWWVWWWVWWVWWWVWWVWTTTTTR\tXT:A:R\tNM:i:0\tSM:i:0\tAM:i:0\tX0:i:2\tX1:i:0\tXM:i:0\tXO:i:0\tXG:i:0\tMD:Z:36\tXA:Z:C02SLe0018B07_LR335,+9065,36M,0;\n+HWI-EAS337_3:7:1:1739:1840\t99\tC02HBa0072A04_LR26\t2868\t60\t36M\t=\t3189\t357\tGGAGGGGTGAAATCGTTTCTGAAAAATAATGAAATG\tWWVWWWWWWWWWWWWWWVTWWWVVVWWWWWUUUUUU\tXT:A:U\tNM:i:0\tSM:i:37\tAM:i:37\tX0:i:1\tX1:i:0\tXM:i:0\tXO:i:0\tXG:i:0\tMD:Z:36\n+HWI-EAS337_3:7:1:1739:1840\t147\tC02HBa0072A04_LR26\t3189\t60\t36M\t=\t2868\t-357\tCTTTTGACCCAAAAGTTTGACGGGAAGGACAGTTTT\tRTTTTTVVVVWWCVWVVWWWVWWWWWWWWWWWWVWW\tXT:A:U\tNM:i:1\tSM:i:37\tAM:i:37\tX0:i:1\tX1:i:0\tXM:i:1\tXO:i:0\tXG:i:0\tMD:Z:12T23\n+HWI-EAS337_3:7:1:1505:1876\t99\tC07SLe0111B06_LR194\t8673\t60\t36M\t=\t8677\t40\tGAAAGATCAAGTGTTGTCAAGTTCACTAGTTTAGAG\tWWWWWWWWWWWWWWWWWWWWVWWVWWWVVVUUUSUR\tXT:A:U\tNM:i:0\tSM:i:37\tAM:i:37\tX0:i:1\tX1:i:0\tXM:i:0\tXO:i:0\tXG:i:0\tMD:Z:36\n+HWI-EAS337_3:7:1:1505:1876\t147\tC07SLe0111B06_LR194\t8677\t60\t36M\t=\t8673\t-40\tGATCAAGTGTTGTCAAGTTCACTAGTTTAGAGAATG\tSTTTTTVVVWVVWVWWWWWVWWWWWWWWWWWWWWWW\tXT:A:U\tNM:i:0\tSM:i:37\tAM:i:37\tX0:i:1\tX1:i:0\tXM:i:0\tXO:i:0\tXG:i:0\tMD:Z:36\n+HWI-EAS337_3:7:1:447:192\t99\tC09SLm0143I09_LR365\t6957\t0\t36M\t=\t7039\t118\tGACTATGCCTAGCAGCTGAAATCACCACAACAAGTT\tWWWWWWWWWWWWWWWTWWWVVWWVWWWWWVUUUUUU\tXT:A:R\tNM:i:0\tSM:i:0\tAM:i:0\tX0:i:2\tX1:i:0\tXM:i:0\tXO:i:0\tXG:i:0\tMD:Z:36\tXA:Z:C09SLm0143I09_LR365,+6957,36M,0;\n+HWI-EAS337_3:7:1:447:192\t147\tC09SLm0143I09_LR365\t7039\t0\t36M\t=\t6957\t-118\tAACTGAACAGATGCCTTTTGGATATGTTTCACTCAC\tSTTTTTWVVWVWWVVVVVWWWVVWVWWWWWVWWWVW\tXT:A:R\tNM:i:0\tSM:i:0\tAM:i:0\tX0:i:2\tX1:i:0\tXM:i:0\tXO:i:0\tXG:i:0\tMD:Z:36\tXA:Z:C09SLe0076N09_LR363,-7039,36M,0;\n+HWI-EAS337_3:7:1:21:2019\t83\tC09SLm0037I08_LR367\t1298\t60\t36M\t=\t955\t-379\tGGGCTGGAAGACAGGTTATCATCTTTTACCTCATAC\tUUURUUWWWVVQWWWWWWWWWWWWWWWVVWWVVWWV\tXT:A:U\tNM:i:0\tSM:i:37\tAM:i:37\tX0:i:1\tX1:i:0\tXM:i:0\tXO:i:0\tXG:i:0\tMD:Z:36\n+HWI-EAS337_3:7:1:21:2019\t163\tC09SLm0037I08_LR367\t955\t60\t36M\t=\t1298\t379\tATTATGTTTACGGGACAATTGTATGTTCCATTATCT\tVWVWWWWWWWWWWWWWWWWWVWVWUWVVWWTTTTTR\tXT:A:U\tNM:i:0\tSM:i:37\tAM:i:37\tX0:i:1\tX1:i:0\tXM:i:0\tXO:i:0\tXG:i:0\tMD:Z:36\n+HWI-EAS337_3:7:1:1593:652\t99\tC04HBa8K13_LR338\t2175\t60\t36M\t=\t2226\t87\tGTGATGAGTAAAACATCATCATATGAACTTGAAGAG\tWWWVWVWWVWVWWVWWWWWWVVWWVWWVWWUUUSUU\tXT:A:U\tNM:i:1\tSM:i:37\tAM:i:37\tX0:i:1\tX1:i:0\tXM:i:1\tXO:i:0\tXG:i:0\tMD:Z:28A7\n+HWI-EAS337_3:7:1:1593:652\t147\tC04HBa8K13_LR338\t2226\t60\t36M\t=\t2175\t-87\tTATGCTTAAAACAAGAGGAATTATACAGCTAAATAA\tSTTTKTWWWWWVWWWWVWVVVWVWWWWWWWVWVVWW\tXT:A:U\tNM:i:0\tSM:i:37\tAM:i:37\tX0:i:1\tX1:i:0\tXM:i:0\tXO:i:0\tXG:i:0\tMD:Z:36\n+HWI-EAS337_3:7:1:1254:1660\t99\tC12HBa326K10_LR306\t8100\t60\t36M\t=\t8243\t179\tGAAGTTTGTAATTCCTTTTAGGATTGTGGTTAACAT\tWWWVVWWWWWWWWWWWVWVWVUWWWTWVQWUUUUMU\tXT:A:U\tNM:i:0\tSM:i:37\tAM:i:37\tX0:i:1\tX1:i:0\tXM:i:0\tXO:i:0\tXG:i:0\tMD:Z:36\n+HWI-EAS337_3:7:1:1254:1660\t147\tC12HBa326K10_LR306\t8243\t60\t36M\t=\t8100\t-179\tTGTACATTTTTCCTACCCATATGTGATGCCATTACT\tSTTTTTWVVVVWWVVWWVWWWVWVVWVWVWVWWWVW\tXT:A:U\tNM:i:0\tSM:i:37\tAM:i:37\tX0:i:1\tX1:i:0\tXM:i:0\tXO:i:0\tXG:i:0\tMD:Z:36\n+HWI-EAS337_3:7:1:291:629\t77\t*\t0\t0\t*\t*\t0\t0\tGTAGAGGAGGTAGGCTTGGTGGTCCCTCTATGGTAA\tWWWWWWWWWWVVVWVWVVWTWWKOVVTRVSUSSMFR\n+HWI-EAS337_3:7:1:291:629\t141\t*\t0\t0\t*\t*\t0\t0\tATGAAGGGTTTTTTTGTTCTCTAATGTCATCTTATT\tWWWWVVWWWWWWWWWVWWVWVWVVVQWVVWTTTTTS\n'
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Python/TestFiles/inputMapping.map
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/Java/Python/TestFiles/inputMapping.map Mon Apr 29 03:20:15 2013 -0400
b
@@ -0,0 +1,21 @@
+BlastclustCluster1Mb1 dmel 44957 60589
+BlastclustCluster2Mb1 dmel 441296 453986
+BlastclustCluster3Mb1 dmel 1263264 1272001
+BlastclustCluster4Mb1 dmel 691910 700435
+BlastclustCluster5Mb1 dmel 4887 13246
+BlastclustCluster6Mb1 dmel 340294 348412
+BlastclustCluster7Mb1 dmel 802363 809343
+BlastclustCluster8Mb1 dmel 303029 309770
+BlastclustCluster9Mb1 dmel 34275 40713
+BlastclustCluster10Mb1 dmel 976199 981423
+BlastclustCluster11Mb1 dmel 231806 236301
+BlastclustCluster12Mb1 dmel 323712 327988
+BlastclustCluster13Mb1 dmel 1011279 1014955
+BlastclustCluster14Mb1 dmel 474293 477597
+BlastclustCluster15Mb1 dmel 930649 933730
+BlastclustCluster16Mb1 dmel 1241523 1244351
+BlastclustCluster17Mb1 dmel 532049 534729
+BlastclustCluster18Mb1 dmel 335473 337381
+BlastclustCluster19Mb1 dmel 686181 687792
+BlastclustCluster20Mb1 dmel 1239136 1240579
+BlastclustCluster21Mb1 dmel 1261233 1262370
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Python/TestFiles/mapperAnalyzerExpected.gff3
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/Java/Python/TestFiles/mapperAnalyzerExpected.gff3 Mon Apr 29 03:20:15 2013 -0400
b
@@ -0,0 +1,4 @@
+chr1 test match 6155418 6155441 24 + . Name=test1/1;occurrence=1;rank=1;bestRegion=(self);nbGaps=0;nbOccurrences=1;nbMismatches=0;ID=test1/1;identity=100
+chr2 test match 26303950 26303981 32 + . Name=test2/1;occurrence=1;rank=1;bestRegion=(self);nbGaps=0;nbOccurrences=3;nbMismatches=2;ID=test2/1-1;identity=93
+chr3 test match 28320540 28320574 35 + . Name=test2/1;occurrence=2;bestRegion=chr2:26303950-26303981;nbGaps=0;nbOccurrences=3;nbMismatches=2;ID=test2/1-2;identity=94
+chr4 test match 28565007 28565041 35 + . Name=test2/1;occurrence=3;rank=3;bestRegion=chr2:26303950-26303981;nbGaps=0;nbOccurrences=3;nbMismatches=4;ID=test2/1-3;identity=88
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Python/TestFiles/mapperAnalyzerMappings.axt
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/Java/Python/TestFiles/mapperAnalyzerMappings.axt Mon Apr 29 03:20:15 2013 -0400
b
@@ -0,0 +1,12 @@
+1 chr1 6155418 6155441 test1/1 1 24 + 66
+GTAACAGATTCAGAACATTAGCAG
+GTAACAGATTCAGAACATTAGCAG
+2 chr2 26303950 26303981 test2/1 3 36 + 0
+AT-ATT-AAAAAAAAAAAAAAAAAAAAAAAAAAA
+ATGATTGAAAAAAAAAAAAAAAAAAAAAAAAAAA
+3 chr3 28320540 28320574 test2/1 3 36 + 0
+ATGTTTGACAAAAAAAAAAAAAAAAAAAAAAAAAA
+ATGATTGA-AAAAAAAAAAAAAAAAAAAAAAAAAA
+4 chr4 28565007 28565041 test2/1 1 36 + 0
+ATAAGATT-AAAAAAAAAAAAAAAAAAAAGGAAAAA
+ATATGATTGAAAAAAAAAAAAAAAAAAAAAAAAAAA
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Python/TestFiles/mapperAnalyzerOutput.gff3
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/Java/Python/TestFiles/mapperAnalyzerOutput.gff3 Mon Apr 29 03:20:15 2013 -0400
b
@@ -0,0 +1,4 @@
+chr1 test match 6155418 6155441 24 + . Name=test1/1;occurrence=1;rank=1;bestRegion=(self);nbGaps=0;nbOccurrences=1;nbMismatches=0;ID=test1/1;identity=100
+chr2 test match 26303950 26303981 32 + . Name=test2/1;occurrence=1;rank=1;bestRegion=(self);nbGaps=0;nbOccurrences=3;nbMismatches=2;ID=test2/1-1;identity=93
+chr3 test match 28320540 28320574 35 + . Name=test2/1;occurrence=2;bestRegion=chr2:26303950-26303981;nbGaps=0;nbOccurrences=3;nbMismatches=2;ID=test2/1-2;identity=94
+chr4 test match 28565007 28565041 35 + . Name=test2/1;occurrence=3;rank=3;bestRegion=chr2:26303950-26303981;nbGaps=0;nbOccurrences=3;nbMismatches=4;ID=test2/1-3;identity=88
\ No newline at end of file
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Python/TestFiles/mapperAnalyzerSequences.mfq
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/Java/Python/TestFiles/mapperAnalyzerSequences.mfq Mon Apr 29 03:20:15 2013 -0400
b
@@ -0,0 +1,12 @@
+@test1/1
+GTAACAGATTCAGAACATTAGCAG
++test1/1
+bb`b_bbbbb_bbbbababbbbb^
+@test2/1
+ATATGATTGAAAAAAAAAAAAAAAAAAAAAAAAAAA
++test2/1
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+@test3/1
+TTTGAATAAAACGGGAGGATATA
++test3/1
+X^_Y`_____\R^BBBBBBBBBB
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Python/TestFiles/sorted_file_oneline.gff3
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/Java/Python/TestFiles/sorted_file_oneline.gff3 Mon Apr 29 03:20:15 2013 -0400
b
@@ -0,0 +1,1 @@
+chr1 test test2.1 0 1000 1001 + . ID=test2.1;Name=test2.1
\ No newline at end of file
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Python/TestFiles/sorted_query.gff3
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/Java/Python/TestFiles/sorted_query.gff3 Mon Apr 29 03:20:15 2013 -0400
b
@@ -0,0 +1,6 @@
+chr1 query test1.1 25 150 126 + . ID=query_1;Name=test1.1
+chr1 query test1.2 70 850 781 + . ID=query_2;Name=test1.2
+chr1 query test1.3 550 850 201 + . ID=query_3;Name=test1.3
+chr1 query test1.4 925 1025 101 + . ID=query_4;Name=test1.4
+chr1 query test1.5 1201 1210 10 + . ID=query_5;Name=test1.5
+chr1 query test1.6 1500 1600 101 + . ID=query_6;Name=test1.6
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Python/TestFiles/sorted_query_wig.wig
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/Java/Python/TestFiles/sorted_query_wig.wig Mon Apr 29 03:20:15 2013 -0400
b
@@ -0,0 +1,1040 @@
+track type=wiggle_0 name="SMART"
+variableStep chrom=chr1
+25 1
+26 1
+27 1
+28 1
+29 1
+30 1
+31 1
+32 1
+33 1
+34 1
+35 1
+36 1
+37 1
+38 1
+39 1
+40 1
+41 1
+42 1
+43 1
+44 1
+45 1
+46 1
+47 1
+48 1
+49 1
+50 1
+51 1
+52 1
+53 1
+54 1
+55 1
+56 1
+57 1
+58 1
+59 1
+60 1
+61 1
+62 1
+63 1
+64 1
+65 1
+66 1
+67 1
+68 1
+69 1
+70 2
+71 2
+72 2
+73 2
+74 2
+75 2
+76 2
+77 2
+78 2
+79 2
+80 2
+81 2
+82 2
+83 2
+84 2
+85 2
+86 2
+87 2
+88 2
+89 2
+90 2
+91 2
+92 2
+93 2
+94 2
+95 2
+96 2
+97 2
+98 2
+99 2
+100 2
+101 2
+102 2
+103 2
+104 2
+105 2
+106 2
+107 2
+108 2
+109 2
+110 2
+111 2
+112 2
+113 2
+114 2
+115 2
+116 2
+117 2
+118 2
+119 2
+120 2
+121 2
+122 2
+123 2
+124 2
+125 2
+126 2
+127 2
+128 2
+129 2
+130 2
+131 2
+132 2
+133 2
+134 2
+135 2
+136 2
+137 2
+138 2
+139 2
+140 2
+141 2
+142 2
+143 2
+144 2
+145 2
+146 2
+147 2
+148 2
+149 2
+150 2
+151 1
+152 1
+153 1
+154 1
+155 1
+156 1
+157 1
+158 1
+159 1
+160 1
+161 1
+162 1
+163 1
+164 1
+165 1
+166 1
+167 1
+168 1
+169 1
+170 1
+171 1
+172 1
+173 1
+174 1
+175 1
+176 1
+177 1
+178 1
+179 1
+180 1
+181 1
+182 1
+183 1
+184 1
+185 1
+186 1
+187 1
+188 1
+189 1
+190 1
+191 1
+192 1
+193 1
+194 1
+195 1
+196 1
+197 1
+198 1
+199 1
+200 1
+201 1
+202 1
+203 1
+204 1
+205 1
+206 1
+207 1
+208 1
+209 1
+210 1
+211 1
+212 1
+213 1
+214 1
+215 1
+216 1
+217 1
+218 1
+219 1
+220 1
+221 1
+222 1
+223 1
+224 1
+225 1
+226 1
+227 1
+228 1
+229 1
+230 1
+231 1
+232 1
+233 1
+234 1
+235 1
+236 1
+237 1
+238 1
+239 1
+240 1
+241 1
+242 1
+243 1
+244 1
+245 1
+246 1
+247 1
+248 1
+249 1
+250 1
+251 1
+252 1
+253 1
+254 1
+255 1
+256 1
+257 1
+258 1
+259 1
+260 1
+261 1
+262 1
+263 1
+264 1
+265 1
+266 1
+267 1
+268 1
+269 1
+270 1
+271 1
+272 1
+273 1
+274 1
+275 1
+276 1
+277 1
+278 1
+279 1
+280 1
+281 1
+282 1
+283 1
+284 1
+285 1
+286 1
+287 1
+288 1
+289 1
+290 1
+291 1
+292 1
+293 1
+294 1
+295 1
+296 1
+297 1
+298 1
+299 1
+300 1
+301 1
+302 1
+303 1
+304 1
+305 1
+306 1
+307 1
+308 1
+309 1
+310 1
+311 1
+312 1
+313 1
+314 1
+315 1
+316 1
+317 1
+318 1
+319 1
+320 1
+321 1
+322 1
+323 1
+324 1
+325 1
+326 1
+327 1
+328 1
+329 1
+330 1
+331 1
+332 1
+333 1
+334 1
+335 1
+336 1
+337 1
+338 1
+339 1
+340 1
+341 1
+342 1
+343 1
+344 1
+345 1
+346 1
+347 1
+348 1
+349 1
+350 1
+351 1
+352 1
+353 1
+354 1
+355 1
+356 1
+357 1
+358 1
+359 1
+360 1
+361 1
+362 1
+363 1
+364 1
+365 1
+366 1
+367 1
+368 1
+369 1
+370 1
+371 1
+372 1
+373 1
+374 1
+375 1
+376 1
+377 1
+378 1
+379 1
+380 1
+381 1
+382 1
+383 1
+384 1
+385 1
+386 1
+387 1
+388 1
+389 1
+390 1
+391 1
+392 1
+393 1
+394 1
+395 1
+396 1
+397 1
+398 1
+399 1
+400 1
+401 1
+402 1
+403 1
+404 1
+405 1
+406 1
+407 1
+408 1
+409 1
+410 1
+411 1
+412 1
+413 1
+414 1
+415 1
+416 1
+417 1
+418 1
+419 1
+420 1
+421 1
+422 1
+423 1
+424 1
+425 1
+426 1
+427 1
+428 1
+429 1
+430 1
+431 1
+432 1
+433 1
+434 1
+435 1
+436 1
+437 1
+438 1
+439 1
+440 1
+441 1
+442 1
+443 1
+444 1
+445 1
+446 1
+447 1
+448 1
+449 1
+450 1
+451 1
+452 1
+453 1
+454 1
+455 1
+456 1
+457 1
+458 1
+459 1
+460 1
+461 1
+462 1
+463 1
+464 1
+465 1
+466 1
+467 1
+468 1
+469 1
+470 1
+471 1
+472 1
+473 1
+474 1
+475 1
+476 1
+477 1
+478 1
+479 1
+480 1
+481 1
+482 1
+483 1
+484 1
+485 1
+486 1
+487 1
+488 1
+489 1
+490 1
+491 1
+492 1
+493 1
+494 1
+495 1
+496 1
+497 1
+498 1
+499 1
+500 1
+501 1
+502 1
+503 1
+504 1
+505 1
+506 1
+507 1
+508 1
+509 1
+510 1
+511 1
+512 1
+513 1
+514 1
+515 1
+516 1
+517 1
+518 1
+519 1
+520 1
+521 1
+522 1
+523 1
+524 1
+525 1
+526 1
+527 1
+528 1
+529 1
+530 1
+531 1
+532 1
+533 1
+534 1
+535 1
+536 1
+537 1
+538 1
+539 1
+540 1
+541 1
+542 1
+543 1
+544 1
+545 1
+546 1
+547 1
+548 1
+549 1
+550 2
+551 2
+552 2
+553 2
+554 2
+555 2
+556 2
+557 2
+558 2
+559 2
+560 2
+561 2
+562 2
+563 2
+564 2
+565 2
+566 2
+567 2
+568 2
+569 2
+570 2
+571 2
+572 2
+573 2
+574 2
+575 2
+576 2
+577 2
+578 2
+579 2
+580 2
+581 2
+582 2
+583 2
+584 2
+585 2
+586 2
+587 2
+588 2
+589 2
+590 2
+591 2
+592 2
+593 2
+594 2
+595 2
+596 2
+597 2
+598 2
+599 2
+600 2
+601 2
+602 2
+603 2
+604 2
+605 2
+606 2
+607 2
+608 2
+609 2
+610 2
+611 2
+612 2
+613 2
+614 2
+615 2
+616 2
+617 2
+618 2
+619 2
+620 2
+621 2
+622 2
+623 2
+624 2
+625 2
+626 2
+627 2
+628 2
+629 2
+630 2
+631 2
+632 2
+633 2
+634 2
+635 2
+636 2
+637 2
+638 2
+639 2
+640 2
+641 2
+642 2
+643 2
+644 2
+645 2
+646 2
+647 2
+648 2
+649 2
+650 2
+651 2
+652 2
+653 2
+654 2
+655 2
+656 2
+657 2
+658 2
+659 2
+660 2
+661 2
+662 2
+663 2
+664 2
+665 2
+666 2
+667 2
+668 2
+669 2
+670 2
+671 2
+672 2
+673 2
+674 2
+675 2
+676 2
+677 2
+678 2
+679 2
+680 2
+681 2
+682 2
+683 2
+684 2
+685 2
+686 2
+687 2
+688 2
+689 2
+690 2
+691 2
+692 2
+693 2
+694 2
+695 2
+696 2
+697 2
+698 2
+699 2
+700 2
+701 2
+702 2
+703 2
+704 2
+705 2
+706 2
+707 2
+708 2
+709 2
+710 2
+711 2
+712 2
+713 2
+714 2
+715 2
+716 2
+717 2
+718 2
+719 2
+720 2
+721 2
+722 2
+723 2
+724 2
+725 2
+726 2
+727 2
+728 2
+729 2
+730 2
+731 2
+732 2
+733 2
+734 2
+735 2
+736 2
+737 2
+738 2
+739 2
+740 2
+741 2
+742 2
+743 2
+744 2
+745 2
+746 2
+747 2
+748 2
+749 2
+750 2
+751 2
+752 2
+753 2
+754 2
+755 2
+756 2
+757 2
+758 2
+759 2
+760 2
+761 2
+762 2
+763 2
+764 2
+765 2
+766 2
+767 2
+768 2
+769 2
+770 2
+771 2
+772 2
+773 2
+774 2
+775 2
+776 2
+777 2
+778 2
+779 2
+780 2
+781 2
+782 2
+783 2
+784 2
+785 2
+786 2
+787 2
+788 2
+789 2
+790 2
+791 2
+792 2
+793 2
+794 2
+795 2
+796 2
+797 2
+798 2
+799 2
+800 2
+801 2
+802 2
+803 2
+804 2
+805 2
+806 2
+807 2
+808 2
+809 2
+810 2
+811 2
+812 2
+813 2
+814 2
+815 2
+816 2
+817 2
+818 2
+819 2
+820 2
+821 2
+822 2
+823 2
+824 2
+825 2
+826 2
+827 2
+828 2
+829 2
+830 2
+831 2
+832 2
+833 2
+834 2
+835 2
+836 2
+837 2
+838 2
+839 2
+840 2
+841 2
+842 2
+843 2
+844 2
+845 2
+846 2
+847 2
+848 2
+849 2
+850 2
+925 1
+926 1
+927 1
+928 1
+929 1
+930 1
+931 1
+932 1
+933 1
+934 1
+935 1
+936 1
+937 1
+938 1
+939 1
+940 1
+941 1
+942 1
+943 1
+944 1
+945 1
+946 1
+947 1
+948 1
+949 1
+950 1
+951 1
+952 1
+953 1
+954 1
+955 1
+956 1
+957 1
+958 1
+959 1
+960 1
+961 1
+962 1
+963 1
+964 1
+965 1
+966 1
+967 1
+968 1
+969 1
+970 1
+971 1
+972 1
+973 1
+974 1
+975 1
+976 1
+977 1
+978 1
+979 1
+980 1
+981 1
+982 1
+983 1
+984 1
+985 1
+986 1
+987 1
+988 1
+989 1
+990 1
+991 1
+992 1
+993 1
+994 1
+995 1
+996 1
+997 1
+998 1
+999 1
+1000 1
+1001 1
+1002 1
+1003 1
+1004 1
+1005 1
+1006 1
+1007 1
+1008 1
+1009 1
+1010 1
+1011 1
+1012 1
+1013 1
+1014 1
+1015 1
+1016 1
+1017 1
+1018 1
+1019 1
+1020 1
+1021 1
+1022 1
+1023 1
+1024 1
+1025 1
+1201 1
+1202 1
+1203 1
+1204 1
+1205 1
+1206 1
+1207 1
+1208 1
+1209 1
+1210 1
+1500 1
+1501 1
+1502 1
+1503 1
+1504 1
+1505 1
+1506 1
+1507 1
+1508 1
+1509 1
+1510 1
+1511 1
+1512 1
+1513 1
+1514 1
+1515 1
+1516 1
+1517 1
+1518 1
+1519 1
+1520 1
+1521 1
+1522 1
+1523 1
+1524 1
+1525 1
+1526 1
+1527 1
+1528 1
+1529 1
+1530 1
+1531 1
+1532 1
+1533 1
+1534 1
+1535 1
+1536 1
+1537 1
+1538 1
+1539 1
+1540 1
+1541 1
+1542 1
+1543 1
+1544 1
+1545 1
+1546 1
+1547 1
+1548 1
+1549 1
+1550 1
+1551 1
+1552 1
+1553 1
+1554 1
+1555 1
+1556 1
+1557 1
+1558 1
+1559 1
+1560 1
+1561 1
+1562 1
+1563 1
+1564 1
+1565 1
+1566 1
+1567 1
+1568 1
+1569 1
+1570 1
+1571 1
+1572 1
+1573 1
+1574 1
+1575 1
+1576 1
+1577 1
+1578 1
+1579 1
+1580 1
+1581 1
+1582 1
+1583 1
+1584 1
+1585 1
+1586 1
+1587 1
+1588 1
+1589 1
+1590 1
+1591 1
+1592 1
+1593 1
+1594 1
+1595 1
+1596 1
+1597 1
+1598 1
+1599 1
+1600 1
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Python/TestFiles/sorted_ref.gff3
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/Java/Python/TestFiles/sorted_ref.gff3 Mon Apr 29 03:20:15 2013 -0400
b
@@ -0,0 +1,7 @@
+chr1 test test2.1 9 1000 1001 + . ID=test2.1;Name=test2.1
+chr1 test test2.2 50 350 301 + . ID=test2.2;Name=test2.2
+chr1 test test2.3 100 600 501 + . ID=test2.3;Name=test2.3
+chr1 test test2.4 200 450 251 + . ID=test2.4;Name=test2.4
+chr1 test test2.5 700 950 251 + . ID=test2.5;Name=test2.5
+chr1 test test2.6 800 900 101 + . ID=test2.6;Name=test2.6
+chr1 test test2.7 1200 1300 101 + . ID=test2.7;Name=test2.7
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Python/TestFiles/testBedParser1.bed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/Java/Python/TestFiles/testBedParser1.bed Mon Apr 29 03:20:15 2013 -0400
b
@@ -0,0 +1,2 @@
+track name=reads description="Reads" useScore=0 visibility=full offset=0
+arm_X 1000 3000 test1.1 1000 + 1000 3000 0 2 100,1000, 0,1000,
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Python/TestFiles/testC2S.fa
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/Java/Python/TestFiles/testC2S.fa Mon Apr 29 03:20:15 2013 -0400
b
@@ -0,0 +1,100 @@
+>chr1
+CAACATTAGCGCCATGCCCACTGTGGGGAATTTACCAGCAGCCCGCACAC
+TTAGCCGGCCTGCTGCAAAGCGGGATTTATTTAATTCATCCTCCAAGAGC
+CCAAACGAGCATCCTATGAGTTTCTCGGAAGTGGTAGCTGGAGCAGGTCC
+AGTTTCTATGGCACCCCCTAATCCGGCACCACTGACGAAAACCCCAGGAA
+AGCGGACAAACGACGATCTGGATTGCTCAAATTTTAAGACGCCCAATAAA
+AAATTATGCGCGACATCCAATTTTGTAACTCCCTGCATTTTTCCCCCGCT
+CATCACACCAGTTTTCAAAAGCAAGGCAGCTCAATCTGTTTATGAGGAAT
+CAAAAGCCAGAAACGGACCCACCCGCCAGCCGTTACCCTGTAGCATCAAT
+GTCTCTGCTTGCAGCGCAGCGGCGCCACCCGTTATCGCCCCCCTACCCCC
+TCAAAATACAGATGCACAGCTGCCTCCATGGAAAATCGTGCCCCAGAGCC
+GTAGAGCACCCCCTATACTCGTCAATGATGTGAAGGAAATTGTCCCTCTC
+CTGGAAAAGCTAAATTATACAGCAGGAGTATCCAGCTACACCACCAGAGC
+AATAGAAGGAAACGGGGTCAGGATCCAGGCCAAGGATATGACCGCCTACA
+ACAAAATTAAAGAAGTCCTGGTGGCCAACGGATTTCCTTTATTCACCAAC
+CAGCCCAAGTCTGAGAGAGGCTTCCGAGTCATCATCAGACACCTCCATCA
+TTCCACACCATGCTCGTGGATAGTCGAGGAGCTGCTGAAGCTCGGTCTCC
+AAGCGCGCTTCGTCAGAAACATGACGAATCCAGCTACAGGTGGCCCCATG
+CGAATGTTTGAAGTGGAGATCGTCATGGCCAAAGATGGCAGCCACGATAA
+AATTCTCTCACTCAAACAAATCGGTGGGCAAAAGGTGGATATTGAAAGGA
+AAAATAGGACACAGGAGCCGGTTCAGTGCTACAGATGCCAGGGCTTCAGA
+CATGCCAAAAATTCATGCATGAGGACGCCTAAATGCATGAAATGCGCTGG
+CGATCACCTGTCATCCTGCTGCACCAAGCCAAAATCCACCCCCGCCACCT
+GCATCAACTGCTCTGGGGAACATATCAGCGCTTATAAAGGATGCCCCGCC
+TACAAGGCCGAAAAACGAAAGCTGGCGGCTAACATTATTGACACAAACAA
+AATAAGGACAATCAAAGACGCAACTAATCACTTTTATAAACGACAAGGCC
+CCCCTCCACGTAATAATACCCCTCGACTACCGCACAGCTCAGCAATCCTG
+ACCAAGTCAATCGCTGAAGCTCGCCAGGAAGCCGCCAAAAAGTCGATGCT
+AAATCCTTATTGGCAAAGCTCGAACGACAGAAGGCCACGTTTCTCCTCCC
+ATGACACTGCCATTCAAAAACGGCTAAACAAATGGCGCCGAAACTCTAAT
+AAGATACCCAAAAAGGGTAGGATATCCTCAAAGGACAATGCAAAGCCAAG
+ACCGGCATCCAAGACAAGCAACCCAGCGCAAAGACATCTGGAAAAATACC
+AGGACATGCTCCGAAACGAAAGGAGTGAAGAAATTGACCATGAACCTGAA
+AAAGGTACTCCTAATCCCAGCCGAGTCGGCAACGACAGCCCTCCGACCAC
+CAGCAGAGCCGCCAGAGCTAACTTTAAGCCAAGAATTATCGATGAAGCTA
+CGCCATCGCCAAGAAACTCCAATCCTTACCTACAGAAGAGCTTCTCGGAC
+GACCCCACCATTAATCTAGCTAATAGAGTCGATAATTTAGAAAAGAAAAT
+TGACATTTTAATGGCTTTAATCATACAAGGAACCAATAACAATAATCTTG
+ACATTGATACATCAATCTAAATTTACATTACACTTATTTATATTTATACC
+TATTATAAATATATATATCCGACACAAAAGCGCACGTCTGCCCACCCTTA
+TAATGTTCTAATTATTATCACCTTCCTCGACGCAAAGCTTAAACCTCTGT
+TGAAAAACAAATCAATTAGATGGATGACATAAAAACGTAAATAAATAATC
+TTCTCACCTCAAGCATCCGGATAAAAAAGGCAATACGCACTCCAACTCCT
+GATGAAGCTATGTGAAGAAAACTACACCAGGATTCAAAAGTCGAATCGGA
+GGATGGACATGAGAAGAATCTGTGCGGCAGAAGCATGATGAATAGAGGCG
+ACTCGCTGCAGCAAAATATGCACTACGCCACTTACCTGAATCTTCTGCGG
+CGCAGTCTTTTTATGTACCATCATCTCCGCCGCAACCGCTTCACACAGCT
+CCACAACATAAGATGCGCCACCAAAGCTGCCTCCGTACTGAACTGGACAT
+CATGCGTTGCGCTGCAAATCCTATCCTATTGACGAGCGCCAACAGCGGGT
+CTGCGCTAAAAACCTAAAAACAAAACAAAACAAAACAATTAATCAACAAC
+AAATTGAACATAACAATCAAACAATAACAATCACTTACCTCCTTGACTGC
+ATCCAATCGCTGACCCAAATCCAACACAACCGACAACAGGAGACGGGCTT
+CGCAAATGCAAAACAAAATCGCCAACTTTTGCGATTATAAATACAAAAAA
+TTGACAATTTTCTGATGCCATCTCCATCCTTTGATCCCACTGCCCAAATA
+AGGATCATTAGCGCGGAGCTGAAGCCACATTAATAAGCTGTAAAATTGAT
+CCCCAAAATGTATATTTCTCCTCAATACCGTATCTTCAACGAACTTTCCG
+CCAACCTGCAATGAAAGGGAAATTAATAATAATGCTATACAGAATTAATC
+AGCGACACATAGAAAATAGCAAACCAGACAGGCAAAGTAGTAGATGCAAA
+CAGGCGACTCCATCCCGCCGACGACAAGCATTCAAATCCTTCATACTGAA
+ACAAGGAAGCACAAGCCAATACTGGGAATTATTTACTCAAACAAAATACT
+TATCTAATTACCAACTCGACGACTCCAAATACGCGGCACACCGGCTGCGA
+TAGCTCTTAAATAAAGGGCCTCCTAATTAACTACAAAACGTACCTGAAAA
+ATAAAACAATTAACGCAATCGTAAATAATTACAATTATAATACTCACCTC
+CAGATTAGCCTAATGTACCTGAAAAACAAAAACAAAAATTAATGCAATAA
+TTATAAAAACAAATAAATACAAACACAATACTTACCTCCAAATTACCTCC
+CAGCCAAAGCACCTGAAATACAAAAACAAAGAATTAATGCAATAAATAAA
+TCAAATAAATACAAATACAATACTCACCCCAAATAACCTCCCAGCTAATT
+TACCTGAAAAAACAAAAATTAATACAATATTAAAAACGAATAACAAATGT
+AATACTTACCAAATTTTAACTTTGTATTCATTTCCATGGCCCAAATCGTT
+GCGACGGTCCTCGGCAACAAATCATGTTCCGGCGGCTCCTAGCTGCCAAT
+CCCGACGCATTGGCCACAAGACGCGGCGCTCCTGGCAACTCTCGATGAAT
+AACCGAGCTCCAATTTCCACGACGACTCTTCTGCCAAACGAGTCAGATTA
+CACCAACATAATGCCAGCAGCTCCCAAACAATGCAATGACGGCTGCGCGG
+GATCCATCTTCAGATTTTCTTCTTCCTGACGACCGGCTAAGCTGCCCTGC
+AATTTAAGAAATTTTATTAAACAATTGCAAATATCTACCACTGAGGGTGG
+TAGAGACAACCACCAAATGACAGCGGCGCGGGATACACCCACCACGAATA
+GGCTTTCTGCAGCGCTGGCCGGACATGCATGTTGCGACGCGCATTCAGCG
+TCCACAACAAGCCCCAGCCAGAATACAACAAACACTCACCTGCAATGTTT
+CCTGAGGCTTCCAGCGACTCGGTGCTTCCGTCCTTCTGGCGGGGGTACCT
+GAAAAGAATTAATTCAAATTATGTTAGTCTTAAATTCCAATGTTTCTTGT
+TAAATAATTCAAATTATCAAATGTAAACATAACATACAATGTGATAATGT
+TACCAGTCCATGTTACTGCCAAAAACCTAAGTTTACAAAAAAATACTTAC
+CTCTTAATATTAATACTAAATCTATGTCCAATCCCCAAACTCACCCCACG
+TAATGTACACCTCAAAAATTCAAATAATTGTACCTACATATTGCATTCTA
+TGTAATCAAAGGCAAAATAAATTGTGGATGCGGAACAGAATTCATTCTGT
+CTCCGTACCTCCACCAGCAAAGTTAAAAATGAAATATCCCTCATCACCGC
+TGCAATCTACATACATGGATACAGCGCAAAAGACGGTCAACCACGTCGTC
+TCCGAGTCGTTCAGGACACCTTGCTGCTCTCAATAACCTCCAGCCTGACG
+AGCGCCAACAGCGAGTTGACGCTAAAACCTAAAAACAAACAACAACAAAT
+TAAATACAAACAAATAAAATAAAATCAAACAAAACACTTACTTCACTGAC
+AACAGCCAATTGCTGATCCACATTCAACGCAACAGACAACAGGAGACGGG
+CCCCGCAAACGCAAAACAAAATCGCCAATTTTTGCGATTTTAAATACAAA
+AAATCGACAATTTTACTAAGCCCTCTCCATCTCCTGATGCCACCGCCACA
+ATAAGGATCACTAGCGCGGCGCTGATGCCACATCAATAAACCGCAATATT
+TGTCCTCAAAACGTATACTTCTTCTCAGTATCGCAACTTCTACGAATTTC
+CCGCTAACCTACAATGAAAGGAAAATCAATAAGAATGTGATACAAAAAAT
+TAATCAAGGGCAAATAGAAAATAGCTTACCGGACAGGCATACTAGCAGAT
+GCTAATATGCAACTCCATCCTTCTGAGACAAATACGCAACTCCTTTTTTC
+CAAGATTGCAAATACTGAAACAAGGAAGCACAAGCCAATACTGGGAATTA
+TTTAATTAAACAAAATACTTATCTAATTGCCAATTCGACGACTCCAAATC
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Python/TestFiles/testC2S.gff3
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/Java/Python/TestFiles/testC2S.gff3 Mon Apr 29 03:20:15 2013 -0400
b
@@ -0,0 +1,3 @@
+chr1 S-MART SMART 1 10 . + . Name=region0
+chr1 S-MART SMART 51 60 . + . Name=region1
+chr1 S-MART SMART 51 60 . - . Name=region2
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Python/TestFiles/testCompareTranscriptListDistanceAntisense1.gff3
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/Java/Python/TestFiles/testCompareTranscriptListDistanceAntisense1.gff3 Mon Apr 29 03:20:15 2013 -0400
b
@@ -0,0 +1,1 @@
+chr1 test test1.1 1000 2000 1001 + . ID=test1.1;Name=test1.1
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Python/TestFiles/testCompareTranscriptListDistanceAntisense2.gff3
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/Java/Python/TestFiles/testCompareTranscriptListDistanceAntisense2.gff3 Mon Apr 29 03:20:15 2013 -0400
b
@@ -0,0 +1,2 @@
+chr1 test test2.1 1500 2500 1001 + . ID=test2.1;Name=test2.1
+chr1 test test2.2 3000 4000 1001 - . ID=test2.2;Name=test2.2
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Python/TestFiles/testCompareTranscriptListDistanceSimple1.gff3
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/Java/Python/TestFiles/testCompareTranscriptListDistanceSimple1.gff3 Mon Apr 29 03:20:15 2013 -0400
b
@@ -0,0 +1,1 @@
+chr1 test test1.1 1000 2000 1001 + . ID=test1.1;Name=test1.1
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Python/TestFiles/testCompareTranscriptListDistanceSimple2.gff3
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/Java/Python/TestFiles/testCompareTranscriptListDistanceSimple2.gff3 Mon Apr 29 03:20:15 2013 -0400
b
@@ -0,0 +1,2 @@
+chr1 test test2.1 1500 2500 1001 + . ID=test2.1;Name=test2.1
+chr1 test test2.2 3000 4000 1001 + . ID=test2.2;Name=test2.2
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Python/TestFiles/testDifferentialExpressionExpected.gff3
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/Java/Python/TestFiles/testDifferentialExpressionExpected.gff3 Mon Apr 29 03:20:15 2013 -0400
b
@@ -0,0 +1,2 @@
+chr1 S-MART S-MART_transcript 100 200 101 + . Name=test3.1;nbReadsCond1=15;regulation=equal;nbReadsCond2=15;pValue=1.0;ID=test3.1
+chr1 S-MART S-MART_transcript 200 300 101 + . Name=test3.2;nbReadsCond1=30;regulation=equal;nbReadsCond2=30;pValue=1.0;ID=test3.2
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Python/TestFiles/testDifferentialExpressionOutput.gff3
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/Java/Python/TestFiles/testDifferentialExpressionOutput.gff3 Mon Apr 29 03:20:15 2013 -0400
b
@@ -0,0 +1,2 @@
+chr1 S-MART S-MART_transcript 100 200 101 + . Name=test3.1;nbReadsCond1=15;regulation=equal;nbReadsCond2=15;pValue=1.0;ID=test3.1
+chr1 S-MART S-MART_transcript 200 300 101 + . Name=test3.2;nbReadsCond1=30;regulation=equal;nbReadsCond2=30;pValue=1.0;ID=test3.2
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Python/TestFiles/testDifferentialExpressionReference.gff3
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/Java/Python/TestFiles/testDifferentialExpressionReference.gff3 Mon Apr 29 03:20:15 2013 -0400
b
@@ -0,0 +1,2 @@
+chr1 S-MART transcript 100 200 100 + . Name=test3.1
+chr1 S-MART transcript 200 300 100 + . Name=test3.2
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Python/TestFiles/testDifferentialExpressionSample1.gff3
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/Java/Python/TestFiles/testDifferentialExpressionSample1.gff3 Mon Apr 29 03:20:15 2013 -0400
b
@@ -0,0 +1,2 @@
+chr1 S-MART S-MART_transcript 100 200 100 + . Name=test1.1;nbElements=10
+chr1 S-MART S-MART_transcript 200 300 100 + . Name=test1.2;nbElements=20
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Python/TestFiles/testDifferentialExpressionSample2.gff3
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/Java/Python/TestFiles/testDifferentialExpressionSample2.gff3 Mon Apr 29 03:20:15 2013 -0400
b
@@ -0,0 +1,2 @@
+chr1 S-MART S-MART_transcript 100 200 100 + . Name=test2.1;nbElements=20
+chr1 S-MART S-MART_transcript 200 300 100 + . Name=test2.2;nbElements=40
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Python/TestFiles/testGffParser1.gff3
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/Java/Python/TestFiles/testGffParser1.gff3 Mon Apr 29 03:20:15 2013 -0400
b
@@ -0,0 +1,7 @@
+arm_X test test_transcript 1000 2000 1 + . ID=id1-1;Name=test1;field=value1
+arm_X test test_exon 1000 2000 1 + . ID=id1-1-exon1;Name=test1-exon1;Parent=id1-1
+arm_X test test_transcript 10000 20000 1 - . ID=id2-1;Name=test2;field=value2
+arm_X test test_exon 10000 10100 1 - . ID=id2-1-exon1;Name=test2-exon1;Parent=id2-1
+arm_X test test_exon 10500 20000 1 - . ID=id2-1-exon2;Name=test2-exon2;Parent=id2-1
+arm_X test test_transcript 1000 2000 1 + . ID=test1.1-1;Name=test1.1
+arm_X test test_exon 1000 2000 1 + . ID=test1.1-1-exon1;Name=test1.1-exon1;Parent=test1.1-1
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Python/TestFiles/testPlot.gff3
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/Java/Python/TestFiles/testPlot.gff3 Mon Apr 29 03:20:15 2013 -0400
b
@@ -0,0 +1,6 @@
+chr1 S-MART SMART 100 200 . + . value2=6;value3=1
+chr1 S-MART SMART 200 300 . + . value1=2;value2=5;value3=2
+chr1 S-MART SMART 300 400 . + . value1=3;value2=4;value3=3
+chr1 S-MART SMART 400 500 . + . value1=4;value2=3;value3=4
+chr1 S-MART SMART 500 600 . + . value1=5;value2=2;value3=5
+chr1 S-MART SMART 600 700 . + . value1=6;value3=6
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Python/TestFiles/testSW.gff3
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/Java/Python/TestFiles/testSW.gff3 Mon Apr 29 03:20:15 2013 -0400
b
@@ -0,0 +1,4 @@
+chr1 S-MART SMART 101 111 . + . value1=1
+chr1 S-MART SMART 111 121 . + . value1=2
+chr1 S-MART SMART 201 211 . + . value1=10
+chr1 S-MART SMART 211 221 . + . value1=12
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Python/TestFiles/testTranscriptListsComparatorCompareTranscriptList1.bed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/Java/Python/TestFiles/testTranscriptListsComparatorCompareTranscriptList1.bed Mon Apr 29 03:20:15 2013 -0400
b
@@ -0,0 +1,4 @@
+arm_X 1000 2000 test1.1 1000 + 1000 2000 0 1 1000, 0,
+arm_X 1000 2000 test1.2 1000 - 1000 2000 0 1 1000, 0,
+arm_X 100 200 test1.3 1000 + 100 200 0 1 100, 0,
+arm_X 100 3200 test1.4 1000 + 100 3200 0 2 100,100, 0,3000,
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Python/TestFiles/testTranscriptListsComparatorCompareTranscriptList2.bed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/Java/Python/TestFiles/testTranscriptListsComparatorCompareTranscriptList2.bed Mon Apr 29 03:20:15 2013 -0400
b
@@ -0,0 +1,1 @@
+arm_X 1000 2000 test2.1 1000 + 1000 2000 0 1 1000, 0,
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Python/TestFiles/testTranscriptListsComparatorCompareTranscriptListGetDifference1.gff3
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/Java/Python/TestFiles/testTranscriptListsComparatorCompareTranscriptListGetDifference1.gff3 Mon Apr 29 03:20:15 2013 -0400
b
@@ -0,0 +1,1 @@
+arm_X test test_transcript 1000 4000 1 + . ID=id1-1;Name=test1;field=value1;nbElements=2
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Python/TestFiles/testTranscriptListsComparatorCompareTranscriptListGetDifference2.gff3
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/Java/Python/TestFiles/testTranscriptListsComparatorCompareTranscriptListGetDifference2.gff3 Mon Apr 29 03:20:15 2013 -0400
b
@@ -0,0 +1,1 @@
+arm_X test test_transcript 2000 3000 1 + . ID=id2;Name=test2;field=value1
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Python/TestFiles/testTranscriptListsComparatorCompareTranscriptListMergeAggregation1.bed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/Java/Python/TestFiles/testTranscriptListsComparatorCompareTranscriptListMergeAggregation1.bed Mon Apr 29 03:20:15 2013 -0400
b
@@ -0,0 +1,2 @@
+arm_X 10000100 10000200 test1.1 100 - 10000100 10000200 0 1 100, 0,
+arm_X 10000000 10000100 test1.2 100 - 10000000 10000100 0 1 100, 0,
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Python/TestFiles/testTranscriptListsComparatorCompareTranscriptListMergeAggregation2.bed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/Java/Python/TestFiles/testTranscriptListsComparatorCompareTranscriptListMergeAggregation2.bed Mon Apr 29 03:20:15 2013 -0400
b
@@ -0,0 +1,1 @@
+arm_X 10000050 10000150 test2.1 100 - 10000050 10000150 0 1 100, 0,
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Python/TestFiles/testTranscriptListsComparatorCompareTranscriptListMergeSenseAntiSenseAway1.bed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/Java/Python/TestFiles/testTranscriptListsComparatorCompareTranscriptListMergeSenseAntiSenseAway1.bed Mon Apr 29 03:20:15 2013 -0400
b
@@ -0,0 +1,7 @@
+arm_X 10000100 10000200 test1.1 100 + 10000100 10000200 0 1 100, 0,
+arm_X 10000100 10000200 test1.2 100 - 10000100 10000200 0 1 100, 0,
+arm_2R 10000100 10000200 test1.3 100 + 10000100 10000200 0 1 100, 0,
+arm_X 10000000 10000100 test1.4 100 + 10000000 10000100 0 1 100, 0,
+arm_X 10000200 10000300 test1.5 100 + 10000200 10000300 0 1 100, 0,
+arm_X 9999900 9999950 test1.6 100 + 9999900 9999950 0 1 50, 0,
+arm_X 10000000 10000050 test1.7 100 - 10000000 10000050 0 1 50, 0,
\ No newline at end of file
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Python/TestFiles/testTranscriptListsComparatorCompareTranscriptListMergeSenseAntiSenseAway1_modif.bed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/Java/Python/TestFiles/testTranscriptListsComparatorCompareTranscriptListMergeSenseAntiSenseAway1_modif.bed Mon Apr 29 03:20:15 2013 -0400
b
@@ -0,0 +1,112 @@
+arm_X 10000100 10000200 test1.1 100 + 10000100 10000200 0 1 100, 0,
+arm_X 10000100 10000200 test1.2 100 - 10000100 10000200 0 1 100, 0,
+arm_2R 10000100 10000200 test1.3 100 + 10000100 10000200 0 1 100, 0,
+arm_X 10000000 10000100 test1.4 100 + 10000000 10000100 0 1 100, 0,
+arm_X 10000200 10000300 test1.5 100 + 10000200 10000300 0 1 100, 0,
+arm_X 9999900 9999950 test1.6 100 + 9999900 9999950 0 1 50, 0,
+arm_X 10000000 10000050 test1.7 100 - 10000000 10000050 0 1 50, 0,
+arm_X 10000100 10000200 test1.1 100 + 10000100 10000200 0 1 100, 0,
+arm_X 10000100 10000200 test1.2 100 - 10000100 10000200 0 1 100, 0,
+arm_2R 10000100 10000200 test1.3 100 + 10000100 10000200 0 1 100, 0,
+arm_X 10000000 10000100 test1.4 100 + 10000000 10000100 0 1 100, 0,
+arm_X 10000200 10000300 test1.5 100 + 10000200 10000300 0 1 100, 0,
+arm_X 9999900 9999950 test1.6 100 + 9999900 9999950 0 1 50, 0,
+arm_X 10000000 10000050 test1.7 100 - 10000000 10000050 0 1 50, 0,
+arm_X 10000100 10000200 test1.1 100 + 10000100 10000200 0 1 100, 0,
+arm_X 10000100 10000200 test1.2 100 - 10000100 10000200 0 1 100, 0,
+arm_2R 10000100 10000200 test1.3 100 + 10000100 10000200 0 1 100, 0,
+arm_X 10000000 10000100 test1.4 100 + 10000000 10000100 0 1 100, 0,
+arm_X 10000200 10000300 test1.5 100 + 10000200 10000300 0 1 100, 0,
+arm_X 9999900 9999950 test1.6 100 + 9999900 9999950 0 1 50, 0,
+arm_X 10000000 10000050 test1.7 100 - 10000000 10000050 0 1 50, 0,
+arm_X 10000100 10000200 test1.1 100 + 10000100 10000200 0 1 100, 0,
+arm_X 10000100 10000200 test1.2 100 - 10000100 10000200 0 1 100, 0,
+arm_2R 10000100 10000200 test1.3 100 + 10000100 10000200 0 1 100, 0,
+arm_X 10000000 10000100 test1.4 100 + 10000000 10000100 0 1 100, 0,
+arm_X 10000200 10000300 test1.5 100 + 10000200 10000300 0 1 100, 0,
+arm_X 9999900 9999950 test1.6 100 + 9999900 9999950 0 1 50, 0,
+arm_X 10000000 10000050 test1.7 100 - 10000000 10000050 0 1 50, 0,
+arm_X 10000100 10000200 test1.1 100 + 10000100 10000200 0 1 100, 0,
+arm_X 10000100 10000200 test1.2 100 - 10000100 10000200 0 1 100, 0,
+arm_2R 10000100 10000200 test1.3 100 + 10000100 10000200 0 1 100, 0,
+arm_X 10000000 10000100 test1.4 100 + 10000000 10000100 0 1 100, 0,
+arm_X 10000200 10000300 test1.5 100 + 10000200 10000300 0 1 100, 0,
+arm_X 9999900 9999950 test1.6 100 + 9999900 9999950 0 1 50, 0,
+arm_X 10000000 10000050 test1.7 100 - 10000000 10000050 0 1 50, 0,
+arm_X 10000100 10000200 test1.1 100 + 10000100 10000200 0 1 100, 0,
+arm_X 10000100 10000200 test1.2 100 - 10000100 10000200 0 1 100, 0,
+arm_2R 10000100 10000200 test1.3 100 + 10000100 10000200 0 1 100, 0,
+arm_X 10000000 10000100 test1.4 100 + 10000000 10000100 0 1 100, 0,
+arm_X 10000200 10000300 test1.5 100 + 10000200 10000300 0 1 100, 0,
+arm_X 9999900 9999950 test1.6 100 + 9999900 9999950 0 1 50, 0,
+arm_X 10000000 10000050 test1.7 100 - 10000000 10000050 0 1 50, 0,
+arm_X 10000100 10000200 test1.1 100 + 10000100 10000200 0 1 100, 0,
+arm_X 10000100 10000200 test1.2 100 - 10000100 10000200 0 1 100, 0,
+arm_2R 10000100 10000200 test1.3 100 + 10000100 10000200 0 1 100, 0,
+arm_X 10000000 10000100 test1.4 100 + 10000000 10000100 0 1 100, 0,
+arm_X 10000200 10000300 test1.5 100 + 10000200 10000300 0 1 100, 0,
+arm_X 9999900 9999950 test1.6 100 + 9999900 9999950 0 1 50, 0,
+arm_X 10000000 10000050 test1.7 100 - 10000000 10000050 0 1 50, 0,
+arm_X 10000100 10000200 test1.1 100 + 10000100 10000200 0 1 100, 0,
+arm_X 10000100 10000200 test1.2 100 - 10000100 10000200 0 1 100, 0,
+arm_2R 10000100 10000200 test1.3 100 + 10000100 10000200 0 1 100, 0,
+arm_X 10000000 10000100 test1.4 100 + 10000000 10000100 0 1 100, 0,
+arm_X 10000200 10000300 test1.5 100 + 10000200 10000300 0 1 100, 0,
+arm_X 9999900 9999950 test1.6 100 + 9999900 9999950 0 1 50, 0,
+arm_X 10000000 10000050 test1.7 100 - 10000000 10000050 0 1 50, 0,
+arm_X 10000100 10000200 test1.1 100 + 10000100 10000200 0 1 100, 0,
+arm_X 10000100 10000200 test1.2 100 - 10000100 10000200 0 1 100, 0,
+arm_2R 10000100 10000200 test1.3 100 + 10000100 10000200 0 1 100, 0,
+arm_X 10000000 10000100 test1.4 100 + 10000000 10000100 0 1 100, 0,
+arm_X 10000200 10000300 test1.5 100 + 10000200 10000300 0 1 100, 0,
+arm_X 9999900 9999950 test1.6 100 + 9999900 9999950 0 1 50, 0,
+arm_X 10000000 10000050 test1.7 100 - 10000000 10000050 0 1 50, 0,
+arm_X 10000100 10000200 test1.1 100 + 10000100 10000200 0 1 100, 0,
+arm_X 10000100 10000200 test1.2 100 - 10000100 10000200 0 1 100, 0,
+arm_2R 10000100 10000200 test1.3 100 + 10000100 10000200 0 1 100, 0,
+arm_X 10000000 10000100 test1.4 100 + 10000000 10000100 0 1 100, 0,
+arm_X 10000200 10000300 test1.5 100 + 10000200 10000300 0 1 100, 0,
+arm_X 9999900 9999950 test1.6 100 + 9999900 9999950 0 1 50, 0,
+arm_X 10000000 10000050 test1.7 100 - 10000000 10000050 0 1 50, 0,
+arm_X 10000100 10000200 test1.1 100 + 10000100 10000200 0 1 100, 0,
+arm_X 10000100 10000200 test1.2 100 - 10000100 10000200 0 1 100, 0,
+arm_2R 10000100 10000200 test1.3 100 + 10000100 10000200 0 1 100, 0,
+arm_X 10000000 10000100 test1.4 100 + 10000000 10000100 0 1 100, 0,
+arm_X 10000200 10000300 test1.5 100 + 10000200 10000300 0 1 100, 0,
+arm_X 9999900 9999950 test1.6 100 + 9999900 9999950 0 1 50, 0,
+arm_X 10000000 10000050 test1.7 100 - 10000000 10000050 0 1 50, 0,
+arm_X 10000100 10000200 test1.1 100 + 10000100 10000200 0 1 100, 0,
+arm_X 10000100 10000200 test1.2 100 - 10000100 10000200 0 1 100, 0,
+arm_2R 10000100 10000200 test1.3 100 + 10000100 10000200 0 1 100, 0,
+arm_X 10000000 10000100 test1.4 100 + 10000000 10000100 0 1 100, 0,
+arm_X 10000200 10000300 test1.5 100 + 10000200 10000300 0 1 100, 0,
+arm_X 9999900 9999950 test1.6 100 + 9999900 9999950 0 1 50, 0,
+arm_X 10000000 10000050 test1.7 100 - 10000000 10000050 0 1 50, 0,
+arm_X 10000100 10000200 test1.1 100 + 10000100 10000200 0 1 100, 0,
+arm_X 10000100 10000200 test1.2 100 - 10000100 10000200 0 1 100, 0,
+arm_2R 10000100 10000200 test1.3 100 + 10000100 10000200 0 1 100, 0,
+arm_X 10000000 10000100 test1.4 100 + 10000000 10000100 0 1 100, 0,
+arm_X 10000200 10000300 test1.5 100 + 10000200 10000300 0 1 100, 0,
+arm_X 9999900 9999950 test1.6 100 + 9999900 9999950 0 1 50, 0,
+arm_X 10000000 10000050 test1.7 100 - 10000000 10000050 0 1 50, 0,
+arm_X 10000100 10000200 test1.1 100 + 10000100 10000200 0 1 100, 0,
+arm_X 10000100 10000200 test1.2 100 - 10000100 10000200 0 1 100, 0,
+arm_2R 10000100 10000200 test1.3 100 + 10000100 10000200 0 1 100, 0,
+arm_X 10000000 10000100 test1.4 100 + 10000000 10000100 0 1 100, 0,
+arm_X 10000200 10000300 test1.5 100 + 10000200 10000300 0 1 100, 0,
+arm_X 9999900 9999950 test1.6 100 + 9999900 9999950 0 1 50, 0,
+arm_X 10000000 10000050 test1.7 100 - 10000000 10000050 0 1 50, 0,
+arm_X 10000100 10000200 test1.1 100 + 10000100 10000200 0 1 100, 0,
+arm_X 10000100 10000200 test1.2 100 - 10000100 10000200 0 1 100, 0,
+arm_2R 10000100 10000200 test1.3 100 + 10000100 10000200 0 1 100, 0,
+arm_X 10000000 10000100 test1.4 100 + 10000000 10000100 0 1 100, 0,
+arm_X 10000200 10000300 test1.5 100 + 10000200 10000300 0 1 100, 0,
+arm_X 9999900 9999950 test1.6 100 + 9999900 9999950 0 1 50, 0,
+arm_X 10000000 10000050 test1.7 100 - 10000000 10000050 0 1 50, 0,
+arm_X 10000100 10000200 test1.1 100 + 10000100 10000200 0 1 100, 0,
+arm_X 10000100 10000200 test1.2 100 - 10000100 10000200 0 1 100, 0,
+arm_2R 10000100 10000200 test1.3 100 + 10000100 10000200 0 1 100, 0,
+arm_X 10000000 10000100 test1.4 100 + 10000000 10000100 0 1 100, 0,
+arm_X 10000200 10000300 test1.5 100 + 10000200 10000300 0 1 100, 0,
+arm_X 9999900 9999950 test1.6 100 + 9999900 9999950 0 1 50, 0,
+arm_X 10000000 10000050 test1.7 100 - 10000000 10000050 0 1 50, 0,
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Python/TestFiles/testTranscriptListsComparatorCompareTranscriptListMergeSenseAntiSenseAway2.bed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/Java/Python/TestFiles/testTranscriptListsComparatorCompareTranscriptListMergeSenseAntiSenseAway2.bed Mon Apr 29 03:20:15 2013 -0400
b
@@ -0,0 +1,2 @@
+arm_X 10000000 10000050 test2.1 50 - 10000000 10000050 0 1 50, 0,
+arm_3R 10000000 10000050 test2.2 50 - 10000000 10000050 0 1 50, 0,
\ No newline at end of file
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Python/TestFiles/testTranscriptListsComparatorCompareTranscriptListMergeSimple1.bed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/Java/Python/TestFiles/testTranscriptListsComparatorCompareTranscriptListMergeSimple1.bed Mon Apr 29 03:20:15 2013 -0400
b
@@ -0,0 +1,1 @@
+arm_X 1000 3000 test1.1 1000 + 1000 3000 0 1 2000, 0,
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Python/TestFiles/testTranscriptListsComparatorCompareTranscriptListMergeSimple2.bed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/Java/Python/TestFiles/testTranscriptListsComparatorCompareTranscriptListMergeSimple2.bed Mon Apr 29 03:20:15 2013 -0400
b
@@ -0,0 +1,1 @@
+arm_X 2000 4000 test1.2 1000 + 2000 4000 0 1 2000, 0,
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Python/TestFiles/testTranscriptListsComparatorCompareTranscriptListSelfMerge1.gff3
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/Java/Python/TestFiles/testTranscriptListsComparatorCompareTranscriptListSelfMerge1.gff3 Mon Apr 29 03:20:15 2013 -0400
b
@@ -0,0 +1,4 @@
+arm_X test test_transcript 1000 2000 1 + . ID=id1-1;Name=test1;field=value1;nbElements=2
+arm_X test test_exon 1000 2000 1 + . ID=id1-1-exon1;Name=test1-exon1;Parent=id1-1
+arm_X test test_transcript 1000 2000 1 + . ID=id2-1;Name=test2;field=value2
+arm_X test test_exon 1000 2000 1 + . ID=id2-1-exon1;Name=test2-exon1;Parent=id2-1
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Python/TestFiles/testTranscriptListsComparatorCompareTranscriptListSelfMergeDifferentClusters1.bed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/Java/Python/TestFiles/testTranscriptListsComparatorCompareTranscriptListSelfMergeDifferentClusters1.bed Mon Apr 29 03:20:15 2013 -0400
b
@@ -0,0 +1,2 @@
+arm_X 1010 1110 test1.1 1000 + 1010 1110 0 1 100, 0,
+arm_X 100 100100 test1.2 1000 + 100 100100 0 1 100000, 0,
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Python/TestFiles/testTranscriptListsComparatorCompareTranscriptListSelfMergeSense1.bed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/Java/Python/TestFiles/testTranscriptListsComparatorCompareTranscriptListSelfMergeSense1.bed Mon Apr 29 03:20:15 2013 -0400
b
@@ -0,0 +1,2 @@
+arm_X 1000 6000 test1.1 1000 + 1000 6000 0 2 1000,1000, 0,4000,
+arm_X 1000 4000 test1.2 1000 + 1000 4000 0 2 1000,1000, 0,2000,
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Python/TestFiles/testTranscriptNormalize.gff3
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/Java/Python/TestFiles/testTranscriptNormalize.gff3 Mon Apr 29 03:20:15 2013 -0400
b
@@ -0,0 +1,2 @@
+chr1 S-MART transcript 1000 2000 1000 + . Name=test1;nbOccurrences=2
+chr1 S-MART transcript 1500 2500 1000 + . Name=test2;nbOccurrences=2
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Python/TestFiles/test_distance.bed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/Java/Python/TestFiles/test_distance.bed Mon Apr 29 03:20:15 2013 -0400
b
@@ -0,0 +1,3 @@
+arm_X 1000 2000 test2.1 1000 + 1000 2000 0 1 1000, 0,
+arm_X 250 350 test2.2 1000 + 250 350 0 1 100, 0,
+arm_X 150 250 test2.3 1000 + 150 250 0 1 100, 0,
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Python/TestFiles/test_minoverlapp.bed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/Java/Python/TestFiles/test_minoverlapp.bed Mon Apr 29 03:20:15 2013 -0400
b
@@ -0,0 +1,6 @@
+track name=reads description="Reads" useScore=0 visibility=full offset=0
+arm_X 1000 2000 test1.1 1000 + 1000 2000 0 1 1000, 0,
+arm_X 1000 2000 test1.2 1000 - 1000 2000 0 1 1000, 0,
+arm_X 100 200 test1.3 1000 + 100 200 0 1 100, 0,
+arm_X 100 3200 test1.4 1000 + 100 3200 0 2 100,100, 0,3000,
+arm_X 1500 2000 test1.5 1000 + 1500 2000 0 1 500, 0,
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Python/__init__.pyc
b
Binary file SMART/Java/Python/__init__.pyc has changed
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Python/cleanGff.pyc
b
Binary file SMART/Java/Python/cleanGff.pyc has changed
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Python/cleaning/CleanerChooser.pyc
b
Binary file SMART/Java/Python/cleaning/CleanerChooser.pyc has changed
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Python/cleaning/DefaultCleaner.pyc
b
Binary file SMART/Java/Python/cleaning/DefaultCleaner.pyc has changed
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Python/cleaning/GffCleaner.pyc
b
Binary file SMART/Java/Python/cleaning/GffCleaner.pyc has changed
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Python/cleaning/GtfCleaner.pyc
b
Binary file SMART/Java/Python/cleaning/GtfCleaner.pyc has changed
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Python/cleaning/TranscriptListCleaner.pyc
b
Binary file SMART/Java/Python/cleaning/TranscriptListCleaner.pyc has changed
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Python/cleaning/__init__.pyc
b
Binary file SMART/Java/Python/cleaning/__init__.pyc has changed
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Python/clusterize.py
--- a/SMART/Java/Python/clusterize.py Mon Apr 22 11:11:10 2013 -0400
+++ b/SMART/Java/Python/clusterize.py Mon Apr 29 03:20:15 2013 -0400
[
b'@@ -31,7 +31,7 @@\n from commons.core.writer.WriterChooser import WriterChooser\n """Clusterize a set of transcripts"""\n \n-import os\n+import os, os.path, random\n from optparse import OptionParser\n from commons.core.parsing.ParserChooser import ParserChooser\n from commons.core.writer.Gff3Writer import Gff3Writer\n@@ -39,127 +39,147 @@\n from SMART.Java.Python.ncList.NCListFilePickle import NCListFileUnpickle\n from SMART.Java.Python.ncList.FileSorter import FileSorter\n from SMART.Java.Python.misc.Progress import Progress\n+from SMART.Java.Python.misc.UnlimitedProgress import UnlimitedProgress\n \n class Clusterize(object):\n-        \n-    def __init__(self, verbosity):\n-        self.normalize         = False\n-        self.presorted         = False\n-        self.distance          = 1\n-        self.colinear          = False\n-        self.nbWritten         = 0\n-        self.nbMerges          = 0\n-        self.verbosity         = verbosity\n-        self.splittedFileNames = {}\n \n-    def __del__(self):\n-        for fileName in self.splittedFileNames.values():\n-            os.remove(fileName)\n+\tdef __init__(self, verbosity):\n+\t\tself.normalize\t\t = False\n+\t\tself.presorted\t\t = False\n+\t\tself.distance\t\t  = 1\n+\t\tself.colinear\t\t  = False\n+\t\tself.nbWritten\t\t = 0\n+\t\tself.nbMerges\t\t  = 0\n+\t\tself.verbosity\t\t = verbosity\n+\t\tself.splittedFileNames = {}\n+\n+\tdef __del__(self):\n+\t\tfor fileName in self.splittedFileNames.values():\n+\t\t\tos.remove(fileName)\n \n-    def setInputFile(self, fileName, format):\n-        parserChooser = ParserChooser(self.verbosity)\n-        parserChooser.findFormat(format)\n-        self.parser = parserChooser.getParser(fileName)\n-        self.sortedFileName = "%s_sorted.pkl" % (os.path.splitext(fileName)[0])\n+\tdef setInputFile(self, fileName, format):\n+\t\tparserChooser = ParserChooser(self.verbosity)\n+\t\tparserChooser.findFormat(format)\n+\t\tself.parser = parserChooser.getParser(fileName)\n+\t\tself.sortedFileName = "%s_sorted_%d.pkl" % (os.path.splitext(fileName)[0], random.randint(1, 100000))\n+\t\tif "SMARTTMPPATH" in os.environ:\n+\t\t\tself.sortedFileName = os.path.join(os.environ["SMARTTMPPATH"], os.path.basename(self.sortedFileName))\n \n-    def setOutputFileName(self, fileName, format="gff3", title="S-MART", feature="transcript", featurePart="exon"):\n-        writerChooser = WriterChooser()\n-        writerChooser.findFormat(format)\n-        self.writer = writerChooser.getWriter(fileName)\n-        self.writer.setTitle(title)\n-        self.writer.setFeature(feature)\n-        self.writer.setFeaturePart(featurePart)\n+\tdef setOutputFileName(self, fileName, format="gff3", title="S-MART", feature="transcript", featurePart="exon"):\n+\t\twriterChooser = WriterChooser()\n+\t\twriterChooser.findFormat(format)\n+\t\tself.writer = writerChooser.getWriter(fileName)\n+\t\tself.writer.setTitle(title)\n+\t\tself.writer.setFeature(feature)\n+\t\tself.writer.setFeaturePart(featurePart)\n \n-    def setDistance(self, distance):\n-        self.distance = distance\n+\tdef setDistance(self, distance):\n+\t\tself.distance = distance\n \n-    def setColinear(self, colinear):\n-        self.colinear = colinear\n+\tdef setColinear(self, colinear):\n+\t\tself.colinear = colinear\n \n-    def setNormalize(self, normalize):\n-        self.normalize = normalize\n-        \n-    def setPresorted(self, presorted):\n-        self.presorted = presorted\n+\tdef setNormalize(self, normalize):\n+\t\tself.normalize = normalize\n+\t\t\n+\tdef setPresorted(self, presorted):\n+\t\tself.presorted = presorted\n \n-    def _sortFile(self):\n-        fs = FileSorter(self.parser, self.verbosity-4)\n-        fs.perChromosome(True)\n-        fs.setPresorted(self.presorted)\n-        fs.setOutputFileName(self.sortedFileName)\n-        fs.sort()\n-        self.splittedFileNames       = fs.getOutputFileNames()\n-        self.nbElementsPerChromosome = fs.getNbElementsPerChromosome()\n-        self.nbElements              = fs.getNbElements()\n-        \n-    def _iterate(self, chromosome):\n-        progress    = Progress(self.nbElementsPerChromosome[chromo'..b'--input",     dest="inputFileName",  action="store",                     type="string", help="input file [compulsory] [format: file in transcript format given by -f]")\n-    parser.add_option("-f", "--format",    dest="format",         action="store",                     type="string", help="format of file [format: transcript file format]")\n-    parser.add_option("-o", "--output",    dest="outputFileName", action="store",                     type="string", help="output file [compulsory] [format: output file in transcript format given by -u]")\n-    parser.add_option("-u", "--outputFormat", dest="outputFormat", action="store",     default="gff",             type="string", help="output file format [format: transcript file format]")\n-    parser.add_option("-c", "--colinear",  dest="colinear",       action="store_true", default=False,                help="merge colinear transcripts only [format: bool] [default: false]")\n-    parser.add_option("-d", "--distance",  dest="distance",       action="store",      default=0,     type="int",    help="max. distance between two transcripts to be merged [format: int] [default: 0]")\n-    parser.add_option("-n", "--normalize", dest="normalize",      action="store_true", default=False,                help="normalize the number of reads per cluster by the number of mappings per read [format: bool] [default: false]")\n-    parser.add_option("-v", "--verbosity", dest="verbosity",      action="store",      default=1,     type="int",    help="trace level [format: int] [default: 1]")\n-    (options, args) = parser.parse_args()\n-        \n-    c = Clusterize(options.verbosity)\n-    c.setInputFile(options.inputFileName, options.format)\n-    c.setOutputFileName(options.outputFileName, options.outputFormat)\n-    c.setColinear(options.colinear)\n-    c.setDistance(options.distance)\n-    c.setNormalize(options.normalize)\n-    c.run()\n+\tdescription = "Clusterize v1.0.3: clusterize the data which overlap. [Category: Merge]"\n+\n+\tparser = OptionParser(description = description)\n+\tparser.add_option("-i", "--input",     dest="inputFileName",  action="store",\t\t\t\t     type="string", help="input file [compulsory] [format: file in transcript format given by -f]")\n+\tparser.add_option("-f", "--format",    dest="format",\t\t action="store",\t\t\t\t     type="string", help="format of file [format: transcript file format]")\n+\tparser.add_option("-o", "--output",    dest="outputFileName", action="store",\t\t\t\t     type="string", help="output file [compulsory] [format: output file in transcript format given by -u]")\n+\tparser.add_option("-u", "--outputFormat", dest="outputFormat", action="store",     default="gff",\t\t     type="string", help="output file format [format: transcript file format]")\n+\tparser.add_option("-c", "--colinear",  dest="colinear",       action="store_true", default=False,\t\t\t\thelp="merge colinear transcripts only [format: bool] [default: false]")\n+\tparser.add_option("-d", "--distance",  dest="distance",       action="store",      default=0,     type="int",    help="max. distance between two transcripts to be merged [format: int] [default: 0]")\n+\tparser.add_option("-n", "--normalize", dest="normalize",      action="store_true", default=False,\t\t\t\thelp="normalize the number of reads per cluster by the number of mappings per read [format: bool] [default: false]")\n+\tparser.add_option("-s", "--sorted",    dest="sorted",\t\t action="store_true", default=False,\t\t\t\thelp="input is already sorted [format: bool] [default: false]")\n+\tparser.add_option("-v", "--verbosity", dest="verbosity",      action="store",      default=1,     type="int",    help="trace level [format: int] [default: 1]")\n+\t(options, args) = parser.parse_args()\n+\n+\tc = Clusterize(options.verbosity)\n+\tc.setInputFile(options.inputFileName, options.format)\n+\tc.setOutputFileName(options.outputFileName, options.outputFormat)\n+\tc.setColinear(options.colinear)\n+\tc.setDistance(options.distance)\n+\tc.setNormalize(options.normalize)\n+\tc.setPresorted(options.sorted)\n+\tc.run()\n'
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Python/fastqToFasta.py
--- a/SMART/Java/Python/fastqToFasta.py Mon Apr 22 11:11:10 2013 -0400
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
[
@@ -1,96 +0,0 @@
-#! /usr/bin/env python
-#
-# Copyright INRA-URGI 2009-2010
-# 
-# This software is governed by the CeCILL license under French law and
-# abiding by the rules of distribution of free software. You can use,
-# modify and/ or redistribute the software under the terms of the CeCILL
-# license as circulated by CEA, CNRS and INRIA at the following URL
-# "http://www.cecill.info".
-# 
-# As a counterpart to the access to the source code and rights to copy,
-# modify and redistribute granted by the license, users are provided only
-# with a limited warranty and the software's author, the holder of the
-# economic rights, and the successive licensors have only limited
-# liability.
-# 
-# In this respect, the user's attention is drawn to the risks associated
-# with loading, using, modifying and/or developing or reproducing the
-# software by the user in light of its specific status of free software,
-# that may mean that it is complicated to manipulate, and that also
-# therefore means that it is reserved for developers and experienced
-# professionals having in-depth computer knowledge. Users are therefore
-# encouraged to load and test the software's suitability as regards their
-# requirements in conditions enabling the security of their systems and/or
-# data to be ensured and, more generally, to use and operate it in the
-# same conditions as regards security.
-# 
-# The fact that you are presently reading this means that you have had
-# knowledge of the CeCILL license and that you accept its terms.
-#
-"""Convert a FASTQ file to a FASTA file"""
-
-import os
-import sys
-from optparse import OptionParser
-from SMART.Java.Python.misc.RPlotter import RPlotter
-from SMART.Java.Python.misc.Progress import Progress
-from math import *
-
-if __name__ == "__main__":
-    
-    # parse command line
-    description = "FastQ to FastA v1.0.1: Convert a FastQ file into a FastA file. [Category: Personnal]"
-
-    parser = OptionParser(description = description)
-    parser.add_option("-i", "--input", dest="inputFileName", action="store", type="string", help="input file [compulsory] [format: file in FASTQ format]")
-    parser.add_option("-o", "--output", dest="outputFileName", action="store", type="string", help="output file [compulsory] [format: output file in FASTA format]")
-    parser.add_option("-v", "--verbosity", dest="verbosity", action="store", default=1, type="int", help="trace level [default: 1] [format: int]")
-    (options, args) = parser.parse_args()
-
-    inputFile = open(options.inputFileName)
-    outputFastaFile = open(options.outputFileName, "w")
-    
-    inSequenceName = False
-    inQualityName = False
-    inSequence = False
-    inQuality = True
-    sequenceName = None
-    lineNumber = 1
-    
-    for line in inputFile:
-
-        if inSequenceName:
-            inSequence = True
-            inSequenceName = False
-        elif inQualityName:
-            inQuality = True
-            inQualityName = False
-        elif inSequence:
-            inQualityName = True
-            inSequence = False
-        elif inQuality:
-            inSequenceName = True
-            inQuality = False
-        else:
-            sys.exit("Error! Do not in which section I am (line is %d)" % (lineNumber))
-
-        line = line.strip()
-        if inSequenceName:
-            if line[0] != "@":
-                sys.exit("Error! Sequence name '%s' does not start with '@' (line is %d)" % (line, lineNumber))
-            sequenceName = line[1:]
-            outputFastaFile.write(">%s\n" % (sequenceName))
-        elif inQualityName:
-            if line[0] != "+":
-                sys.exit("Error! Quality name '%s' does not start with '+' (line is %d)" % (line, lineNumber))
-            if len(line) > 1 and sequenceName != line[1:]:
-                sys.exit("Names in sequence and qual are different (%s, %s) (line is %d)" % (sequenceName, line[1:], lineNumber))
-        elif inSequence:
-            outputFastaFile.write("%s\n" % (line))
-        elif inQuality:
-            pass
-        lineNumber += 1
-    
-    inputFile.close()
-    outputFastaFile.close()
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Python/genes.gtf
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SMART/Java/Python/genes.gtf Mon Apr 29 03:20:15 2013 -0400
b
b'@@ -0,0 +1,27989 @@\n+I\tprotein_coding\tCDS\t335\t646\t.\t+\t0\tgene_id "YAL069W"; transcript_id "YAL069W"; exon_number "1"; gene_name "YAL069W"; p_id "P1273"; protein_id "YAL069W"; transcript_name "YAL069W"; tss_id "TSS1127";\n+I\tprotein_coding\texon\t335\t649\t.\t+\t.\tgene_id "YAL069W"; transcript_id "YAL069W"; exon_number "1"; gene_name "YAL069W"; p_id "P1273"; seqedit "false"; transcript_name "YAL069W"; tss_id "TSS1127";\n+I\tprotein_coding\tstart_codon\t335\t337\t.\t+\t0\tgene_id "YAL069W"; transcript_id "YAL069W"; exon_number "1"; gene_name "YAL069W"; p_id "P1273"; transcript_name "YAL069W"; tss_id "TSS1127";\n+I\tprotein_coding\tCDS\t538\t789\t.\t+\t0\tgene_id "YAL068W-A"; transcript_id "YAL068W-A"; exon_number "1"; gene_name "YAL068W-A"; p_id "P3278"; protein_id "YAL068W-A"; transcript_name "YAL068W-A"; tss_id "TSS5440";\n+I\tprotein_coding\texon\t538\t792\t.\t+\t.\tgene_id "YAL068W-A"; transcript_id "YAL068W-A"; exon_number "1"; gene_name "YAL068W-A"; p_id "P3278"; seqedit "false"; transcript_name "YAL068W-A"; tss_id "TSS5440";\n+I\tprotein_coding\tstart_codon\t538\t540\t.\t+\t0\tgene_id "YAL068W-A"; transcript_id "YAL068W-A"; exon_number "1"; gene_name "YAL068W-A"; p_id "P3278"; transcript_name "YAL068W-A"; tss_id "TSS5440";\n+I\tprotein_coding\tstop_codon\t647\t649\t.\t+\t0\tgene_id "YAL069W"; transcript_id "YAL069W"; exon_number "1"; gene_name "YAL069W"; p_id "P1273"; transcript_name "YAL069W"; tss_id "TSS1127";\n+I\tprotein_coding\tstop_codon\t790\t792\t.\t+\t0\tgene_id "YAL068W-A"; transcript_id "YAL068W-A"; exon_number "1"; gene_name "YAL068W-A"; p_id "P3278"; transcript_name "YAL068W-A"; tss_id "TSS5440";\n+I\tprotein_coding\texon\t1807\t2169\t.\t-\t.\tgene_id "YAL068C"; transcript_id "YAL068C"; exon_number "1"; gene_name "PAU8"; p_id "P3469"; seqedit "false"; transcript_name "PAU8"; tss_id "TSS248";\n+I\tprotein_coding\tstop_codon\t1807\t1809\t.\t-\t0\tgene_id "YAL068C"; transcript_id "YAL068C"; exon_number "1"; gene_name "PAU8"; p_id "P3469"; transcript_name "PAU8"; tss_id "TSS248";\n+I\tprotein_coding\tCDS\t1810\t2169\t.\t-\t0\tgene_id "YAL068C"; transcript_id "YAL068C"; exon_number "1"; gene_name "PAU8"; p_id "P3469"; protein_id "YAL068C"; transcript_name "PAU8"; tss_id "TSS248";\n+I\tprotein_coding\tstart_codon\t2167\t2169\t.\t-\t0\tgene_id "YAL068C"; transcript_id "YAL068C"; exon_number "1"; gene_name "PAU8"; p_id "P3469"; transcript_name "PAU8"; tss_id "TSS248";\n+I\tprotein_coding\tCDS\t2480\t2704\t.\t+\t0\tgene_id "YAL067W-A"; transcript_id "YAL067W-A"; exon_number "1"; gene_name "YAL067W-A"; p_id "P5000"; protein_id "YAL067W-A"; transcript_name "YAL067W-A"; tss_id "TSS1247";\n+I\tprotein_coding\texon\t2480\t2707\t.\t+\t.\tgene_id "YAL067W-A"; transcript_id "YAL067W-A"; exon_number "1"; gene_name "YAL067W-A"; p_id "P5000"; seqedit "false"; transcript_name "YAL067W-A"; tss_id "TSS1247";\n+I\tprotein_coding\tstart_codon\t2480\t2482\t.\t+\t0\tgene_id "YAL067W-A"; transcript_id "YAL067W-A"; exon_number "1"; gene_name "YAL067W-A"; p_id "P5000"; transcript_name "YAL067W-A"; tss_id "TSS1247";\n+I\tprotein_coding\tstop_codon\t2705\t2707\t.\t+\t0\tgene_id "YAL067W-A"; transcript_id "YAL067W-A"; exon_number "1"; gene_name "YAL067W-A"; p_id "P5000"; transcript_name "YAL067W-A"; tss_id "TSS1247";\n+I\tprotein_coding\texon\t7235\t9016\t.\t-\t.\tgene_id "YAL067C"; transcript_id "YAL067C"; exon_number "1"; gene_name "SEO1"; p_id "P6606"; seqedit "false"; transcript_name "SEO1"; tss_id "TSS5465";\n+I\tprotein_coding\tstop_codon\t7235\t7237\t.\t-\t0\tgene_id "YAL067C"; transcript_id "YAL067C"; exon_number "1"; gene_name "SEO1"; p_id "P6606"; transcript_name "SEO1"; tss_id "TSS5465";\n+I\tprotein_coding\tCDS\t7238\t9016\t.\t-\t0\tgene_id "YAL067C"; transcript_id "YAL067C"; exon_number "1"; gene_name "SEO1"; p_id "P6606"; protein_id "YAL067C"; transcript_name "SEO1"; tss_id "TSS5465";\n+I\tprotein_coding\tstart_codon\t9014\t9016\t.\t-\t0\tgene_id "YAL067C"; transcript_id "YAL067C"; exon_number "1"; gene_name "SEO1"; p_id "P6606"; transcript_name "SEO1"; tss_id "TSS5465";\n+I\tprotein_coding\tCDS\t10091\t10396\t.\t+\t0\tgene_id "YAL066W"; transcript_id "YAL066W"; exon_number "1"; gene_name "YAL066W"; p_'..b'203";\n+XVI\tprotein_coding\tstart_codon\t939922\t939924\t.\t+\t0\tgene_id "YPR201W"; transcript_id "YPR201W"; exon_number "1"; gene_name "ARR3"; p_id "P1664"; transcript_name "ARR3"; tss_id "TSS5203";\n+XVI\tprotein_coding\tstop_codon\t941134\t941136\t.\t+\t0\tgene_id "YPR201W"; transcript_id "YPR201W"; exon_number "1"; gene_name "ARR3"; p_id "P1664"; transcript_name "ARR3"; tss_id "TSS5203";\n+XVI\tprotein_coding\tCDS\t943032\t943050\t.\t+\t0\tgene_id "YPR202W"; transcript_id "YPR202W"; exon_number "1"; gene_name "YPR202W"; p_id "P3577"; protein_id "YPR202W"; transcript_name "YPR202W"; tss_id "TSS6873";\n+XVI\tprotein_coding\texon\t943032\t943050\t.\t+\t.\tgene_id "YPR202W"; transcript_id "YPR202W"; exon_number "1"; gene_name "YPR202W"; p_id "P3577"; seqedit "false"; transcript_name "YPR202W"; tss_id "TSS6873";\n+XVI\tprotein_coding\tstart_codon\t943032\t943034\t.\t+\t0\tgene_id "YPR202W"; transcript_id "YPR202W"; exon_number "1"; gene_name "YPR202W"; p_id "P3577"; transcript_name "YPR202W"; tss_id "TSS6873";\n+XVI\tprotein_coding\tCDS\t943199\t943893\t.\t+\t1\tgene_id "YPR202W"; transcript_id "YPR202W"; exon_number "2"; gene_name "YPR202W"; p_id "P3577"; protein_id "YPR202W"; transcript_name "YPR202W"; tss_id "TSS6873";\n+XVI\tprotein_coding\texon\t943199\t943896\t.\t+\t.\tgene_id "YPR202W"; transcript_id "YPR202W"; exon_number "2"; gene_name "YPR202W"; p_id "P3577"; seqedit "false"; transcript_name "YPR202W"; tss_id "TSS6873";\n+XVI\tprotein_coding\tCDS\t943880\t944185\t.\t+\t0\tgene_id "YPR203W"; transcript_id "YPR203W"; exon_number "1"; gene_name "YPR203W"; p_id "P4951"; protein_id "YPR203W"; transcript_name "YPR203W"; tss_id "TSS2481";\n+XVI\tprotein_coding\texon\t943880\t944188\t.\t+\t.\tgene_id "YPR203W"; transcript_id "YPR203W"; exon_number "1"; gene_name "YPR203W"; p_id "P4951"; seqedit "false"; transcript_name "YPR203W"; tss_id "TSS2481";\n+XVI\tprotein_coding\tstart_codon\t943880\t943882\t.\t+\t0\tgene_id "YPR203W"; transcript_id "YPR203W"; exon_number "1"; gene_name "YPR203W"; p_id "P4951"; transcript_name "YPR203W"; tss_id "TSS2481";\n+XVI\tprotein_coding\tstop_codon\t943894\t943896\t.\t+\t0\tgene_id "YPR202W"; transcript_id "YPR202W"; exon_number "2"; gene_name "YPR202W"; p_id "P3577"; transcript_name "YPR202W"; tss_id "TSS6873";\n+XVI\tprotein_coding\tstop_codon\t944186\t944188\t.\t+\t0\tgene_id "YPR203W"; transcript_id "YPR203W"; exon_number "1"; gene_name "YPR203W"; p_id "P4951"; transcript_name "YPR203W"; tss_id "TSS2481";\n+XVI\tprotein_coding\tCDS\t944603\t947698\t.\t+\t0\tgene_id "YPR204W"; transcript_id "YPR204W"; exon_number "1"; gene_name "YPR204W"; p_id "P2697"; protein_id "YPR204W"; transcript_name "YPR204W"; tss_id "TSS839";\n+XVI\tprotein_coding\texon\t944603\t947701\t.\t+\t.\tgene_id "YPR204W"; transcript_id "YPR204W"; exon_number "1"; gene_name "YPR204W"; p_id "P2697"; seqedit "false"; transcript_name "YPR204W"; tss_id "TSS839";\n+XVI\tprotein_coding\tstart_codon\t944603\t944605\t.\t+\t0\tgene_id "YPR204W"; transcript_id "YPR204W"; exon_number "1"; gene_name "YPR204W"; p_id "P2697"; transcript_name "YPR204W"; tss_id "TSS839";\n+XVI\tprotein_coding\texon\t946856\t947338\t.\t-\t.\tgene_id "YPR204C-A"; transcript_id "YPR204C-A"; exon_number "1"; gene_name "YPR204C-A"; p_id "P6072"; seqedit "false"; transcript_name "YPR204C-A"; tss_id "TSS5621";\n+XVI\tprotein_coding\tstop_codon\t946856\t946858\t.\t-\t0\tgene_id "YPR204C-A"; transcript_id "YPR204C-A"; exon_number "1"; gene_name "YPR204C-A"; p_id "P6072"; transcript_name "YPR204C-A"; tss_id "TSS5621";\n+XVI\tprotein_coding\tCDS\t946859\t947338\t.\t-\t0\tgene_id "YPR204C-A"; transcript_id "YPR204C-A"; exon_number "1"; gene_name "YPR204C-A"; p_id "P6072"; protein_id "YPR204C-A"; transcript_name "YPR204C-A"; tss_id "TSS5621";\n+XVI\tprotein_coding\tstart_codon\t947336\t947338\t.\t-\t0\tgene_id "YPR204C-A"; transcript_id "YPR204C-A"; exon_number "1"; gene_name "YPR204C-A"; p_id "P6072"; transcript_name "YPR204C-A"; tss_id "TSS5621";\n+XVI\tprotein_coding\tstop_codon\t947699\t947701\t.\t+\t0\tgene_id "YPR204W"; transcript_id "YPR204W"; exon_number "1"; gene_name "YPR204W"; p_id "P2697"; transcript_name "YPR204W"; tss_id "TSS839";\n'
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Python/getRandomRegions.pyc
b
Binary file SMART/Java/Python/getRandomRegions.pyc has changed
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Python/getSizes.py
--- a/SMART/Java/Python/getSizes.py Mon Apr 22 11:11:10 2013 -0400
+++ b/SMART/Java/Python/getSizes.py Mon Apr 29 03:20:15 2013 -0400
[
b'@@ -44,195 +44,175 @@\n LOG_DEPTH = "smart"\n \n class GetSizes(object):\n-    \n-    def __init__(self, inFileName = None, inFormat=None, outFileName = None, query=None,xMax=None, xMin=None, csv=False, verbosity = 0):\n-        self.inFileName = inFileName\n-        self.inFormat= inFormat\n-        self.outFileName = outFileName\n-        self.query = query\n-        self.xMax = xMax\n-        self.xMin = xMin\n-        self.xLab = "Size"\n-        self.yLab = "# reads"\n-        self.barplot = False\n-        self.csv = csv\n-        self._verbosity = verbosity\n-        self.parser = None\n-        self._log = LoggerFactory.createLogger("%s.%s" % (LOG_DEPTH, self.__class__.__name__), self._verbosity)\n-        \n-    def setAttributesFromCmdLine(self):\n-        description = "Usage: getSizes.py [options]\\n\\nGet Sizes v1.0.2: Get the sizes of a set of genomic coordinates. [Category: Visualization]\\n"\n-        epilog = ""\n-        parser = RepetOptionParser(description = description, epilog = epilog)\n-        parser.add_option("-i", "--input",     dest="inputFileName",  action="store",      default=None,      type="string", help="input file [compulsory] [format: file in transcript or sequence format given by -f]")\n-        parser.add_option("-f", "--format",    dest="format",         action="store",      default=None,      type="string", help="format of the input [compulsory] [format: transcript or sequence file format]")\n-        parser.add_option("-q", "--query",     dest="query",          action="store",      default=None,      type="string", help="type to mesure [default: size] [format: choice (size, intron size, exon size, 1st exon size)]")     \n-        parser.add_option("-o", "--output",    dest="outputFileName", action="store",      default=None,      type="string", help="output file [format: output file in PNG format]")\n-        parser.add_option("-x", "--xMax",      dest="xMax",           action="store",      default=None,      type="int",    help="maximum value on the x-axis to plot [format: int]")\n-        parser.add_option("-X", "--xMin",      dest="xMin",           action="store",      default=None,      type="int",    help="minimum value on the x-axis to plot [format: int]")\n-        parser.add_option("-v", "--verbosity", dest="verbosity",      action="store",      default=1,         type="int",    help="trace level [format: int]")\n-        parser.add_option("-c", "--csv",       dest="csv",            action="store",                         type="string", help="write a .csv file [format: bool] [default: false]")\n-        parser.add_option("-a", "--xLabel",    dest="xLab",           action="store",      default="Size",    type="string", help="x absis label name [format: string] [default: Size]")\n-        parser.add_option("-b", "--yLabel",    dest="yLab",           action="store",      default="# reads", type="string", help="y absis label name [format: string] [default: Reads]")\n-        parser.add_option("-B", "--barplot",   dest="barplot",        action="store_true", default=False,                    help="use barplot representation [format: bool] [default: false]")  \n-        options = parser.parse_args()[0]\n-        self._setAttributesFromOptions(options)\n-        \n-    def _setAttributesFromOptions(self, options):\n-        self.setInFileName(options.inputFileName)\n-        self.setInFormat(options.format)\n-        self.setQuery(options.query)\n-        self.setOutFileName(options.outputFileName)\n-        self.setXMax(options.xMax)\n-        self.setXMin(options.xMin)\n-        self.setxLab(options.xLab)\n-        self.setyLab(options.yLab)\n-        self.setBarplot(options.barplot)\n-        self.setVerbosity(options.verbosity)\n-        \n-    def setInFileName(self, inputFileName):\n-        self.inFileName = inputFileName\n-        \n-    def setInFormat(self, inFormat):\n-        self.inFormat = inFormat\n-    \n-    def setQuery(self, query):\n-        self.query = query\n-        \n-    def setOutFileName(self, outFileName):\n-        s'..b' sizes[size] += nbElements\n-                    if self.csv:\n-                        names[size].append(name)\n-                sum        += size\n-                nbSubItems += nbElements\n-            number += 1\n-            progress.inc()\n-        progress.done()\n+\tdef run(self):\n+\t\tLoggerFactory.setLevel(self._log, self._verbosity)\n+\t\tself._checkOptions()\n+\t\tself._log.info("START getsizes")\n+\t\tself._log.debug("Input file name: %s" % self.inFileName)\n \n-        if self.outFileName != None:\n-            plotter = RPlotter(self.outFileName, self._verbosity)\n-            plotter.setFill(0)\n-            plotter.setMinimumX(self.xMin)\n-            plotter.setMaximumX(self.xMax)\n-            plotter.setXLabel(self.xLab)\n-            plotter.setYLabel(self.yLab)\n-            plotter.setBarplot(self.barplot)\n-            plotter.addLine(sizes)\n-            plotter.plot()\n-            \n-        if nbSubItems == 0:\n-            self._logAndRaise("No item found")\n-            \n-        if self.csv:\n-            csvHandle = open(self.csv, "w")\n-            for size in range(min(sizes.keys()), max(sizes.keys())+1):\n-                if size not in sizes:\n-                    csvHandle.write("%d,0,\\n" % (size))\n-                else:\n-                    csvHandle.write("%d,%d,%s\\n" % (size, sizes[size], ";".join(names[size])))\n-            csvHandle.close()\n-        \n-        self.items = number      \n-        self.subItems = nbSubItems\n-        self.nucleotides = sum\n-        self.minAvgMedMax = Utils.getMinAvgMedMax(sizes)\n-                  \n-        print "%d items" % (number)\n-        print "%d sub-items" % (nbSubItems)\n-        print "%d nucleotides" % (sum)\n-        print "min/avg/med/max transcripts: %d/%.2f/%.1f/%d" % Utils.getMinAvgMedMax(sizes)\n+\t\tnbItems = self.parser.getNbItems()\n+\t\tself._log.info( "%i items found" % (nbItems))\n+\t\t\n+\t\t# treat items\n+\t\tprogress   = Progress(nbItems, "Analyzing sequences of %s" % (self.inFileName), self._verbosity)\n+\t\tsizes      = {}\n+\t\tminimum\t   = 1000000000000\n+\t\tmaximum\t   = 0\n+\t\tsum\t\t   = 0\n+\t\tnumber     = 0\n+\t\tnbSubItems = 0\n+\t\tfor item in self.parser.getIterator():\n+\t\t\titems = []\n+\t\t\tif self.query == "exon":\n+\t\t\t\titems = item.getExons()\n+\t\t\telif self.query == "exon1":\n+\t\t\t\tif len(item.getExons()) > 1:\n+\t\t\t\t\titem.sortExons()\n+\t\t\t\t\titems = [item.getExons()[0]]\n+\t\t\telif self.query == "intron":\n+\t\t\t\titems = item.getIntrons()\n+\t\t\telse:\n+\t\t\t\titems = [item, ]\n+\t\n+\t\t\tfor thisItem in items:\n+\t\t\t\ttry:\n+\t\t\t\t\tnbElements = int(float(thisItem.getTagValue("nbElements")))\n+\t\t\t\t\tif nbElements == None:\n+\t\t\t\t\t\tnbElements = 1\n+\t\t\t\texcept:\n+\t\t\t\t\tnbElements = 1\n+\t\t\t\tsize\t= thisItem.getSize()\n+\t\t\t\tminimum = min(minimum, size)\n+\t\t\t\tmaximum = max(maximum, size)\n+\t\t\t\t\n+\t\t\t\tif size not in sizes:\n+\t\t\t\t\tsizes[size] = nbElements\n+\t\t\t\telse:\n+\t\t\t\t\tsizes[size] += nbElements\n+\t\t\t\tsum\t\t+= size\n+\t\t\t\tnbSubItems += nbElements\n+\t\t\tnumber += 1\n+\t\t\tprogress.inc()\n+\t\tprogress.done()\n \n-        self._log.info("END getsizes")\n+\t\tif self.outFileName != None:\n+\t\t\tplotter = RPlotter(self.outFileName, self._verbosity)\n+\t\t\tplotter.setFill(0)\n+\t\t\tplotter.setMinimumX(self.xMin)\n+\t\t\tplotter.setMaximumX(self.xMax)\n+\t\t\tplotter.setXLabel(self.xLab)\n+\t\t\tplotter.setYLabel(self.yLab)\n+\t\t\tplotter.setBarplot(self.barplot)\n+\t\t\tplotter.addLine(sizes)\n+\t\t\tplotter.plot()\n+\t\t\t\n+\t\tif nbSubItems == 0:\n+\t\t\tself._logAndRaise("No item found")\n+\t\t\t\n+\t\tself.items = number\t  \n+\t\tself.subItems = nbSubItems\n+\t\tself.nucleotides = sum\n+\t\tself.minAvgMedMax = Utils.getMinAvgMedMax(sizes)\n+\t\t\t\t  \n+\t\tprint "%d items" % (number)\n+\t\tprint "%d sub-items" % (nbSubItems)\n+\t\tprint "%d nucleotides" % (sum)\n+\t\tprint "min/avg/med/max transcripts: %d/%.2f/%.1f/%d" % Utils.getMinAvgMedMax(sizes)\n+\n+\t\tself._log.info("END getsizes")\n \n \n if __name__ == "__main__":\n-    iGetSizes = GetSizes()\n-    iGetSizes.setAttributesFromCmdLine()\n-    iGetSizes.run()\n-    \n+\tiGetSizes = GetSizes()\n+\tiGetSizes.setAttributesFromCmdLine()\n+\tiGetSizes.run()\n+\t\n #TODO: add two more options!!!!!!\n'
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Python/misc/Progress.pyc
b
Binary file SMART/Java/Python/misc/Progress.pyc has changed
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Python/misc/RPlotter.py
--- a/SMART/Java/Python/misc/RPlotter.py Mon Apr 22 11:11:10 2013 -0400
+++ b/SMART/Java/Python/misc/RPlotter.py Mon Apr 29 03:20:15 2013 -0400
b
@@ -639,6 +639,7 @@
         if self.minimumY != None:
             yMin = self.minimumY
         yMax = self.getNewYMaxWithTopMargin()
+        yMax += min(1, yMax / 100.0)
         if self.maximumY != None:
             yMax = self.maximumY
 
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Python/misc/RPlotter.pyc
b
Binary file SMART/Java/Python/misc/RPlotter.pyc has changed
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Python/misc/UnlimitedProgress.pyc
b
Binary file SMART/Java/Python/misc/UnlimitedProgress.pyc has changed
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Python/misc/Utils.pyc
b
Binary file SMART/Java/Python/misc/Utils.pyc has changed
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Python/misc/__init__.pyc
b
Binary file SMART/Java/Python/misc/__init__.pyc has changed
b
diff -r b0e8584489e6 -r 94ab73e8a190 SMART/Java/Python/mySql/MySqlConnection.py
--- a/SMART/Java/Python/mySql/MySqlConnection.py Mon Apr 22 11:11:10 2013 -0400
+++ b/SMART/Java/Python/mySql/MySqlConnection.py Mon Apr 29 03:20:15 2013 -0400